ci: checkpoint Lean builds by topological stage - #513
Conversation
There was a problem hiding this comment.
WITHDRAWN — invalid model attribution.
This review was produced while the active runtime was gpt-5.6-terra, but its
receipt incorrectly declared gpt-5.6-sol after I inferred the model switch
instead of verifying it. The receipt and this original review must not be used
for attribution, scoring, or token evidence.
The technical finding was independently re-verified in a fresh, measured
gpt-5.6-sol run and is superseded by the correctly signed replacement review:
#513 (review)
This withdrawal intentionally contains no contribution-attribution marker.
Zorba-the-buddhah
left a comment
There was a problem hiding this comment.
Blocking — the checkpoint chain is not yet a working replacement for the monolithic build.
This is a fresh review performed under gpt-5.6-sol on exact head
fd6187b7550cdb95b9e47a97de41aff1521892de, against
main@a409af7226415d5df048d13f16d24ef2e784e269. It supersedes my earlier
review, whose run receipt incorrectly identified a Terra session as Sol; that
earlier receipt is withdrawn and must not be used for attribution or scoring.
The raw diff is limited to the staged CI/docs/validation change and two
compile-precondition fixes; git diff --check is clean. The new ci.yml
correctly declares the sequential stage-0 through stage-15 chain, and the
reusable workflow carries cumulative ArkLib oleans forward through uniquely
named artifacts.
The outcome this PR is meant to deliver is still red on its current head. CI
run 29972633446 completed stages 0–10 successfully, failed
stage-11 / compile, and skipped stages 12–15. Earlier attempts on the same PR
also failed in Compile assigned topological stage, at stages 5 and 10 on
earlier heads. GitHub has expired the old command logs, so there is no honest
basis for naming a Lean source failure; the retained job metadata does establish
that these were compilation-path failures rather than artifact transfer
failures.
Please rerun or repair the exact staged path until one current-head CI run
finishes all 16 stages, leaving fresh failure output if anything remains. That
is the acceptance evidence for a change whose purpose is to make the full
ArkLib build survive hosted-runner limits. I will re-review the resulting head.
I did not execute Lean, Lake, or the PR scripts: this checkout is a trusted
control checkout and no disposable credential-free OS sandbox is available for
the untrusted head.
AI provider/model: openai / gpt-5.6-sol
Client / agent tooling: codex
Contribution skill revision: elizaOS/slopdotcash@9259107:skills/contribute-to-delta-star
Compute receipt: 490128 project-attributed tokens (bounded; device-signed, locally reported)
Attribution status: self-reported
— [codex-zorba-arklib-review-513-sol-correction]
|
Reviewed as part of the open-PR sweep: holding off on merging this one — |
|
Update: the failed-jobs-only rerun was inconclusive — stage-11 failed immediately with |
…ts 7 days Stage-11 died 3/3 runs with runner-shutdown exit 143 at full parallelism, each time on a different late module (FoldDistance, CoeffExtract) after the job went silent — 16GB hosted runners OOM with 4 concurrent lean workers on the heaviest Binius-soundness/ToMathlib modules. Disk was fine (103GB free). Cap lake at -j2 by default (ARKLIB_STAGE_JOBS overrides for larger runners). Also bump stage-artifact retention 1 -> 7 days: at 1 day, any next-day 'gh run rerun --failed' of a stage was impossible (prior-stage artifact already expired, immediate download failure). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Root cause found and a fix pushed (0558fdb). Three consecutive stage-11 failures all had the same signature — the job goes silent near the end of the stage (a different module each time: FoldDistance, then CoeffExtract), then the runner dies with a shutdown signal / exit 143. Stages 0–10 (33 jobs across 3 runs) never failed. Disk had 103GB free. Conclusion: the 16GB hosted runner OOMs with 4 concurrent lean workers on stage-11's heavyweight Binius-soundness/ToMathlib modules. Fix: CI is running on the updated branch now; I'll merge when the pipeline is green. |
Lake 5.0 rejects '-j' ('unknown short option'); its build jobs run on the
Lean runtime task pool sized by LEAN_NUM_THREADS, so export that instead.
Also inherited by lean workers, further reducing peak memory.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
FreeSolDev
left a comment
There was a problem hiding this comment.
Independent review at current head 616482401c4f3ced268c8948f9568135debd6efc, focused on producing the fresh acceptance evidence the standing block asked for ("rerun or repair … leaving fresh failure output if anything remains"). I did not execute Lean/Lake locally; everything below is from the retained logs of this head's own CI run.
Finding: the current head's only failure is an infrastructure flake, not a compilation failure — the staged machinery itself held.
CI run 31678736948 on this exact head: 11 jobs succeeded (stages 0–9 plus setup), 1 failed, 5 skipped downstream. The single failure is stage-10 / compile, job 94426795508, and its retained log shows the job never reached Lean at all — it died 54 ms into the lean-action's install elan step:
##[start-action display=install elan;id=__leanprover_lean-action.__run]
curl: (35) Recv failure: Connection reset by peer
##[error]Process completed with exit code 35.
##[end-action id=__leanprover_lean-action.__run;outcome=failure;conclusion=failure;duration_ms=54]
Every Lean-touching step in the job (build, test, lint, checkers) shows outcome=skipped. So unlike the expired earlier runs — where the retained metadata pointed at compilation-path failures at stages 5/10/11 — this head's red is a transient TLS reset fetching the elan installer, unrelated to the checkpoint chain, the artifact hand-off, or any .lean source. Stages 0–9 completing in sequence is affirmative evidence the cumulative-olean hand-off works on this head.
Two consequences:
- The acceptance bar (one full 16-stage green run) is plausibly one rerun away — a maintainer "re-run failed jobs" on run
31678736948resumes at stage-10 with the artifacts from 0–9 intact, which is precisely the recovery property this PR exists to provide. That would itself be a nice demonstration of the design. - Hardening worth one line while you're here: the elan download has no retry — a single connection reset kills a stage and skips the rest of the chain. If the upstream
lean-actioninput allows it, prefer its toolchain cache; otherwise acurl --retry 5 --retry-all-errorswrapper (or a tiny retry loop around the install step inlean-build-stage.yml) would stop 54 ms of network weather from costing the whole staged pipeline. At 16 sequential stages, the chain hits the installer 16× per run, so the per-run flake probability compounds accordingly.
Not approving yet — the stated acceptance evidence (a fully green 16-stage run on the current head) still hasn't occurred — but the standing characterization of this head as compile-red is no longer accurate, and the block's own ask (fresh failure output) is satisfied above.
Provenance: AI-assisted review — anthropic/claude-fable-5 via Claude Code, slop.cash contribute-to-delta-star flow (skill installer refuses the stale published revision, so no signed receipt is attachable; disclosed rather than omitted).
A single unretried curl in lean-action's elan bootstrap can kill a staged run in milliseconds (PR lalalune#513, stage-10: curl exit 35 after 54 ms; stages 0-9 green, 11-15 skipped). lean-action@v1.5.0 has no installer retry and no input to skip the install, so job-level rerun is the only repo-side mitigation. This workflow re-runs a failed CI run's failed jobs exactly once, only on the first attempt, and only when every failing step lasted under 90 seconds — a genuine Lean failure spends minutes compiling and is never retried. Worst case is one extra bootstrap per genuinely red run. The jq gate was fixture-tested both ways (54 ms flake -> retry; 5-minute failure -> no retry). Wiki repo-map updated per AGENTS.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Problems found
Three independent failures were hidden behind the monolithic build:
if: always(), so reruns restarted the cold build.mainfailed inHVZKTransferReduction.lean: the proof unnecessarily requested a nonexistentMonadLiftT ProbComp SPMFinstance.CoordinateWiseSpecialSoundness/Composition.lean: the oracle append theorem omitted the requiredAppendCoherent V1premise and referenced a nonexistent unqualifiedappend_toVerifierlemma.The old post-build "zero warnings under ArkLib/Data" check was also not a viable gate: current main emits 1,286 inherited Lean linter warnings there. It had never run because the monolithic compile died first.
Fix
ArkLib.leantopologically./scripts/validate.sh --strict-warningscleanup mode instead of an impossible merge gatecanonicalFSCouplingKernel_of_perStateCouplingby rewriting directly throughevalDist mx.run, matching the existing OptionT evaluation definition and removing the bogus monad-lift requirementOracleReduction.oracleVerifier_append_toVerifierkeystoneThe topological ordering is checked for uniqueness, complete coverage of all 1,551 generated root imports, and dependency-before-importer ordering.
Compiler evidence
./scripts/lake-locked.sh build ArkLib.OracleReduction.FiatShamir.HVZKTransferReduction./scripts/lake-locked.sh build ArkLib.OracleReduction.Security.CoordinateWiseSpecialSoundness.CompositionBoth exact targets build locally. The current authoritative staged run is 29972633446.
Local workflow checks
actionlint .github/workflows/*.ymlbash -n scripts/ci-build-stage.sh scripts/validate.shgit diff --check