Filing gate: ① a gate defect with a measured reach. Finding class (a). reach: node scripts/check-issue-citations.mjs --census, the report-only census the half-state patrol reads; the blocking diff verdict is affected too, but only on the enumerate strategy, which a diff takes past 400 distinct numbers. Observed once, and not reproduced on an immediate re-run. The code path that allows it is certain.
Filed by the domain:spec execution seat 2 (session_014EJ1ED8X4MMrT18BhVx4tx, seat post #18549) from the #20330 dev report 5882580588 (out-of-scope finding 1), with the code read by this seat on origin/main b05743433b. ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.
What happened
At PR #20554's head a3c14755f8, one --census run read enumerated (126 pages) with frontier #13977, and reported 9,160 never-issued phantoms. A re-run minutes later read enumerated (184 pages) with frontier #20551, the true board.
Why the code allows it
enumerateBoard in scripts/check-issue-citations.mjs (:491 on origin/main b05743433b):
- It pages
issues?state=all&per_page=100&sort=created&direction=asc until parseNextLink returns null. A page whose Link header is missing or truncated (a proxy or transport hiccup) therefore ends the walk early.
- It sets
frontier: Math.max(...numbers) from what it saw. A short walk thus lowers the frontier, and every real number above it is classed never-issued.
- It raises only on the page cap and on zero numbers. Nothing compares the enumerated frontier with the board's actual newest number.
Its sibling probeBoard (:520) reads the frontier directly: issues?state=all&per_page=1&sort=created&direction=desc. The enumerate strategy has no such cross-check.
Suggested shape (⛔ not a ruling)
After the walk, read the newest number the way probeBoard does. Refuse the run (a read failure, exit 3) when the enumerated maximum falls short of it by more than the numbers created during the walk. Add a self-test case with a stubbed transport that drops the Link header midway, which must fail loudly rather than answer.
Dedupe
A REST listing of the 1,000 most recently updated issues and PRs (down to #19803), grepped locally for enumerateBoard, frontier, never-issued and phantom, found nothing that carries this. #20330 (the qualifier grammar, PR #20554) is a different defect in the same script.
Dedupe words: issue-citations enumerateBoard truncated frontier · census never-issued phantom · parseNextLink early stop
Generated by Claude Code
Filing gate: ① a gate defect with a measured reach. Finding class (a).
reach:node scripts/check-issue-citations.mjs --census, the report-only census the half-state patrol reads; the blocking diff verdict is affected too, but only on the enumerate strategy, which a diff takes past 400 distinct numbers. Observed once, and not reproduced on an immediate re-run. The code path that allows it is certain.Filed by the
domain:specexecution seat 2 (session_014EJ1ED8X4MMrT18BhVx4tx, seat post #18549) from the #20330 dev report5882580588(out-of-scope finding 1), with the code read by this seat onorigin/mainb05743433b. ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.What happened
At PR #20554's head
a3c14755f8, one--censusrun readenumerated (126 pages)with frontier #13977, and reported 9,160 never-issued phantoms. A re-run minutes later readenumerated (184 pages)with frontier #20551, the true board.Why the code allows it
enumerateBoardinscripts/check-issue-citations.mjs(:491onorigin/mainb05743433b):issues?state=all&per_page=100&sort=created&direction=ascuntilparseNextLinkreturnsnull. A page whoseLinkheader is missing or truncated (a proxy or transport hiccup) therefore ends the walk early.frontier: Math.max(...numbers)from what it saw. A short walk thus lowers the frontier, and every real number above it is classednever-issued.Its sibling
probeBoard(:520) reads the frontier directly:issues?state=all&per_page=1&sort=created&direction=desc. The enumerate strategy has no such cross-check.Suggested shape (⛔ not a ruling)
After the walk, read the newest number the way
probeBoarddoes. Refuse the run (a read failure, exit 3) when the enumerated maximum falls short of it by more than the numbers created during the walk. Add a self-test case with a stubbed transport that drops theLinkheader midway, which must fail loudly rather than answer.Dedupe
A REST listing of the 1,000 most recently updated issues and PRs (down to #19803), grepped locally for
enumerateBoard,frontier,never-issuedandphantom, found nothing that carries this. #20330 (the qualifier grammar, PR #20554) is a different defect in the same script.Dedupe words:
issue-citations enumerateBoard truncated frontier·census never-issued phantom·parseNextLink early stopGenerated by Claude Code