before: pinned={'gitea': 'gitea/gitea:1.27.0'}
drill: fe7607f DRILL gitea: {'gitea': 'gitea/gitea:1.27.3'} (box proof)
  phase +0.0s backing-up | err=None
  phase +2.1s safety-dump | err=None
  phase +3.1s pulling | err=None
  phase +15.4s copying | err=None
  phase +16.4s verifying | err=None
  phase +21.5s done | err=None
    gitea: readback of the seeded repo http=200 ok=True
2026/09/30 15:12:48 update.go:536: [INFO] [stacks] update gitea: accepted — guarded update started
2026/09/30 15:12:48 update.go:1365: [INFO] [stacks] update gitea: phase checking
2026/09/30 15:12:48 update.go:786: [INFO] [stacks] update gitea: ladder — the last step (1 of 1) — the catalog's current definition
2026/09/30 15:12:48 update.go:816: [INFO] [stacks] update gitea: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-30T15:09:24Z) (found: none) — backing up first
2026/09/30 15:12:48 update.go:1365: [INFO] [stacks] update gitea: phase backing-up
2026/09/30 15:12:49 update.go:831: [INFO] [stacks] update gitea: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-30T15:12:49Z
2026/09/30 15:12:50 update.go:1365: [INFO] [stacks] update gitea: phase safety-dump
2026/09/30 15:12:50 update.go:846: [INFO] [stacks] update gitea: safety dump done (0 file(s)) []
2026/09/30 15:12:50 undo.go:287: [INFO] [stacks] update gitea: the undo copy will hold 1 named volume(s), 2.3 MiB
2026/09/30 15:12:50 update.go:1365: [INFO] [stacks] update gitea: phase pinning
2026/09/30 15:12:50 pin.go:373: [INFO] [stacks] update gitea: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/gitea/docker-compose.yml (gitea=gitea/gitea:1.27.3)
2026/09/30 15:12:50 update.go:1365: [INFO] [stacks] update gitea: phase pulling
2026/09/30 15:13:03 update.go:1365: [INFO] [stacks] update gitea: phase copying
2026/09/30 15:13:03 update.go:1365: [INFO] [stacks] update gitea: phase copying
2026/09/30 15:13:04 undo.go:437: [INFO] [stacks] update gitea: copied gitea_gitea_data → gitea_gitea_data.pre-update-20260930T151303Z in 477ms
2026/09/30 15:13:04 update.go:1365: [INFO] [stacks] update gitea: phase starting
2026/09/30 15:13:04 update.go:1365: [INFO] [stacks] update gitea: phase verifying
2026/09/30 15:13:09 update.go:997: [INFO] [stacks] update gitea: healthy after 5s (the app's health check passed)
2026/09/30 15:13:09 update.go:1033: [INFO] [stacks] update gitea: DONE in 21s

RESULT final_phase=done after={'gitea': 'gitea/gitea:1.27.3'} seed_after=True verdict=proven (21.6 s)
