Module transitions

Module transitions 

Source
Expand description

Rollout-reducer transition dispatch (RFC-0008 §3 + §7).

Each source-state module holds the (legal-event) match arms; this file is the single entry point the public step() calls. The reducer enforces transition legality — the applier owns aggregation (e.g., “all hosts Converged → emit RolloutTerminal”) so the reducer can stay pure.

Modules§

active 🔒
Active source state. At least one host is in-flight (Pending/Activating/Soaking per RFC-0005).
converging 🔒
Converging source state. All current-wave hosts have reached Soaking or beyond; later waves remain to dispatch (or, with no more waves, all hosts await Converged).
failed 🔒
Failed source state. A host hit halt-only policy; operator action required. Same exit shape as Reverted.
opening 🔒
Opening source state. The rollout has been opened but no hosts have joined yet (RFC-0008 §3).
pruned 🔒
Pruned source state. Absorbing — the in-memory state-machine instance has been freed; the row persists for audit (RFC-0008 §3 + d1bc6df1 architect fix-up). Any further event is structurally a defect.
reverted 🔒
Reverted source state. Some host fired rollback-and-halt; rollout is past the point where new hosts dispatch. Exits via SuccessorOpened, RetentionExpired, or OperatorClearance.
superseded 🔒
Superseded source state. A newer rollout for the same channel has opened. Only exit is → Pruned on RetentionExpired.
terminal 🔒
Terminal source state. All hosts Converged; channel-edges may release. Two exits: → Superseded on SuccessorOpened, → Pruned on RetentionExpired.

Functions§

dispatch 🔒
Dispatch a RolloutEvent against the current RolloutRecord.
illegal 🔒
Helper: build a RolloutTransitionError::IllegalForState for events that don’t apply to the current state.
transition_effect 🔒
Helper: build the RolloutEffect::RecordRolloutTransition effect for a state transition. Lives here so the per-state modules don’t re-derive it.