Skip to content

Add 3x MCMS structure to deployer/reader/state#601

Merged
krebernisak merged 20 commits intomainfrom
feat/mcms-3x
Feb 18, 2026
Merged

Add 3x MCMS structure to deployer/reader/state#601
krebernisak merged 20 commits intomainfrom
feat/mcms-3x

Conversation

@krebernisak
Copy link
Copy Markdown
Collaborator

@krebernisak krebernisak commented Feb 13, 2026

@krebernisak krebernisak requested a review from a team as a code owner February 13, 2026 15:37
Copilot AI review requested due to automatic review settings February 13, 2026 15:37
@github-actions
Copy link
Copy Markdown

👋 krebernisak, thanks for creating this pull request!

To help reviewers, please consider creating future PRs as drafts first. This allows you to self-review and make any final changes before notifying the team.

Once you're ready, you can mark it as "Ready for review" to request feedback. Thanks!

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR refactors the MCMS (Multi-Chain Multi-Sig) deployment architecture from a single MCMS contract to a three-contract structure with role-specific contracts: Proposer, Canceller, and Bypasser. Each contract is deployed separately and assigned a specific role in the timelock system.

Changes:

  • Restructured MCMSSuiteState to include three separate MCMS contract addresses (Proposer, Canceller, Bypasser) instead of a single MCMS address
  • Updated MCMSReader to select the appropriate MCMS contract based on the timelock action type (schedule, cancel, bypass)
  • Implemented deployment logic for all three MCMS contracts with role-specific type assignments

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
deployment/utils/contract.go Added TODO comment noting a type mismatch issue for MCMS deployment that needs upstream fix
deployment/state/state.go Removed MCMS and Timelock contract type constants (moved to mcms.go)
deployment/state/mcms.go Refactored MCMSSuiteState to support three role-specific MCMS contracts; updated state loading logic to match contracts by role type
deployment/mcms/sequence/deploy_mcms.go Implemented deployment sequence for all three MCMS contracts with type overrides for proper address reference storage
deployment/ccip/1_6_0/sequences/mcms_reader.go Added logic to select appropriate MCMS contract based on timelock action type
deployment/ccip/1_6_0/sequences/mcms.go Updated state extraction to initialize all three MCMS contract fields

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread deployment/state/mcms.go Outdated
Comment thread deployment/mcms/sequence/deploy_mcms.go Outdated
Comment thread deployment/mcms/sequence/deploy_mcms.go Outdated
Comment thread deployment/state/mcms.go
Comment thread deployment/mcms/sequence/deploy_mcms.go Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 17 out of 18 changed files in this pull request and generated 5 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread deployment/pkg/ops/mcms/set_config.go
Comment thread deployment/ccip/1_6_0/sequences/mcms.go
Comment thread deployment/pkg/ops/mcms/deploy.go
Comment thread deployment/pkg/ops/mcms/deploy.go Outdated
Comment thread deployment/pkg/ops/mcms/deploy.go Outdated
ecPablo
ecPablo previously approved these changes Feb 16, 2026
huangzhen1997
huangzhen1997 previously approved these changes Feb 16, 2026
Copy link
Copy Markdown
Contributor

@huangzhen1997 huangzhen1997 left a comment

Choose a reason for hiding this comment

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

lgtm

// Attach the qualifier to the output (to be stored in DS)
for i := range r.Output.Addresses {
r.Output.Addresses[i].Qualifier = qualifier
b.Logger.Info("in.TimelockAdmin - skipping param (EVM specific type - 20 bytes, not compatible with TON address format)")
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We could use the CrossChainAddress to represent this

Comment thread deployment/pkg/ops/utils/operation.go Outdated
@krebernisak krebernisak dismissed stale reviews from huangzhen1997 and ecPablo via bf593f0 February 17, 2026 17:14
@krebernisak krebernisak merged commit 75dbc64 into main Feb 18, 2026
36 of 37 checks passed
@krebernisak krebernisak deleted the feat/mcms-3x branch February 18, 2026 09:30
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