Codex symmetry-gap finding. Three fixes completing add/remove boot-survival
symmetry:
1. disable-on-remove (BUG, TDD): fleet remove stopped + deleted roster/env/
heartbeat but never disabled the systemd unit, so a removed-but-enabled
mosaic-agent@NAME.service could resurrect on reboot pointing at deleted
config. Add 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).
3. init-R5 guarantee: fleet init --write now fails hard when a non-minimal
profile lacks exactly one orchestrator (was a soft warning); the sanctioned
no-orchestrator 'minimal' preset is still allowed.
Verified: 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.
Refs #611
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EsgTQzV5YUGk1JtCLP4B83