Extend with New Facets

Upgrades follow a publish‑delay‑commit rhythm so that depositors see them coming.

  1. Draft the facet: Import BaseFacetInitializer, use MoreVaultsLib for shared storage, and guard sensitive calls with the existing role modifiers.

  2. Audit & dry‑run: Because the facet is self‑contained, diffing focuses on its selectors and storage writes, not the whole vault.

  3. Submit via Multicall: Pack a diamondCut plus any config tweaks into submitActions; the call is timestamped and logged.

  4. Wait out the timelock: Deposit‑side UX and bots can decode the pending batch through getPendingActions.

  5. Execute: A manager calls executeActions. DiamondCutFacet swaps the selectors, and DiamondLoupeFacet immediately reflects the new map for indexers.

If something looks off, a guardian can cancel with vetoActions before the delay expire; no need to pause or migrate funds.

Last updated