Repository navigation
ci: a toolchain fetch is retried three times and no more (#242) - #285
Conversation
Every step of ci.yml, honesty.yml and reproducibility.yml that fetches elan's installer, the pinned Lean toolchain (`elan toolchain install`) or the pinned Rust toolchain (`rustup toolchain install`) runs the fetch through .github/retry.sh: the same command at most three times, 10 and then 20 seconds apart, exiting with the third attempt's status after its own error. An HTTP 5xx or a resolver failure (curl exit 6) from a release host no longer fails a leg before its first test unless it lasts through all three. What is pinned and what is checked are unchanged. The host matrix's Rust step names `shell: bash`, so that on Windows the script runs under Git Bash and not PowerShell. Plant (VERIFICATION.md): the elan step's body against a wrong URL fails after exactly three attempts (exit 22), against an unresolvable host after three (exit 6), and against the real URL succeeds on the first. Register unchanged at 443: validate-model, validate-spec-links, RP-13, RP-14, RP-16 and the meta-gate pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Maintainer: read, and in the Generated by Claude Code |
|
Maintainer: merged into Generated by Claude Code |
…robe; the probe's target add runs behind .github/retry.sh Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Closes #242.
What changes. Every step of
ci.yml,honesty.ymlandreproducibility.ymlthat fetches a toolchain now runs the fetch through.github/retry.sh:ci.yml: the seven "Install elan and the pinned Lean toolchain" steps (thevvlegs and every Atlas job), both the elan installer andelan toolchain install "$(cat lean-toolchain)", and its threerustup toolchain installsteps.honesty.ymlandreproducibility.yml: their onerustup toolchain installstep each. Neither installs Lean.The bound. At most three attempts of the same command, 10 and then 20 seconds apart. When all three fail, the script exits with the third attempt's status after that attempt's own error, plus an
::error::line naming the command. Every failing exit is retried, so an HTTP 5xx and a resolver failure (curl exit 6, the third occurrence on #242) are both covered. The command, its pinned version and the installer's own checks are the same on every attempt. Nothing about what is pinned or verified changes.The host matrix's Rust step gains
shell: bash, so that on Windows the script runs under Git Bash and not PowerShell. The step after it already does the same.The plant (VERIFICATION.md, "A toolchain fetch is retried three times and no more"). The elan step's body was run outside Actions with
HOMEandGITHUB_PATHin a scratch directory:https://elan.lean-lang.org/elan-init.sh.wrong(the plant)curl: (22) … 404attempts, thenfailed after 3 attempts (exit 22); the step exits 22https://elan.lean-lang.invalid/elan-init.shcurl: (6) Could not resolve hostattempts, thenfailed after 3 attempts (exit 6); the step exits 6An HTTP 500 itself was not reproduced, because the host cannot be made to return one. The loop keys on the exit status, and the failed runs on #242 show
elan toolchain installexits non-zero on a 500.Register unchanged (443).
RP-14reads more ofci.ymlthan the triggers: it forbidsvars.,inputs.andcontinue-on-error, allowsif:only in its three forms, countscargo buildonce, and reads the gate step. It reads nothing in a toolchain step, and this change adds none of those strings. Run locally on this head:cargo xtask validate-model(audit-deferralreads.github/retry.sh),validate-spec-links,conformance_rp_13,conformance_rp_14,conformance_rp_16and the meta-gate--test bdd. All pass.Not covered.
release.ymlhas the same unretried fetches. #242 names three workflows, so it is left as it is here.🤖 Generated with Claude Code