monitoring page: storage labels follow the reader's language (W26, rehearsal 2026-10-20); unreleased
gates / gates (push) Successful in 1m11s

This commit is contained in:
2026-10-20 22:36:19 +02:00
parent 7ca59e2de3
commit 01c967e49e
8 changed files with 176 additions and 47 deletions
+10 -25
View File
@@ -1,29 +1,14 @@
# REPORT — controller v0.336.0: a failed off-site restore puts the app back exactly (R-893 option A) — 2026-10-20
# REPORT — the monitoring page's storage labels follow the reader's language (W26) — 2026-10-20, unreleased
**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.
**Task:** the Tester-2 rehearsal of 2026-10-20 (operator brief, „small text fixes allowed, committed, not released").
Found in B6 #16 (the dashboard in English): the monitoring page showed the storage labels in Hungarian.
Architecture: `felhom.eu/documentation/architecture/10-localisation.md` (Go-side messages are keys).
**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.
**What changed:** `internal/web/agent_host_metrics_handler.go` — the labels and purposes come from twelve `host_storage.*`
keys in the request's language; the Hungarian text is unchanged byte for byte.
**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.
**Tests:** two new (lookup, and handler wiring through a fake agent); each seen red, then green. `go test ./internal/web/
./internal/i18n/` green; `controller_gates.py --fast` 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).
**Not done:** no release, no image, no floor change — the system under test stays frozen during the rehearsal. It ships
with the next controller version. The rehearsal's own report: felhom.eu `REPORT-rehearsal-2026-10-20.md`.