Repository navigation
fix(pr-pipeline): verify a diff of up to 12 chunks instead of stopping at 4 - #11646
Conversation
…eeds pr-verify stopped any diff over 4 chunks of 300000 bytes (about 1.2 MB) with no verdict. The bound was the judge steps each job unrolls: a run-claude-cli step cannot loop, and the job timeout held five of them. Each judging job now has 12 chunk slots, the job timeout holds them and the final judge (301 minutes, under the 6-hour job limit), and the ceiling is set once, as MAX_CHUNKS in chunk-diff.sh, which the workflow tests hold every job's slots to. 12 chunks hold a 3 MB diff; a diff past them still stops with its size and the chunk count named, and a file over one chunk is still named. write-verdict.mjs and the prompt step now read chunk counts past 9. Every chunk must still return a counted verdict, and the final judge must still run, or the head gets none. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
PR body contract — issue linkage This PR body does not yet satisfy the issue-linkage contract:
Edit the body and this comment updates itself on the next run. |
|
claude-security-review reviewed No security issues found. critical-findings: 0 I read all 8 changed files in What I checked
Spend (not a hold): a head can now cost up to 12 chunk judge runs plus the whole-spec judge, where it was 4 plus one. Job timeouts rise from 125 to 301 minutes. This spends prepaid API credits and subscription usage only. No paid plan, billing setting or billed resource changes. |
|
claude-review reviewed No findings. I read the full diff in What I checked
Spend: this change raises how many prepaid-credit judge runs one large head can use, up to 12 chunk judges plus the final spec judge per leg, each capped at 22 minutes. This is prepaid credit or subscription usage only, so it is not a hold. Settled threads and closing issues: the PR context lists no closing-issue sections and no settled-threads file was named. The PR body cites #11463, #11000 and #11169 as "Refs". I did not read them. Everything in the PR body about suites run, gates passed and smoke runs is the author's claim. I did not confirm any of it. |
Refs: #11463, #11000, #11169
Summary
pr-verifystopped any diff that needed more than 4 chunks of 300000 bytes (about 1.2 MB) with noverdict. #11169 (a 1.33 MB diff, 5 chunks) has no verdict for that reason
(run 41219253935).
This raises the ceiling to 12 chunks, enough for a 3 MB diff. Every chunk still needs a counted
verdict, and the final judge still has to run.
Fix
run-claude-clijudge step per chunk,and a
uses:step cannot loop. Each job had 4 slots, and its 125-minute timeout held five22-minute judge steps.
seal-lane-outputandopen-lane-output(MAX_CHUNKS=6) are not usedby
pr-verify, so they set no bound.slots apart from its chunk number. The job timeout is
13 × 22 + 15 = 301minutes, underGitHub's 6-hour job limit. The workflow is about 266 KB, under the 500 KB file limit.
MAX_CHUNKS=${MAX_CHUNKS:-12}inchunk-diff.sh. No step sets itsown, and
workflow.test.mjsderives the slot count from it. A workflow-levelenv:was ruledout because
probe/parity.test.mjsrequires that none reach the CLI.write-verdict.mjsand the prompt step now accept chunk counts above 9 (chunk-10and up).its byte count and
needs N chunks, more than 12. Neither leaves a verdict, so size alone neverwrites a fail.
pr-review-mainis not changed. It sharessplit-diff.py, which already takes the ceiling asan argument, but its own slots and the cap it passes are its own (feat(pr-pipeline): review an oversize main-run diff in chunks instead of holding it for a person #11000).
Verification
chunk-diff.test.mjs: a 3 MB diff under the workflow's limits splits into 12 chunks with nostop. A diff past the ceiling stops, naming its size and the ceiling.
write-verdict.test.mjs: a 12-chunk head passes, fails on chunk 11's fail, and gets noverdict when chunk 11 leaves none.
workflow.test.mjs: the ceiling is set once, and 12 prompts are written for 12 chunks.SLOTS,chainOf, theArray(5)reason counts and theFail without a verdictconditionsnow derive from the ceiling.
(?:-\d|-spec)becomes(?:-\d+|-spec).MAX_CHUNKSstep-env assertion now checks that no step sets it.pr-verify(238 tests),pr-review-main,reconcile,pr-unblockworkflow-gates,seal-lane-output,open-lane-output,upload-lane-transcriptandresolve-config(1051 tests), andpr-merge(770 tests).check-line-citations,check-artifact-retention,check-lane-coverage, markdownlint and typos.chunk-diff.shon real diffs: feat: land the rest of the UI course migration: interface design guidance, build-generator and eval cases #11169 gives 5 chunks, and a 3.05 MB range ofmaingives 11 chunks with an 8-part manifest.
Related
pr-review-mainhas the same oversize stop.🤖 Generated with Claude Code