Skip to content

fix(L1): seed imported schedule protocol version - #420

Merged
jackchuma merged 7 commits into
mainfrom
fix/protocol-versions-initial-minimum-version
Aug 27, 2026
Merged

fix(L1): seed imported schedule protocol version#420
jackchuma merged 7 commits into
mainfrom
fix/protocol-versions-initial-minimum-version

Conversation

@jackchuma

@jackchuma jackchuma commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

What changed? Why?

  • Extend ProtocolVersions.initialize to set the minimum packed protocol version atomically with an imported schedule and reject non-zero activation timestamps when that version is zero.
  • Plumb protocolVersionsInitialMinimumVersion through the standard and multiproof deployment paths, retaining the config parser's packed-version bound check.
  • Preflight the imported minimum version, timestamp ordering, and future-notice invariants before either deployment path broadcasts transactions, including a one-hour buffer for future activations to remain valid while sequential transactions are mined.
  • Add regression and deployment coverage, document the new config field, and refresh the ABI and semver snapshots.

This keeps imported activation schedules immediately consumable by nodes, which reject positive activation timestamps paired with protocol version zero.

Notes to reviewers

  • Empty and zero-only initial schedules may still leave the minimum protocol version at zero.
  • Future activations must provide MIN_NOTICE plus a one-hour deployment buffer during preflight; the initializer retains its exact MIN_NOTICE trust-boundary check.
  • Non-zero initial versions retain the existing 128-bit packed-semver bound.
  • minimumProtocolVersion remains outside the scheduleId commitment.
  • The initializer remains the contract-level trust boundary. Deployment scripts share a preflight helper only because broadcasts are separate transactions and a later revert cannot roll back earlier broadcasts.
  • The deployment integration test verifies the resulting schedule and minimum version; there is no duplicate post-deployment readback in the script.

How has it been tested?

  • just test
  • just test --match-path test/deploy/SystemDeploy.t.sol
  • just test --match-path test/L1/ProtocolVersions.t.sol
  • just test --match-path test/L1/proofs/AggregateVerifier.t.sol
  • just build-no-tests
  • just snapshots
  • forge fmt --check
  • just validate-spacers-no-build

Require imported activations to initialize their minimum packed version atomically so nodes never read a scheduled upgrade with version zero.

Co-authored-by: Cursor <cursoragent@cursor.com>
@cb-heimdall

cb-heimdall commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

✅ Heimdall Review Status

Requirement Status More Info
Reviews 1/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

jackchuma and others added 2 commits August 24, 2026 17:52
Rely on the atomic initializer for schedule validation and keep deployment-state verification in the integration test.

Co-authored-by: Cursor <cursoragent@cursor.com>
Validate the imported schedule and minimum version before any broadcast so a bad config cannot strand a partially deployed deterministic system.

Co-authored-by: Cursor <cursoragent@cursor.com>
Comment thread scripts/deploy/SystemDeploy.s.sol Outdated
Comment thread scripts/multiproof/DeployDevBase.s.sol
jackchuma and others added 4 commits August 26, 2026 07:24
Preserve both imported minimum-version and future-notice validation.

Co-authored-by: Cursor <cursoragent@cursor.com>
Share ordering, notice, and minimum-version validation across standard and multiproof deployments so invalid configuration cannot strand partial broadcasts.

Co-authored-by: Cursor <cursoragent@cursor.com>
Reserve one hour for sequential broadcasts so a future activation accepted during preflight remains valid when ProtocolVersions is initialized.

Co-authored-by: Cursor <cursoragent@cursor.com>
Remove the one-off ProtocolVersions deployment library while preserving shared validation across both broadcast paths.

Co-authored-by: Cursor <cursoragent@cursor.com>
@jackchuma
jackchuma requested a review from leopoldjoy August 26, 2026 20:57
@jackchuma
jackchuma merged commit 558a507 into main Aug 27, 2026
6 checks passed
@jackchuma
jackchuma deleted the fix/protocol-versions-initial-minimum-version branch August 27, 2026 12:02
@cb-heimdall

Copy link
Copy Markdown
Collaborator

Review Error for CatfishbillyIII @ 2026-08-27 13:21:15 UTC
User failed mfa authentication, either user does not exist or public email is not set on your github profile. \ see go/mfa-help

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.

4 participants