Repository navigation
fix(ci): section git fetches read up to 3 times through fetch_p6.sh (P6) (#4936) - #5066
Merged
Merged
Conversation
…P6) (#4936) Every `git fetch` in ci/sections.yml, and the two in the build-base pin and resolve_base, now goes through scripts/ci/fetch_p6.sh. A fetch that does not answer (timeout or a transport error) is read again, up to 3 times. A fetch that answers with an error is not read again: that answer is the verdict. - scripts/ci/fetch_p6.sh: the helper, a --self-test case table (48 rows, a planted git) and --check-wiring, which is RED on any fetch in ci/sections.yml that does not go through the helper. x86-main runs both. `-C` with an empty or missing dir is a usage error (rc 129). - scripts/ci/pin_build_base.sh, scripts/lib/resolve_base.sh: their fetches read through the helper, with `-C` kept; the pin self-test (30 rows) and two roadmap self-test rows run from a cwd that is no repo, so a read that lost its -C is RED. - scripts/check_roadmap_diff_additive.sh, scripts/tests/ratchet_semantics_test.sh: rows for the stacked merge_group path's deepen and by-sha reads. The case-table annotation half of #4936 (the fixture's "not completed within 12000s" line shown as a job error) landed on main in #5029 as scripts/ci/fixture_quiet.sh. This branch takes that and carries no second mechanism. It is a re-cut of the earlier branch on main 9e77499. Refs #4936 Agent: aprender-4936 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift
enabled auto-merge
October 10, 2026 14:28
Member
Author
|
Supersedes #5051. |
|
§13.11 rung 1 — quorum shadow verdict Shadow mode: this records a verdict and merges nothing. A refusal |
noahgift
disabled auto-merge
October 10, 2026 14:48
noahgift
enabled auto-merge
October 10, 2026 14:58
This was referenced Oct 10, 2026
Merged
noahgift
added a commit
to guyernest/aprender
that referenced
this pull request
Oct 12, 2026
…aiml#5076) The ARM64 GPU quick row, the x86 CUDA unit row and mac-check could not block a merge: none is in `gate`'s needs, and the required checks are `gate` and `workspace-test`. Under the GATE/LAB rule a check that cannot block never runs on a PR, merge-queue or release path. A quorum ruled DELETE-TO-LAB 3/3 on each, PROMOTE 0/3. - ci.yml: the gpu-touched, GPU and mac-check jobs are gone; mg-reuse no longer outputs `mac`. `gate`'s needs are unchanged. - gpu-lab-nightly.yml (new): the two GPU rows, nightly + dispatch, on the same labels, in each box's concurrency group. - nightly.yml: mac-check beside build-darwin; publish does not need it. - Guards and tests follow: ci_mg_reuse wiring rows, determinism-wait range, ci_gpu_touched_test, contract wording (pv validate: valid). The fourth row, sov.provenance, is not in this change: skipping it on PRs needs a fat_driver.py edit, and that file already exceeds the pre-commit complexity limits, so the hook refuses any edit to it. It stays tracked on the issue. Self-tests: ci_mg_reuse 78/0, ci_gpu_touched_test 30/0, ci_gpu_touched 19/0, determinism-wait 26/0, fat_driver 60/60; dag, perf-concurrency, runner-labels, guards-wired, guard-steps-isolated PASS; actionlint adds no finding. Rebased onto main 9e77499. Main had since added the paiml#4948 teardown step (always(), fat_teardown.sh) to the three GPU jobs here; the jobs stay removed, and the step moves to both jobs of gpu-lab-nightly.yml. Re-run on the rebased tree: ci_mg_reuse 78/0, ci_gpu_touched_test 30/0, ci_gpu_touched 19/0, fat_driver 60/60; determinism-wait, guard-steps-isolated, dag, perf-concurrency, runner-labels, guards-are-wired PASS; pv validate: valid; actionlint findings on ci.yml and nightly.yml equal main's (4 info). Re-cut onto main 83ef430. paiml#5066 had routed the PR-diff selector's shallow fetch through fetch_p6.sh; that selector block is removed here, so the only change from the reviewed patch is the text of one deleted line. roadmap-aggregate-check: ok. Re-cut again onto main fec9068, after paiml#5067. The patch is byte-identical to the one above. Only the roadmap.yaml conflict needed resolving, and roadmap-aggregate regenerated it. contracts gate: 8 of 8 steps ran, 0 failed. Refs paiml#4955 Agent: aprender-wmainred Agent: apr-4918 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #4936
keep-open: B cuts section-fetch drops but cannot clear them; the stalls on the egress path continue until the network is fixed, and #4936 closes only after a post-merge x86-main log shows both mechanisms engaged.
Re-cut of #5051 onto main at 9e77499, a new branch with no merge from main. #5051 left the merge queue on a conflict with #5029, which fixed the same case-table annotation symptom (part A of #4936) with
scripts/ci/fixture_quiet.sh. This branch takes #5029's fix and carries part B only: every sectiongit fetchreads up to 3 times. The fence wrapper from #5051 is not in this branch.The patch is the one #5051 carried, minus the fence script and its two ci.yml lines. In ci.yml this branch adds only the two
fetch_p6.shlines (--self-test,--check-wiring), after main'sfixture_quiet.sh --self-test.What it does
scripts/ci/fetch_p6.sh: reads a fetch again when it does not answer (a timeout or a transport error), up to 3 reads. A fetch that answers with an error, such as a missing ref or a 401, is never read again: that answer is the verdict.-Cwith an empty or missing dir is a usage error (rc 129).fetch_p6.sh --check-wiringis RED on anygit fetchinci/sections.ymlthat does not go through the helper. It finds 7 fetches, all through the helper.scripts/ci/pin_build_base.shandscripts/lib/resolve_base.shread through the helper with-Ckept. Their rows run from a cwd that is no repo, so a read that lost its-Cis RED.check_roadmap_diff_additive.shandratchet_semantics_test.shget rows for the stacked merge_group path's deepen and by-sha reads.Case tables on 66a8c28
fetch_p6.sh --self-testfetch_p6.sh --check-wiringpin_build_base.sh --self-testcheck_roadmap_diff_additive.sh --self-testfixture_quiet.sh --self-test(main's, unchanged)Planted falsifiers for the P6 half (from #5051, same blobs)
These ran against the real scripts as CI calls them. A planted
giton PATH points at a realfile://remote, with the real 10 s backoff. M-off setsP6_READS=1. M-review reverts the first-round review fixes.resolve_basesourced by a relative path,REPO_ROOTanother tree: the stacked entry is deepenedCDPATHholding a decoyscripts/libTwo non-author reviews ran on this head. One killed 3 bare-fetch mutants, the other 7 of 7 mutants. Their non-blocking notes, left for later work:
ci/sections.ymlonly.lowSpeeddoes not cut a connection that hangs before it connects.A wiring check for
fixture_quiet.sh(never onfat_driver.py run/wait, always on the self-test) is #5063.🤖 Generated with Claude Code