Files
felhom.eu/documentation/audits/dataloss-hunt-2026-10-20/C3-R1-local-restore-9202
..

C3 — R1/D4 proven live: a failed LOCAL restore leaves a broken app and no copy of what it replaced

Scratch guest 9202 on demo-hp, controller 0.331.0 (the local-restore code is unchanged since v0.328.0 — git log on restore_unit.go/restore.go; 0.336.0 runs the same lines). Hub off on 9202. The dashboard password was reset with the controller's own escape hatch (--print-reset-code → /claim), held in sec only. Architecture read: 07 §6.3 (the ladder „replay → rollback → hold"), §8; 09 §3 decision 154 (R-638 A), D20 (R-893 A).

step (UTC) act observed
10:10 Rallly 4.15.3 + postgres:18 deployed through POST /api/stacks/rallly/deploy running
10:11 marker A (psql in the app's own DB container); „Mentés most" (POST /api/backup/run) unit written 10:12 (rallly_rallly_postgres_data.tar 52 MB + rallly-postgres.sql)
10:13 positive control: marker B, then the household's restore (POST /backup/restore, point „helyi") „1 adatkötet és az adatbázis visszaállítva — az alkalmazás újraindult"; markers A (B rewound, as designed)
10:14:22 marker C — the household's newest row live: A,C
10:14:29 fault: the unit's DB volume tar truncated to half (a torn / damaged copy) 52 228 608 → 26 114 304 B
10:14:29 the same restore stop 10.8 s → volume rm → tar: short read → [ERROR] volume restore … failed → definition rewritten → „NOT replaying the database copy" → start → postgres crash-loops (initdb: directory … exists but is not empty)
10:14:44 what the household reads „Visszaállítás sikertelen: starting rallly after restore from unit: starting stack rallly: exit code 1 stderr: ...twork rallly_rallly-internal Creating …" — raw English Docker output
10:15:47 any copy of the live state (marker C)? none — no undo dump, no live-volume copy for Rallly (find of *restore-undo*/pre-restore-* finds only a September paperless file)
10:15 the dead-app guard rallly crossed the crash_loop threshold … while a backup/quiesce/update holds it — NOT stopped

So: the household's live data (marker C) was destroyed by the restore itself, the app does not start, and nothing on the box can put the pre-restore state back. The off-site restore got exactly this protection in v0.336.0 (D20 = A: „put back exactly as it was"); the LOCAL path — 07 §3's main customer restore — did not. Logs: 01-run.log, 02-controller-log-fault-window.txt. Teardown through the product (03-teardown.txt): Rallly removed with its data and backups; no container, no volume, no unit (the /opt/docker/stacks/rallly folder is the catalog template every app has).