Custom MCMS Proposal duration#20577
Conversation
| MCMSAction types.TimelockAction `json:"mcmsAction"` | ||
| OverrideRoot bool `json:"overrideRoot"` // if true, override the previous root with the new one. | ||
| TimelockQualifierPerChain map[uint64]string `json:"timelockQualifierPerChain,omitempty"` // optional qualifier to fetch timelock address from datastore | ||
| ValidUntil *time.Duration `json:"validUntil" yaml:"validUntil"` |
There was a problem hiding this comment.
nit/ name should be ValidDuration
validUntil reads like a user can set a date and time
There was a problem hiding this comment.
Pull request overview
This PR adds support for custom proposal durations in MCMS configurations by introducing a ValidDuration field. Previously, all proposals used a fixed 72-hour duration; now callers can specify any duration they need.
- Added
ValidDurationfield toTimelockConfigstruct to allow custom proposal durations - Updated proposal building logic to use custom duration when provided, falling back to default when not
- Added test coverage to verify custom duration functionality
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| deployment/cre/contracts/contracts.go | Reorganized imports (formatting only) |
| deployment/cre/common/strategies/mcms_transaction_test.go | Added test case for custom ValidDuration behavior |
| deployment/common/proposalutils/propose.go | Added ValidDuration field and updated proposal building to use custom duration |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| MCMSAction types.TimelockAction `json:"mcmsAction"` | ||
| OverrideRoot bool `json:"overrideRoot"` // if true, override the previous root with the new one. | ||
| TimelockQualifierPerChain map[uint64]string `json:"timelockQualifierPerChain,omitempty"` // optional qualifier to fetch timelock address from datastore | ||
| ValidDuration *time.Duration `json:"validDuration" yaml:"validDuration"` |
There was a problem hiding this comment.
maybe rename to validUntil to match the name of the attribute in the proposal itself?
There was a problem hiding this comment.
oh, nevermind. I see the semantic is different. It's a duration, not a timestamp.
There was a problem hiding this comment.
I don't think this should be the case. The proposal field contains the full duration (NOW seconds + whatever time duration we set), and the config we are adding just contains the extra time we are adding to the NOW seconds.
So each one has its own meaning.
|




This addresses CRE-1486 by extending the MCMS Config struct to receive a
ValidUntilvalue which allows the caller to set any proposal duration, aside from the default of 72 hrs.Requires
Supports