Rotations and upgrades
audience: operators
Rotation discipline at the coalition layer is thin: most
rotations occur inside one citizen (a lattice, a
standalone organism) or inside one confluence (including
a module). The coalition operator’s task is to republish
the CoalitionConfig when any referenced component
changes identity in a way that folds into
COALITION_ROOT. This page lists the rotations that
materially affect a coalition and the operation order for
each.
For rotations inside a block-building lattice organism, follow the builder rotations page. For rotations inside a standalone organism, follow that organism’s own runbook.
Rotations that change a coalition’s fingerprint
Any of the following forces a new CoalitionConfig
fingerprint. Publication is not optional: integrators
compiled against the old fingerprint see ConnectTimeout
on every handle until they recompile against the new
one.
- A referenced lattice’s stable id changes (retirement).
- A referenced standalone organism’s stable id changes (retirement).
- A referenced confluence’s
ConfluenceConfigfingerprint changes (content, ACL, span, or MR_TD bump on a TDX-gated confluence). - A module’s
ConfluenceConfigfingerprint changes (content, ACL, or MR_TD bump). - The coalition’s lattice set changes (add or remove a lattice).
- The coalition’s organism set changes (add or remove a standalone organism).
- The coalition’s confluence set changes (add or remove a confluence or module).
- The coalition’s ticket issuer is added, rotated, or removed.
- The coalition instance name changes (rare — effectively a retirement; see below).
Rotations that do not change a coalition’s fingerprint
- Committee member rotations inside a referenced citizen,
under a stable per-citizen
Config. - Committee member rotations inside a confluence or
module, under a stable
ConfluenceConfig. - MR_TD republications that match the previously pinned value (i.e. the image was rebuilt from the same source).
- Per-citizen content-hash bumps (MR_TD rotations, ACL rotations) if confluences pin only the stable id, not the content hash. Confluences that pinned content hash do bump.
These are invisible to integrators at the coalition layer. Documented per-citizen or per-confluence, not per- coalition.
Ordering a citizen retirement
When a referenced citizen’s stable id changes, follow this sequence.
- Receive the retirement notification from the per- citizen operator via the federation change channel. The notification includes the old and new stable ids and the cutover time.
- Prepare the new
CoalitionConfig. Update the citizen’s reference in theCoalitionConfigdefinition. Re-derive the coalition fingerprint. Modules re-derive automatically becauseCOALITION_ROOThas changed. Commissioned confluences referenced by the coalition re-derive only if they themselves span the retired citizen. - Redeploy modules under the new
ConfluenceConfigs. Because each module’s content folds the coalition root, module fingerprints have bumped. Bring up new committee members on the newConfluenceConfigs while old members continue on the old ones; rotate over. - Publish the new
CoalitionConfigfingerprint on the handshake page and change channel. - Wait for integrators to recompile. Old-
fingerprint handles time out (or, better, see a
RetirementMarkerfrom each retiring committee pointing at the replacement); integrators reach out if they miss the change. - Retire the old module deployments once the old
CoalitionConfigis no longer in use by the integrators the operator cares about. Each committee emits a terminalRetirementMarkerbefore shutdown.
Ordering a confluence or module upgrade
A confluence or module’s Config may change for reasons
other than upstream citizen retirements: new content
parameters, MR_TD bump, ACL change.
- Stand up the new deployment under the new
ConfluenceConfigalongside the old. - Update any referencing coalitions’
CoalitionConfigs to reference the new confluence fingerprint. Recompute each coalition fingerprint. - Publish each new
CoalitionConfig. - Announce the change via the change channel, with migration notes. If any referencing coalition ships a Chronicle, its next commit records the rotation.
- Retire the old deployment. The committee emits a
RetirementMarkerpointing at the new deployment so integrators rebind cleanly.
A transition window where old and new coexist is required; a hard cutover leaves every integrator timing out simultaneously.
Retiring a coalition
A coalition may be retired (renamed). Reasons:
- The composition has drifted far enough from the original intent that a clean break is preferable to incremental bumps.
- The set of operators participating in the coalition has reorganised.
- Branding or regulatory considerations.
Sequence:
- Announce retirement with substantial lead time. Integrators relying on the coalition need weeks to migrate. A shipped Chronicle records the retirement in its next commit.
- Stand up the replacement coalition (e.g.
ethereum.superchain-v2026q2) with a freshCoalitionConfigfingerprint and the desired composition. - Run both coalitions in parallel until most integrator traffic has migrated.
- Retire the old coalition’s modules (committees
emit
RetirementMarkers pointing at the replacement coalition’s modules) once integrator traffic drops to zero or acceptable levels. Referenced confluences are independent of the retired coalition and continue if other coalitions or direct integrators still use them. - Publish a retirement note. The old
CoalitionConfigfingerprint is formally deprecated; integrators still on it seeConnectTimeoutonce the old modules are down.
Do not reuse an instance name for a different composition. A retired coalition’s name is spent; reissuing it under a new composition would produce silent mis-bindings across the integrator base.