Sub-issue of #146 — layer 6 of 6. The step that turns the suite from advisory into a gate.
Goal
Make the suite genuinely block merges to master, and keep it trustworthy enough that nobody wants to bypass it.
Why this is separate
Layers 1–5 build the tests. This makes them matter. A comprehensive suite that people merge past is theatre — and the project has already lived through the failure mode: CI triggered on branches: [main, rag], neither being the default branch, so nothing ran on master for weeks and nobody noticed (fixed in #124).
Branch protection
Verify the gate actually blocks
Reliability
A flaky gate teaches people to re-run until green, which is worse than no gate — it produces the habit of ignoring red.
Speed
Documentation
Acceptance criteria
- A PR breaking any layer cannot merge into
master — verified by trying
- Branch protection configured and documented
- Zero flaky tests in the required set
- Runtime acceptable, or staged
- AGENTS.md states the gate precisely
When this lands, the parent issue can close: the suite exists, it is comprehensive, and it is enforced.
Sub-issue of #146 — layer 6 of 6. The step that turns the suite from advisory into a gate.
Goal
Make the suite genuinely block merges to
master, and keep it trustworthy enough that nobody wants to bypass it.Why this is separate
Layers 1–5 build the tests. This makes them matter. A comprehensive suite that people merge past is theatre — and the project has already lived through the failure mode: CI triggered on
branches: [main, rag], neither being the default branch, so nothing ran onmasterfor weeks and nobody noticed (fixed in #124).Branch protection
mastermasterVerify the gate actually blocks
Reliability
A flaky gate teaches people to re-run until green, which is worse than no gate — it produces the habit of ignoring red.
Speed
Documentation
Acceptance criteria
master— verified by tryingClosing #146
When this lands, the parent issue can close: the suite exists, it is comprehensive, and it is enforced.