Skip to content

Gates

Each workflow phase has exit gates. Every one of them is evaluated by the engine against real state rather than self-reported — an AI cannot declare any of them passed. One is human-only by design: manual_confirm passes when you press its button, and no tool exists for an agent to press it.

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

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.

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.