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.