Found while working #9947 (comment-figure cleanup in the same file). Not fixed there: different defect class (garbled prose, not a self-invalidated figure), so it failed the bounded in-place exemption's same-class condition.
The sentence
scripts/check-role-word.mjs, header block:
// `--update` expands the baseline, which is the shrink-only direction of this
// ratchet — the NEW-use message marks that path `⛔ MAINTAINER-ONLY` per the
// #8435 convention, and the self-test holds the marker in place.
The relative clause has no correct antecedent:
- if
which = the baseline → "the baseline, which is the shrink-only direction of this ratchet" — a baseline is not a direction; - if
which = expanding the baseline → factually backwards. Expanding is the weakening direction; shrink-only is the direction the ratchet guarantees.
Why it is worth fixing rather than tolerating
This is garbled about precisely the fact the ⛔ MAINTAINER-ONLY convention exists to make unmistakable — which way the privileged path moves the ratchet. The same file states it correctly twice elsewhere, so the header is the odd one out:
Scope
Comment prose in scripts/check-role-word.mjs only — no verdict, exit code or population change. Likely a one-sentence rewrite along the lines the two sites above already use.
Ref: #9947 is where this surfaced and is not addressed by it.
Found while working #9947 (comment-figure cleanup in the same file). Not fixed there: different defect class (garbled prose, not a self-invalidated figure), so it failed the bounded in-place exemption's same-class condition.
The sentence
scripts/check-role-word.mjs, header block:The relative clause has no correct antecedent:
which= the baseline → "the baseline, which is the shrink-only direction of this ratchet" — a baseline is not a direction;which= expanding the baseline → factually backwards. Expanding is the weakening direction; shrink-only is the direction the ratchet guarantees.Why it is worth fixing rather than tolerating
This is garbled about precisely the fact the
⛔ MAINTAINER-ONLYconvention exists to make unmistakable — which way the privileged path moves the ratchet. The same file states it correctly twice elsewhere, so the header is the odd one out:newUseMessage(): "The baseline is shrink-only, so this weakens a ratchet and needs a maintainer to agree the boundary is genuine first"check:engine-double-contractfires at CI time, not authoring time — four independent PRs tripped it on brand-new test files in one shift, and a pre-warning in the brief did not prevent it #8435 block: "--update, which expands the baseline. That is a shrink-only ratchet, so taking that path WEAKENS the gate"Scope
Comment prose in
scripts/check-role-word.mjsonly — no verdict, exit code or population change. Likely a one-sentence rewrite along the lines the two sites above already use.Ref: #9947 is where this surfaced and is not addressed by it.