Skip to content

feat(networks): source-pin base-anvil to the Cobalt precompile set (BOP-453) - #56

Closed
robriks wants to merge 2 commits into
base-anvil-forkfrom
markusosterlund/bop-428-base-fork-runtime-selector
Closed

robriks wants to merge 2 commits into
base-anvil-forkfrom
markusosterlund/bop-428-base-fork-runtime-selector

Conversation

@robriks

@robriks robriks commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Summary

The base-anvil half of the Cobalt fork-test snapshot pair (BOP-453, under BOP-428). Makes --base install the complete Cobalt precompile set so the base/base #4102 LIVE conformance suite (base-std #173) can run against a Cobalt-dispatching base-anvil.

Per the ratified snapshot strategy (BOP-427 → BOP-453/454), fork selection is source-pinned, not a runtime flag:

  • Fork is a single compile-time constant BASE_PRECOMPILE_UPGRADE (this snapshot: Cobalt). The installer, trace labels, precompile map, and sentinel warming all key off it, so re-pinning to another fork (e.g. the Beryl pair) is a one-line change.
  • Cobalt install mirrors the upgrade >= Cobalt arm of BasePrecompiles::install: the Beryl singletons plus the EIP-8130 TxContext + NonceManager, with the ActivationRegistry handed a state-backed admin config.
  • No public runtime selector. The earlier --base-fork CLI flag / base_fork config key (and its parser, serde adapter, and CLI tests) are removed, matching BOP-453's explicit "do not add --hardfork/--base-fork" scope.

Relationship to earlier revision

This PR originally added a public --base-fork runtime selector. That approach was superseded by the commit-pair strategy from BOP-427; the latest commit reworks it to the source-pinned form above. (Happy to squash the two commits into one before review.)

Test plan

  • cargo test -p foundry-evm-networks — green against the current pin (base/base 1090a1ba, revm 41): snapshot_pins_cobalt, base_installs_complete_cobalt_precompile_set, without_base_installs_nothing.
  • cargo clippy and cargo fmt --check clean.
  • LIVE: base/base #4102 conformance suite (base-std #173) against this snapshot at Cobalt.

Open question — merge target

Pinning Cobalt means merging this to base-anvil-fork would flip the shipped --base default from Beryl to Cobalt. If mainline must track the live fork (Beryl), this branch should be treated as the pinned Cobalt snapshot artifact (record its SHA for the base/base CI + BOP-453) rather than merged. Flagging for a call before this leaves draft.

@linear

linear Bot commented Jul 24, 2026

Copy link
Copy Markdown

BOP-428

BOP-453

@robriks
robriks force-pushed the markusosterlund/bop-428-base-fork-runtime-selector branch from 2209038 to d25f3fa Compare July 24, 2026 00:52
@robriks robriks assigned robriks and unassigned robriks Jul 24, 2026

@stephancill stephancill left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe we opted to keep the head of base-anvil up to date with the latest upgrade and allow checking out older forks using git (tracked here https://github.com/base/base/blob/main/.github/workflows/base-std-fork-tests.yml#L33-L36)

…e flag

Per the ratified fork-test snapshot strategy (BOP-427 -> BOP-453/454), each
fork is an immutable base-anvil/base-std commit pair whose base-anvil commit
selects the fork in source, with no public runtime selector. Replace the
--base-fork CLI flag / base_fork config key with a single compile-time
BASE_PRECOMPILE_UPGRADE constant, pinned to Cobalt for this snapshot.

The complete Cobalt install (TxContext + NonceManager + state-backed
ActivationRegistry admin) that unblocks the base/base #4102 live suite is
retained; re-pinning to another fork (e.g. the Beryl pair) is a one-line change.
Removes the now-superseded flag parsing, serde adapter, and CLI tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
@robriks robriks changed the title feat(networks): add --base-fork runtime selector for Base precompile dispatch (BOP-428) feat(networks): source-pin base-anvil to the Cobalt precompile set (BOP-453) Jul 24, 2026
@robriks

robriks commented Jul 27, 2026

Copy link
Copy Markdown
Contributor Author

Closing as redundant / superseded.

The team's direction is branch-per-fork, not a runtime --base-fork selector:

The base-anvil Cobalt fork-test snapshot (BOP-453) is therefore a base-anvil-fork commit (current tip ae7557c), so this PR's compile-time BASE_PRECOMPILE_UPGRADE constant + earlier --base-fork runtime exploration is no longer needed. Branch is left in place for history.

@robriks robriks closed this Jul 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants