Module rollouts

Module rollouts 

Source
Expand description

Rollouts derived-view table (RFC-0008 §6.3). The applier is the sole writer; every state-mutating method takes an event_log_seq: Option<i64> so the row’s last_transition_event_log_seq FK can be populated.

Phase 10a baseline: the rollout reducer (Phase 10b) is unimplemented and the applier still drives transitions via the legacy PlanAction path. The new method shape (event_log_seq arg, state enum, target_ref) is ready; Phase 10b lights up the reducer that drives them through the RolloutEffect interpretation in the applier.

event_log_seq is NULL-able under the v0.2.1 baseline (RFC-0008 §6.1 item 3 + .claude/plans/v0.2.1-followups.md #1); same as probe_failures.event_log_seq (RFC-0007 §7.2).

Macros§

rollout_view_api 🔒

Structs§

ActiveRollout
GateRollouts
Gate-observed view (keeps terminal). Type-disjoint from UiRollouts so a wrong query result can’t leak into a gate consumer.
RolloutRow
Typed projection of a single rollouts row. Replaces the v0.1-era SupersedeStatus (which only carried superseded_at/superseded_by/ terminal_at) with the full row shape so callers can read state directly without ad-hoc boolean derivation.
Rollouts
UiRollouts
UI view (drops terminal). Drives /v1/rollouts, deferrals, metrics.

Type Aliases§

RolloutRowTuple 🔒
Raw tuple shape of a rollouts row, as read by rusqlite. Fields: (rollout_id, channel, target_ref, state, current_wave, opened_event_log_seq, last_transition_event_log_seq, opened_at, terminal_at, superseded_at). Aliased so clippy doesn’t flag the type complexity on the inline closure.