test: skip leanSpec fixture tests while fixtures lag leanVM - #623
Conversation
The latest leanSpec fixture release is still generated with the leanVM format from before #606, so its validator pubkeys no longer match ours and every spectest fails to decode its fixture (`ValidatorPubkey length != 32`), which keeps CI on main red. Mark the four datatest harnesses `test = false` so `cargo test` skips them until leanSpec publishes fixtures in the current format; they can still be run by name. `--all-targets` leaves such targets out, so lint them explicitly to keep them compiling in the meantime. Re-enabling them is a revert of this commit.
🤖 Kimi Code ReviewI'll review this PR which disables certain spectests from running by default while ensuring they still compile via explicit clippy invocations. Overall AssessmentThis is a reasonable temporary workaround for stale test fixtures, but there are several issues with the approach that could lead to silent breakage and maintenance problems. Issues Found1. CI and Makefile Divergence Risk (
|
| Concern | Assessment |
|---|---|
| Consensus test coverage gap | Medium risk. These tests validate fork choice, signatures, state transition, and SSZ — core consensus logic. Disabling them reduces confidence in correctness. |
| Silent fixture staleness | The root cause (fixture format mismatch) should be fixed upstream or with a compatibility layer, not worked around indefinitely. |
| Compilation-only checks | Better than nothing, but doesn't validate behavior against spec. |
Recommendations Summary
- Verify
cargo clippy --test <name>works withtest = false— this is the most critical potential bug. - Fix misleading comments in
Cargo.tomlfiles to accurately describe why each test is disabled. - Add tracking issue references for re-enabling tests.
- Deduplicate test name lists between CI and Makefile to prevent drift.
- Set a timeline for fixing or updating the stale fixtures rather than leaving tests permanently disabled.
The mechanical approach is sound if clippy invocation works, but the documentation and maintainability issues are worth addressing before merge.
Automated review by Kimi (Moonshot AI) · kimi-k2.6 · custom prompt
🤖 Codex Code ReviewLooks good overall. This PR is config-only and does not change consensus logic, state transition code, signature handling, or SSZ implementations, so I don’t see any direct fork-choice / STF / attestation correctness risk in the diff.
One thing to watch:
Minor maintainability note:
No blocking issues from me. The change is small, targeted, and improves CI coverage for otherwise-skipped spectest binaries. Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
🤖 Claude Code ReviewReview of PR 623: skip leanSpec fixture tests while fixtures lag leanVM The change is small and looks correct. I read the diff but didn't run any of the cargo or make commands.
Nits, not blocking
Otherwise LGTM. Automated review by Claude (Anthropic) · sonnet · custom prompt |
Brings in #613 (per-aggregator subnet window), #616 (logo assets), #606 (leanVM bump: XMSS moves into leanVM, 32-byte pubkeys) and #623 (leanSpec spectests set to `test = false` while fixtures lag leanVM). Resolutions that go beyond picking a side, because this branch reshaped the code main edited: - run_node: main's `init_leanvm(options.prover_arena)` now reads the flag from `LeanOptions` and runs only on `Network::Lean`, since the beacon chain signs with BLS and never reaches leanVM. #613's subnet-id validation, duty-subnet resolution and warning move into the lean arm. - BlockChain::spawn: main's startup key warm-up (`prepare_keys_for`) runs on the built `LeanDuties`, since the server is only assembled later in `start_actor`. The proposer lookup moves to `LeanDuties::our_proposer` so spawn and `get_our_proposer` share it. - on_tick: main reads the validator count once per tick; here that read stays lean-only, because `head_state` panics on a beacon store, and it is passed into `run_interval_duties`. - CI: main's by-name clippy of the skipped spectests joins the split-out `lint` job. - Benchmark reports: #606 dropped `leansig_rev`; ported to the `report/common.rs` and `report/import.rs` split this branch made. - Lean test fixtures in bci-only files (state_writer, beacon containers) move from 52-byte to `PUBLIC_KEY_SIZE` pubkeys.
Motivation
The latest leanSpec fixture release is still generated with the leanVM format from before #606. Its validator pubkeys no longer match ours, so every spectest fails to decode its fixture (
ValidatorPubkey length != 32) and CI onmainhas been red since #606 merged.Description
Temporarily skip every test that reads leanSpec fixtures, until leanSpec publishes fixtures in the current leanVM format.
datatest-stableharnessestest = false, socargo test/make testno longer run them:forkchoice_spectests,signature_spectests(ethlambda-blockchain)stf_spectests(ethlambda-state-transition)ssz_spectests(ethlambda-types)--all-targetsalso leavestest = falsetargets out, so clippy would stop compiling them. Add a clippy invocation that names them, to CI's lint job and tomake lint, so they don't rot while skipped.cargo test --profile release-fast --test <name>.The fixture download in CI and the
leanSpec/fixturesprerequisite ofmake testare left as they are, so re-enabling the tests is a plain revert of this PR.