before: pinned={'karakeep': 'ghcr.io/karakeep-app/karakeep:0.33.1', 'karakeep-chrome': 'ghcr.io/karakeep-app/karakeep-chrome:151.0.7922.47-r1', 'karakeep-meilisearch': 'getmeili/meilisearch:v1.41.0'}
drill: 53b30ba DRILL karakeep: {'karakeep': 'ghcr.io/karakeep-app/karakeep:0.33.2'} (box proof)
  phase +0.0s backing-up | err=None
  phase +11.3s safety-dump | err=None
  phase +12.3s pulling | err=None
  phase +73.8s copying | err=None
  phase +78.9s starting | err=None
  phase +85.1s verifying | err=None
  phase +95.3s done | err=None
    karakeep: readback http=200 found=True (controls: no key 401, wrong 401, absent 404)
2026/10/01 15:30:11 update.go:536: [INFO] [stacks] update karakeep: accepted — guarded update started
2026/10/01 15:30:11 update.go:1375: [INFO] [stacks] update karakeep: phase checking
2026/10/01 15:30:11 update.go:793: [INFO] [stacks] update karakeep: ladder — the last step (1 of 1) — the catalog's current definition
2026/10/01 15:30:11 update.go:823: [INFO] [stacks] update karakeep: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-10-01T15:25:38Z) (found: none) — backing up first
2026/10/01 15:30:11 update.go:1375: [INFO] [stacks] update karakeep: phase backing-up
2026/10/01 15:30:23 update.go:838: [INFO] [stacks] update karakeep: precondition met after the backup — Tier 2 (second drive) copy from 2026-10-01T15:30:15Z
2026/10/01 15:30:23 update.go:1375: [INFO] [stacks] update karakeep: phase safety-dump
2026/10/01 15:30:23 update.go:853: [INFO] [stacks] update karakeep: safety dump done (0 file(s)) []
2026/10/01 15:30:23 undo.go:287: [INFO] [stacks] update karakeep: the undo copy will hold 2 named volume(s), 1.3 MiB
2026/10/01 15:30:24 update.go:1375: [INFO] [stacks] update karakeep: phase pinning
2026/10/01 15:30:24 pin.go:373: [INFO] [stacks] update karakeep: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/karakeep/docker-compose.yml (karakeep=ghcr.io/karakeep-app/karakeep:0.33.2, karakeep-chrome=ghcr.io/karakeep-app/karakeep-chrome:151.0.7922.47-r1, karakeep-meilisearch=getmeili/meilisearch:v1.41.0)
2026/10/01 15:30:24 update.go:1375: [INFO] [stacks] update karakeep: phase pulling
2026/10/01 15:31:25 update.go:1375: [INFO] [stacks] update karakeep: phase copying
2026/10/01 15:31:28 update.go:1375: [INFO] [stacks] update karakeep: phase copying
2026/10/01 15:31:29 undo.go:437: [INFO] [stacks] update karakeep: copied karakeep_karakeep_data → karakeep_karakeep_data.pre-update-20261001T153128Z in 467ms
2026/10/01 15:31:29 update.go:1375: [INFO] [stacks] update karakeep: phase copying
2026/10/01 15:31:29 undo.go:437: [INFO] [stacks] update karakeep: copied karakeep_karakeep_meili → karakeep_karakeep_meili.pre-update-20261001T153128Z in 429ms
2026/10/01 15:31:29 update.go:1375: [INFO] [stacks] update karakeep: phase starting
2026/10/01 15:31:35 update.go:1375: [INFO] [stacks] update karakeep: phase verifying
2026/10/01 15:31:45 update.go:1004: [INFO] [stacks] update karakeep: healthy after 10s (the app's health check passed)
2026/10/01 15:31:46 update.go:1040: [INFO] [stacks] update karakeep: DONE in 1m35s

RESULT final_phase=done after={'karakeep': 'ghcr.io/karakeep-app/karakeep:0.33.2', 'karakeep-chrome': 'ghcr.io/karakeep-app/karakeep-chrome:151.0.7922.47-r1', 'karakeep-meilisearch': 'getmeili/meilisearch:v1.41.0'} seed_after=True verdict=proven (95.3 s)
