=== step 5: the guarded Update — the catalog offers no newer version (pin == catalog v0.12.1; no promotion tonight), so this is the same-version pass — 2026-09-13T16:48:35Z === card before: catalog_images={'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.12.1', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine'} installed=None units before: /mnt/sys_drive/felhom-data/backups/primary/adventurelog: 2026-09-13T16:38:33.2924199360 1350 manifest.json 2026-09-13T16:38:33.2924199360 452 compose/app.yaml 2026-09-13T16:38:33.2924199360 2623 compose/.felhom.yml 2026-09-13T16:38:33.2914199240 3540 compose/docker-compose.yml 2026-09-13T16:36:59.5722645580 200260608 volume-dumps/adventurelog_adventurelog_postgres_data.tar 2026-09-13T16:36:58.3152490620 47497728 volume-dumps/adventurelog_adventurelog_media.tar /mnt/felhom-drives/hdd_1/backups/primary/adventurelog: ABSENT /mnt/felhom-drives/hdd_1/backups/secondary/adventurelog: 2026-09-13T16:38:33.2924199360 2623 recovery-unit/compose/.felhom.yml 2026-09-13T16:38:33.2914199240 3540 recovery-unit/compose/docker-compose.yml 2026-09-13T16:38:33.2924199360 452 recovery-unit/compose/app.yaml 2026-09-13T16:36:59.5722645580 200260608 recovery-unit/volume-dumps/adventurelog_adventurelog_postgres_data.tar 2026-09-13T16:36:58.3152490620 47497728 recovery-unit/volume-dumps/adventurelog_adventurelog_media.tar 2026-09-13T16:38:33.2924199360 1350 recovery-unit/manifest.json 2026-09-13T16:38:35.6164485870 1 .felhom-tier2-layout --- POST /api/stacks/adventurelog/update at 2026-09-13T16:48:37Z --- HTTP 202 {"ok":true,"data":{"accepted":true,"completed":false},"message":"Frissítés elindult – az állapot a kártyán követhető"} + 0s phase safety-dump + 3s phase done end (2026-09-13T16:48:40Z, +3s): state=running updating=False phase=done err='' hold='' --- controller log --- 2026/09/13 16:48:37 update.go:336: [INFO] [stacks] update adventurelog: accepted — guarded update started 2026/09/13 16:48:37 update.go:763: [INFO] [stacks] update adventurelog: phase checking 2026/09/13 16:48:37 update_guard.go:173: [DEBUG] [backup] update precondition for adventurelog: no Tier-2 copy (nincs másodlagos fájlmásolat ehhez az alkalmazáshoz) 2026/09/13 16:48:37 update.go:450: [INFO] [stacks] update adventurelog: precondition met — Tier 1 (own recovery unit) copy from 2026-09-13T16:38:33Z (10m0s old, limit 24h0m0s) 2026/09/13 16:48:37 update.go:763: [INFO] [stacks] update adventurelog: phase safety-dump 2026/09/13 16:48:37 update_guard.go:403: [INFO] [backup] update safety dump for adventurelog: the app has no database — nothing to copy (no-op) 2026/09/13 16:48:37 update.go:482: [INFO] [stacks] update adventurelog: safety dump done (0 file(s)) [] 2026/09/13 16:48:37 update.go:763: [INFO] [stacks] update adventurelog: phase pinning 2026/09/13 16:48:37 pin.go:362: [INFO] [stacks] update adventurelog: pin advanced to the catalog's current definition (adventurelog=ghcr.io/seanmorley15/adventurelog-backend:v0.12.1, adventurelog-frontend=ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1, adventurelog-postgres=postgis/postgis:16-3.5-alpine) 2026/09/13 16:48:37 update.go:763: [INFO] [stacks] update adventurelog: phase pulling 2026/09/13 16:48:38 update.go:763: [INFO] [stacks] update adventurelog: phase starting 2026/09/13 16:48:39 update.go:763: [INFO] [stacks] update adventurelog: phase verifying 2026/09/13 16:48:39 healthprobe.go:153: [DEBUG] Health probe adventurelog: API GET :8000/api/ → 200 (3ms) 2026/09/13 16:48:39 update.go:558: [INFO] [stacks] update adventurelog: healthy after 0s (the app's health check passed) 2026/09/13 16:48:39 installed.go:397: [DEBUG] [stacks] installed-images adventurelog: unchanged (3 service(s)) — app.yaml not rewritten 2026/09/13 16:48:39 update.go:564: [INFO] [stacks] update adventurelog: DONE in 2s login: (302, '/') READ BACK after the update IDENTICAL to the truth: True === step 5 done 2026-09-13T16:48:43Z ===