# `SquidMesh.RunExplanation`
[🔗](https://github.com/ccarvalho-eng/squid_mesh/blob/main/lib/squid_mesh/run_explanation.ex#L1)

Structured diagnostic explanation for one workflow run.

Explanations are transport-friendly data. They point back to persisted runtime
facts so host apps can render their own operator messages without scraping
logs or interpreting telemetry.

# `next_action`

```elixir
@type next_action() ::
  :wait_for_step
  | :wait_for_dependencies
  | :wait_for_retry
  | :wait_for_cancellation
  | :unblock_run
  | :approve_run
  | :reject_run
  | :cancel_run
  | :replay_run
```

# `reason`

```elixir
@type reason() ::
  :pending_dispatch
  | :step_scheduled
  | :step_running
  | :waiting_for_dependencies
  | :waiting_for_retry
  | :retry_exhausted
  | :step_failed
  | :paused_for_manual_action
  | :paused_for_approval
  | :paused_with_missing_resume_metadata
  | :paused_with_invalid_resume_target
  | :paused_with_unavailable_workflow
  | :cancelling
  | :cancelled
  | :completed
```

# `t`

```elixir
@type t() :: %SquidMesh.RunExplanation{
  details: map(),
  evidence: map(),
  next_actions: [next_action()],
  reason: reason(),
  status: SquidMesh.Run.status(),
  step: atom() | String.t() | nil
}
```

---

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