From d1d5ff4964c431b7384623d8bd8117546d9236ab Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Mon, 22 Jun 2026 15:49:31 +0200 Subject: [PATCH] test campaign: Phase 4 results (DR rebuild verified via restore-test + deep 9300 restore, collision-safe) Co-Authored-By: Claude Opus 4.8 (1M context) --- TEST-REPORT.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/TEST-REPORT.md b/TEST-REPORT.md index 420aabe..00ab4f7 100644 --- a/TEST-REPORT.md +++ b/TEST-REPORT.md @@ -94,7 +94,22 @@ State: 9201 healthy, controller up, tunnel up. 1. **`GET /api/backup/snapshots` has no server handler** (api-router returns "endpoint not found"). The restore UI's snapshot dropdown (`backups.html:682`) can't populate → a pure-UI restore is blocked at snapshot selection. Restore itself works via `POST /backup/restore` (the form's action). **Flag for fix.** 2. **Restore DB import is additive** — `RestoreFromRecoveryUnit` replays the dump but does not drop tables absent from it (my marker table persisted). Real snapshot data is restored; stale/extra tables are not pruned. Minor behavioral note. 3. Whole-server ("Rendszermentés") backup shows **"A host-ügynök jelenleg nem elérhető"** (agent local API unreachable from controller) — same root as the monitoring host-metrics gap; tracked in Phase 6. -## Phase 4 — DR rebuild (9300) — _pending_ +## Phase 4 — DR rebuild from backup — **PASS** (non-destructive to 9201) + +State: 9201 healthy throughout, controller up, tunnel up (verified before + after). + +| Check | Result | Evidence | +|---|---|---| +| Agent DR primitive (`--selftest=restore-test`) | PASS | restored `felhom-pbs:backup/ct/9201/2026-06-22T12:45:37Z` into scratch **990000** (band 990000-990009, no collision) → bind-mounts neutralized → **net link-down** → boot → `verified: boot+running` → torn down. `pass:true`, 2m56s, self-cleaning | +| Deep DR restore into throwaway **9300** | PASS | `pct restore 9300 --storage local-lvm`. **Safety:** before start, removed shared binds `mp3:/mnt/felhom-drives` + `mp9:/etc/felhom-bootstrap`, removed `net0`, set `onboot 0` — verified config clean (only restored `mp0` docker-data + rootfs remain). | +| 9300 boots + controller process up | PASS | `pct status 9300: running`; `felhom-controller Up (healthy)` inside | +| Restored volumes + app.yaml + stacks intact | PASS | `/opt/docker/stacks/` has all 57 stack dirs; romm `app.yaml` restored (`deployed:true`, env, locked_fields) | +| `docker ps` inside 9300 | PASS | **25 containers up** from restored volumes — identical set to 9201 (filebrowser, vikunja, uptime-kuma, romm×3, radarr, privatebin, paperless×3, mealie, komga, jellyfin, immich×4, gokapi, calibre-web, audiobookshelf, actualbudget, felhom-controller healthy, cloudflared, traefik) | +| Restored data non-hollow | PASS | 9300 `romm-db`: 17 tables (the real restored DB) | +| No collision with live 9201 | PASS | 9300 has **no eth0** (net removed) → cloudflared cannot reach Cloudflare/hub; live 9201 `cloudflared Up 5 days` unchanged throughout | +| Cleanup | PASS | `pct stop 9300 && pct destroy 9300` → both LVs removed; `pct list` shows only 9001/9201/9999; local-lvm freed to 9.71% | + +**Core DR claim proven end-to-end:** PBS whole-CT restore → guest boots → controller + all app stacks + DB data recovered from restored volumes — twice (agent self-cleaning primitive + manual deep inspection), both collision-safe per §0.6. ## Phase 5 — Storage lifecycle — _pending_ ## Phase 6 — Monitoring/alerts/hub — _pending_ ## Phase 7 — Resilience (optional) — _pending_