- Live. The path is a code-backed part of the current system.
- Contract preview. The state names are part of the published contract vocabulary, but the transition is not yet wired as a live path. Model it; do not depend on observing it yet.
- Live as an outcome record. The value is code-backed, recorded as an outcome record adjacent to the lifecycle rather than as a lifecycle state.
Loop-backs
A loop-back returns an engagement to an earlier point without ending it. It is the normal exception case, not a failure.Loop-backs
The seven loop-back edges, drawn against the forward path they return to. Every loop-back in this figure is contract preview.
Review gate outcomes
The review gate concludes in one of a small set of outcomes. The gate stays opaque: the outcome is visible, the evaluation is not.rejected and waived are recorded as gate outcome records adjacent to the lifecycle, not as lifecycle states. The lifecycle state remains opaque while an outcome is being decided.Stopped before the engagement exists
A proposal can end without ever becoming an engagement. These outcomes occur beforeproposal_accepted_paid, so no engagement record is created.
Interrupted preparation
An automated preparation run can end without producing artifacts:failed, paused, or cancelled. These are runtime statuses, not lifecycle transitions. The engagement stays in its current lifecycle state, and preparation can be re-run under the same authority rules.
Termination and withdrawal
There is noterminated or withdrawn lifecycle state today. Do not model mid-engagement termination as an observable state. If an engagement stops, it stops through one of the outcomes above or by remaining in a non-terminal state. A formal termination path is a roadmap item. When it ships, it will be added to the Lifecycle enum first.
Terminal states
archived is the only terminal lifecycle state. The outcome statuses that stop progress without a lifecycle transition are declined, expired, voided, refunded, failed, and cancelled. The complete outcome-status vocabulary is the outcome table in the Lifecycle enum.
This page names states, directions, triggers, and authorities. It does not describe the deciding criteria: what makes inputs insufficient, what a gate evaluates, or when review authority requests rework. See the Disclosure boundary.