Sentinel Set 15E — Fleet Rollout + Canary Controller
Set 15E turns the node-local Set 14E upgrade transaction into an auditable fleet rollout. It does not bypass Set 14E: every node still performs its own state-ABI checks, map snapshot/restore, health verification, and rollback.
Safety properties:
- SSH host keys are strict by default; insecure checking is an explicit plan opt-in.
- Rollout plans are SHA-256 pinned after the journal is created.
- Node inventory is captured before changes and nodes are grouped by architecture/kernel-minor/sched_ext cohort.
- First wave is a canary; it can require an explicit
approvebefore later waves. Subsequent waves are bounded bywave_sizeandmax_parallel. - A wave exceeding
max_failurespauses the rollout and can roll back that wave in reverse node order. - Each node delegates to
fluxvm-upgrade(Set 14E); Set 15E does not directly rewrite bpffs state. - Evidence contains the final journal, normalized plan and SHA-256 manifest.
- The privileged host gate is inventory-only unless an operator explicitly runs
fluxvm-fleet run.
Commands
fluxvm-fleet validate fleet.json
fluxvm-fleet probe fleet.json
fluxvm-fleet plan fleet.json
sudo fluxvm-fleet run fleet.json
fluxvm-fleet approve fleet.json # when manual canary approval is enabled
sudo fluxvm-fleet resume fleet.json
fluxvm-fleet status fleet.json
fluxvm-fleet evidence fleet.json
Production rollout pattern
Use one node as canary, dwell long enough to observe production SLOs, then proceed in small waves. Set max_failures=0 for control-plane/kernel changes. Keep at least one healthy node per failure domain outside the active wave. Do not place SSH private keys or tokens in the rollout JSON; reference protected files from the node entries instead.
Boundary
This is a host-fleet rollout controller, not a cluster scheduler and not a replacement for Zyvor Fabric. It does not perform BGP/ECMP decisions, VM placement, service discovery, or Kubernetes workload rollout.