alloy-op-evm: generate fork test cases from single chronology list - #22137
Open
claude[bot] wants to merge 8 commits into
Open
alloy-op-evm: generate fork test cases from single chronology list#22137claude[bot] wants to merge 8 commits into
claude[bot] wants to merge 8 commits into
Conversation
Brings the PR branch up to date with develop, picking up the fixed op-reth-compact-codec CI job that syncs the superchain-registry submodule when building the base side. Co-Authored-By: Claude Co-authored-by: Sebastian Stammler <seb@oplabs.co>
- Parameterize the blob-pinning test over Ecotone, Isthmus, and Jovian to cover the activation boundary and the post-Jovian DA-footprint case. - Delete the now-unused RollupConfig::spec_id along with kona-genesis's revm feature and optional op-revm dependency; spec resolution comes from the shared alloy-op-evm helper. - Check for a missing payload gas limit before computing the next block base fee in the stateless executor. Co-Authored-By: Claude Co-authored-by: Sebastian Stammler <seb@oplabs.co>
- Drop op-revm from kona-genesis's entry in the SP1 guest workspace lockfile, mirroring the root Cargo.lock after the revm feature removal (fixes the kona-build-sp1-elfs --locked check). - Cover Lagoon and Karst in the parameterized blob-pinning test so it spans all forks from Ecotone onward per its doc comment. Co-Authored-By: Claude Co-authored-by: Sebastian Stammler <seb@oplabs.co>
Removing kona-genesis's revm feature also deactivated the op-revm?/serde forward, so the guest resolution no longer enables serde on the revm crate family. Drop the now-inactive serde (and phf/alloy-eips) dep lines from those entries and prune the phf subtree packages that lost their last referent, matching cargo's own re-resolution. Co-Authored-By: Claude Co-authored-by: Sebastian Stammler <seb@oplabs.co>
…acro Replace the hand-maintained test_case stacks and FORK_CHRONOLOGY const with a single with_fork_chronology! macro that owns the fork list and drives FORK_CHRONOLOGY, the FakeHardfork constructors, and generated per-fork #[test] cases (fake_fork_cases! / mainnet_fork_cases!), so a new fork is added in exactly one place. The blob-pinning test now covers the full chronology, asserting no blob env exists before Ecotone. The test-case dev-dependency is no longer used by this crate. Co-Authored-By: Claude Co-authored-by: Sebastian Stammler <seb@oplabs.co>
Resolves the env.rs conflict from the squash-merge of #22130: develop's env.rs is identical to this branch's merge parent, so the branch side (the chronology-macro rewrite) is kept wholesale. Co-Authored-By: Claude Co-authored-by: Sebastian Stammler <seb@oplabs.co>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Sebastian Stammler · Slack thread
Summary
Follow-up to #22130.
Before: every fork-parameterized test in
alloy-op-evm's env module carried a hand-maintained stack of#[test_case]attributes, plus a separately hand-writtenFORK_CHRONOLOGYconst andFakeHardforkconstructor list — all of which can silently go stale as forks are added.After: a single
with_fork_chronology!macro owns the fork list (one row per fork: case name,OpHardfork,OpSpecId, activation kind, OP mainnet activation timestamp or_if unscheduled) and generatesFORK_CHRONOLOGY, theFakeHardforkconstructors, and all fork-parameterized tests viafake_fork_cases!/mainnet_fork_cases!. Adding a fork is one row; scheduling its mainnet timestamp (replacing_with the constant) automatically adds its mainnet test case. Drift between the list and the generated items is impossible by construction, since everything expands from the same rows.Notes:
cargo testoutput still names every case (env::tests::<test>::<fork>), byte-identical to whattest_casegenerated.test-casedev-dependency is no longer used by this crate and is removed (other workspace crates still use it).Overlap note: draft PR #22134 renames
OpSpecId::INTEROPtoLAGOON, which touches the chronology's last entry — whichever of the two lands second needs a trivial rebase of the Lagoon row.Generated by Claude Code