Skip to content

feat(sdm): acceptance tests coverage; SDM post-exec replay RPC, tooling#20357

Closed
nonsense wants to merge 2 commits into
developfrom
nonsense/sdm/post-exec-block-executor-acceptance
Closed

feat(sdm): acceptance tests coverage; SDM post-exec replay RPC, tooling#20357
nonsense wants to merge 2 commits into
developfrom
nonsense/sdm/post-exec-block-executor-acceptance

Conversation

@nonsense
Copy link
Copy Markdown
Contributor

@nonsense nonsense commented Apr 27, 2026

Adds op-acceptance-tests integration coverage for SDM on op-reth, backed by a new debug_replaySDMBlock RPC and lightweight Go replay client.

Acceptance tests

This PR adds four SDM op-acceptance tests:

  • TestSDMDisabledNoRefunds verifies SDM-disabled op-reth nodes do not emit post-exec transactions or opGasRefund.
  • TestSDMEnabledPayloadAndReplayMatch verifies post-exec payload refunds, receipt opGasRefund, replayed refunds, and block gas accounting all match.
  • TestSDMStorageRefundBreakdown verifies exact warm storage refund attribution for same-slot and many-slot workloads.
  • TestSDMMixedWorkloadSmoke submits a batched mixed workload across transfers, compute, logs, and state writes.

Main changes

  • Adds an SDMEnabled flag to mixed op-reth devstack setup.
  • Adds debug_replaySDMBlock to op-reth for replaying historical blocks with post-exec enabled.
  • Adds op-chain-ops/pkg/sdmreplay helpers for calling the replay RPC and comparing payload/receipt/replay output.

@nonsense nonsense requested a review from a team as a code owner April 27, 2026 15:16
@nonsense nonsense marked this pull request as draft April 27, 2026 15:17
@wiz-0f98cca50a
Copy link
Copy Markdown

wiz-0f98cca50a Bot commented Apr 27, 2026

Wiz Scan Summary

Scanner Findings
Vulnerability Finding Vulnerabilities 7 High 3 Medium 2 Low
Data Finding Sensitive Data -
Secret Finding Secrets -
IaC Misconfiguration IaC Misconfigurations -
SAST Finding SAST Findings -
Software Management Finding Software Management Findings -
Total 7 High 3 Medium 2 Low

View scan details in Wiz

To detect these findings earlier in the dev lifecycle, try using Wiz Code VS Code Extension.

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 27, 2026

Codecov Report

❌ Patch coverage is 0% with 548 lines in your changes missing coverage. Please review.
✅ Project coverage is 4.2%. Comparing base (28ea916) to head (6ea60b6).

Files with missing lines Patch % Lines
rust/op-reth/crates/post-exec-replay/src/replay.rs 0.0% 421 Missing ⚠️
rust/alloy-op-evm/src/post_exec/inspector.rs 0.0% 49 Missing ⚠️
rust/op-reth/crates/rpc/src/witness.rs 0.0% 38 Missing ⚠️
rust/alloy-op-evm/src/block/mod.rs 0.0% 21 Missing ⚠️
rust/op-reth/crates/post-exec-replay/src/types.rs 0.0% 12 Missing ⚠️
rust/alloy-op-evm/src/lib.rs 0.0% 4 Missing ⚠️
rust/alloy-op-evm/src/post_exec/mod.rs 0.0% 3 Missing ⚠️

❗ There is a different number of reports uploaded between BASE (28ea916) and HEAD (6ea60b6). Click for more details.

HEAD has 6 uploads less than BASE
Flag BASE (28ea916) HEAD (6ea60b6)
unit 2 1
contracts-bedrock-tests 5 0
Additional details and impacted files
@@            Coverage Diff             @@
##           develop   #20357     +/-   ##
==========================================
- Coverage     11.0%     4.2%   -6.8%     
==========================================
  Files          692      563    -129     
  Lines        76899    70757   -6142     
==========================================
- Hits          8483     3000   -5483     
+ Misses       68272    67613    -659     
  Partials       144      144             
Flag Coverage Δ
cannon-go-tests-64 66.3% <ø> (ø)
contracts-bedrock-tests ?
unit 0.4% <0.0%> (-0.1%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
rust/op-reth/crates/evm/src/lib.rs 0.0% <ø> (ø)
rust/alloy-op-evm/src/post_exec/mod.rs 0.0% <0.0%> (ø)
rust/alloy-op-evm/src/lib.rs 0.0% <0.0%> (ø)
rust/op-reth/crates/post-exec-replay/src/types.rs 0.0% <0.0%> (ø)
rust/alloy-op-evm/src/block/mod.rs 0.0% <0.0%> (ø)
rust/op-reth/crates/rpc/src/witness.rs 0.0% <0.0%> (ø)
rust/alloy-op-evm/src/post_exec/inspector.rs 0.0% <0.0%> (ø)
rust/op-reth/crates/post-exec-replay/src/replay.rs 0.0% <0.0%> (ø)

... and 131 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@nonsense nonsense force-pushed the nonsense/sdm/post-exec-block-executor-acceptance branch 9 times, most recently from 50cf532 to 4c5f237 Compare May 4, 2026 10:47
@nonsense nonsense force-pushed the nonsense/sdm/post-exec-block-executor-acceptance branch 2 times, most recently from 450a794 to 6ea60b6 Compare May 5, 2026 11:25
nonsense and others added 2 commits May 21, 2026 16:58
… Interop fork

Collapses the previously split SDM gate (op-node IsSDM=IsInterop CL gate +
op-reth --rollup.sdm-enabled EL flag) into a single chain-spec source of
truth. Both layers now read IsInterop(timestamp) from the same chain spec,
so they cannot drift.

- op-reth: replace sdm_enabled bool field threaded through OpEvmConfig,
  OpBuilderConfig, OpExecutorBuilder, OpPayloadBuilder, OpAddOns,
  OpAddOnsBuilder, OpEthApiBuilder, and OpReceiptConverter with a direct
  OpHardforks::is_interop_active_at_timestamp lookup at the relevant
  block/next-block timestamp. Remove --rollup.sdm-enabled CLI flag and
  matching with_sdm_enabled builders, and the integration test that only
  exercised the dropped flag.
- op-devstack: remove OpRethWithSDMEnabled() helper (the flag is gone).
- op-acceptance-tests/sdm: drive sdmEnabled via WithForkAtOffset(Interop, ...)
  in DeployerOptions instead of the EL flag, and assert Interop matches
  the desired SDM state so a preset change that pushed Interop out of the
  test window would fail loudly instead of silently no-op'ing.
- op-acceptance-tests/sdm: add TestSDMActivatesAtInteropBoundary exercising
  the chain-spec gate across the Interop activation timestamp.
- op-acceptance-tests/sdm/block_test.go: fix suptypes.CrossSafe ->
  safety.CrossSafe (rebase artifact; op-supervisor/supervisor/types no
  longer exports CrossSafe).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@nonsense nonsense force-pushed the nonsense/sdm/post-exec-block-executor-acceptance branch from 6ea60b6 to ecee101 Compare May 21, 2026 15:14
@nonsense nonsense closed this May 21, 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.

1 participant