=== Scenario F-shape on Tier 1 — gokapi's new version never comes up — 2026-09-13T15:34:50Z, controller 0.239.0 ===
Fixture: a BOX-LOCAL edit of gokapi's catalog-cache template (image -> alpine:3.20, which exits at once),
put back as soon as the job is past the pin. No catalog commit.
16:    image: alpine:3.20
--- POST /api/stacks/gokapi/update at 2026-09-13T15:34:51Z ---
HTTP 202
{"ok":true,"data":{"accepted":true,"completed":false},"message":"Frissítés elindult – az állapot a kártyán követhető"}
  +  0s phase safety-dump
  +  3s phase verifying
  [fixture] template put back at 2026-09-13T15:34:55Z: 1
  +305s phase failed
end (2026-09-13T15:39:57Z, +305s): state=stopped updating=False phase=failed err='A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34.' hold='A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34.'
--- the hold sentence (Python string checks, no shell grep) ---
A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34.
names 'saját meghajtó': True | control 'második meghajtó': False | control 'távoli mentés': False
--- a held app refuses start ---
HTTP 409
{"ok":false,"error":"A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34."}
--- the controller, verbatim ---
2026/09/13 15:34:51 update.go:336: [INFO] [stacks] update gokapi: accepted — guarded update started
2026/09/13 15:34:51 update.go:763: [INFO] [stacks] update gokapi: phase checking
2026/09/13 15:34:51 update_guard.go:173: [DEBUG] [backup] update precondition for gokapi: no Tier-2 copy (nincs másodlagos fájlmásolat ehhez az alkalmazáshoz)
2026/09/13 15:34:51 update.go:450: [INFO] [stacks] update gokapi: precondition met — Tier 1 (own recovery unit) copy from 2026-09-13T15:34:22Z (0s old, limit 24h0m0s)
2026/09/13 15:34:51 update.go:763: [INFO] [stacks] update gokapi: phase safety-dump
2026/09/13 15:34:52 update_guard.go:403: [INFO] [backup] update safety dump for gokapi: the app has no database — nothing to copy (no-op)
2026/09/13 15:34:52 update.go:482: [INFO] [stacks] update gokapi: safety dump done (0 file(s)) []
2026/09/13 15:34:52 update.go:763: [INFO] [stacks] update gokapi: phase pinning
2026/09/13 15:34:52 pin.go:362: [INFO] [stacks] update gokapi: pin advanced to the catalog's current definition (gokapi=alpine:3.20)
2026/09/13 15:34:52 update.go:763: [INFO] [stacks] update gokapi: phase pulling
2026/09/13 15:34:54 update.go:763: [INFO] [stacks] update gokapi: phase starting
2026/09/13 15:34:54 update.go:763: [INFO] [stacks] update gokapi: phase verifying
2026/09/13 15:39:56 update.go:569: [ERROR] [stacks] update gokapi FAILED after the new version was started: not healthy: not healthy within 5m0s (last: state restarting) — stopping and HOLDING the app; the pin stays on the new version (its migration may have run)
2026/09/13 15:39:56 update_guard.go:468: [WARN] [backup] gokapi is HELD STOPPED after a failed update (restore point: tier 1 "saját meghajtó", 2026-09-13T15:34:22Z)
--- the hold record ---
{'stack': 'gokapi', 'at': '2026-09-13T15:39:56Z', 'reason': 'update_failed', 'copy_date': '2026-09-13T15:34:22Z', 'copy_tier': 1}
--- the template after the fixture ---
16:    image: f0rc3/gokapi:v1.9.6
=== F done 2026-09-13T15:40:00Z ===
