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).