REPORT: R-1007 — the repair after an unclean boot, proven live on demo-hp
gates / gates (push) Successful in 42s
gates / gates (push) Successful in 42s
Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb
This commit is contained in:
@@ -1,33 +1,15 @@
|
|||||||
# REPORT — felhom-controller v0.310.0: „A gép kikapcsolása" (2026-10-13)
|
# REPORT — v0.311.0: after a power cut, an app repairs the files the cut left empty (R-1007, 2026-10-14)
|
||||||
|
|
||||||
Baseline `1b2f74c` (v0.309.0). Commit `201f936`. **MinAgent 0.155.0.** Needs hub v0.149.0 for the 14-day alarm hold.
|
Baseline `acbbf4b` (0.310.0). Code `8d862e4`, security fix `3b85a0c` (before the build). Image
|
||||||
Design: felhom.eu `documentation/architecture/14-host-power-off.md`.
|
`felhom-controller:0.311.0` (sha256 `2a5550da…`). Design: felhom.eu `09` §3 decision 236; evidence
|
||||||
|
felhom.eu `documentation/audits/immich-repair-2026-10-14/`.
|
||||||
|
|
||||||
## What the household sees
|
- New template block `after_unclean_boot`; `internal/aftercrash` runs it once per start after an UNCLEAN host boot
|
||||||
|
(crashboot's verdict, after the 15-min crash grace). The household's lost-files note on the app page; the operator
|
||||||
Beállítások → Rendszer, after the restart cards: „A gép kikapcsolása" — „A gép teljesen kikapcsol. Az alkalmazásaid és a
|
event `app_repaired_after_crash` (counts only). MinAgent 0.155.0 unchanged.
|
||||||
mentések leállnak. **Újra bekapcsolni csak otthon lehet: nyomd meg a gép bekapcsológombját.**" The button opens a dialog;
|
- Tests: 15 guards red-proofed (each removed in turn convicted its test). Full suite and every controller gate green.
|
||||||
the household types KIKAPCSOLÁS (EN: TURN OFF); then „A gép kikapcsol. Néhány perc múlva teljesen leáll…". A refusal
|
- **Security review of `8d862e4`:** compose's shared runner logs a failed command's stdout and puts stderr in the error,
|
||||||
shows one sentence (backup running, just started, other system on the machine…). With an older agent: the button is
|
which reached the event's `problem`. Fixed: a quiet runner, exit code only (`TestAUB_AFailingCommandLeaksNoOutput`).
|
||||||
hidden and one line says an update is needed.
|
- **Live (demo-hp 9201, a real power cut mid-upload):** 41 of 41 broken photos repaired in 10 s; 120 controls untouched.
|
||||||
|
- Open: R-1020 — the returned duration is 0 (the record's is right). Delivery to the N100 and Tester 1 waits on golden
|
||||||
The restart card now says what it does (R-999): „A Felhom újraindítása" — „Újraindítja a Felhom részt a gépen: a
|
0.311.0 + the global floor.
|
||||||
vezérlőpultot és az összes alkalmazást. A gép maga bekapcsolva marad. Kb. 30 másodpercig semmi nem érhető el, utána
|
|
||||||
minden magától visszajön. Ha csak a vezérlőpult akad, a fenti „Vezérlő újraindítása" elég." `/api/server/reboot` is
|
|
||||||
POST only (one of R-983's seven).
|
|
||||||
|
|
||||||
## Proof
|
|
||||||
|
|
||||||
- `internal/web/poweroff_handlers_test.go` (6 tests): the word, POST only, refusals shown and nothing asked of the agent,
|
|
||||||
hidden for an old agent, a sentence for every reason in both languages, the restart route refuses a GET. Each guard
|
|
||||||
red-proofed. The four `settings_system` i18n parity fixtures regenerated on purpose (diff = the new card, the dialog's
|
|
||||||
type-to-confirm, the restart texts). `go test ./...` and `controller_gates.py` green.
|
|
||||||
- Live on the N100 (endpoint level — the calls the page makes; no browser on DooPlex): the card and the new texts on
|
|
||||||
`/settings`, the old heading gone; `POST /api/server/poweroff` with no word and with „igen" → 400 naming the word;
|
|
||||||
`GET /api/server/reboot` → 405; with KIKAPCSOLÁS → 202, and the machine went off. The power button brought it back:
|
|
||||||
dashboard 200 within 50 s, the same 5 containers healthy, controller 0.310.0.
|
|
||||||
|
|
||||||
## Delivered
|
|
||||||
|
|
||||||
Image `gitea.dooplex.hu/admin/felhom-controller:0.310.0` pushed. Hand-deployed to the N100 guest 9201 only (needed for
|
|
||||||
the live proof). demo-hp and Tester 1 get it with the operator's floor raise (floor 0.310.0, `min_agent` 0.155.0).
|
|
||||||
|
|||||||
Reference in New Issue
Block a user