Repository navigation
perf(pr-pipeline): remove every dead listing-carry lookup and the listing upload - #13040
Conversation
… listing no gate saves The verdict reader reads the FAIL index by exact name once the legacy FAILs file loads, so pr-merge's gate never writes verify-listing.json and no pr-merge-verify-listing artifact has been uploaded since 03:22Z on 2026-11-03. verify-cap.mjs still ran listing-carry.mjs before the first FAIL-cap read of each address-feedback and pr-unblock dispatch job: one run listing and ten runs' artifact listings (MAX_RUNS), finding nothing, for a carried listing the index-mode reader never reads. Drop listing-carry.mjs from carrySteps and fetch the carry when the job names the run cache or head-ref map, and remove BABYSIT_VERIFY_LISTING_CARRY from both dispatch steps. Verdicts are unchanged: the reader reads the carry file only on its whole-listing path, and no such file has existed since the index turned on. Dispatch job 126277059871 (run 41739470521): listing-carry 11 calls, carry-run-cache 3, job total 45. Expected after: listing-carry 0, carry-run-cache about 5 (it now pays the run listing and the newest run's artifact listing the shared reads used to hold), about 9 fewer a job that reaches a FAIL-cap read. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MWmASQQUMmnivZUuzgYfbe
…ting upload The verdict reader reads the FAIL index by exact name, so no gate saves an artifact listing and no pr-merge-verify-listing artifact exists to carry. Every remaining reader of that carry looked for one each run and found none: - pr-merge's merge job ran listing-carry.mjs after rotation, the head-ref map and the run-cache carry: about 9 run-artifact listings a run (runs 2 to 10 of MAX_RUNS; the run page and the newest run's artifacts were already in the job's shared reads); - enable-auto-merge ran it after the head-ref map: the same 9; - ci-status's merge-queue reader ran it in each lanes App merge_group run: 9, or 10 when the run page was not yet shared. Remove those steps and calls, every BABYSIT_VERIFY_LISTING_CARRY env line, and the merge job's pr-merge-verify-listing upload and its credential scan, which nothing reads now. With no caller left, listing-carry.mjs, its test, its floor row and retention entry go too; sync-hold-floor.py regenerates the hold-floor copies and the floor pins drop that one gate-class row. BABYSIT_VERIFY_LISTING stays wherever a reader can still save a listing (_targeted's whole-listing fallback, ci-status's pass-name file). Verdicts are unchanged: the reader reads a carried listing only on its whole-listing path, and no carry file has existed since index mode turned on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MWmASQQUMmnivZUuzgYfbe
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. |
…s cap The changelog fragment and the reader's carried-reads comment said no gate saves a listing in index mode. A pull request past INDEX_NAMES_CAP index names takes the whole-listing path, and that path saves one, so the carry was rarely live, not dead. Past that cap a dispatcher's FAIL-cap read now lists in full (independent security review, P5). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MWmASQQUMmnivZUuzgYfbe
|
claude-security-review reviewed Security review: PR #13040 (remove the dead listing-carry lookups and the listing upload)No security issues found. I read every hunk of all 21 listed files and the two files the PR deletes ( Trust controls and merge holds checked
Throughput-phase exemptionOne path-hold floor row is removed: Other notes
critical-findings: 0 |
|
claude-review reviewed Code review: PR #13040, removing the dead listing-carry lookups (head
|
No related issue: GITHUB_TOKEN spend cut from the hub's counter-B attribution of the 2026-11-03 22:52-23:52Z window; open-issue intake is closed while issues are driven to zero.
Summary
#12558 (FAIL index mode) turned off the whole-artifact listing except for a pull request past
INDEX_NAMES_CAP(100) index names, so in practice no gate has savedverify-listing.jsonsince: the lastpr-merge-verify-listingartifact is from run 41571354158 (2026-11-03T03:22:28Z), the run just before #12558 merged at 03:28:44Z. Everylisting-carry.mjscall site still went looking for one. It walks main's pr-merge runs up toMAX_RUNS = 10(rotation.mjs:41-42) and finds nothing: "no earlier artifact listing; the verdict reader lists every page" (dispatch job 126277059871,script=listing-carry github-token=11).The reader doesn't need the carry. It is in index mode on every path (
verify-legacy-fails.jsonloads,index_mode()at babysit_verify_evidence.py:2704-2708,_targetedreads by exact name), and it reads a carried listing only on the whole-listing path (_incremental_base, :1531-1546). The carry was live only for a PR past that cap (independent security review); there, a dispatcher's FAIL-cap read now lists in full (about 50-58 s for 69 pages, inside its 120 s deadline), and a read that misses its deadline runs the round under its own caps, as before. The hub's other counter-B bucket,actions/artifacts(~7 a job), is the reader's exact-name?name=reads and stays.Fix
verify-cap.mjsno longer runs listing-carry. The one-time carry fires when the job namesBABYSIT_RUN_CACHEorBABYSIT_VERIFY_HEAD_REFS.BABYSIT_VERIFY_LISTING_CARRYenv lines, and thepr-merge-verify-listingupload with its scan step (nothing else reads that artifact).listing-carry.mjsand its test are deleted. Its floor row indocs/conventions/pr-pipeline.yamland itsartifact-retention.jsonentry go too.scripts/sync-hold-floor.pyregenerated the floor copies, and the floor pins move by one gate row.BABYSIT_VERIFY_LISTINGstays everywhere, because_targetedfalls back to a whole listing pastINDEX_NAMES_CAP.Merge-gate verdicts are unchanged: a failed or missing listing only removes the incremental path, and every refusal but
verify:missing/spec-changed/untrusted-specholds (merge-holds.mjs:1419-1449). Also, each removed step wascontinue-on-errorand wrote nothing on a miss. A failed read still fails closed through the same reader.Call delta (R34), GITHUB_TOKEN, counter B routes (
actions/runs/{n}/artifacts):merge_grouprunPR_MERGE_READS_PATHshared with head-ref-mapVerification
workflow.test.mjs3 FAIL, including the new "no job keeps, fetches or names a carried artifact listing";ci-lanes-pr-hold.test.shFAIL=1;verify-cap.test.mjs8 of 28 FAIL.workflow.test.mjs107/107 after the main merge;sync-hold-floor.py --checkclean;ci-lanes-pr-hold303/0;check-artifact-retention39/0; the ci-* and check-* suites naming a changed workflow all pass.LISTING_CARRY_ENVinput, and making a dispatcher'sreadFailedskip the round instead of running it.actions/runs/{n}/artifactsper job re-read from the api-routes annotations.Related
🤖 Generated with Claude Code
https://claude.ai/code/session_01MWmASQQUMmnivZUuzgYfbe