  phase +0.0s safety-dump | err=None
  phase +2.1s pulling | err=None
  phase +3.1s copying | err=None
  phase +10.3s starting | err=None
  phase +16.4s verifying | err=None
  phase +204.1s done | err=None
    adventurelog: readback of the seeded account found=True
world-data lines: 1 Latest data already imported.
containers: adventurelog ghcr.io/seanmorley15/adventurelog-backend:v0.13.0 Up 3 minutes (healthy) | adventurelog-frontend ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0 Up 3 minutes (healthy) | adventurelog-postgres postgis/postgis:16-3.5-alpine Up 3 minutes (healthy) | 
2026/09/27 10:50:48 update.go:536: [INFO] [stacks] update adventurelog: accepted — guarded update started
2026/09/27 10:50:48 update.go:1365: [INFO] [stacks] update adventurelog: phase checking
2026/09/27 10:50:48 update.go:786: [INFO] [stacks] update adventurelog: ladder — the last step (1 of 1) — the catalog's current definition
2026/09/27 10:50:48 update.go:814: [INFO] [stacks] update adventurelog: precondition met — Tier 2 (second drive) copy from 2026-09-27T10:46:33Z (4m0s old, limit 24h0m0s)
2026/09/27 10:50:48 update.go:1365: [INFO] [stacks] update adventurelog: phase safety-dump
2026/09/27 10:50:49 update.go:846: [INFO] [stacks] update adventurelog: safety dump done (1 file(s)) [/mnt/sys_drive/felhom-data/backups/primary/adventurelog/db-dumps/pre-restore-20260927T105048Z-adventurelog-postgres.sql]
2026/09/27 10:50:49 undo.go:287: [INFO] [stacks] update adventurelog: the undo copy will hold 2 named volume(s), 234.6 MiB
2026/09/27 10:50:49 update.go:1365: [INFO] [stacks] update adventurelog: phase pinning
2026/09/27 10:50:49 pin.go:373: [INFO] [stacks] update adventurelog: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/adventurelog/docker-compose.yml (adventurelog=ghcr.io/seanmorley15/adventurelog-backend:v0.13.0, adventurelog-frontend=ghcr.io/seanmorley15/adventurelog-fro
2026/09/27 10:50:49 update.go:1365: [INFO] [stacks] update adventurelog: phase pulling
2026/09/27 10:50:51 update.go:1365: [INFO] [stacks] update adventurelog: phase copying
2026/09/27 10:50:54 update.go:1365: [INFO] [stacks] update adventurelog: phase copying
2026/09/27 10:50:55 undo.go:437: [INFO] [stacks] update adventurelog: copied adventurelog_adventurelog_media → adventurelog_adventurelog_media.pre-update-20260927T105054Z in 832ms
2026/09/27 10:50:55 update.go:1365: [INFO] [stacks] update adventurelog: phase copying
2026/09/27 10:50:57 undo.go:437: [INFO] [stacks] update adventurelog: copied adventurelog_adventurelog_postgres_data → adventurelog_adventurelog_postgres_data.pre-update-20260927T105054Z in 2.031s
2026/09/27 10:50:57 update.go:1365: [INFO] [stacks] update adventurelog: phase starting
2026/09/27 10:51:03 update.go:1365: [INFO] [stacks] update adventurelog: phase verifying
2026/09/27 10:52:29 update.go:1228: [WARN] [stacks] update adventurelog: no probe container for adventurelog — settling on container state instead; candidates: [adventurelog(starting) adventurelog-frontend(unhealthy) adventurelog-postgres(running)]
2026/09/27 10:54:11 update.go:997: [INFO] [stacks] update adventurelog: healthy after 3m8s (the app's health check passed)
2026/09/27 10:54:11 update.go:1033: [INFO] [stacks] update adventurelog: DONE in 3m24s

RESULT final_phase=done seed_after=True state=running verdict=proven
