Gates¶
A gate stops the work until its approver passes it. The framework has a fixed set of gates. Each profile selects gates from this set. A repo can add gates. To remove a gate, a repo records a waiver with a reason.
| Gate | Name | Position | Approver | Passes when |
|---|---|---|---|---|
| G1 | Ready | After Shape | human, or a check for low-risk profiles | The ticket meets the Definition of Ready. |
| G2 | Plan approved | After Plan | human | A human approves the plan artifact. |
| G3 | Checks pass | After Verify | checks only | All checks for the profile pass in CI. |
| G4 | Change approved | After Review | human | A human approves the PR after the agent review. |
| G5 | Release approved | Before Deliver, or before any destructive action | human | A human approves the release or the action. |
Rules¶
- G3 is always on for each profile that changes code on a branch that can merge. No waiver can
remove G3. With
adoption: opt-in, G3 runs only for a marked PR (D58). Spike code never merges (check K16), so G3 does not apply to it. Withdelivery: local, G3 stays on, but a person runs it on a machine withstone gate(D56). - G5 is always on for each destructive action, in each profile. See P9.
- A gate approver cannot be the role that made the work. An agent cannot approve G1, G2, G4, or G5. The only exception is the solo developer rule for G4.
- A gate decision is recorded where the work is: a label, a PR review, or a CI status.
- Before a human passes G2 or G4, the agent states its confidence and the open risks (P11).
- The mode does not change the gates. Only the profile and recorded waivers change them.
- A specialist review with
blocks: trueand a high finding stops G4 until a human decides (D59). Check K20 enforces this in G3 (D66).
Gate selection by profile¶
| Profile | G1 | G2 | G3 | G4 | G5 |
|---|---|---|---|---|---|
| full-project | human | human | yes | human | always |
| app-slice | human | human | yes | human | if needed |
| single-ticket | check | — | yes | human | if needed |
| bug-triage | — | — | — | human (label decisions) | if needed |
| debugging | check | — | yes | human | if needed |
| code-audit | human (scope) | — | — | human (which findings become tickets) | if needed |
| refactor-migration | human | human | yes | human | if needed |
| dependency-upgrade | — | — | yes | human (a repo waiver MAY skip it for patch versions) | if needed |
| adapter-refresh | — | — | yes | human | if needed |
| spike | human (question and time box) | — | — | human (reads findings) | if needed |
"If needed" means: G5 applies when the work includes a release or a destructive action. G5 is never skipped (rule 2).
Profile frontmatter values: human, check, skip, required (G3), always, if-needed (G5).