Skip to content

The citation guard's class omits .github/workflows/README.md, which cites two rants with no public record #1289

Description

@argszero

Follows from #1252 / PR #1278. The rule PR #1278 establishes is: prose a reader is
expected to act on must name the public record that landed each host-rant citation it
carries. The guard implements it over a named list of nine files
(INSTRUCTION_FILES in scripts/check-rant-citations.py), with the reason spelled out —
"the class is a decision, so a new template has to be added here deliberately rather than
swept in by a pattern that also catches its code comments".

Measured

Scanning every tracked *.md / *.j2 file at the PR's head (780a8a73) with the
guard's own CITATION pattern, exactly one prose file outside the class cites a rant:

$ python3 - <<'EOF'   # pattern copied verbatim out of the guard; class parsed from it
...
tracked files outside the class that cite a rant: 94
  (of which .md / .j2: 1)
      2  .github/workflows/README.md
EOF

and the two sites are the file's instruction prose, not a comment:

$ git show 780a8a73:.github/workflows/README.md | grep -n rant
6:## 必需 Secrets(macOS 代码签名 + 公证,rant 2026-08-06T10:06:55)
20:**两种方案**(rant 2026-08-06T15:26 起支持):

Neither names a PR or issue, so on a second host both are unresolvable — the exact defect
#1252 is about. (The other 93 files are code, tests and shell scripts, whose citations the
PR deliberately leaves alone: a comment's citation is a historical note about why the line
exists, and git log -S is what keeps it checkable.)

Not blocking

Nothing here is wrong in PR #1278 — the guard states that its class is those nine files.
This is the class list being one file short of the prose that carries the same kind of
citation, and it cannot be fixed by a parallel PR while #1278 is open (both would edit
INSTRUCTION_FILES and the tests that pin its size).

Fix

Add .github/workflows/README.md to the class and give its two sites a record, or say in
the docstring why a CI README is out of the class. Either is a two-line change; the
decision is the caller's.

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