Skip to content

LOOP-RULES R12 denies a spelling the gate accepts, and points authors at a frozen archive #3368

Description

@gHashTag

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions