Two sentences in docs/loop/LOOP-RULES.md R12 contradict machine-readable truths in the same repository, and both were wrong on the day they were written.
1. Refs #N DOES satisfy check-linked-issue
LOOP-RULES.md:230-231 says:
put a literal Closes #N line in the PR body -- Refs #N does NOT satisfy check-linked-issue.
The gate's matcher, .github/workflows/issue-gate.yml:69:
grep -oiE '(Closes?|Fixes?|Resolves?|Refs?|Updates?)\s*#[0-9]+'
Refs? has been in it since 5850c302e (2026-07-07). The R12 sentence was written 2026-08-20 — 44 days late on arrival, not stale. Seven readers in this tree carry the same dictionary (issue-gate.yml, l1-traceability.yml, auto-merge-ready-prs.yml, both check-l1-traceability.sh, gates.rs, hooks.rs). LOOP-RULES.md:230 is the sole dissenter.
It also fights R11 nineteen lines above — "AUTOCLOSING ISSUES IS FORBIDDEN" — by demanding the one spelling that autocloses.
The sharpest evidence is the file's own history: the most recent commit to LOOP-RULES.md is bb60ddc03, "docs(loop): R17 … (Refs #3357) (#3358)". The PR that last edited the rules file disproved line 230 while merging, and left it standing.
2. R12 still tells authors to write to a frozen archive
LOOP-RULES.md:228 says to add a section to the top of docs/NOW.md. That file's first line:
FROZEN ARCHIVE -- do not add entries here.
Frozen in f5be7dc1c (#2298, 2026-08-21) precisely because one file per PR is what stops concurrent PRs colliding. .claude/skills/spec-first-ternary-nn.md:62 carries the same instruction.
The guard, and why the obvious one is wrong
Every mention of docs/NOW.md under .github/workflows/, scripts/ and .githooks/ is a comment — measured, 0 lines that reject an edit. The freeze is prose only, so an author can follow the stale instruction, reopen the archive, and pass all four required checks.
But "fail any diff containing docs/NOW.md" is too broad. Measured over the 600 commits since the freeze: 2 touched the file, and one of them — 458ec0bd6 — REPAIRS damaged entries in the archive. The banner forbids adding entries, not touching the file. A guard that blocks a legitimate repair is the "gate that lands red on something legitimate gets muted" shape this repository already documents.
The narrow rule that would work: fail a diff that adds a ## heading to docs/NOW.md, not one that touches it. That is still a change to a required context (check-now-freshness), so it is filed here rather than done.
Found by the adversarial sweep for #3355. These two are the mirror of that class: the truth is machine-readable and the prose is the stale transcription.
Two sentences in
docs/loop/LOOP-RULES.mdR12 contradict machine-readable truths in the same repository, and both were wrong on the day they were written.1.
Refs #NDOES satisfycheck-linked-issueLOOP-RULES.md:230-231says:The gate's matcher,
.github/workflows/issue-gate.yml:69:Refs?has been in it since5850c302e(2026-07-07). The R12 sentence was written 2026-08-20 — 44 days late on arrival, not stale. Seven readers in this tree carry the same dictionary (issue-gate.yml,l1-traceability.yml,auto-merge-ready-prs.yml, bothcheck-l1-traceability.sh,gates.rs,hooks.rs).LOOP-RULES.md:230is the sole dissenter.It also fights R11 nineteen lines above — "AUTOCLOSING ISSUES IS FORBIDDEN" — by demanding the one spelling that autocloses.
The sharpest evidence is the file's own history: the most recent commit to LOOP-RULES.md is
bb60ddc03, "docs(loop): R17 … (Refs #3357) (#3358)". The PR that last edited the rules file disproved line 230 while merging, and left it standing.2. R12 still tells authors to write to a frozen archive
LOOP-RULES.md:228says to add a section to the top ofdocs/NOW.md. That file's first line:Frozen in
f5be7dc1c(#2298, 2026-08-21) precisely because one file per PR is what stops concurrent PRs colliding..claude/skills/spec-first-ternary-nn.md:62carries the same instruction.The guard, and why the obvious one is wrong
Every mention of
docs/NOW.mdunder.github/workflows/,scripts/and.githooks/is a comment — measured, 0 lines that reject an edit. The freeze is prose only, so an author can follow the stale instruction, reopen the archive, and pass all four required checks.But "fail any diff containing
docs/NOW.md" is too broad. Measured over the 600 commits since the freeze: 2 touched the file, and one of them —458ec0bd6— REPAIRS damaged entries in the archive. The banner forbids adding entries, not touching the file. A guard that blocks a legitimate repair is the "gate that lands red on something legitimate gets muted" shape this repository already documents.The narrow rule that would work: fail a diff that adds a
##heading todocs/NOW.md, not one that touches it. That is still a change to a required context (check-now-freshness), so it is filed here rather than done.Found by the adversarial sweep for #3355. These two are the mirror of that class: the truth is machine-readable and the prose is the stale transcription.