Files
felhom-controller/REPORT.md
T

2.7 KiB
Raw Blame History

REPORT — controller v0.336.0: a failed off-site restore puts the app back exactly (R-893 option A) — 2026-10-20

Task: night brief part 2 (run by day, 2026-10-20), Parts 2 and 7. Operator answer: „D20 A". Architecture: felhom.eu/documentation/architecture/07-backup-architecture.md §6.3; 09 §3 decision 192.

What changed: internal/backup/offbox_restore_undo.go + offbox_reconstitute.go. Before the stop, the live volumes the snapshot will replace are measured and the copy is added to the restore's own free-space need (too little room or an unmeasurable volume refuses with nothing stopped). Right after the stop they are tarred into <namespace>/backups/restore-undo/<app>/<stamp>/. On any failure after a volume or the definition moved, the copies are poured back, a volume the snapshot added is removed, the live definition is written back and the app starts; the household reads „…sikertelen. Nem változott semmi…"; the operator gets backup_run_failures leg restore-put-back. A put-back that fails holds the app and keeps the copy. On success the copy is removed. R-1169: the held sentence says only what is certain.

Tests: 7 new (r893_putback_test.go) + 4 moved to option A (r893_mixed_restore_test.go); nine mutations, each red (felhom.eu audits/night2-2026-10-20/P2/redproof-unit.txt). controller_gates.py --fast green; go test ./... green.

Live proof on 9202 (rc.1, a helper with the brief's fences; audits/night2-2026-10-20/P2/live/): Rallly + postgres 18, a forced failure after the volume was replaced → the copy (69 MB, 0.9 s) poured back: 36 tables, markers A–D, the table only the backup had ABSENT, schema/data/row-count md5 EQUAL to before, the app running, no hold, the copy gone. Then a normal restore of the same snapshot: the snapshot's content, the app running, the copy gone. 9202 back on 0.331.0 as found.

Release: image sha256:93cd67d871125877e935a024765075b5a0b7c0e7683e1165976ff7a654fe8d73 (clean clone 93fb251); per-box floors → the three test boxes on 0.336.0 within a minute → box walk green (0 unhealthy, 0 allow-list refusals, catalog in sync, https-only 28 OK, „Fájlok ↗" one sign-in on demo-hp and Tester 1) → global floor 0.336.0 / MinAgent 0.158.1 at 08:54:35 UTC; per-box floors cleared. Evidence audits/night2-2026-10-20/P7/.

Not measured live: the version-change branch, the _files sentence, the refusals before the stop, a failing put-back — each pinned by a red-proved unit test. Found: a successful put-back is logged at ERROR by the web handler, and an empty backups/restore-undo/ folder stays — one register row (small; a version is pushed once, so it waits for the next release).