contracts-bedrock: post-U19 cannon deprecation follow-ups#21625
Merged
Conversation
U19 disables the legacy CANNON permissionless game, leaving CANNON_KONA as the live game on upgraded chains. Remove the CANNON->CANNON_KONA startingRespectedGameType override from the fork setup and the mirrored helpers in the OPCM V2 upgrade tests, plus the now-dead _isPermissionlessGameType helper. Fork upgrade tests for chains that have not yet run U19 (e.g. unichain) will fail until they upgrade; this is intentional. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
FetchChainInfo derived the permissionless game only from GameTypes.CANNON, so post-U19 chains (CANNON disabled, CANNON_KONA live) reported no permissionless game. Fall back to CANNON_KONA when CANNON is absent, and dedupe the CANNON_KONA lookup. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The pinned block is the forked-state cache key, floored to the start of the period. Weekly pinning let fork tests lag live mainnet by up to a week, so a mid-week upgrade (e.g. Unichain U19) failed every run until the pin rolled forward. Daily cuts the lag to at most a day, at the cost of ~7x more cold-fork cache misses (one per fork cache key per day), each amortized across that day's runs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
wwared
approved these changes
Jul 7, 2026
Contributor
|
@OptimismBot please review |
0xOneTony
approved these changes
Jul 7, 2026
Contributor
There was a problem hiding this comment.
lgtm, but @mds1 note that op-fetcher and the updated artifacts are being consumed in the registry, and it seems like that currently the registry is consuming the monorepo from an older commit so in order for the automated commands (e.g. codegen ) to run properly there we would also need to bump the version of the monorepo on the registry.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-ups to #21621, which handled the U19 fork state where the legacy
CANNONpermissionless game is disabled andCANNON_KONAis the live game.Three changes:
CANNON->CANNON_KONAstartingRespectedGameTypeoverride from the fork test setup and the mirrored helpers in the OPCM V2 upgrade tests, now thatCANNONis deprecated. Also drops the dead_isPermissionlessGameTypehelper.FetchChainInfo(op-fetcher), which derived the permissionless game only fromGameTypes.CANNONand so reported no permissionless game for post-U19 chains. It now falls back toCANNON_KONAwhenCANNONis absent.Unichain has run U19, but its upgrade landed after today's 00:00 UTC pinned block, so the
unichain-mainnetfork job stays red until the daily pin rolls forward (2026-07-07). Verified green at a post-U19 block locally (29/29 inOPContractsManagerV2_Upgrade_Test). Everything else is green.FetchChainInfokeeps itsCANNONandL2OutputOraclehandling on purpose, since op-fetcher syncs the whole superchain registry, which still has pre-U19 chains (CANNON) and legacy L2OO chains (e.g. fraxtal, race).Follow-up:
MigrationValidationInput.cannonPrestateis now dead, but removing it is a public ABI change so I'll do it separately.🤖 Generated with Claude Code