Skip to content

Mission States

Source of truth: src/assync/missions/state_machine.py::ALLOWED_TRANSITIONS, src/assync/core/enums.py::RuntimeState.

States

State Meaning
READY Mission created, not yet started.
ACTIVE Orchestrator is executing selected roles' runs.
WAITING_FOR_AUTHORIZATION Synthesis produced a blocker or required a human decision; the mission is paused for one.
BLOCKED An unhandled exception occurred during execution; the lock was released and the mission marked blocked before the exception was re-raised.
COMPLETED Terminal. No unresolved blocking findings remained at completion.
ABORTED Terminal.

RuntimeState.BLOCKED intentionally shares its literal string value with the unrelated EvidenceClassification.BLOCKED — see Security Model.

Allowed transitions

From Allowed to
READY ACTIVE, ABORTED
ACTIVE WAITING_FOR_AUTHORIZATION, BLOCKED, ABORTED, COMPLETED
WAITING_FOR_AUTHORIZATION ACTIVE, ABORTED
BLOCKED ACTIVE, ABORTED
COMPLETED (none — terminal)
ABORTED (none — terminal)

Any transition not listed above raises StateTransitionError. A transition to COMPLETED additionally fails if unresolved blocking findings remain, regardless of whether COMPLETED is otherwise a valid target from the current state.

What drives each transition today

Only orchestrator/service.py::start_mission and missions/service.py (via the CLI's mission abort) actually call transition() in this MVP. There is no CLI command that manually drives WAITING_FOR_AUTHORIZATION → ACTIVE — see Quick Start and Decision Queue — MVP Limitations for what this means in practice after a decision resolves.