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.
Summary
Types
@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
@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
@type t() :: %SquidMesh.RunExplanation{ details: map(), evidence: map(), next_actions: [next_action()], reason: reason(), status: SquidMesh.Run.status(), step: atom() | String.t() | nil }