Skip to content

Ignore sepolia-devnet-2 L1 in superchain chainspec generation - #12398

Merged
LukaszRozmej merged 1 commit into
masterfrom
fix/superchain-ignore-sepolia-devnet-2
Jul 13, 2026
Merged

Ignore sepolia-devnet-2 L1 in superchain chainspec generation#12398
LukaszRozmej merged 1 commit into
masterfrom
fix/superchain-ignore-sepolia-devnet-2

Conversation

@LukaszRozmej

Copy link
Copy Markdown
Member

Changes

  • Add sepolia-devnet-2 to IGNORED_L1S in scripts/superchain.py, alongside the already-ignored sepolia-dev-0 devnet.

The superchain registry added a sepolia-devnet-2/sepolia-devnet-2 devnet whose L1 is not in the script's constants table (L1ChainId, L1BeaconGenesisSlotTime, DepositContractAddress). The generated chainspec then enables EIP-6110 (Isthmus) without depositContractAddress, which fails chainspec validation and broke all Nethermind.Runner.Test smoke tests in #12395.

After this change, the "Update OP Superchain chains" workflow needs a re-run to regenerate #12395 without the devnet files.

Types of changes

What types of changes does your code introduce?

  • Bugfix (a non-breaking change that fixes an issue)
  • New feature (a non-breaking change that adds functionality)
  • Breaking change (a change that causes existing functionality not to work as expected)
  • Optimization
  • Refactoring
  • Documentation update
  • Build-related changes

Testing

Requires testing

  • Yes
  • No

Notes on testing

Ran scripts/superchain.py locally: the devnet is now skipped (Ignoring 'sepolia-devnet-2-sepolia-devnet-2') and the remaining 49 chain configs generate unchanged.

Documentation

Requires documentation update

  • Yes
  • No

Requires explanation in Release Notes

  • Yes
  • No

🤖 Generated with Claude Code

…ration

The superchain registry added a sepolia-devnet-2 devnet whose L1 is not
in the script's constants table, so generated chainspecs miss
depositContractAddress while enabling EIP-6110, failing chainspec
validation in Runner smoke tests (see PR #12395).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@claude

claude Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Claude finished @LukaszRozmej's task in 48s —— View job


Code Review: Ignore sepolia-devnet-2 L1 in superchain chainspec generation

  • Read changed file (scripts/superchain.py) and diff vs origin/master
  • Verify correctness of the fix against the filtering logic
  • Check for edge cases / regressions
  • Post review

Verdict: ✅ Looks good — safe to merge

The one-line change is correct and matches the existing pattern.

Why it works: In main(), each chain's identifier is split into l1/chainName and filtered with if chainName in IGNORED_CHAINS or l1 in IGNORED_L1S (scripts/superchain.py:355-357). Since the new devnet's identifier is sepolia-devnet-2/sepolia-devnet-2, its l1 is sepolia-devnet-2, so adding it to IGNORED_L1S skips it as intended.

Root-cause confirmed: The constants table in to_nethermind_chainspec only defines mainnet/sepolia keys (superchain.py:78-91). For an unknown L1, lookup(constants, ["DepositContractAddress", l1]) returns None, which filter_none then drops from params — while eip6110TransitionTimestamp is still set from isthmus_time (line 227). EIP-6110 enabled without a depositContractAddress is exactly what fails chainspec validation, consistent with the #12395 smoke-test breakage.

The change is minimal, focused, and consistent with the already-ignored sepolia-dev-0.

Findings

Low (non-blocking, optional) — The constants table is an implicit allow-list, but the manual IGNORED_L1S denylist is the enforcement mechanism. Any future superchain-registry devnet on a new L1 will silently regenerate an invalid chainspec and re-break the smoke tests until someone manually adds it here. A more robust design would fail-fast or auto-skip when l1 is absent from constants (e.g. warn + continue when L1ChainId/DepositContractAddress lookups are None), so the failure is self-explanatory rather than surfacing downstream as a validation error. This is a design suggestion for a follow-up, not something that should block this fix.

No Critical / High / Medium issues found.
· branch fix/superchain-ignore-sepolia-devnet-2

@LukaszRozmej
LukaszRozmej merged commit fe5066e into master Jul 13, 2026
504 checks passed
@LukaszRozmej
LukaszRozmej deleted the fix/superchain-ignore-sepolia-devnet-2 branch July 13, 2026 08:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants