Gate: domain-declared
The spec declares what it accepts and who guards the boundary.
| Property | Value |
|---|---|
| Checker | domain-declared |
| Confronts | spec |
| Blocking by default — new project | yes |
| Blocking by default — existing project | no — informs |
| Duplicates | a declaration it controls repeated in one file fails it; duplicates: false switches this off |
How it measures
Section titled “How it measures”Confronts a spec against the question the rest of the framework does not ask: what does this unit accept as input, and who guarantees that the invalid never arrives?
The gap it closes was measured: 71% of the specs of a real project had a section of rules or effects, and only 14% said what the unit accepts. The whole framework is built on cataloguing EFFECTS — what the unit does —, and every edge defect found in three rounds of adversarial review lived in what nobody had declared.
The distinction that gives the gate its reason: ## Constraints says what the unit does NOT do, and pushes
the duty OUTWARD; ## Domain says what it ACCEPTS, and NAMES WHO is left with it.
Writing more constraints closes nothing — it creates orphans, because every “not mine” needs
someone on the other side.
Declaring it
Section titled “Declaring it”gates: - name: domain-declared on: [spec] check: domain-declared