chore(l1): upgrade mainnet ef-test fixtures to execution-specs tests@v20.0.0#6969
chore(l1): upgrade mainnet ef-test fixtures to execution-specs tests@v20.0.0#6969edg-l wants to merge 5 commits into
Conversation
🤖 Claude Code ReviewThese are correct — bare string matches with no risk of duplicate arms (compiler would catch that anyway). Everything checks out consistently across the four parsing sites. This is a clean, mechanical, low-risk PR. Review: chore(l1): upgrade mainnet ef-test fixtures to execution-specs tests@v20.0.0This is a well-scoped, mechanical migration PR. The changes are consistent across all four fork-name parsing sites ( Findings:
Overall: sound, low-risk change with good verification numbers cited in the PR description (10,863 tests / 74,331 fixtures, 0 failures). No blocking issues found. Automated review by Claude (Anthropic) · sonnet · custom prompt |
🤖 Kimi Code ReviewThis PR correctly migrates Hive test fixtures from the archived Key observations:
Minor note: Verdict: LGTM. The migration is complete and consistent across CI configuration, local test runners, and documentation. Automated review by Kimi (Moonshot AI) · kimi-k2.5 · custom prompt |
🤖 Codex Code Review
I did not find a security, consensus, gas-accounting, or EVM-correctness issue in the fixture URL / Hive workflow migration itself. I couldn’t run the Rust test targets in this environment because Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
Greptile SummaryThis PR migrates the mainnet EF-test fixture source from the now-archived
Confidence Score: 4/5Safe to merge — the code-level changes are mechanical alias additions and URL swaps, all applied consistently across the four test suites. All fork-name aliases are added symmetrically across blockchain, state, state_v2, and engine deserializers. The CI workflow change follows the established amsterdam.yaml pattern exactly. The only blemish is a minor docs duplicate where items 2 and 3 in hive.md both link to the same ethereum/execution-specs URL with different descriptions. docs/developers/l1/testing/hive.md has a duplicate repository entry that should be cleaned up.
|
| Filename | Overview |
|---|---|
| .github/config/hive/mainnet.yaml | New config file pinning mainnet hive fixtures to execution-specs tests@v20.0.0 and an eels_commit hash; mirrors the existing amsterdam.yaml pattern cleanly. |
| .github/workflows/daily_hive_report.yaml | Adds a Load mainnet config step that reads fixtures/eels_commit from mainnet.yaml and replaces the hardcoded archived URL in the non-Amsterdam hive flags branch; logic mirrors the existing Amsterdam config pattern. |
| tooling/ef_tests/blockchain/fork.rs | Adds serde aliases TangerineWhistle→EIP150 and SpuriousDragon→EIP158 so both old and new fixture naming conventions deserialize correctly. |
| tooling/ef_tests/engine/src/fixture.rs | Adds TangerineWhistle to the single_fork match arm for the Tangerine fork; SpuriousDragon was already handled, so coverage is now symmetric. |
| tooling/ef_tests/state/deserialize.rs | Adds SpuriousDragon and TangerineWhistle aliases to the fork-name match arms, consistent with the state_v2 and engine changes. |
| tooling/ef_tests/state_v2/src/modules/deserialize.rs | Same TangerineWhistle/SpuriousDragon aliases added to state_v2 fork deserializer, mirroring state and engine changes. |
| docs/developers/l1/testing/hive.md | Docs updated to reference execution-specs; items 2 and 3 in the overview list now both link to the same URL (ethereum/execution-specs), creating a confusing duplicate entry. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[CI: daily_hive_report.yaml] --> B{Fork type?}
B -->|Amsterdam| C[Load amsterdam.yaml]
B -->|Mainnet Prague/Osaka/Cancun| D[Load mainnet.yaml\ntests@v20.0.0]
C --> G[hive buildarg fixtures + branch]
D --> G
H[Local ef_tests runners] --> I{Suite}
I -->|blockchain| J[blockchain/.fixtures_url]
I -->|state and state_v2| K[state/.fixtures_url]
I -->|engine| L[engine/.fixtures_url]
J --> M[Fork name deserialization]
K --> M
L --> M
M --> N{Fork string in fixture}
N -->|EIP150 or TangerineWhistle| O[Fork::Tangerine]
N -->|EIP158 or SpuriousDragon| P[Fork::SpuriousDragon]
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
A[CI: daily_hive_report.yaml] --> B{Fork type?}
B -->|Amsterdam| C[Load amsterdam.yaml]
B -->|Mainnet Prague/Osaka/Cancun| D[Load mainnet.yaml\ntests@v20.0.0]
C --> G[hive buildarg fixtures + branch]
D --> G
H[Local ef_tests runners] --> I{Suite}
I -->|blockchain| J[blockchain/.fixtures_url]
I -->|state and state_v2| K[state/.fixtures_url]
I -->|engine| L[engine/.fixtures_url]
J --> M[Fork name deserialization]
K --> M
L --> M
M --> N{Fork string in fixture}
N -->|EIP150 or TangerineWhistle| O[Fork::Tangerine]
N -->|EIP158 or SpuriousDragon| P[Fork::SpuriousDragon]
Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.
---
### Issue 1 of 1
docs/developers/l1/testing/hive.md:11-14
**Duplicate repo entry in overview list**
Items 2 and 3 now both link to `https://github.com/ethereum/execution-specs` with different descriptions ("Test fixtures and vectors" vs "Fork specifications"). A reader following item 3's link lands on the same repo they just visited for item 2, which makes the list confusing. Consider merging them into a single entry that notes both roles, or clarifying that item 3 specifically refers to the `forks/amsterdam` branch for the EELS consumer.
Reviews (1): Last reviewed commit: "chore(l1): drop non-future-proof amsterd..." | Re-trigger Greptile
| 2. **[ethereum/execution-specs](https://github.com/ethereum/execution-specs)** - Test fixtures and vectors (the former `ethereum/execution-spec-tests` repo is archived) | ||
| - Mainnet: `tests@v20.0.0` (Osaka + BPO1 + BPO2); Amsterdam: `tests-glamsterdam-devnet@v6.1.1` | ||
| 3. **[ethereum/execution-specs](https://github.com/ethereum/execution-specs)** - Fork specifications | ||
| - Current branch: `forks/amsterdam` |
There was a problem hiding this comment.
Duplicate repo entry in overview list
Items 2 and 3 now both link to https://github.com/ethereum/execution-specs with different descriptions ("Test fixtures and vectors" vs "Fork specifications"). A reader following item 3's link lands on the same repo they just visited for item 2, which makes the list confusing. Consider merging them into a single entry that notes both roles, or clarifying that item 3 specifically refers to the forks/amsterdam branch for the EELS consumer.
Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/developers/l1/testing/hive.md
Line: 11-14
Comment:
**Duplicate repo entry in overview list**
Items 2 and 3 now both link to `https://github.com/ethereum/execution-specs` with different descriptions ("Test fixtures and vectors" vs "Fork specifications"). A reader following item 3's link lands on the same repo they just visited for item 2, which makes the list confusing. Consider merging them into a single entry that notes both roles, or clarifying that item 3 specifically refers to the `forks/amsterdam` branch for the EELS consumer.
How can I resolve this? If you propose a fix, please make it concise.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
…ed by field-based runner
…ture recovery Instead of skipping bad_v_r_s fixtures, decode the signed tx from post.txbytes and recover the sender (enforcing EIP-2 low-s and r/s range checks). A rejected recovery is the expected invalid-signature failure. Applied to both state and state_v2.
Migrates the mainnet ef-tests off the now-archived
ethereum/execution-spec-testsontoethereum/execution-specstests@v20.0.0(first mainnet fixture release: Osaka + BPO1 + BPO2).Changes
.fixtures_urlfor blockchain/state/engine →tests@v20.0.0/fixtures.tar.gz(same archive layout, extraction targets unchanged)EIP150→TangerineWhistle,EIP158→SpuriousDragon. Added aliases inblockchain/fork.rs,state/state_v2deserializers, andengine/fixture.rs.github/config/hive/mainnet.yaml(pins fixtures + eels commit), replacing the hardcoded archivedfixtures_developURL indaily_hive_report.yamlexecution-specsThe
for_<fork>/dir rename in the new bundle is a non-issue — runners read the fork from each fixture'snetwork/postfield. Amsterdam/glamsterdam and zkevm overlays untouched (already on execution-specs).Verification
cargo checkclean on all four crates