before: pinned={'zipline': 'ghcr.io/diced/zipline:4.6.1', 'zipline-postgres': 'postgres:16-alpine'}
drill: fe5feff DRILL zipline: {'zipline': 'ghcr.io/diced/zipline:4.7.0'} (box proof)
  phase +0.0s backing-up | err=None
  phase +19.5s safety-dump | err=None
  phase +21.6s pulling | err=None
  phase +72.8s copying | err=None
  phase +87.2s starting | err=None
  phase +92.3s verifying | err=None
  phase +103.6s done | err=None
    zipline: login as the seeded user http=200 ok=True
2026/09/30 17:59:02 update.go:536: [INFO] [stacks] update zipline: accepted — guarded update started
2026/09/30 17:59:02 update.go:1365: [INFO] [stacks] update zipline: phase checking
2026/09/30 17:59:02 update.go:786: [INFO] [stacks] update zipline: ladder — the last step (1 of 1) — the catalog's current definition
2026/09/30 17:59:02 update.go:816: [INFO] [stacks] update zipline: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T17:58:33Z) (found: none) — backing up first
2026/09/30 17:59:02 update.go:1365: [INFO] [stacks] update zipline: phase backing-up
2026/09/30 17:59:21 update.go:831: [INFO] [stacks] update zipline: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-30T17:59:03Z
2026/09/30 17:59:21 update.go:1365: [INFO] [stacks] update zipline: phase safety-dump
2026/09/30 17:59:22 update.go:846: [INFO] [stacks] update zipline: safety dump done (1 file(s)) [/mnt/sys_drive/felhom-data/backups/primary/zipline/db-dumps/pre-restore-20260930T175922Z-zipline-postgres.sql]
2026/09/30 17:59:23 undo.go:287: [INFO] [stacks] update zipline: the undo copy will hold 3 named volume(s), 46.5 MiB
2026/09/30 17:59:23 update.go:1365: [INFO] [stacks] update zipline: phase pinning
2026/09/30 17:59:23 pin.go:373: [INFO] [stacks] update zipline: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/zipline/docker-compose.yml (zipline=ghcr.io/diced/zipline:4.7.0, zipline-postgres=postgres:16-alpine)
2026/09/30 17:59:23 update.go:1365: [INFO] [stacks] update zipline: phase pulling
2026/09/30 18:00:15 update.go:1365: [INFO] [stacks] update zipline: phase copying
2026/09/30 18:00:27 update.go:1365: [INFO] [stacks] update zipline: phase copying
2026/09/30 18:00:28 undo.go:437: [INFO] [stacks] update zipline: copied zipline_zipline_postgres_data → zipline_zipline_postgres_data.pre-update-20260930T180027Z in 667ms
2026/09/30 18:00:28 update.go:1365: [INFO] [stacks] update zipline: phase copying
2026/09/30 18:00:28 undo.go:437: [INFO] [stacks] update zipline: copied zipline_zipline_public → zipline_zipline_public.pre-update-20260930T180027Z in 453ms
2026/09/30 18:00:28 update.go:1365: [INFO] [stacks] update zipline: phase copying
2026/09/30 18:00:29 undo.go:437: [INFO] [stacks] update zipline: copied zipline_zipline_uploads → zipline_zipline_uploads.pre-update-20260930T180027Z in 473ms
2026/09/30 18:00:29 update.go:1365: [INFO] [stacks] update zipline: phase starting
2026/09/30 18:00:35 update.go:1365: [INFO] [stacks] update zipline: phase verifying
2026/09/30 18:00:45 update.go:997: [INFO] [stacks] update zipline: healthy after 10s (the app's health check passed)
2026/09/30 18:00:45 update.go:1033: [INFO] [stacks] update zipline: DONE in 1m43s

RESULT final_phase=done after={'zipline': 'ghcr.io/diced/zipline:4.7.0', 'zipline-postgres': 'postgres:16-alpine'} seed_after=True verdict=proven (103.6 s)
