Gate: doc-required
The contracted documents exist and mention the units that trigger them.
| Property | Value |
|---|---|
| Checker | doc-required |
| Confronts | spec |
| Blocking by default — new project | yes |
| Blocking by default — existing project | yes |
How it measures
Section titled “How it measures”Confronts a unit against the documents the project declared as a CONTRACT: the unit was delivered, but did it feed what it was supposed to feed?
The Structure declares which documents are mandatory and WHEN each one must be touched — a layer triggers a duty. That resolution already existed, and two places consulted it: the one that informs whoever picks up the card, and the one that lists the duties. Neither confronted.
What that cost, measured: a delivery shipped a new unit — with spec, code, feature and test — without touching either the interface contract or the data schema. Both were declared mandatory for that layer, both were untouched, and every check went green. It only surfaced because two agents collided on the same card and there was something to compare: one branch carried 267 lines the other did not. Without the collision nobody would have noticed — there is nothing to compare when only one piece of work exists.
Two questions, and the second is the one that matters: does the document EXIST, and does it MENTION this unit? The first alone would approve an empty file created to silence the gate.
Declaring it
Section titled “Declaring it”gates: - name: doc-required on: [spec] check: doc-required