wake/installer: framework-ship the canon-side fallback wake (systemd timer + per-class bound in watch-list schema, installed by A10) — F7 replacement-before-retirement out of the box #925
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Non-blocking A-lane follow-up from the §4 vector PASS + retirement GO (dragon-lin). Normal cadence with the residual set (#913/#917/#923/#924).
Gap. The §5 retirement precondition is F7 — replacement-before-retirement: a canon-side FALLBACK WAKE must be live and proven-firing BEFORE the legacy
mosaic-heartbeat@timer is reaped, so there is never a coverage gap. In the dragon-lin pilot this fallback wake was operator-wired by hand. The framework should SHIP it so future hosts get F7 out of the box rather than hand-wiring it per host.Scope (framework-shipped canon-side fallback wake):
framework/systemd/user/mosaic-wake-fallback.{timer,service}) — a low-frequency safety wake that fires the canon drain on a per-class cadence bound, independent of the event-driven detector, so a stalled detector/daemon can never silently starve delivery.defaults/wake-watch-list.schema.json) — declarative, schema-versioned (mind Gate B range), so the bound is config not code.OnUnitActiveUSec), and the §5 retire-order still holds: fallback-wake proven-firing → THEN reap legacy.Red-first: fallback timer fires the drain on its bound cadence; a stalled detector still gets delivery via the fallback (no starvation); the reap step refuses unless the fallback wake is proven live (F7 precondition enforced); blank-reset gives exactly one effective cadence. Refs: #892, #911 (A10 installer + blank-reset + mosaic-wake.service), §5 rollout F7, dragon-lin vector PASS.