One line of the control log: a command, who issued it, when, and what happened to it.
Every command that reaches the plane gets an entry, including the ones that are refused. A refusal that leaves no trace is indistinguishable from a command that was never sent.
Summary
Types
@type outcome() :: :applied | :rejected | :received
@type t() :: %PromptRunner.Control.Entry{ at: DateTime.t() | nil, attempt: pos_integer() | nil, author: String.t() | nil, command: String.t() | nil, outcome: outcome() | nil, params: map(), prompt_id: String.t() | nil, reason: String.t() | nil, run_id: String.t() | nil }