Peti retired (record complete); controller v0.272.0 live proofs + floor 0.272.0; register 339 -> 334; STATUS
gates / gates (push) Successful in 25s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-09-25 11:33:27 +02:00
parent eb1c56a981
commit 7195a6342e
20 changed files with 303 additions and 33 deletions
@@ -79,3 +79,23 @@ R-530, R-244, R-600 annotated); CONTEXT; STATUS; memory notes. Historic audits,
2. *The hub's host delete removes the WireGuard peer* — **not testable here:** the host was deleted in July and
ep0 carries no peer for it now; whether that delete removed one is not recorded (R-600 annotated).
3. *The backup holds no user data* — **TRUE, and stronger:** it held no backup at all (one 81-byte key file).
## Part B — controller v0.272.0 (`44ae4de`), floor 0.272.0
Red-proofs, each seen failing (`retire-peti-2026-09-25/B/redproof-*.txt`): R-670 (undo read with the validating
loader → "the undo logged a false backup-block ERROR"), R-671 (remover call dropped → "copies were left behind"; wiring
dropped → "main.go never calls SetUndoCopyRemover"), R-677 (always catalog_since → "got 3 days, want 0"), R-685 page
(line dropped → "a space skip must be said on the page"). Full suite + controller gates green; parity unchanged.
Live on 9202, drill catalog (`B/live/`): navidrome installed at 0.64.0 with a wrong probe; the step to 0.64.1 failed and
its undo failed → HOLD, 1 undo copy kept; **R-670:** 0 "backup block rejected" lines while the undo ran (my first count
of 3 "unreadable" was disk-watch lines — corrected in `r670-verdict.txt`); **R-671:** the backup page's restore →
"update hold … CLEARED", "removed 1 undo cop(y/ies)", 0 copies left, the seeded user read back; **R-677:** the head
re-tested at a new digest → „Frissítés elérhető — ma" / "Update available — today" (catalog_since two days old).
**R-685 page line: not live** — 9202 has no agent, and no demo box is short of space. Teardown: navidrome removed
through the product (0 volumes, 0 copies), 9202 back on the live catalog, drill reset to live `main`.
Floor saved 09:31:31Z; both demo boxes on 0.272.0 at 09:31:55Z; demo-hp's backup page renders in both languages.
## Part C — the night watch: NOT REACHED
The session ended in the daytime (≈11:40 CEST).
@@ -0,0 +1,2 @@
before: gitea.dooplex.hu/admin/felhom-controller:0.271.0
gitea.dooplex.hu/admin/felhom-controller:0.272.0 Up 26 seconds (healthy)
@@ -0,0 +1,2 @@
hu 47546 bytes; no-space line present: False | , amelyből az egész készülék visszaállítható. Ezt a host-ügynök készíti és kezeli. ✓ Utolsó teljes mentés 2026-09-24 21:59 (13 órája) – Helyi tároló (local) Naprakész Következő mentés 13 órája — a mentési ablakon belül ✗ Visszaállítás ellenőrizve 2026-09-25 10:57 Helyi tároló (local) ✓ Utolsó sikeres mentés: 2026-09-24 21:59 (13 órája) Naprakész Bi
?lang=en 47178 bytes; no-space line present: False | her — that can bring back the entire device. The host agent makes and manages it. ✓ Last full backup 2026-09-24 21:59 (13 hours ago) – Local storage (local) Up to date Next backup 13 hours ago — within the backup window ✗ Restore checked 2026-09-25 10:57 Local storage (local) ✓ Last successful backup: 2026-09-24 21:59 (13 hours ago) Up to date Back
@@ -0,0 +1,7 @@
# floor 0.272.0 (declared MinAgent 0.131.0) — 2026-09-25T09:31:31+00:00
impact: {"below":4,"valid":true,"version":"0.272.0"}
POST -> 303 Location: /configuration?flash=floor_set
read back: Effective floor: v0.272.0 — source: DB (
arrival 2026-09-25T09:31:55+00:00
felhom-pve: gitea.dooplex.hu/admin/felhom-controller:0.272.0 Up 16 seconds (healthy)
hp: gitea.dooplex.hu/admin/felhom-controller:0.272.0 Up 16 seconds (healthy)
@@ -0,0 +1,174 @@
{
"update": {
"accepted": true,
"http": "202",
"phases": [
{
"t": 0.0,
"phase": "backing-up",
"label": "Biztonsági mentés készül a frissítés előtt…",
"updating": true,
"error": null,
"hold": null
},
{
"t": 2.1,
"phase": "pulling",
"label": "Új verzió letöltése…",
"updating": true,
"error": null,
"hold": null
},
{
"t": 3.1,
"phase": "copying",
"label": "Az adatok másolása a frissítés előtt…",
"updating": true,
"error": null,
"hold": null
},
{
"t": 4.1,
"phase": "starting",
"label": "Indítás az új verzióval…",
"updating": true,
"error": null,
"hold": null
},
{
"t": 5.1,
"phase": "verifying",
"label": "Működés ellenőrzése…",
"updating": true,
"error": null,
"hold": null
},
{
"t": 95.3,
"phase": "undoing",
"label": "Visszaállítás az előző változatra…",
"updating": true,
"error": null,
"hold": null
},
{
"t": 187.6,
"phase": "failed",
"label": "A frissítés nem sikerült",
"updating": false,
"error": "A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok a frissítés előtti állapotba kerültek vissza, de az előző változat nem indult el. A(z) navidrome frissítése 2026-09-25 11:26-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: második meghajtó, 2026-09-25 11:23 — ez a másolat a beállításokat, az adatbázist és a fájlokat tartalmazza.",
"hold": "A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok a frissítés előtti állapotba kerültek vissza, de az előző változat nem indult el. A(z) navidrome frissítése 2026-09-25 11:26-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: második meghajtó, 2026-09-25 11:23 — ez a másolat a beállításokat, az adatbázist és a fájlokat tartalmazza."
}
],
"duration_s": 187.7,
"final_phase": "failed",
"update_error": "A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok a frissítés előtti állapotba kerültek vissza, de az előző változat nem indult el. A(z) navidrome frissítése 2026-09-25 11:26-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: második meghajtó, 2026-09-25 11:23 — ez a másolat a beállításokat, az adatbázist és a fájlokat tartalmazza.",
"hold_reason": "A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok a frissítés előtti állapotba kerültek vissza, de az előző változat nem indult el. A(z) navidrome frissítése 2026-09-25 11:26-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: második meghajtó, 2026-09-25 11:23 — ez a másolat a beállításokat, az adatbázist és a fájlokat tartalmazza.",
"state": "stopped"
},
"restore": {
"ok": true,
"snapshot_id": "helyi",
"snapshots": [
{
"time": "2026-09-25T09:23:50Z",
"short_id": "helyi",
"tier": 1,
"drive_label": "Tárhely (navidrome)"
}
],
"http": "HTTP/2 302",
"location": [
"location: /backups/restore?flash=flash.restore.started"
],
"seconds": 95.2,
"state_after": "unhealthy",
"hold_after": null,
"observables_after": {
"pinned_images": {
"navidrome": "deluan/navidrome:0.64.0"
},
"installed_images": {
"navidrome": "deluan/navidrome:0.64.0"
},
"catalog_images": {
"navidrome": "deluan/navidrome:0.64.1"
},
"live_compose_image_lines": [
"image: deluan/navidrome:0.64.0@sha256:a384948b81bd1529986c5960169e7fc4fa00f46bde6bd517971a4c36671db2af"
],
"docker_inspect": [
"navidrome deluan/navidrome:0.64.0@sha256:a384948b81bd1529986c5960169e7fc4fa00f46bde6bd517971a4c36671db2af running=true restarts=0"
]
}
},
"copies_kept": [
"navidrome_navidrome_data.pre-update-20260925T092352Z"
],
"copies_after": [],
"update2": {
"accepted": true,
"http": "202",
"phases": [
{
"t": 0.0,
"phase": "backing-up",
"label": "Biztonsági mentés készül a frissítés előtt…",
"updating": true,
"error": null,
"hold": null
},
{
"t": 2.1,
"phase": "pulling",
"label": "Új verzió letöltése…",
"updating": true,
"error": null,
"hold": null
},
{
"t": 3.1,
"phase": "copying",
"label": "Az adatok másolása a frissítés előtt…",
"updating": true,
"error": null,
"hold": null
},
{
"t": 4.1,
"phase": "verifying",
"label": "Működés ellenőrzése…",
"updating": true,
"error": null,
"hold": null
},
{
"t": 10.3,
"phase": "done",
"label": "Frissítve",
"updating": false,
"error": null,
"hold": null
}
],
"duration_s": 10.3,
"final_phase": "done",
"update_error": null,
"hold_reason": null,
"state": "running"
},
"badges": {
"hu": [
{
"title": "Újabb változat érhető el ehhez az alkalmazáshoz. A frissítés indításához nyomd meg a Frissítés gombot.",
"text": "Frissítés elérhető — ma"
}
],
"en": [
{
"title": "A newer version of this app is available. Select the Update button to start it.",
"text": "Update available — today"
}
]
}
}
@@ -0,0 +1,4 @@
2026/09/25 09:23:40 fillwatch.go:211: [DEBUG] [fillwatch] /mnt/felhom-drives/scratch_hdd/userdata/nextcloud: usage unreadable — skipped (an unreadable filesystem is not a full one)
2026/09/25 09:23:40 fillwatch.go:256: [INFO] [fillwatch] checked 6 filesystem(s), 1 unreadable/skipped, 0 notification(s); bands: all ok
2026/09/25 09:25:24 undo.go:513: [WARN] [stacks] update navidrome: UNDO — putting back the previous version and its 1 volume copy(ies) (reason: not healthy: not healthy within 1m30s (last: health check failing))
2026/09/25 09:26:56 update.go:1003: [ERROR] [stacks] update navidrome: the UNDO failed too (not_started) — HOLDING the app; the undo copies are kept: [{navidrome_navidrome_data navidrome_navidrome_data.pre-update-20260925T092352Z}]
@@ -0,0 +1,9 @@
# R-670 verdict (corrected reading) — 2026-09-25T09:30:06+00:00
The run log's count of 3 'unreadable' matched fillwatch lines ('usage unreadable'), not the R-670 line.
Lines containing 'backup block rejected' in the update+undo window: 0
Positive observable — the undo ran: 1 line(s)
navidrome's .felhom.yml carries a backup block (so v0.271.0 would have logged the line):
23:backup:
24- userdata:
25- - path: media/music
26- class: excluded # re-rippable bulk, :ro, shared tree
@@ -0,0 +1,4 @@
2026/09/25 09:23:40 fillwatch.go:211: [DEBUG] [fillwatch] /mnt/felhom-drives/scratch_hdd/userdata/nextcloud: usage unreadable — skipped (an unreadable filesystem is not a full one)
2026/09/25 09:23:40 fillwatch.go:256: [INFO] [fillwatch] checked 6 filesystem(s), 1 unreadable/skipped, 0 notification(s); bands: all ok
2026/09/25 09:28:38 update_guard.go:609: [INFO] [backup] navidrome: restore completed — the update hold (set 2026-09-25T09:26:56Z) is CLEARED
2026/09/25 09:28:38 update_guard.go:617: [INFO] [backup] navidrome: removed 1 undo cop(y/ies) the lifted update hold had kept (R-671)
@@ -0,0 +1,24 @@
11:23:02 drill: navidrome at 0.64.0, probe port 9999 (wrong on purpose) (box at e70453c)
11:23:20 deploy navidrome -> True; state=running
11:23:20 navidrome: createAdmin http=200
11:23:20 seed ok=True
11:23:21 navidrome: login as the seeded user http=200 ok=True
11:23:21 C1 read before: True
11:23:45 drill: navidrome head 0.64.1 (probe still wrong) (box at 06fb564)
11:26:57 update -> final failed hold='A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok a frissítés előtti állapotba kerültek vissza, de az előző változat nem indult el. A(z) navidrome frissítése 2026-09-25 11:26-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: második meghajtó, 2026-09-25 11:23 — ez a másolat a beállításokat, az adatbázist és a fájlokat tartalmazza.'
11:27:00 undo copies kept by the hold: ['navidrome_navidrome_data.pre-update-20260925T092352Z']
11:27:03 R-670: 'docker-compose.yml unreadable' lines during the update+undo: 3; UNDO lines: 2
11:28:42 restore -> {"ok": true, "http": "HTTP/2 302", "seconds": 95.2, "state_after": "unhealthy", "hold_after": null}
11:28:44 undo copies AFTER the restore: []
11:28:47 after-restore lines:
2026/09/25 09:23:40 fillwatch.go:211: [DEBUG] [fillwatch] /mnt/felhom-drives/scratch_hdd/userdata/nextcloud: usage unreadable — skipped (an unreadable filesystem is not a full one)
2026/09/25 09:23:40 fillwatch.go:256: [INFO] [fillwatch] checked 6 filesystem(s), 1 unreadable/skipped, 0 notification(s); bands: all ok
2026/09/25 09:28:38 update_guard.go:609: [INFO] [backup] navidrome: restore completed — the update hold (set 2026-09-25T09:26:56Z) is CLEARED
2026/09/25 09:28:38 update_guard.go:617: [INFO] [backup] navidrome: removed 1 undo cop(y/ies) the lifted update hold had kept (R-671)
11:28:48 navidrome: login as the seeded user http=200 ok=True
11:28:48 read after restore: True
11:28:56 drill: navidrome probe put right (box at 2f1863f)
11:29:11 update to the head -> done
11:29:40 drill: navidrome head re-tested at a new digest (tested now) (box at 2aec5c2)
11:29:44 R-677 badges: {"hu": [{"title": "Újabb változat érhető el ehhez az alkalmazáshoz. A frissítés indításához nyomd meg a Frissítés gombot.", "text": "Frissítés elérhető — ma"}], "en": [{"title": "A newer version of this app is available. Select the Update button to start it.", "text": "Update available — today"}]}
@@ -0,0 +1,10 @@
felhom-controller filebrowser paperless-postgres paperless-redis paperless-webserver privatebin traefik
0
0
hub:
0
drill=f389756b4dc7 live=f389756b4dc7
https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git
f389756 rules: Peti's box retired 2026-09-25 — the fence is DooPlex and ep0
@@ -0,0 +1,3 @@
=== RUN TestR670_ProbeLoaderLogsNoFalseError
r670_probe_meta_test.go:44: the undo logged a false backup-block ERROR:
--- FAIL: TestR670_ProbeLoaderLogsNoFalseError (0.01s)
@@ -0,0 +1,3 @@
=== RUN TestUndoCopyRemoverIsWiredAtStartup
update_leg_wiring_test.go:80: main.go never calls SetUndoCopyRemover — a lifted hold's undo copies would stay for ever
--- FAIL: TestUndoCopyRemoverIsWiredAtStartup (0.01s)
@@ -0,0 +1,3 @@
=== RUN TestR671_RestoreThatClearsAnUpdateHoldRemovesItsUndoCopies
r671_undo_copies_test.go:27: the lifted update hold's undo copies were left behind (remover calls: map[])
--- FAIL: TestR671_RestoreThatClearsAnUpdateHoldRemovesItsUndoCopies (0.01s)
@@ -0,0 +1,3 @@
=== RUN TestR677_DigestOnlyAgeFromTestedAt
r677_badge_age_test.go:32: the badge dates the TAG, not the tested digest: got 3 days (ok=true), want 0
--- FAIL: TestR677_DigestOnlyAgeFromTestedAt (0.00s)
@@ -0,0 +1,3 @@
=== RUN TestR685_BackupPageSaysTheBackupDoesNotFit
r685_no_space_test.go:67: space skip [hu]: a space skip must be said on the page — got "", want "A teljes rendszermentés nem fér el: 11.3 GiB kell, 14.9 GiB szabad."
--- FAIL: TestR685_BackupPageSaysTheBackupDoesNotFit (0.06s)