A validated, versioned state-transition intent for a protocol Task.
Events contain data only. They can cross a process, database, or remote-store boundary without asking the store to execute application closures. Event IDs are stable across compare-and-set retries; idempotency remains the store's responsibility.
Summary
Types
@type kind() ::
:input_requested
| :input_responses_accepted
| :retry_requested
| :completed
| :failed
| :cancelled
@type t() :: %Snodo.Extensions.Tasks.Event{ data: map(), id: String.t(), kind: kind(), version: pos_integer() }