# `Statifier.Effect.SendDelayed`
[🔗](https://github.com/riddler/statifier-ex/blob/v2.0.0/lib/statifier/effect/send_delayed.ex#L1)

Payload for `{:send_delayed, %__MODULE__{}}` - spec 6.2's `<send>` when
`delay`/`delayexpr` is present. Carries every field
`Statifier.Effect.Send` does, plus `delay_ms`, the resolved delay in
milliseconds. The timer that fires this send is `Statifier.Session`'s to
schedule; this module only defines the shape it schedules.

`c_index` identifies the `<send>` content node (constraint 3, never a
compiled content-node struct); `owner` names which block emitted the send
(the same gap `Statifier.Effect.Log`'s own moduledoc describes for
`c_index` alone). `macrostep`/`microstep`/`round` are the counters
as they stood when the send was scheduled, not when the timer fires.

`id_from_author?` is `true` when the document wrote `id` or `idlocation`
on this `<send>`, `false` when `send_id` was generated - the same C.1
empty-`sendid` flag `Statifier.Effect.Send`'s own moduledoc explains.

`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. A durable store carries it as row data beside
the key components (never a key component itself, ADR-0063 decision 6)
and restores it at firing time so the firing site can attribute back to
the scheduling trace. The library never reads the value.

# `owner`

```elixir
@type owner() :: Statifier.Machine.Content.owner()
```

Which block emitted the send - `Statifier.Machine.Content.owner/0`.

# `t`

```elixir
@type t() :: %Statifier.Effect.SendDelayed{
  c_index: non_neg_integer() | nil,
  caller_context: term(),
  data: term(),
  delay_ms: non_neg_integer(),
  event: String.t(),
  id_from_author?: boolean(),
  macrostep: non_neg_integer(),
  microstep: non_neg_integer(),
  ordinal: pos_integer(),
  owner: owner() | nil,
  round: non_neg_integer(),
  send_id: String.t() | nil,
  target: String.t() | nil,
  type: String.t() | nil
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
