# Hermes DR Plan v2 — Pending Implementation Checklist

**Submitted by Germaine:** July 9, 2026
**Status:** Planned (not yet implemented)
**Supersedes:** v1 ping-only watchdog

## Key Architecture Changes

- Two-layer health check (ping + HTTP health endpoint)
- SSH fencing + S3 ownership lock (prevents split-brain)
- Pre-failover integrity check (SQLite PRAGMA)
- 10-min VACUUM snapshots with integrity gate
- Backward heartbeat (Core monitors standby)
- app1-bu upgrade CPX11 → CPX21 for local Ollama (+$6/mo)

## 16-Item Checklist

- [ ] Upgrade app1-bu from CPX11 to CPX21 (Hetzner API)
- [ ] Install Ollama + llama3.2:3b on app1-bu
- [ ] Deploy /healthz endpoint on Core (Tailscale-only, bearer token)
- [ ] Deploy two-layer watchdog on app1-bu (Layer 1 + Layer 2)
- [ ] Deploy SSH fencing script on app1-bu
- [ ] Deploy S3 ownership lock with refresh
- [ ] Deploy 10-min VACUUM snapshot cron on Core
- [ ] Deploy pre-failover integrity check on app1-bu
- [ ] Deploy backward heartbeat (Core → app1-bu over Tailscale SSH)
- [ ] Update hermes-standby-deployment skill with v2 architecture
- [ ] Whitelist cross-box IPs in fail2ban both directions
- [ ] Verify: 4 consecutive pings → auto-takeover (server dead)
- [ ] Verify: Hermes dead but server up → alert + fence → conditional takeover
- [ ] Verify: state.db corruption → falls back to snapshot, not corrupt file
- [ ] Verify: Core reboot with standby holding lock → Core stays dormant
- [ ] Update dr-issue-log.md
