before: pinned={'grimmory': 'ghcr.io/grimmory-tools/grimmory:v3.4.1', 'grimmory-db': 'mariadb:11.4'}
drill: f33d725 DRILL grimmory: {'grimmory': 'ghcr.io/grimmory-tools/grimmory:v3.5.0'} (box proof)
  phase +0.0s backing-up | err=None
  phase +9.3s safety-dump | err=None
  phase +11.3s pulling | err=None
  phase +24.7s copying | err=None
  phase +35.9s starting | err=None
  phase +42.1s verifying | err=None
  phase +78.0s done | err=None
    grimmory: readback http=200 found=True (controls: no token 401, wrong 401, second setup 403)
2026/10/01 17:12:30 update.go:536: [INFO] [stacks] update grimmory: accepted — guarded update started
2026/10/01 17:12:30 update.go:1375: [INFO] [stacks] update grimmory: phase checking
2026/10/01 17:12:30 update.go:793: [INFO] [stacks] update grimmory: ladder — the last step (1 of 1) — the catalog's current definition
2026/10/01 17:12:30 update.go:823: [INFO] [stacks] update grimmory: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-10-01T16:45:46Z) (found: none) — backing up first
2026/10/01 17:12:30 update.go:1375: [INFO] [stacks] update grimmory: phase backing-up
2026/10/01 17:12:39 update.go:838: [INFO] [stacks] update grimmory: precondition met after the backup — Tier 2 (second drive) copy from 2026-10-01T17:12:30Z
2026/10/01 17:12:39 update.go:1375: [INFO] [stacks] update grimmory: phase safety-dump
2026/10/01 17:12:39 update.go:853: [INFO] [stacks] update grimmory: safety dump done (1 file(s)) [/mnt/felhom-drives/scratch_hdd/userdata/grimmory/backups/primary/grimmory/db-dumps/pre-restore-20261001T171239Z-grimmory-mariadb.sql]
2026/10/01 17:12:40 undo.go:287: [INFO] [stacks] update grimmory: the undo copy will hold 1 named volume(s), 168.4 MiB
2026/10/01 17:12:40 update.go:1375: [INFO] [stacks] update grimmory: phase pinning
2026/10/01 17:12:40 pin.go:373: [INFO] [stacks] update grimmory: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/grimmory/docker-compose.yml (grimmory=ghcr.io/grimmory-tools/grimmory:v3.5.0, grimmory-db=mariadb:11.4)
2026/10/01 17:12:40 update.go:1375: [INFO] [stacks] update grimmory: phase pulling
2026/10/01 17:12:53 update.go:1375: [INFO] [stacks] update grimmory: phase copying
2026/10/01 17:13:05 update.go:1375: [INFO] [stacks] update grimmory: phase copying
2026/10/01 17:13:05 undo.go:437: [INFO] [stacks] update grimmory: copied grimmory_grimmory_db → grimmory_grimmory_db.pre-update-20261001T171305Z in 882ms
2026/10/01 17:13:05 update.go:1375: [INFO] [stacks] update grimmory: phase starting
2026/10/01 17:13:12 update.go:1375: [INFO] [stacks] update grimmory: phase verifying
2026/10/01 17:13:47 update.go:1004: [INFO] [stacks] update grimmory: healthy after 35s (the app's health check passed)
2026/10/01 17:13:47 update.go:1040: [INFO] [stacks] update grimmory: DONE in 1m18s

RESULT final_phase=done after={'grimmory': 'ghcr.io/grimmory-tools/grimmory:v3.5.0', 'grimmory-db': 'mariadb:11.4'} seed_after=True verdict=proven (78.0 s)
