Files
stack/docs/scratchpads/fleet-polish-bundle.md
Jason Woltje d46ac40890
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
fix(fleet): boot-survival symmetry — disable-on-remove + add-enable + init-R5 (#612)
Co-authored-by: Jason Woltje <jason@diversecanvas.com>
Co-committed-by: Jason Woltje <jason@diversecanvas.com>
2026-06-22 08:12:58 +00:00

1.1 KiB

Fleet-polish bundle — boot-survival symmetry (#611)

  • Issue: #611 · Branch: feat/fleet-polish-bundle · From the Lead's Codex symmetry-gap finding.

Three fixes

  1. disable-on-remove (BUG, TDD). fleet remove stopped + deleted roster/env/heartbeat but never systemctl --user disable mosaic-agent@NAME.service → a removed-but-enabled unit could resurrect on reboot pointing at deleted config. Fix: buildSystemdDisableCommand + disable in remove (best-effort, gated on !--keep-files).
  2. add-enable. fleet add now enables the new agent's unit for boot-survival (best-effort, independent of --start) — symmetry with disable-on-remove.
  3. init-R5 guarantee. fleet init --write now FAILS HARD when a non-minimal profile doesn't yield exactly one orchestrator (was a soft warning). minimal (sanctioned no-orchestrator) still allowed.

Verification

  • 4 new tests (disable builder; remove-invokes-disable; add-invokes-enable; init general → exactly 1 orchestrator) + 147 existing fleet tests green (151 total). tsc/eslint/prettier clean.
  • TDD on the disable bug per contract.