Atomic / Evolution Deck
State machine / background runs

From goal to bounded proof.

A background workflow is not a detached prompt. It is a durable run with a graph, stage sessions, checkpoints, controls, artifacts, and a reducer-defined terminal decision.

admittedrunningpaused / awaiting inputresumedcompleted / failed / blocked / killed

Exact lifecycle

5

Pause / interrupt / quit

Interrupt aborts active work cooperatively; pause holds queued messages and records a run/stage pause. Graceful quit waits for pause acknowledgement and keeps the run resumable when durable state accepts the transition. `/workflow interrupt` is the immediate control; `/workflow quit` is the resumable stop.

Cross-state invariants

What must remain true

Run and stage IDs remain the join keys across in-memory status, durable checkpoints, session metadata, artifacts, and bridge receipts. A terminal root is not reopened by ordinary stage sends; a paused run is not counted as running; late messages are admitted only while their stage boundary is open; and a failed durable transition is never reported as a successful resumable quit.

Illegal input

Fail loudly

Unknown run IDs, ambiguous prefixes, missing stages, unavailable sessions, unsupported headless UI prompts, and terminal roots return explicit structured errors rather than silently creating new work.

Durability caveat. If no DBOS backend can be provisioned, Atomic can run with a process-local in-memory backend and emits a non-durable warning; a process exit then cannot restore the run. This distinction is part of the status contract, not a hosting assumption.

Usage & cost across a run and its stages

A proposed ledger would append one ordered model_attempt event per accepted stage attempt, preserve raw provider/model IDs, and roll numeric reported values from stage to run without counting retries twice. The current stage controller records attempt identity and outcome but not usage, so this page does not claim that workflow totals exist today.

Open Usage & cost →