before: pinned={'immich-machine-learning': 'ghcr.io/immich-app/immich-machine-learning:v3.2.2', 'immich-postgres': 'ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0', 'immich-redis': 'redis:7-alpine', 'immich-server': 'ghcr.io/immich-app/immich-server:v3.2.2'}
  phase +0.0s backing-up | err=None
  phase +18.5s safety-dump | err=None
  phase +21.6s pulling | err=None
  phase +23.6s copying | err=None
  phase +26.7s starting | err=None
  phase +38.0s verifying | err=None
  phase +58.5s done | err=None
    immich: readback found=True (http 200, control passed)
2026/09/30 13:57:15 update.go:536: [INFO] [stacks] update immich: accepted — guarded update started
2026/09/30 13:57:15 update.go:1365: [INFO] [stacks] update immich: phase checking
2026/09/30 13:57:15 update.go:786: [INFO] [stacks] update immich: ladder — the last step (3 of 3) — the catalog's current definition
2026/09/30 13:57:15 update.go:816: [INFO] [stacks] update immich: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T13:27:24Z) (found: none) — backing up first
2026/09/30 13:57:16 update.go:1365: [INFO] [stacks] update immich: phase backing-up
2026/09/30 13:57:33 update.go:831: [INFO] [stacks] update immich: precondition met after the backup — Tier 1 (own recovery unit) copy from 2026-09-30T13:57:16Z
2026/09/30 13:57:33 update.go:1365: [INFO] [stacks] update immich: phase safety-dump
2026/09/30 13:57:35 update.go:846: [INFO] [stacks] update immich: safety dump done (1 file(s)) [/mnt/felhom-drives/scratch_hdd/userdata/immich/backups/primary/immich/db-dumps/pre-restore-20260930T135733Z-immich-postgres.sql]
2026/09/30 13:57:37 undo.go:287: [INFO] [stacks] update immich: the undo copy will hold 3 named volume(s), 308.0 MiB
2026/09/30 13:57:37 update.go:1365: [INFO] [stacks] update immich: phase pinning
2026/09/30 13:57:37 pin.go:373: [INFO] [stacks] update immich: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/immich/docker-compose.yml (immich-machine-learning=ghcr.io/immich-app/immich-machine-learning:v3.2.4, immich-postgres=ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0, immich-redis=redis:7-alpine, immich-server=ghcr.io/immich-app/immich-server:v3.2
2026/09/30 13:57:37 update.go:1365: [INFO] [stacks] update immich: phase pulling
2026/09/30 13:57:38 update.go:1365: [INFO] [stacks] update immich: phase copying
2026/09/30 13:57:39 update.go:1365: [INFO] [stacks] update immich: phase copying
2026/09/30 13:57:40 undo.go:437: [INFO] [stacks] update immich: copied immich_immich_ml_cache → immich_immich_ml_cache.pre-update-20260930T135739Z in 460ms
2026/09/30 13:57:40 update.go:1365: [INFO] [stacks] update immich: phase copying
2026/09/30 13:57:41 undo.go:437: [INFO] [stacks] update immich: copied immich_immich_postgres_data → immich_immich_postgres_data.pre-update-20260930T135739Z in 1.343s
2026/09/30 13:57:41 update.go:1365: [INFO] [stacks] update immich: phase copying
2026/09/30 13:57:41 undo.go:437: [INFO] [stacks] update immich: copied immich_immich_redis_data → immich_immich_redis_data.pre-update-20260930T135739Z in 466ms
2026/09/30 13:57:41 update.go:1365: [INFO] [stacks] update immich: phase starting
2026/09/30 13:57:53 update.go:1365: [INFO] [stacks] update immich: phase verifying
2026/09/30 13:58:13 update.go:997: [INFO] [stacks] update immich: healthy after 20s (the app's health check passed)
2026/09/30 13:58:14 update.go:1033: [INFO] [stacks] update immich: DONE in 58s

RESULT final_phase=done after={'immich-machine-learning': 'ghcr.io/immich-app/immich-machine-learning:v3.2.4', 'immich-postgres': 'ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0', 'immich-redis': 'redis:7-alpine', 'immich-server': 'ghcr.io/immich-app/immich-server:v3.2.4'} seed_after=True verdict=proven (58.5 s)
