Stations and gates
Every station and the rule that decides whether the ticket moves on.
A gate is a rule over facts the coordinator reads back from GitHub and the deploy target. Agents produce the facts; they can't pass a gate by saying so.
| Gate | After | Passes when |
|---|---|---|
| G0 | Requirements | A person labels the issue ready |
| G1 | Triage | The issue has one type:* and one size:* label and no needs-split |
| G2 | Plan | The issue has a risk:* label; risk:high also needs /approve from a team member |
| G3 | Implement | The setup recipe's checks pass on the pushed head (appli/checks) |
| G4a | Review | The review agent's appli/review status is success on the head |
| G4 | QA and approval | The appli/qa check run is success on a preview of the head, then a person approves the pull request on that head |
| G5 | Deploy | Production runs the merge commit |
Pinned to the head
Review, QA, and approval all refer to one commit. When the pull request changes, they apply to the new head again: QA tests a preview built from exactly that commit, and the merge is refused if the head moved after approval.
Identities
Agents act as the Appli Studio GitHub App, with a token limited to the issue's repository and to what their station needs: triage can label issues, implementation can push the ticket branch, QA can write check runs. No station can merge, approve, or change settings.