feat(base): health gate as a disabled opt-in

Moves megalith's health gate into base as a disabled opt-in; a host enables it with systemctl enable health-gate-check.service health-gate-confirm.service.

  • Same rollback logic as megalith: counter in /var, bootc rollback at the threshold, hold when no target, confirm gated by Requisite=.
  • Check helpers (unit-active, user-unit-active, module-loaded, nic-present, addr-present, zpool-imported, podman-info) are selected by NN-<helper>@<arg> symlinks in /etc/health-gate/checks; only 10-var-writable ships.
  • Helpers retry to one shared deadline (HEALTH_GATE_WAIT, default 300 s), so a slow module load is waited for.
  • No preset line, so the units ship off. D40 records why not greenboot.
  • Megalith switches in a later MR; the host selection lives in iac.

🤖 Generated with Claude Code

Merge request reports

Loading
Loading