You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
finding: the #8435 detector cannot reach a correctly-refusing gate whose testimony is governance — two independent stops, measured on check-driver-memory-census.mjs #8585
Observation-class, filed unassigned from the #8576 dev seat (PR #8583). No gate is asked to change and nothing here is a defect in a verdict.check-ratchet-remedy-authority.mjs reports nothing false; the finding is about how far it can reach.
Blocked-by: #8576 — the measurement below is of the state PR #8583 creates. Before it, the census gate carried no governance testimony in author-facing text at all, so only stop (2) below was observable and stop (1) was masked.
The measurement
#8576 mirrored one clause of each of three refusing gates' comments into their refusal strings. Two of the three consequently moved excluded to refused in the detector. The third did not, and tracing why turned up two independent stops, either one of which alone is sufficient to keep it unreachable:
Stage 1 — no target inside the offer window.check-driver-memory-census.mjs's refusal reads "Do NOT add an entry to make this green if the answer is …". Within OFFER_WINDOW (200 chars after the verb) there is no declared-caps identifier, no .json / .mjs / .mts path, and no REGISTRY_NOUN — the sentence names its ledger before the verb, and offerTarget only ever looks forward. Measured: the window truncates at 200 characters mid-word, so no clause appended to that message can ever bring a target into range.
Stage 2 — governance wording outside the vocabulary.GOVERN_TESTIMONY recognises maintainer has agreed, maintainer to agree, a maintainer action, maintainer-governed, tracked exception. This gate's own long-standing wording is "is a maintainer ruling", which matches none of them.
Why it is worth recording
Stop (1) is the more general one and mirrors a defect the detector already paid for once. Its offer grammar was deliberately built to accept both word orders — the header records that demanding "add … to … REGISTRY" cost the #8540 prototype a third of its recall, because check-type-check-coverage.mjs names its registry before the noun. The fix accepted either order after the verb. A registry named before the verb is the same class of blind spot one step further out, and it is currently invisible for the same reason the first one was: the gate reports clean.
Stop (2) is narrower — a vocabulary list that grew to fit check-driver-conformance.mjs and was never re-read against the other governed registries in the farm.
Consequence, and it is the same one #8576 recorded: the refusal limb's evidence base is smaller than the farm's actual refusing population. PR #8583 grows it from one gate to three; this gate is a fourth that refuses correctly and still cannot be counted.
Possible shapes (not decided here)
Let offerTarget consider a bounded span before the verb as well as after, with the same message boundary already enforced. ⚠️ Any such widening has to be re-audited against the ~20 declaration registries the control corpus exists to protect — the measured check-adr-anchors.mjs false positive came from exactly this kind of reach extension.
Add "maintainer ruling" (and re-read the farm for other spellings) to GOVERN_TESTIMONY.
⛔ Explicitly not proposed: rewording check-driver-memory-census.mjs to satisfy either grammar. Its refusal is correct and its wording predates the convention; bending a correct gate to make a detector reach it is the control flattering the detector, which is the one thing PR #8575's control corpus exists to prevent.
Related: #8435 established the convention; #8540 and PR #8575 built the detector; #8576 and PR #8583 are where this was measured. Neither #8540 nor #8576 is addressed here.
Observation-class, filed unassigned from the #8576 dev seat (PR #8583). No gate is asked to change and nothing here is a defect in a verdict.
check-ratchet-remedy-authority.mjsreports nothing false; the finding is about how far it can reach.Blocked-by: #8576 — the measurement below is of the state PR #8583 creates. Before it, the census gate carried no governance testimony in author-facing text at all, so only stop (2) below was observable and stop (1) was masked.
The measurement
#8576 mirrored one clause of each of three refusing gates' comments into their refusal strings. Two of the three consequently moved
excludedtorefusedin the detector. The third did not, and tracing why turned up two independent stops, either one of which alone is sufficient to keep it unreachable:Stage 1 — no target inside the offer window.
check-driver-memory-census.mjs's refusal reads "Do NOT add an entry to make this green if the answer is …". WithinOFFER_WINDOW(200 chars after the verb) there is no declared-caps identifier, no.json/.mjs/.mtspath, and noREGISTRY_NOUN— the sentence names its ledger before the verb, andofferTargetonly ever looks forward. Measured: the window truncates at 200 characters mid-word, so no clause appended to that message can ever bring a target into range.Stage 2 — governance wording outside the vocabulary.
GOVERN_TESTIMONYrecognisesmaintainer has agreed,maintainer to agree,a maintainer action,maintainer-governed,tracked exception. This gate's own long-standing wording is "is a maintainer ruling", which matches none of them.Why it is worth recording
Stop (1) is the more general one and mirrors a defect the detector already paid for once. Its offer grammar was deliberately built to accept both word orders — the header records that demanding "add … to … REGISTRY" cost the #8540 prototype a third of its recall, because
check-type-check-coverage.mjsnames its registry before the noun. The fix accepted either order after the verb. A registry named before the verb is the same class of blind spot one step further out, and it is currently invisible for the same reason the first one was: the gate reports clean.Stop (2) is narrower — a vocabulary list that grew to fit
check-driver-conformance.mjsand was never re-read against the other governed registries in the farm.Consequence, and it is the same one #8576 recorded: the refusal limb's evidence base is smaller than the farm's actual refusing population. PR #8583 grows it from one gate to three; this gate is a fourth that refuses correctly and still cannot be counted.
Possible shapes (not decided here)
offerTargetconsider a bounded span before the verb as well as after, with the same message boundary already enforced.check-adr-anchors.mjsfalse positive came from exactly this kind of reach extension.GOVERN_TESTIMONY.whyalready states both stops after PR fix(scripts): make the three refusal-shape gates state their registry's nature in author-facing text (#8576) #8583, so this option costs nothing further.⛔ Explicitly not proposed: rewording
check-driver-memory-census.mjsto satisfy either grammar. Its refusal is correct and its wording predates the convention; bending a correct gate to make a detector reach it is the control flattering the detector, which is the one thing PR #8575's control corpus exists to prevent.Related: #8435 established the convention; #8540 and PR #8575 built the detector; #8576 and PR #8583 are where this was measured. Neither #8540 nor #8576 is addressed here.
Generated by Claude Code