before: pinned={'outline': 'outlinewiki/outline:1.9.1', 'outline-postgres': 'postgres:18-alpine', 'outline-redis': 'redis:7-alpine'}
drill: 418cc41 DRILL outline: {'outline': 'outlinewiki/outline:1.10.1'} (box proof)
  phase +0.0s backing-up | err=None
  phase +15.4s safety-dump | err=None
  phase +16.4s pulling | err=None
  phase +59.5s copying | err=None
  phase +67.7s starting | err=None
  phase +73.8s verifying | err=None
  phase +89.2s done | err=None
    outline: readback of the seeded document http=200 found=True
2026/09/30 16:15:13 update.go:536: [INFO] [stacks] update outline: accepted — guarded update started
2026/09/30 16:15:13 update.go:1365: [INFO] [stacks] update outline: phase checking
2026/09/30 16:15:13 update.go:786: [INFO] [stacks] update outline: ladder — the last step (2 of 2) — the catalog's current definition
2026/09/30 16:15:13 update.go:816: [INFO] [stacks] update outline: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T16:13:37Z) (found: none) — backing up first
2026/09/30 16:15:13 update.go:1365: [INFO] [stacks] update outline: phase backing-up
2026/09/30 16:15:28 update.go:831: [INFO] [stacks] update outline: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-30T16:15:14Z
2026/09/30 16:15:28 update.go:1365: [INFO] [stacks] update outline: phase safety-dump
2026/09/30 16:15:28 update.go:846: [INFO] [stacks] update outline: safety dump done (1 file(s)) [/mnt/sys_drive/felhom-data/backups/primary/outline/db-dumps/pre-restore-20260930T161528Z-outline-postgres.sql]
2026/09/30 16:15:29 undo.go:287: [INFO] [stacks] update outline: the undo copy will hold 3 named volume(s), 65.8 MiB
2026/09/30 16:15:29 update.go:1365: [INFO] [stacks] update outline: phase pinning
2026/09/30 16:15:29 pin.go:373: [INFO] [stacks] update outline: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/outline/docker-compose.yml (outline=outlinewiki/outline:1.10.1, outline-postgres=postgres:18-alpine, outline-redis=redis:7-alpine)
2026/09/30 16:15:29 update.go:1365: [INFO] [stacks] update outline: phase pulling
2026/09/30 16:16:12 update.go:1365: [INFO] [stacks] update outline: phase copying
2026/09/30 16:16:19 update.go:1365: [INFO] [stacks] update outline: phase copying
2026/09/30 16:16:19 undo.go:437: [INFO] [stacks] update outline: copied outline_outline_data → outline_outline_data.pre-update-20260930T161619Z in 464ms
2026/09/30 16:16:19 update.go:1365: [INFO] [stacks] update outline: phase copying
2026/09/30 16:16:20 undo.go:437: [INFO] [stacks] update outline: copied outline_outline_postgres_data → outline_outline_postgres_data.pre-update-20260930T161619Z in 915ms
2026/09/30 16:16:20 update.go:1365: [INFO] [stacks] update outline: phase copying
2026/09/30 16:16:20 undo.go:437: [INFO] [stacks] update outline: copied outline_outline_redis_data → outline_outline_redis_data.pre-update-20260930T161619Z in 441ms
2026/09/30 16:16:20 update.go:1365: [INFO] [stacks] update outline: phase starting
2026/09/30 16:16:27 update.go:1365: [INFO] [stacks] update outline: phase verifying
2026/09/30 16:16:42 update.go:997: [INFO] [stacks] update outline: healthy after 15s (the app's health check passed)
2026/09/30 16:16:42 update.go:1033: [INFO] [stacks] update outline: DONE in 1m29s

RESULT final_phase=done after={'outline': 'outlinewiki/outline:1.10.1', 'outline-postgres': 'postgres:18-alpine', 'outline-redis': 'redis:7-alpine'} seed_after=True verdict=proven (89.2 s)
