# `Squidie.Runtime.DispatchProtocol`
[🔗](https://github.com/dark-trench/squidie/blob/main/lib/squidie/runtime/dispatch_protocol.ex#L2)

Defines the durable dispatch journal contract.

The protocol separates durable facts from live effects:

- run-thread entries record workflow lifecycle facts
- dispatch-thread entries record runnable intent, claims, leases, heartbeats,
  completions, failures, retries, and live wakeups
- run-index and run-catalog entries support rebuildable lookup projections

A live wakeup or action execution is valid only after the runnable intent is
appended. Claims are fenced by `claim_id` and `claim_token_hash`;
completions, failures, and heartbeats from stale claim owners are ignored by
the projection and surfaced as anomalies.

# `entry_type`

```elixir
@type entry_type() ::
  :run_signal_received
  | :run_started
  | :runnables_planned
  | :runnable_applied
  | :child_run_started
  | :dynamic_work_recorded
  | :manual_step_paused
  | :manual_step_resolved
  | :run_terminal
  | :run_indexed
  | :run_cataloged
  | :run_queued
  | :attempt_scheduled
  | :attempt_claimed
  | :attempt_heartbeat
  | :attempt_completed
  | :attempt_failed
  | :live_wakeup_emitted
```

---

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