Gate: rule-types
Every code letter is declared in the vocabulary, with no conflict.
| Property | Value |
|---|---|
| Checker | rule-types |
| 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 alphabet that makes traceability possible: each letter of a
rule code ({CODE}-<letter><NN>) is the initial of the term that names a section — and a
letter nobody declared is INVISIBLE.
That is the worst kind of hole, and it is the reason the gate exists. The rule appears in
the spec, in the .feature and in the test, and even so feature-test-match does not see
it: the code regex does not match the letter. It looks covered and is not — a green
that certifies a link nothing ever traversed.
It confronts three things, in this order of gravity: an UNDECLARED LETTER used in the file; a SECTION cataloguing rules under a title no letter claims; and a CONFLICT in the vocabulary itself, where two different sections claim the same letter. A fourth finding — a section the project declared as rule-cataloguing but filled WITHOUT a code — is Pending rather than Fail, because it is the inverse gap and the ruler is opt-in.
With no vocabulary declared the gate does NOT go quiet: it confronts the CANONICAL
letters. It used to Skip, and the effect was a canonical gate — seeded by init in every
project — that measured nothing: it took a row in the check table and reported
indeterminate forever. That is the same silence Anchors fights everywhere else, a
declared gate that confronts nothing giving the impression of a defence that does not
exist.
Declaring it
Section titled “Declaring it”gates: - name: rule-types on: [spec] check: rule-types