**Expected** — a clear picture: is it DNS, connectivity, host, or service?
**Decision** — root cause localized → Step 2; ambiguous or conflicting → `STOP` and escalate (provider console if host is unreachable).
### Step 2 — Confirm and route
**Action** — match the failure to the owning runbook (`mailcow-health.md`, `pdns-health.md`, `matrix-health.md`, etc.) or `network-change.md` for a config fix.
**Expected** — an applicable runbook with a recovery action.
**Decision** — applicable → follow it; none → `STOP` (diagnose only, do not mutate).
### Step 3 — Recover (gated)
**Action** — apply only the runbook's documented recovery, with approval.
**Verification** — re-run the health report / endpoint check and confirm recovery.
**Rollback** — if recovery makes it worse, revert per `rollback.md`.
## Final Verification
- Service reachable and health report green.
- Incident and recovery recorded in the Linear `vps` issue.
## References
- [`network-change.md`](network-change.md)
- Per-service health runbooks under [`runbooks/`](.)