5ef0f52bcd
gates / gates (push) Successful in 19s
Controller v0.237.0-v0.238.1: the Update button is a guarded job — refusals, backup-first when the proven Tier-2 copy is stale, safety dump, pin, pull (pin back on failure), health, HOLD on failure. Proven live on demo-hp: A, B, E, F, H and the restore walk (audits/slice4-2026-09-13/). Correction to this morning's pages: between golden bakes the hub HOLDS a floor above the vouched golden, so a release does not reach the fleet by floor (R-472, operator decision). Corrected in the runbook, STATUS, CONTEXT, R-468 and the gate docstring. Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
101 lines
4.8 KiB
Plaintext
101 lines
4.8 KiB
Plaintext
=== Scenario B — the proven copy is older than update.backup_max_age (2m): back up first — 2026-09-13T10:09:48Z ===
|
||
--- BEFORE ---
|
||
{
|
||
"state": "unhealthy",
|
||
"updating": false,
|
||
"update_phase": null,
|
||
"update_phase_label": null,
|
||
"update_error": null,
|
||
"hold_reason": null,
|
||
"pinned_images": {
|
||
"uptime-kuma": "louislam/uptime-kuma:2.4.0"
|
||
},
|
||
"installed_images": {
|
||
"uptime-kuma": {
|
||
"ref": "louislam/uptime-kuma:2.4.0",
|
||
"digest": "sha256:91e963bfda569ba115206e843febb446f473ab525add4e08b2b9e3beffa16985",
|
||
"at": "2026-09-13T10:08:19Z"
|
||
}
|
||
},
|
||
"catalog_images": {
|
||
"uptime-kuma": "louislam/uptime-kuma:2.4.0"
|
||
}
|
||
}
|
||
louislam/uptime-kuma:2.4.0 Up About a minute (healthy)
|
||
--- POST /api/stacks/uptime-kuma/update at 2026-09-13T10:09:49Z ---
|
||
HTTP 202
|
||
{"ok":true,"data":{"accepted":true,"completed":false},"message":"Frissítés elindult – az állapot a kártyán követhető"}
|
||
|
||
10:09:50 U backing-up
|
||
10:09:52 U pulling
|
||
10:09:54 U verifying
|
||
10:09:58 - done
|
||
--- AFTER 2026-09-13T10:09:58Z ---
|
||
{
|
||
"state": "running",
|
||
"updating": false,
|
||
"update_phase": "done",
|
||
"update_phase_label": "Frissítve",
|
||
"update_error": null,
|
||
"hold_reason": null,
|
||
"pinned_images": {
|
||
"uptime-kuma": "louislam/uptime-kuma:2.4.0"
|
||
},
|
||
"installed_images": {
|
||
"uptime-kuma": {
|
||
"ref": "louislam/uptime-kuma:2.4.0",
|
||
"digest": "sha256:91e963bfda569ba115206e843febb446f473ab525add4e08b2b9e3beffa16985",
|
||
"at": "2026-09-13T10:08:19Z"
|
||
}
|
||
},
|
||
"catalog_images": {
|
||
"uptime-kuma": "louislam/uptime-kuma:2.4.0"
|
||
}
|
||
}
|
||
louislam/uptime-kuma:2.4.0 Up 8 seconds (healthy)
|
||
--- the controller, verbatim (update + backup lines since 2026-09-13T10:09:49Z) ---
|
||
2026/09/13 10:09:49 router.go:567: [INFO] [api] update requested for stack: uptime-kuma
|
||
2026/09/13 10:09:49 update.go:278: [INFO] [stacks] update uptime-kuma: accepted — guarded update started
|
||
2026/09/13 10:09:49 update.go:701: [INFO] [stacks] update uptime-kuma: phase checking
|
||
2026/09/13 10:09:49 update.go:394: [INFO] [stacks] update uptime-kuma: the proven copy is 7m0s old (limit 2m0s) — backing up first
|
||
2026/09/13 10:09:49 update.go:701: [INFO] [stacks] update uptime-kuma: phase backing-up
|
||
2026/09/13 10:09:49 update_guard.go:143: [INFO] [backup] update pre-backup for uptime-kuma: starting (DB dump → volume dump → unit capture → Tier 2)
|
||
2026/09/13 10:09:51 update_guard.go:192: [INFO] [backup] update pre-backup for uptime-kuma: volume dump OK
|
||
2026/09/13 10:09:51 update_guard.go:198: [INFO] [backup] update pre-backup for uptime-kuma: recovery unit captured (0 database dump(s))
|
||
2026/09/13 10:09:51 tier2.go:424: [INFO] [backup] Tier 2 copied uptime-kuma → /mnt/felhom-drives/hdd_1/backups/secondary/uptime-kuma (19.9 KB, 0 leg(s), 0s)
|
||
2026/09/13 10:09:51 update_guard.go:214: [INFO] [backup] update pre-backup for uptime-kuma: complete in 1.395s
|
||
2026/09/13 10:09:51 update.go:701: [INFO] [stacks] update uptime-kuma: phase safety-dump
|
||
2026/09/13 10:09:51 update_guard.go:239: [INFO] [backup] update safety dump for uptime-kuma: the app has no database — nothing to copy (no-op)
|
||
2026/09/13 10:09:51 update.go:423: [INFO] [stacks] update uptime-kuma: safety dump done (0 file(s)) []
|
||
2026/09/13 10:09:51 update.go:701: [INFO] [stacks] update uptime-kuma: phase pinning
|
||
2026/09/13 10:09:51 pin.go:362: [INFO] [stacks] update uptime-kuma: pin advanced to the catalog's current definition (uptime-kuma=louislam/uptime-kuma:2.4.0)
|
||
2026/09/13 10:09:51 update.go:701: [INFO] [stacks] update uptime-kuma: phase pulling
|
||
2026/09/13 10:09:52 update.go:701: [INFO] [stacks] update uptime-kuma: phase starting
|
||
2026/09/13 10:09:53 update.go:701: [INFO] [stacks] update uptime-kuma: phase verifying
|
||
2026/09/13 10:09:58 update.go:499: [INFO] [stacks] update uptime-kuma: healthy after 5s (the app's health check passed)
|
||
2026/09/13 10:09:58 update.go:505: [INFO] [stacks] update uptime-kuma: DONE in 8s
|
||
--- the stacks page card (badge / hold / phase fragments) ---
|
||
1 Frissítés
|
||
1 Naprakész
|
||
1 stackAction(event, 'uptime-kuma', 'restart')
|
||
1 stackAction(event, 'uptime-kuma', 'stop')
|
||
1 stackAction(event, 'uptime-kuma', 'update')
|
||
=== Scenario B — the proven copy is older than update.backup_max_age (2m): back up first done ===
|
||
--- the copy after the backup-first leg ---
|
||
cross_drive last_success 2026-09-13T10:09:51Z status ok
|
||
/mnt/sys_drive/felhom-data/backups/primary/uptime-kuma/:
|
||
total 12
|
||
drwxr-xr-x 2 root root 4096 2026-09-13T10:09:51Z compose
|
||
-rw-r--r-- 1 root root 1048 2026-09-13T10:09:51Z manifest.json
|
||
drwxr-xr-x 2 root root 4096 2026-09-13T10:09:50Z volume-dumps
|
||
|
||
/mnt/sys_drive/felhom-data/backups/primary/uptime-kuma/volume-dumps/:
|
||
total 4
|
||
-rw-r--r-- 1 root root 3072 2026-09-13T10:09:50Z uptime-kuma_uptime_kuma_data.tar
|
||
total 4
|
||
-rw-r--r-- 1 root root 3072 2026-09-13T10:09:50Z uptime-kuma_uptime_kuma_data.tar
|
||
=== revert the knob 2026-09-13T10:10:04Z ===
|
||
042b71a3123d70da
|
||
1
|
||
controller: gitea.dooplex.hu/admin/felhom-controller:0.237.0 Up 16 seconds (healthy)
|