test(l1): bump zkevm tests to v0.8.4 - #7253
Conversation
The bundle is refilled against tests-glamsterdam-devnet@v8.1.3, which is what .fixtures_url_amsterdam already points at; v0.8.2 was filled against v8.1.0, so the two bundles were describing slightly different chains. Nothing in the guest contract moves. The schema id is still 0x1501, `state`, `codes` and `public_keys` are still progressive lists and `headers` is still bounded. Upstream did delete stateless_ssz.py, but only by folding the container definitions into annotations on the dataclasses in stateless.py; SSZ encoding is positional, so the wire is unchanged. The docs link to that spec file had to follow the move, since the old path 404s at the new tag. The suite passes in full at 3240/3240 fixture files, up from 3218, with EXTRA_SKIPS still empty.
|
🤖 Kimi Code ReviewI'll review this PR which updates documentation and test fixture references from ReviewGeneral AssessmentThis is a documentation and configuration-only PR with no code logic changes. The changes correctly track an upstream release bump where the wire format remained identical (schema ID Detailed Feedback1. Documentation Accuracy —
|
🤖 Claude Code ReviewOnly a minor prose-wrapping nit found (line 332-333 has an unwrapped long line). Everything else checks out. Here's the review: Review: bump zkevm tests to v0.8.3 (PR 7253)This is a version-pin/documentation-only change — no logic, opcode, gas, RLP, or trie code is touched. Scope matches the stated intent: bump Findings:
Things verified and look correct:
Nothing here poses a correctness, security, or consensus risk — it's a straightforward, well-documented dependency bump with an accurate paper trail explaining why the wire format is provably unaffected. Automated review by Claude (Anthropic) · sonnet · custom prompt |
🤖 Codex Code Review
Other than that, I didn’t see Rust runtime logic changes in this diff; the remaining edits are comments/docs and look fine. Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
| /// releases only moved Python around: #3372 renamed the classes, and v0.8.3 | ||
| /// deleted `stateless_ssz.py` by folding those definitions into annotations on | ||
| /// the dataclasses in `stateless.py`. SSZ encoding is positional, so neither | ||
| /// touched the wire. A bundle from an older dialect will not be caught by this |
There was a problem hiding this comment.
Let's simplify this message so it doesn't require updating on each version bump.
| # zkevm@v0.8.3 is filled against tests-glamsterdam-devnet@v8.1.3, the same content | ||
| # the Amsterdam bundle above is pinned to; v0.8.2 trailed it at v8.1.0. It carries | ||
| # the EIP-8025 stateless witness fields on top (executionWitness / | ||
| # statelessInputBytes / statelessOutputBytes). The v0.8.2 → v0.8.3 upstream delta | ||
| # leaves the guest contract alone: the schema id is still 0x1501, and `state`, | ||
| # `codes` and `public_keys` stay progressive lists with `headers` bounded. What | ||
| # moved is where the spec declares those types — a separate SSZ mirror module was | ||
| # folded into annotations on the dataclasses themselves. |
|
@ilitteri, maybe you want to jump directly to https://github.com/ethereum/execution-specs/releases/tag/tests-zkevm%40v0.8.4 whenever Ethrex is ready for https://github.com/ethereum/execution-specs/releases/tag/tests-glamsterdam-devnet%40v8.1.4 But I see no prob in merging this PR anyway; just a ping :) |
Thanks for pointing this out. We are ready as of #7254 we are passing all v8.1.4 tests, so I can stack on that one. |
…arrating each release. Both comments described what specific releases changed, which meant editing prose on every bump for no lasting gain. They now say the part that stays true: the schema id does not identify the encoding and only an incompatible body change is worth recording next to it, and the zkevm bundle has to be filled against the same tests-glamsterdam-devnet content the Amsterdam pin names. Which release is pinned is already stated once, in .fixtures_url_zkevm. The same narration had been copied into docs/eip-8025.md, so it is trimmed there too.
…l' into chore/bump-tests-zkevm-v0.8.3
v0.8.4 is filled against tests-glamsterdam-devnet@v8.1.4, which is where #7254 moves the Amsterdam pin. Landing v0.8.3 instead would leave the two bundles on different upstream content the moment that merges, which is the drift the comment in the blockchain Makefile warns about. v0.8.4 cannot stand on its own: without the reservoir-repay fix it fails the nine new state_gas_cross_frame_refund cases, which cover exactly the behaviour that fix implements. With it the suite is 3259/3259, up from 3240 at v0.8.3. v0.8.3 passed either way, so the dependency is new coverage rather than a regression.
Lines of code reportTotal lines added: Detailed view |
EF Tests Comparison
|
Benchmark Results ComparisonNo significant difference was registered for any benchmark run. Detailed ResultsBenchmark Results: BubbleSort
Benchmark Results: ERC20Approval
Benchmark Results: ERC20Mint
Benchmark Results: ERC20Transfer
Benchmark Results: Factorial
Benchmark Results: FactorialRecursive
Benchmark Results: Fibonacci
Benchmark Results: FibonacciRecursive
Benchmark Results: ManyHashes
Benchmark Results: MstoreBench
Benchmark Results: Push
Benchmark Results: SstoreBench_no_opt
|
Motivation
tests-zkevm@v0.8.4is refilled on top oftests-glamsterdam-devnet@v8.1.4, which is where #7254 moves.fixtures_url_amsterdam. The zkEVM bundle is the Amsterdam fixtures plus the EIP-8025 stateless witness fields, so the two pins should name the same upstream content;v0.8.2trailed atv8.1.0. Upstream reports no spec or test changes in the zkEVM project itself across these releases.Description
tooling/ef_tests/.fixtures_url_zkevmtotests-zkevm@v0.8.4.crates/common/types/stateless_ssz.rsand the blockchainMakefileto state the invariant that survives a bump — the schema id does not identify the encoding, and the zkEVM pin has to track the Amsterdam pin's upstream content — rather than narrating what each release changed. Which release is pinned is stated once, in.fixtures_url_zkevm.docs/eip-8025.md: upstream deletedstateless_ssz.py, folding the SSZ containers into annotations on the dataclasses instateless.py, so the old path 404s at the new tag.Why this is stacked rather than independent
v0.8.4does not stand on its own. Without the reservoir-repay fix in #7254 it fails nine cases undereip8037_state_creation_gas_cost_increase/state_gas_cross_frame_refund—cross_frame_refund_repays_spill_at_merge,repaid_credit_funds_executionand friends — which are exactly the behaviour that fix implements. With it, the suite is 3259/3259, up from 3240 atv0.8.3.Worth noting the dependency is new coverage, not a regression:
v0.8.3passes both with and without #7254, becausev8.1.3has no cross-frame case.EXTRA_SKIPSintooling/ef_tests/blockchain/tests/all.rsstays empty.Nothing in the guest contract moves: the schema id is still
0x1501,state,codesandpublic_keysare still progressive lists, andheadersis still bounded at 256.Checklist
STORE_SCHEMA_VERSION(crates/storage/lib.rs) if the PR includes breaking changes to theStorerequiring a re-sync. — not applicable, noStorechanges.