before: pinned={'lubelogger': 'ghcr.io/hargata/lubelogger:v1.7.2'}
drill: 27b019c DRILL lubelogger: {'lubelogger': 'ghcr.io/hargata/lubelogger:v1.7.3'} (box proof)
  phase +0.0s backing-up | err=None
  phase +2.1s safety-dump | err=None
  phase +3.1s pulling | err=None
  phase +13.3s copying | err=None
  phase +15.4s verifying | err=None
  phase +25.6s done | err=None
    lubelogger: readback vehicle=True (http=200) service record=True (http=200) (controls: no cookie 401, wrong 401, absent list empty)
2026/10/10 09:59:12 update.go:537: [INFO] [stacks] update lubelogger: accepted — guarded update started
2026/10/10 09:59:12 update.go:1378: [INFO] [stacks] update lubelogger: phase checking
2026/10/10 09:59:12 update.go:795: [INFO] [stacks] update lubelogger: ladder — the last step (1 of 1) — the catalog's current definition
2026/10/10 09:59:12 update.go:825: [INFO] [stacks] update lubelogger: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-10-10T09:52:33Z) (found: none) — backing up first
2026/10/10 09:59:12 update.go:1378: [INFO] [stacks] update lubelogger: phase backing-up
2026/10/10 09:59:14 update.go:840: [INFO] [stacks] update lubelogger: precondition met after the backup — Tier 2 (second drive) copy from 2026-10-10T09:59:13Z
2026/10/10 09:59:14 update.go:1378: [INFO] [stacks] update lubelogger: phase safety-dump
2026/10/10 09:59:14 update.go:855: [INFO] [stacks] update lubelogger: safety dump done (0 file(s)) []
2026/10/10 09:59:15 undo.go:287: [INFO] [stacks] update lubelogger: the undo copy will hold 2 named volume(s), 0.1 MiB
2026/10/10 09:59:15 update.go:1378: [INFO] [stacks] update lubelogger: phase pinning
2026/10/10 09:59:15 pin.go:373: [INFO] [stacks] update lubelogger: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/lubelogger/docker-compose.yml (lubelogger=ghcr.io/hargata/lubelogger:v1.7.3)
2026/10/10 09:59:15 update.go:1378: [INFO] [stacks] update lubelogger: phase pulling
2026/10/10 09:59:25 update.go:1378: [INFO] [stacks] update lubelogger: phase copying
2026/10/10 09:59:26 update.go:1378: [INFO] [stacks] update lubelogger: phase copying
2026/10/10 09:59:26 undo.go:437: [INFO] [stacks] update lubelogger: copied lubelogger_lubelogger_data → lubelogger_lubelogger_data.pre-update-20261010T095926Z in 498ms
2026/10/10 09:59:26 update.go:1378: [INFO] [stacks] update lubelogger: phase copying
2026/10/10 09:59:27 undo.go:437: [INFO] [stacks] update lubelogger: copied lubelogger_lubelogger_keys → lubelogger_lubelogger_keys.pre-update-20261010T095926Z in 425ms
2026/10/10 09:59:27 update.go:1378: [INFO] [stacks] update lubelogger: phase starting
2026/10/10 09:59:27 update.go:1378: [INFO] [stacks] update lubelogger: phase verifying
2026/10/10 09:59:37 update.go:1006: [INFO] [stacks] update lubelogger: healthy after 10s (the app's health check passed)
2026/10/10 09:59:38 update.go:1043: [INFO] [stacks] update lubelogger: DONE in 25s

RESULT final_phase=done after={'lubelogger': 'ghcr.io/hargata/lubelogger:v1.7.3'} seed_after=True verdict=proven (25.7 s)
