Skip to content

feat(exex/trie): Wire up the Engine in Exex#27

Draft
dhyaniarun1993 wants to merge 20 commits intofeat/engine-pr3-corefrom
feat/engine-pr4-exex-wiring
Draft

feat(exex/trie): Wire up the Engine in Exex#27
dhyaniarun1993 wants to merge 20 commits intofeat/engine-pr3-corefrom
feat/engine-pr4-exex-wiring

Conversation

@dhyaniarun1993
Copy link
Copy Markdown
Member

Just to check diff. Not to be merged

sebastianst and others added 20 commits April 29, 2026 09:58
Analyses all monorepo dependencies on op-geth–specific APIs for
op-node, op-service, and op-batcher, and proposes decoupling strategies.
Introduces the target op-core/ package layout.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…timism#20417)

Base was removed from the superchain registry in ethereum-optimism#20366, so
BASE_MAINNET_CHAIN_ID no longer resolves to a known parent and
test_bootnodes_from_chain_id panicked when it expected 24 bootnodes
for that lookup. PR ethereum-optimism#20406 fixed the analogous kona-genesis test but
missed this one.

Replace the Base lookup with Ink (another mainnet OP Stack chain
still in the registry) and add an explicit assertion that
BASE_MAINNET_CHAIN_ID now yields no bootnodes, so a future
re-addition trips this test.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ation (ethereum-optimism#20213)

* fix(kona-peers): align bootnodes test with registry data

Base was removed from the superchain registry in ethereum-optimism#20366, so
BASE_MAINNET_CHAIN_ID no longer resolves to a known parent and
test_bootnodes_from_chain_id panicked when it expected 24 bootnodes
for that lookup. PR ethereum-optimism#20406 fixed the analogous kona-genesis test but
missed this one.

Replace the Base lookup with Ink (another mainnet OP Stack chain
still in the registry) and add an explicit assertion that
BASE_MAINNET_CHAIN_ID now yields no bootnodes, so a future
re-addition trips this test.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(alloy-op-evm): post-exec block executor and SDM warming inspector

Add the canonical post-exec block executor, along with the first
feature riding on it — SDM (Sequencer-Defined Metering) block-level
warming refunds, delivered by the SDMWarmingInspector.

- OpBlockExecutor gains three PostExecModes (Disabled / Produce /
  Verify(payload) / Invalid). Produce accumulates per-tx refund
  entries for the payload builder to append as a synthetic 0x7D tx;
  Verify validates an embedded payload against local replay;
  Disabled is the legacy path (byte-identical to pre-SDM).
- SDMWarmingInspector tracks first-warmer provenance for accounts
  and storage slots, emits exact refund attribution events for every
  re-touch past the EIP-2929 warm threshold, and suppresses claims
  from Deposit and synthetic PostExec tx kinds.
- Verify-mode validations reject duplicate payload indexes, payload
  entries targeting deposits or the 0x7D tx itself, and refunds that
  exceed the tx's raw gas. `apply_pre_execution_changes` debug_asserts
  the Produce hooks are wired so a downstream fork can't silently drop
  refunds.
- Canonical gas settlement credits the sender, debits the beneficiary
  and base-fee recipient by the refunded-gas component of their share,
  and commits the deltas when canonical gas falls below raw gas.
- beneficiary_gas_price can legitimately saturate at zero when a
  legacy tx's gas price equals basefee; inline comment documents the
  consensus-valid zero case.

* docs(alloy-op-evm): clarify post-exec settlement comments

* test(alloy-op-evm): simplify SDM post-exec tests

* test(sdm): cover post-exec EVM config plumbing

* refactor(sdm): address PR feedback + tests

* test(alloy-op-evm): deduplicate block executor test helpers

* test(sdm): split SDM tests into dedicated test modules

Move inline #[cfg(test)] blocks out of inspector.rs and the OP payload
builder.rs into sibling tests.rs files. Tighten each test with small
helpers (run_account/run_slot for the inspector; entries/unwrap_post_exec
for the builder) so the assertions read directly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(op-reth): use # Returns format on try_include_post_exec_tx

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(alloy-op-evm): name SDMWarmingInspector in composite doc

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…imism#20302)

* docs: remove op-supervisor references from interop docs

The standalone op-supervisor service no longer exists in the interop
architecture. Scrub references from user-facing interop docs (explainer,
message-passing, reading-logs, message-expiration), the chain-operator
absolute-prestate tutorial, the nav + redirects in docs.json, and the
keyword config. Delete the orphaned chain-operators/reference/components/
op-supervisor.mdx reference page.

Intentionally untouched: kona node supervisor actor/RPC, op-reth
--rollup.supervisor-* flags, op-node interop-RPC copy (different concept),
and the Cayman Islands "Supervisor" in gov-faq.

Deeper rewrites (safety levels, cluster terminology, interop-security
nits) flagged in the audit are left for follow-up PRs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: redirect legacy op-supervisor URLs to interop explainer

Address review feedback: keep external links and search-indexed paths
working by redirecting the three legacy op-supervisor paths to the
interop explainer instead of 404'ing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Zak <zak@oplabs.co>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…optimism#20425)

The monorepo published us-docker.pkg.dev/oplabs-tools-artifacts/images/op-rbuilder:<sha>
on every develop commit and every non-fork PR, but no consumer reads that tag —
prod pulls from a private-fork pipeline that publishes to internal-images/op-rbuilder,
and the upstream Flashbots build is pushed manually under separate version tags.
The submodule pointer is also frozen since ethereum-optimism#18540, so the per-commit images are
byte-identical apart from baked-in GIT_COMMIT.

It is also currently red-gating develop on a cargo-chef MSRV bump
(cargo-platform 0.3.3 → rustc 1.91, vs the image's pinned 1.88).

Removing the registry entry alone drops it from the matrix; the bake target is
removed for cleanliness. The CircleCI rust-build-submodule binary build for
acceptance tests is intentionally untouched.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…imism#20407)

Interop startup now proves the first verifiable timestamp can resolve optimistic L2/L1 data before declaring readiness, avoiding a later halt after virtual nodes only partially sync.

Made-with: Cursor
…0433)

* feat(interopgen): add UseL2CM toggle to L2Config

* feat(interopgen): add L2CM recipe support

* chore(interopgen): add L2CM cleanup TODOs
…ethereum-optimism#20442)

* feat(op-interop-filter): add access list duration and rejection metrics

Add two new Prometheus metrics for CheckAccessList observability:
- check_access_list_duration_seconds (Histogram): SLI-IF-7 latency tracking
- check_access_list_rejections_total (CounterVec): SLI-IF-8 rejection breakdown
  by reason (failsafe, unknown_chain, parse_error, expired_message,
  invalid_executing_message)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(op-interop-filter): fix goimports struct field alignment

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…thereum-optimism#20253)

Strips Rust toolchain, target spec, and env vars from the `cannon-builder`
image. What remains is the set of apt packages that cannot be deterministically
pinned outside a Docker image (MIPS64 cross-compiler, llvm, clang, cmake, etc.).

Rust, the target spec, and build env vars are provided by consumers of this
image from pinned version sources (mise, rust-toolchain.toml, source tree) at
build time. This decouples the base image from toolchain drift and makes it a
stable long-lived artifact.

Consumers must be updated separately to install Rust on top of this image and
supply their own `mips64-unknown-none.json`. The existing `cannon-builder:v1.0.0`
tag remains immutable; this change takes effect when a new version tag is cut.
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.

9 participants