Skip to content

feat(execution): Big EVM Merge#1602

Open
refcell wants to merge 3 commits intomainfrom
feat/remove-base-execution-evm
Open

feat(execution): Big EVM Merge#1602
refcell wants to merge 3 commits intomainfrom
feat/remove-base-execution-evm

Conversation

@refcell
Copy link
Copy Markdown
Contributor

@refcell refcell commented Mar 23, 2026

Summary

Merges base-execution-evm into base-revm and base-alloy-evm behind an execution feature flag, eliminating the redundant crate entirely. The split between the two crates was required to avoid a base-revm ↔ base-alloy-evm dependency cycle: lower-level execution types (error, l1_reth, next_block) live in base-revm[execution] while the EVM config, block assembler, and receipt builder live in base-alloy-evm[execution]. All consumers previously depending on base-execution-evm have been updated to depend on the appropriate crate with the execution feature enabled.

@refcell refcell added K-ktlo Kind: keep the lights on, general cleanups A-execution Area: execution crates labels Mar 23, 2026
@refcell refcell self-assigned this Mar 23, 2026
@cb-heimdall
Copy link
Copy Markdown
Collaborator

cb-heimdall commented Mar 23, 2026

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

@vercel
Copy link
Copy Markdown

vercel bot commented Mar 23, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
base Ignored Ignored Preview Apr 6, 2026 5:11pm

Request Review

@refcell refcell force-pushed the feat/remove-base-execution-evm branch from 97f345d to 31e4593 Compare March 23, 2026 16:20
@github-actions github-actions bot added the M-prevent-stale Meta: Not Stale label Mar 24, 2026
@refcell refcell force-pushed the feat/remove-base-execution-evm branch from 31e4593 to 9214de2 Compare March 27, 2026 15:37
@refcell refcell requested a review from danyalprout March 27, 2026 15:38
@refcell refcell marked this pull request as ready for review March 27, 2026 15:38
danyalprout
danyalprout previously approved these changes Mar 27, 2026
@refcell refcell enabled auto-merge March 28, 2026 22:02
danyalprout
danyalprout previously approved these changes Mar 29, 2026
@refcell refcell force-pushed the feat/remove-base-execution-evm branch from e354c17 to bf36bd0 Compare March 30, 2026 15:18
@refcell refcell force-pushed the feat/remove-base-execution-evm branch from 8f06254 to 361501b Compare March 31, 2026 19:25
@cb-heimdall cb-heimdall dismissed stale reviews from danyalprout and danyalprout March 31, 2026 19:25

Approved review 4023502920 from danyalprout is now dismissed due to new commit. Re-request for approval.

danyalprout
danyalprout previously approved these changes Mar 31, 2026
@refcell refcell added this pull request to the merge queue Mar 31, 2026
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to a conflict with the base branch Mar 31, 2026
@refcell refcell force-pushed the feat/remove-base-execution-evm branch from 361501b to 147ef54 Compare March 31, 2026 20:34
@refcell refcell force-pushed the feat/remove-base-execution-evm branch 2 times, most recently from 68c9cf1 to 952da73 Compare April 2, 2026 14:25
@refcell refcell changed the title feat(execution): Delete Base Execution Evm Crate feat(execution): Big EVM Merge Apr 3, 2026
@refcell refcell force-pushed the feat/remove-base-execution-evm branch from 96cbe7e to f3e7a2f Compare April 3, 2026 12:45
@refcell refcell force-pushed the feat/remove-base-execution-evm branch from f3e7a2f to 8dfef05 Compare April 3, 2026 12:54
@refcell refcell requested a review from 0x00101010 April 3, 2026 12:55
0x00101010
0x00101010 previously approved these changes Apr 3, 2026
@refcell refcell force-pushed the feat/remove-base-execution-evm branch from 8dfef05 to eebf534 Compare April 3, 2026 18:06
@cb-heimdall cb-heimdall dismissed 0x00101010’s stale review April 3, 2026 18:15

Approved review 4055626350 from 0x00101010 is now dismissed due to new commit. Re-request for approval.

@refcell refcell force-pushed the feat/remove-base-execution-evm branch from b2f3fd0 to d25408b Compare April 3, 2026 20:33
@refcell refcell force-pushed the feat/remove-base-execution-evm branch from 8ac0f7b to 94898b7 Compare April 3, 2026 23:35
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 3, 2026

Review Summary

The merge of base-execution-evm, base-revm, and base-alloy-evm into the unified base-evm crate is well-structured. The feature-gated split (alloy, reth, rpc) is clean, and the consumer migrations are consistent. Two issues need attention before merge:

Bug: GRANITE missing from RollupConfig::spec_id() (critical)

crates/consensus/genesis/src/rollup.rs:124-144 — The newly added spec_id() method skips the GRANITE hardfork in its cascade. It goes from is_holocene_active directly to is_fjord_active. Because is_fjord_active() chains to is_granite_active() (which chains to is_holocene_active()), any timestamp in the GRANITE range will match is_fjord_active() and incorrectly return OpSpecId::FJORD instead of OpSpecId::GRANITE.

The test_spec_id test also skips GRANITE (jumps from FJORD at timestamp 40 to HOLOCENE at timestamp 50 without setting granite_time), so it doesn't catch this bug. Compare with the correct implementation in crates/execution/evm/src/spec_id.rs:spec_by_timestamp_after_bedrock which includes GRANITE. (Inline comment already posted on this file.)

Intra-crate duplication: op_spec_id vs spec_by_timestamp_after_bedrock

crates/execution/evm/src/l1_reth.rs:284-306 contains a private op_spec_id() function that is identical to the public spec_by_timestamp_after_bedrock() in crates/execution/evm/src/spec_id.rs:20-36. Both are now in the same crate (base-evm), and reth implies alloy, so l1_reth.rs can simply call crate::spec_by_timestamp_after_bedrock(). If a new hardfork is added, forgetting to update both copies would cause a spec mismatch between L1 fee calculation and execution — the GRANITE bug above demonstrates this risk.

Minor: UnknownOpHardfork missing Display/Error

crates/common/chains/src/spec.rs:9-10UnknownOpHardfork only derives Debug/Clone/PartialEq/Eq. Without Display and Error impls, it can't be used with ? in contexts requiring std::error::Error. The type it replaces (revm::primitives::hardfork::UnknownHardfork) implemented both. (Inline comment already posted.)

Note: base-txpool metrics no longer default-on

The [features] section in crates/txpool/Cargo.toml had default = ["metrics"] which was removed. None of the workspace consumers explicitly enable metrics, so txpool metrics collection will be silently disabled. If this is intentional, no action needed — just flagging the behavioral change.

refcell added 3 commits April 6, 2026 12:20
…tives flatten and crate renames

- Replace base-execution-primitives with base-alloy-consensus throughout
- Replace base-alloy-rpc-types with base-common-rpc-types (post-rename)
- Rename BaseBlockExecutionCtx/Factory/Executor to Op* to match commit intent
- Replace OpBlock with BaseBlock (current main alias for Block<OpTxEnvelope>)
- Replace OpAttributesWithParent with AttributesWithParent (base_protocol)
- Remove base-execution-primitives from Cargo.toml deps across workspace
@refcell refcell force-pushed the feat/remove-base-execution-evm branch from 94898b7 to d1d617c Compare April 6, 2026 17:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-execution Area: execution crates K-ktlo Kind: keep the lights on, general cleanups M-prevent-stale Meta: Not Stale

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants