Twinned from https://github.com/cfsh/ninefold/issues/855 by tools/beads/import_github.py's reconcile pass.
Suggestions from ninefold-reviewer's review of #848.
#848 rewrites CLAUDE.md loop step 5 and drops the merge_pr.py --why <n> instruction out of it (it lands in notes/reviewer.md via #846). Two checked-in comments describe step 5 *by that instruction*:
tools/nflib/devcli.py:1069-1071 — *"without a record the loop pays the gate twice: step 3 runs it, step 5 says presubmit: UNKNOWN — no run recorded"*tools/tests/test_nflib_devcli.py:1305-1307 — *"pr runs presubmit.py --all at step 3 and merge_pr.py --why at step 5"*Both still describe real behaviour, and --why does survive inside step 5's sub-bullet in its perimeter-blocked role — so the number is not dangling, the *instruction* the comments name is. One word each: name step 6 (merge_pr.py), or drop the step number and name the tool.
Deliberately not fixed in #848. tools/nflib/* is perimeter.GOVERNANCE (tools/nflib/perimeter.py), so touching devcli.py would take that PR outside the perimeter and cost the Tier-1 eligibility its +5-line budget exists to buy. Fold it into whatever next touches devcli.py.
The guard does not cover this class, and that is the more interesting half. LoopStepTest (tools/tests/test_doc_pointers.py:298) checks that a cited step *number exists* — not that the step still says what the citation claims — and its regex matches loop step N / CLAUDE.md step N / names step N, neither of which is how these two are spelled. This is #830's F4/F6/F12 class one level in: the number stayed valid while the content moved out from under it. Worth a decision on whether that is checkable at all, or is simply the reader's job.
Unclaimed.
None.
No comments.