chore(deps): bump leanSpec to f12000b (pre-devnet5), rename fork to Lstar#391
Conversation
The pinned leanSpec commit (18fe71f, 2026-04-29) predates two upstream changes that together broke `make test`: - PR #725 (f12000b) renamed the key JSON schema from `attestation_public` / `proposal_public` to `attestation_keypair.public_key` / `proposal_keypair.public_key`. The released test keys at the `latest` tag use the new schema, so fixture generation fails with `KeyError: 'attestation_public'`. - PR #745 (825bec6) fixes a tempfile buffer bug where the gzip writer wasn't closed before tar read, causing intermittent download truncation that surfaces as a misleading click `Aborted!` message (EOFError caught by click's top-level handler). Also rename `--fork devnet` to `--fork Lstar` to match the upstream fork rename.
🤖 Kimi Code ReviewMakefile (lines 27-33)
Recommendation: Before merging, run the full test suite against the new Automated review by Kimi (Moonshot AI) · kimi-k2.5 · custom prompt |
🤖 Claude Code ReviewPR #391 —
|
Greptile SummaryThis PR updates the pinned
Confidence Score: 5/5Safe to merge — the change is a targeted commit-hash bump and a matching fork rename, both directly tied to documented upstream breakage. The only touched file is the Makefile, and every line changed has a clear upstream motivation described in the PR. The commit hash, fork name, and scheme flag syntax all line up with the referenced upstream PRs (#725, #745). The author verified the fix locally with a full clean run of fixture generation and the complete test suite. No files require special attention.
|
| Filename | Overview |
|---|---|
| Makefile | Bumps LEAN_SPEC_COMMIT_HASH to 825bec6, renames --fork devnet → --fork Lstar, and switches --scheme=prod to --scheme prod to align with upstream leanSpec breaking changes |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[make test] --> B[leanSpec/fixtures]
B --> C[leanSpec target]
C --> D[git clone leanSpec.git]
D --> E[git checkout 825bec6]
E --> F[uv run fill\n--fork Lstar\n-n auto\n--scheme prod\n-o fixtures]
F --> G{496 fixtures\ngenerated}
G --> H[cargo test --workspace --release]
Reviews (1): Last reviewed commit: "chore(deps): bump leanSpec to 825bec6, r..." | Re-trigger Greptile
🤖 Codex Code Review
No consensus, fork-choice, attestation, STF, XMSS, or SSZ implementation code changes are in this PR; the review surface is limited to fixture reproducibility. Other than the cache/staleness problems above, the update is straightforward. Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
Match the upstream leanSpec fork rename, parallel to the Makefile change.
Pinning to 825bec6 unintentionally pulled in leanSpec's devnet5 aggregated proof wire format (PR #717, an unavoidable ancestor of the download fix #745). That format requires the full crypto-stack migration tracked in the devnet5 PRs (#378/#370) and is not yet on main, so the forkchoice spec tests failed with AggregateVerificationFailed(DeserializationFailed). Repoint to f12000b (PR #725), the commit just before devnet5. It carries the key-schema rename that unbreaks fixture generation against the released `latest` test keys, while staying on the old proof format that the current leanMultisig@5eba3b1 still understands. The proofData -> proof field rename is therefore not needed and is reverted. f12000b predates the download fix (#745), whose download_keys reads the still-open download tempfile and intermittently aborts with EOFError. Work around it in both the Makefile and CI by fetching+extracting the prod keys with curl+tar before `fill`, so the buggy code path is skipped. Both blocks are flagged for removal once the pin moves past #745. Verified against freshly regenerated f12000b fixtures: forkchoice 84/0, signatures 11/0, full workspace 421/0.
Summary
The pinned
LEAN_SPEC_COMMIT_HASH(18fe71f, 2026-04-29) can no longer generate fixtures: the releasedlatesttest keys moved to the new key JSON schema (attestation_keypair.public_keyetc.), so the old code fails withKeyError: 'attestation_public'during fixture generation.The fix bumps the pin to
f12000b(leanSpec PR #725, 2026-05-17), which reads the new key schema. This is the commit just before leanSpec's devnet5 work, chosen deliberately:825bec6(the #745 download fix). That commit unavoidably includes leanSpec PR #717 (ac5f259), which switched the aggregated-proof wire format to devnet5. The Rust client still runsleanMultisig@5eba3b1(pre-devnet5), so the forkchoice spec tests failed withAggregateVerificationFailed(DeserializationFailed). The devnet5 proof format requires the full crypto-stack migration tracked in feat: add devnet 5 support #378/feat: integrate leanMultisig devnet5 + leanSpec PR #717 wire format #370, which is not yet onmain.f12000bpredates #717, so fixtures keep the old proof format that the current crypto stack deserializes correctly. No Rust changes are needed.Also rename
--fork devnet→--fork Lstarto match the upstream fork rename (already in effect atf12000b).Download workaround
f12000bpredates leanSpec PR #745, whosedownload_keysreads the still-open (unflushed) download tempfile, intermittently truncating the gzip tail and aborting withEOFError(surfaced asAborted!). Both the Makefile and CI now fetch+extract the prod keys withcurl+tarbeforefill, which fully writes the archive before reading it;fillthen sees the keys present and skips its own buggy download. Both blocks are commentedRemove once the pin moves past PR #745.Why not 825bec6 / devnet5?
The devnet5 aggregated-proof wire format and the matching
ethlambda-cryptorewrite live in #378 / #370 and are not yet merged tomain. Bumping fixtures to a devnet5 leanSpec commit here would require duplicating that crypto work. This PR stays scoped to "unbreak fixture generation onmain" and remains on the pre-devnet5 format until the devnet5 PRs land.Test plan
rm -rf leanSpec && make leanSpec/fixtures— clean download (via curl+tar) + extract, 554 fixtures generated, noAborted!.cargo test -p ethlambda-blockchain --test forkchoice_spectests— 84/0.cargo test -p ethlambda-blockchain --test signature_spectests— 11/0.make test— full workspace suite, 421/0.