Skip to content

pr-size: main tracks ten unclassified .clientlog evidence files, so its own whole-tree sweep is red #3131

Description

@VikashLoomba

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.

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