Payload for {:cancel, %__MODULE__{}} - spec 6.3's <cancel>. send_id
is the sendid/sendidexpr attribute naming the delayed send to cancel;
resolving it against the pending SendDelayed timers is
Statifier.Session's job.
c_index identifies the <cancel> content node (constraint 3, never a
compiled content-node struct); owner names which block emitted the
cancel (the same gap Statifier.Effect.Log's own moduledoc describes for
c_index alone). macrostep/microstep/round are the counters
as they stood at the moment of the cancel.
ordinal is a per-execution sequence number minted from
Statifier.MachineState's session-global timer_counter (ADR-0059). It is
what makes a durable host's dedup key per-instance where the counter triple
and the content position cannot - two iterations of a <foreach> body
execute the same content node, in the same microstep, under the same
author-written id, and only ordinal tells them apart. It replays
identically because the counter is pure fold state.
caller_context is the opaque host term the current macrostep's
triggering external event carried (ADR-0063), copied off
Statifier.MachineState's transient slot at construction - nil when
no context was attached. Both durable-timer effects carry it, not just
the send: the same store processes both, and the cancellation act wants
the same attribution as the firing (ADR-0063 decision 2). Row data
beside the key, never a key component (decision 6); the library never
reads the value.
Summary
Types
@type owner() :: Statifier.Machine.Content.owner()
Which block emitted the cancel - Statifier.Machine.Content.owner/0.
@type t() :: %Statifier.Effect.Cancel{ c_index: non_neg_integer() | nil, caller_context: term(), macrostep: non_neg_integer(), microstep: non_neg_integer(), ordinal: pos_integer(), owner: owner() | nil, round: non_neg_integer(), send_id: String.t() }