before: pinned={'qbittorrent': 'qbittorrentofficial/qbittorrent-nox:5.2.3-1'}
drill: dbdf8e1 DRILL qbittorrent: {'qbittorrent': 'qbittorrentofficial/qbittorrent-nox:5.2.4-1'} (box proof)
  phase +0.0s backing-up | err=None
  phase +2.1s safety-dump | err=None
  phase +3.1s pulling | err=None
  phase +7.2s copying | err=None
  phase +13.4s verifying | err=None
  phase +19.6s done | err=None
    qbittorrent: category kept, torrent present=True
2026/10/12 18:32:37 update.go:537: [INFO] [stacks] update qbittorrent: accepted — guarded update started
2026/10/12 18:32:37 update.go:1378: [INFO] [stacks] update qbittorrent: phase checking
2026/10/12 18:32:37 update.go:795: [INFO] [stacks] update qbittorrent: ladder — the last step (1 of 1) — the catalog's current definition
2026/10/12 18:32:37 update.go:825: [INFO] [stacks] update qbittorrent: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-10-12T18:31:43Z) (found: none) — backing up first
2026/10/12 18:32:37 update.go:1378: [INFO] [stacks] update qbittorrent: phase backing-up
2026/10/12 18:32:39 update.go:840: [INFO] [stacks] update qbittorrent: precondition met after the backup — Tier 2 (second drive) copy from 2026-10-12T18:32:38Z
2026/10/12 18:32:39 update.go:1378: [INFO] [stacks] update qbittorrent: phase safety-dump
2026/10/12 18:32:39 update.go:855: [INFO] [stacks] update qbittorrent: safety dump done (0 file(s)) []
2026/10/12 18:32:39 undo.go:287: [INFO] [stacks] update qbittorrent: the undo copy will hold 1 named volume(s), 8.0 MiB
2026/10/12 18:32:39 update.go:1378: [INFO] [stacks] update qbittorrent: phase pinning
2026/10/12 18:32:39 pin.go:373: [INFO] [stacks] update qbittorrent: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/qbittorrent/docker-compose.yml (qbittorrent=qbittorrentofficial/qbittorrent-nox:5.2.4-1)
2026/10/12 18:32:39 update.go:1378: [INFO] [stacks] update qbittorrent: phase pulling
2026/10/12 18:32:43 update.go:1378: [INFO] [stacks] update qbittorrent: phase copying
2026/10/12 18:32:49 update.go:1378: [INFO] [stacks] update qbittorrent: phase copying
2026/10/12 18:32:49 undo.go:437: [INFO] [stacks] update qbittorrent: copied qbittorrent_qbittorrent_config → qbittorrent_qbittorrent_config.pre-update-20261012T183249Z in 710ms
2026/10/12 18:32:49 update.go:1378: [INFO] [stacks] update qbittorrent: phase starting
2026/10/12 18:32:50 update.go:1378: [INFO] [stacks] update qbittorrent: phase verifying
2026/10/12 18:32:55 update.go:1006: [INFO] [stacks] update qbittorrent: healthy after 5s (the app's health check passed)
2026/10/12 18:32:55 update.go:1043: [INFO] [stacks] update qbittorrent: DONE in 19s

RESULT final_phase=done after={'qbittorrent': 'qbittorrentofficial/qbittorrent-nox:5.2.4-1'} seed_after=True verdict=proven (19.6 s)
