Gates
Each workflow phase has exit gates. Every one of them is evaluated by the engine against real state — you don’t tick a box, and neither can an AI.
| Gate | Passes when | Example |
|---|---|---|
min_tasks(n) |
At least n tasks have been created | The planning phase needs at least 1 task before work can start |
all_tasks_done |
There is at least one task, and every task is done — an empty list does not pass | Finish the execution phase before moving to review |
no_blocked_tasks |
No task is blocked | You can’t wrap up while something is stuck |
artifact_exists(path) |
The named output path exists (a file or a directory) | artifacts/report.md has to be written for it to count as delivered |
min_decisions(n) |
At least n decisions were recorded after entering this phase | The review phase needs at least 1 decision on record |
manual_confirm(prompt) |
You personally press the confirm button in the app | “Output has been inspected by a human” — an AI cannot press this for you |
doctor_clean |
The workspace doctor reports no errors | The handoff layer has to be healthy before the project can close out |
Forcing a gate
Section titled “Forcing a gate”If a gate has not passed, advance_phase returns an error. Forcing it through requires a reason, and is written to the ledger and the phase history as an OVERRIDE.
What an AI cannot do
Section titled “What an AI cannot do”An AI has no permission to force a phase advance, and no permission to satisfy a manual_confirm gate. Both are permanently reserved for humans.