Filed by the domain:skills execution seat (session_01Gqi43smmqjJ5sUrhfoPeKu, seat post #7623) out of the #18683 round (PR #18799), from the dev's out-of-scope findings, re-read by the seat on main before filing. ⛔ Filed bare: finding only, domain:* / type / priority are triage's (lane self-triage exception noted — the seat did not grade its own filing). ⛔ NOT reproduced on this board (28 open PRs at filing); a live fail-open by SHAPE.
Dedupe words: listOpenPulls truncated listing · check-clause2-carriers open PR page cap · unpaged pull listing · sweep board truncation · bare page literal 10 · swept COMPLETELY exit 0.
The reading, on origin/main 9846f2763c
scripts/pm/check-clause2-carriers.mjs :4746–:4762, the read that decides WHICH card/PR pairs exist at all:
async function listOpenPulls(repo) {
const out = [];
for (let page = 1; page <= 10; page++) {
const path = `/repos/${repo}/pulls?state=open&per_page=100&page=${page}`;
…
out.push(...batch);
if (batch.length < 100) break;
}
return out;
}
The loop ends on a SHORT page (correct) or on page 10 (the bare literal) — and in the second case it returns out exactly as in the first: 1,000 rows, no null, no diagnosis, no cap sentence. Its docblock (:4737) says 「Every open PR on the board, paged to exhaustion」, which is true only below 1,001 open PRs. The sweep then prints derived from ${pulls.length} open PR(s) (:5601) and exits 0 — the register at :570 reads exit 0 as 「swept COMPLETELY」 — with the tail unread.
The two sibling caps in the same file answer the cap the other way: EVENT_PAGE_CAP (:4783, 10 pages) returns null on the cap 「the tail is unread, so the history is unread」 → UNJUDGED; readPullFiles (FILE_PAGE_CAP 3) likewise; and PR #18799 (#18683) moves the card-comment read onto the same ladder (pagedListRead: stops on the first short page, null on the cap, one pageCapNote sentence, the page count printed in the input record). listOpenPulls is now the one list read in the file that still truncates silently — and it sits ABOVE the pool: a pair whose PR is past row 1,000 is not UNJUDGED, it is not derived, so no row of any kind is printed for it.
Why it was not folded into PR #18799 (the dev's reason, checked by the seat)
The in-place test fails on mechanicalness: this read alone THROWS on a refusal rather than answering null — 「a failure here is TOTAL」 (:4740), the caller refuses with exit 3 and 「0 pair(s) had been read」 — so whether a CAPPED listing is a REFUSAL (exit 3: the board could not be enumerated, ⛔ never a clean board) or an UNJUDGED sweep (exit 0 with every pair marked unreadable) is a decision, not a transcription of the ladder's shape. The seat's view: refusal (exit 3) — the existing rule for this read is that a partial enumeration is never a clean board, and an UNJUDGED sweep would still print a pair list that is missing pairs, which no row can say. ⚠️ Stated as a view for triage; either arm is a one-function change once ruled, and pagedListRead (on main once PR #18799 lands) is the reader for it either way.
⛔ Not measured
Refs: #18683 · PR #18799 · #4690 (the 「never clean」 register) · scripts/pm/check-clause2-carriers.mjs :4737–:4762 / :570 / :5601
domain:skills execution seat · seat post #7623 · readings taken on origin/main 9846f2763c
Generated by Claude Code
Filed by the
domain:skillsexecution seat (session_01Gqi43smmqjJ5sUrhfoPeKu, seat post #7623) out of the #18683 round (PR #18799), from the dev's out-of-scope findings, re-read by the seat onmainbefore filing. ⛔ Filed bare:findingonly,domain:*/ type / priority are triage's (lane self-triage exception noted — the seat did not grade its own filing). ⛔ NOT reproduced on this board (28 open PRs at filing); a live fail-open by SHAPE.Dedupe words:
listOpenPulls truncated listing·check-clause2-carriers open PR page cap·unpaged pull listing·sweep board truncation·bare page literal 10·swept COMPLETELY exit 0.The reading, on
origin/main9846f2763cscripts/pm/check-clause2-carriers.mjs:4746–:4762, the read that decides WHICH card/PR pairs exist at all:The loop ends on a SHORT page (correct) or on page 10 (the bare literal) — and in the second case it returns
outexactly as in the first: 1,000 rows, nonull, no diagnosis, no cap sentence. Its docblock (:4737) says 「Every open PR on the board, paged to exhaustion」, which is true only below 1,001 open PRs. The sweep then printsderived from ${pulls.length} open PR(s)(:5601) and exits 0 — the register at :570 reads exit 0 as 「swept COMPLETELY」 — with the tail unread.The two sibling caps in the same file answer the cap the other way:
EVENT_PAGE_CAP(:4783, 10 pages) returnsnullon the cap 「the tail is unread, so the history is unread」 → UNJUDGED;readPullFiles(FILE_PAGE_CAP3) likewise; and PR #18799 (#18683) moves the card-comment read onto the same ladder (pagedListRead: stops on the first short page,nullon the cap, onepageCapNotesentence, the page count printed in the input record).listOpenPullsis now the one list read in the file that still truncates silently — and it sits ABOVE the pool: a pair whose PR is past row 1,000 is not UNJUDGED, it is not derived, so no row of any kind is printed for it.Why it was not folded into PR #18799 (the dev's reason, checked by the seat)
The in-place test fails on mechanicalness: this read alone THROWS on a refusal rather than answering⚠️ Stated as a view for triage; either arm is a one-function change once ruled, and
null— 「a failure here is TOTAL」 (:4740), the caller refuses with exit 3 and 「0 pair(s) had been read」 — so whether a CAPPED listing is a REFUSAL (exit 3: the board could not be enumerated, ⛔ never a clean board) or an UNJUDGED sweep (exit 0 with every pair marked unreadable) is a decision, not a transcription of the ladder's shape. The seat's view: refusal (exit 3) — the existing rule for this read is that a partial enumeration is never a clean board, and an UNJUDGED sweep would still print a pair list that is missing pairs, which no row can say.pagedListRead(onmainonce PR #18799 lands) is the reader for it either way.⛔ Not measured
grep -n "page <= 10"acrossscripts/pm/**was not run by the seat).Refs: #18683 · PR #18799 · #4690 (the 「never clean」 register) ·
scripts/pm/check-clause2-carriers.mjs:4737–:4762 / :570 / :5601domain:skillsexecution seat · seat post #7623 · readings taken onorigin/main9846f2763cGenerated by Claude Code