Row: GATE-PR-SIZE-BENCH-EVIDENCE
origin/main at 57220ba34 tracks ten docs/bench-evidence/qwen38-27b-exl3-variadic-20260905/*.clientlog files that scripts/check-pr-size.py cannot classify, so the checker's own whole-tree sweep is red on main today.
The ten paths
OURS-r1-c16.clientlog OURS-r1-c32.clientlog OURS-r2-c16.clientlog OURS-r2-c32.clientlog
THEIRS-r1-c16.clientlog THEIRS-r1-c32.clientlog THEIRS-r2-c16.clientlog THEIRS-r2-c32.clientlog
THEIRS-r2-c1.clientlog THEIRS-r2-c4.clientlog
Why they are unclassified
RECORDED_BENCH_EVIDENCE on main holds 16 exact paths and admits the c1/c4/c8 client logs of that run plus PROBE.clientlog and THEIRS-r2-c8.clientlog. The later c16/c32 sweep and the THEIRS-r2-c1/THEIRS-r2-c4 legs added these ten files and did not extend the set. .clientlog appears in no extension arm: BENCH_EVIDENCE_RUN admits txt|log|gz|sh|cu|py|jsonl|rc only, and the row's spec .agents/specs/gate-pr-size-bench-evidence.md deliberately refuses a general .clientlog suffix rule, so each recorded path must be named. classify_path fails closed, which is the designed behaviour.
Why CI never caught it
The pr-size job (.github/workflows/ci.yml:1101) runs only python3 scripts/check-pr-size.py --base <base.sha> --head <head.sha>, and its if: admits pull-request events only, so a push to main skips it. tests/scripts/test_check_pr_size.py is not registered in tests/CMakeLists.txt and is not invoked by any workflow, so the whole-tree sweep runs only when an agent runs it by hand.
Consequence: an agent that runs the sweep on a current tree sees ten failures that belong to main, and any pull request that touches this checker is refused through the checker-change mutation-evidence contract, which requires that module to pass.
Evidence
git ls-tree -r --name-only origin/main docs/bench-evidence/qwen38-27b-exl3-variadic-20260905 lists the ten files; the 16-entry RECORDED_BENCH_EVIDENCE frozenset does not contain them.
- Running
origin/main's own scripts/check-pr-size.py over origin/main's own tracked tree (7,282 paths) reports exactly these ten unclassified paths. The frozensets on origin/main and on a branch based on 6db4bef90 are byte-identical (16 entries, empty symmetric difference), so this is not a branch artifact.
classify_path on any of the ten raises ValueError: unclassified repository path ....
Fix (this row's scope, per its spec)
Extend RECORDED_BENCH_EVIDENCE with the ten exact paths, extend the spec's recorded-artifact table, and add the corresponding assertions to tests/scripts/test_check_pr_size.py, with red-before and green-after runs of the sweep. Do not add a .clientlog suffix rule.
Found while triaging the pr-size reds on pull requests #3096 and #3097, whose own three and six unclassified paths were separate, branch-local omissions. Both were repaired on their branches; this upstream set is not theirs to fix.
Row:
GATE-PR-SIZE-BENCH-EVIDENCEorigin/mainat57220ba34tracks tendocs/bench-evidence/qwen38-27b-exl3-variadic-20260905/*.clientlogfiles thatscripts/check-pr-size.pycannot classify, so the checker's own whole-tree sweep is red onmaintoday.The ten paths
Why they are unclassified
RECORDED_BENCH_EVIDENCEonmainholds 16 exact paths and admits thec1/c4/c8client logs of that run plusPROBE.clientlogandTHEIRS-r2-c8.clientlog. The laterc16/c32sweep and theTHEIRS-r2-c1/THEIRS-r2-c4legs added these ten files and did not extend the set..clientlogappears in no extension arm:BENCH_EVIDENCE_RUNadmitstxt|log|gz|sh|cu|py|jsonl|rconly, and the row's spec.agents/specs/gate-pr-size-bench-evidence.mddeliberately refuses a general.clientlogsuffix rule, so each recorded path must be named.classify_pathfails closed, which is the designed behaviour.Why CI never caught it
The
pr-sizejob (.github/workflows/ci.yml:1101) runs onlypython3 scripts/check-pr-size.py --base <base.sha> --head <head.sha>, and itsif:admits pull-request events only, so a push tomainskips it.tests/scripts/test_check_pr_size.pyis not registered intests/CMakeLists.txtand is not invoked by any workflow, so the whole-tree sweep runs only when an agent runs it by hand.Consequence: an agent that runs the sweep on a current tree sees ten failures that belong to
main, and any pull request that touches this checker is refused through the checker-change mutation-evidence contract, which requires that module to pass.Evidence
git ls-tree -r --name-only origin/main docs/bench-evidence/qwen38-27b-exl3-variadic-20260905lists the ten files; the 16-entryRECORDED_BENCH_EVIDENCEfrozenset does not contain them.origin/main's ownscripts/check-pr-size.pyoverorigin/main's own tracked tree (7,282 paths) reports exactly these ten unclassified paths. The frozensets onorigin/mainand on a branch based on6db4bef90are byte-identical (16 entries, empty symmetric difference), so this is not a branch artifact.classify_pathon any of the ten raisesValueError: unclassified repository path ....Fix (this row's scope, per its spec)
Extend
RECORDED_BENCH_EVIDENCEwith the ten exact paths, extend the spec's recorded-artifact table, and add the corresponding assertions totests/scripts/test_check_pr_size.py, with red-before and green-after runs of the sweep. Do not add a.clientlogsuffix rule.Found while triaging the
pr-sizereds on pull requests #3096 and #3097, whose own three and six unclassified paths were separate, branch-local omissions. Both were repaired on their branches; this upstream set is not theirs to fix.