fix(L1): bump semver for contracts changed since the last release (v8.3.0 backport) - #439
Merged
jackchuma merged 1 commit intoSep 14, 2026
Conversation
OptimismPortal2, DisputeGameFactory, and AggregateVerifier all have source changes relative to the versions currently deployed onchain, but still declare the same semver. Bump each so the onchain version distinguishes the artifacts. - OptimismPortal2 5.2.0 -> 6.0.0: ETHLockbox removal drops the `ethLockbox()` getter and the `OptimismPortal_InvalidLockboxState` error from the ABI. - DisputeGameFactory 1.4.0 -> 1.5.0: game proxies are now deployed with `cloneDeterministic`; the ABI is unchanged. - AggregateVerifier 0.1.0 -> 0.2.0: the schedule-pinning work landed after 0.1.0 shipped, and reverting the cadence changes in #436 also reverted the version, leaving it colliding with the released 0.1.0. Co-authored-by: Cursor <cursoragent@cursor.com>
This was referenced Sep 15, 2026
jackchuma
added a commit
that referenced
this pull request
Sep 15, 2026
#439 bumped OptimismPortal2, DisputeGameFactory and AggregateVerifier because each had source changes relative to the versions deployed onchain while still declaring the same semver. SystemConfig meets that description too and was missed. #378 changed two behaviours without touching the version: - `paused()` no longer selects the pause identifier based on whether the ETH_LOCKBOX feature is enabled; it always uses `optimismPortal()`. - `_setFeature` no longer guards ETH_LOCKBOX against being disabled while the portal still has a lockbox configured, or toggled while paused. snapshots/semver-lock.json already records both a different sourceCodeHash and initCodeHash for SystemConfig across that change, so the lock file and the declared version disagreed. Minor rather than major: no function, error or event declarations were added or removed, so the ABI is unchanged. This matches the DisputeGameFactory 1.4.0 -> 1.5.0 precedent in #439; OptimismPortal2 went major only because it dropped `ethLockbox()` from its ABI. Co-authored-by: Cursor <cursoragent@cursor.com>
jackchuma
added a commit
that referenced
this pull request
Sep 15, 2026
#439 bumped OptimismPortal2, DisputeGameFactory and AggregateVerifier because each had source changes relative to the versions deployed onchain while still declaring the same semver. SystemConfig meets that description too and was missed. #378 changed two behaviours without touching the version: - `paused()` no longer selects the pause identifier based on whether the ETH_LOCKBOX feature is enabled; it always uses `optimismPortal()`. - `_setFeature` no longer guards ETH_LOCKBOX against being disabled while the portal still has a lockbox configured, or toggled while paused. snapshots/semver-lock.json already records both a different sourceCodeHash and initCodeHash for SystemConfig across that change, so the lock file and the declared version disagreed. Minor rather than major: no function, error or event declarations were added or removed, so the ABI is unchanged. This matches the DisputeGameFactory 1.4.0 -> 1.5.0 precedent in #439; OptimismPortal2 went major only because it dropped `ethLockbox()` from its ABI. Co-authored-by: Cursor <cursoragent@cursor.com>
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.
Backport of #438 to
releases/v8.3.0.Summary
OptimismPortal2,DisputeGameFactory, andAggregateVerifierall have source changes relative to what is currently deployed onchain, but they still declare the same semver on this release branch. This bumps each one so the onchainversion()actually distinguishes the artifacts.Verified against live contracts on L1 (Base mainnet and Base Sepolia both report the same values):
OptimismPortal25.2.05.2.06.0.0DisputeGameFactory1.4.01.4.01.5.0AggregateVerifier0.1.00.2.0Why each bump
OptimismPortal25.2.0 → 6.0.0 (major). The ETHLockbox removal is an interface break: theethLockbox()getter and theOptimismPortal_InvalidLockboxStateerror are both gone from the ABI, and the storage slot is now a spacer.DisputeGameFactory1.4.0 → 1.5.0 (minor). Game proxies are now deployed viacloneDeterministicinstead ofclone, and the duplicate-UUID check moved so the UUID can serve as the CREATE2 salt. The ABI snapshot is byte-identical, so this is a behavioral change only.AggregateVerifier0.1.0 → 0.2.0 (minor). This is the bump that most needs attention.0.1.0shipped in the v8.2.x tags. ThescheduleId/ProtocolVersionspinning work landed afterward and raised the version to0.2.0, but the cadence revert in #436 reverted the version string along with the cadence changes — while the schedule-pinning work stayed. The result is that this branch currently declares0.1.0for code that differs from the released0.1.0(the journal now commits toscheduleId, and the constructor takes aScheduleConfig).Note that
0.2.0here is not the same artifact as0.2.0previously onmain: this branch has the schedule-pinning work without the cadence fork-gating. To avoid two bytecodes sharing a version, #438 movesmainto0.3.0so this release can own0.2.0.OptimismPortal2.solandDisputeGameFactory.solare identical onmainand this branch, so those two bumps match #438 exactly.Testing
just snapshotsregenerated from a clean build; onlysnapshots/semver-lock.jsonchanges, covering exactly the three contracts. No ABI or storage layout changes, as expected for a version-string-only edit.just test: 1214 passed, 0 failed, 1 skipped.just lint-checkclean.Made with Cursor