Skip to content

chore(op-e2e): replace op-supervisor with op-supernode in super_test path#20825

Merged
ajsutton merged 6 commits into
developfrom
aj/chore/replace-supervisor-with-supernode-in-e2e
May 18, 2026
Merged

chore(op-e2e): replace op-supervisor with op-supernode in super_test path#20825
ajsutton merged 6 commits into
developfrom
aj/chore/replace-supervisor-with-supernode-in-e2e

Conversation

@ajsutton
Copy link
Copy Markdown
Contributor

SuperSystem now boots a single op-supernode that owns one virtual op-node per L2 chain, instead of running a standalone op-supervisor alongside separate op-nodes. Per-chain CL RPC is reached at `/`; the batcher's `RollupRpc` and the dispute helpers use that routed URL.

`op-e2e/interop/interop_test.go` is deleted — it only exercised op-supervisor RPCs (`FinalizedL1`, `CheckAccessList`, `AddL2RPC`) that have no supernode counterpart and are now covered by op-supernode and op-acceptance-tests.

Action tests under `op-e2e/actions/interop/` are intentionally untouched and continue to use op-supervisor.

Towards #20814.

Test plan

  • `TestCreateSuperCannonGame/mt-cannon` passes locally end-to-end against the new SuperSystem.
  • Full `super_test.go` run in CI.

…path

SuperSystem now boots a single op-supernode that owns one virtual op-node
per L2 chain, instead of running a standalone op-supervisor alongside
separate op-nodes. Per-chain CL RPC is reached at <supernode>/<chainID>;
batcher RollupRpc and dispute helpers use that routed URL.

Migrated dispute game helpers to SuperNodeRootProvider / SuperNodePrestate
and Trace providers, set cfg.UseSuperNode in the challenger helper, and
swapped supervisor SyncStatus accessors for their supernode equivalents
(SafeTimestamp/CurrentL1.Number; chain.UnsafeL2.Time).

op-e2e/interop/interop_test.go deleted: only exercised op-supervisor RPCs
(FinalizedL1, CheckAccessList, AddL2RPC) that have no supernode counterpart
and are owned by op-supernode and op-acceptance-tests now.

Action tests under op-e2e/actions/interop/ are intentionally untouched
and continue to use op-supervisor.

TestCreateSuperCannonGame passes locally end-to-end against the new
SuperSystem. Towards #20814.
@ajsutton ajsutton requested a review from a team as a code owner May 18, 2026 03:07
@codecov
Copy link
Copy Markdown

codecov Bot commented May 18, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 66.3%. Comparing base (d905be1) to head (8f41d7b).
⚠️ Report is 5 commits behind head on develop.

❗ There is a different number of reports uploaded between BASE (d905be1) and HEAD (8f41d7b). Click for more details.

HEAD has 5 uploads less than BASE
Flag BASE (d905be1) HEAD (8f41d7b)
contracts-bedrock-tests 5 0
Additional details and impacted files
@@             Coverage Diff             @@
##           develop   #20825      +/-   ##
===========================================
- Coverage     76.2%    66.3%   -10.0%     
===========================================
  Files          185       55     -130     
  Lines        10671     4035    -6636     
===========================================
- Hits          8141     2677    -5464     
+ Misses        2386     1214    -1172     
  Partials       144      144              
Flag Coverage Δ
cannon-go-tests-64 66.3% <ø> (ø)
contracts-bedrock-tests ?

Flags with carried forward coverage won't be shown. Click here to find out more.
see 130 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.

ajsutton added 4 commits May 18, 2026 13:18
…tDial

The super-cannon trace provider returns ErrNotInSync until the supernode's
CurrentL1 has advanced past the game's l1Head. Right after game creation the
supernode can still be a block or two behind, so the very first
correctClaimValue lookup races the sync and the test fatals with
"local node too far behind". Centralise the wait in FactoryHelper.GetL1Head
(super-system only) so every super-game path picks it up without scattering
retries through individual call sites.

Also drop the now-unused mustDial helper (lint failure).
…fType

The wait belongs next to the trace-provider construction it gates, not inside
GetL1Head which is a generic accessor. Also shrink the helper's doc comment.
Copy link
Copy Markdown
Contributor

@karlfloersch karlfloersch left a comment

Choose a reason for hiding this comment

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

LGTM. Shared a 'finding' that my codex had

Comment thread op-e2e/e2eutils/disputegame/helper.go
Copy link
Copy Markdown
Contributor

@wwared wwared left a comment

Choose a reason for hiding this comment

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

LGTM, non-blocking notes below

Comment thread op-e2e/e2eutils/disputegame/super_cannon_helper.go Outdated
Comment thread op-e2e/e2eutils/disputegame/helper.go Outdated
Comment thread op-e2e/interop/supersystem.go
Comment thread op-e2e/e2eutils/disputegame/helper.go
@ajsutton ajsutton added this pull request to the merge queue May 18, 2026
Merged via the queue into develop with commit 4a278fa May 18, 2026
92 checks passed
@ajsutton ajsutton deleted the aj/chore/replace-supervisor-with-supernode-in-e2e branch May 18, 2026 22:25
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.

3 participants