### STEP 5 RESULT — after pct start 9202

== 1. Controller log lines about the interrupted update (verbatim) ==
2026/09/21 11:06:12 installed.go:525: [INFO] [stacks] installed-images backfill: 0 app(s) recorded, 1 already had a record, 0 left unrecorded (could not be observed completely — unknown, which renders nothing)
2026/09/21 11:06:12 pin.go:289: [INFO] [stacks] pin adoption: 0 pinned, 1 already pinned, 0 left unpinned (0 not completely observed, 0 running something the template no longer offers)
2026/09/21 11:06:12 sync.go:117: [INFO] [sync] Starting catalog sync (repo: https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git, interval: 15m0s)
2026/09/21 11:06:12 sync.go:208: [INFO] [sync] Starting catalog sync
2026/09/21 11:06:12 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git (branch: main)
2026/09/21 11:06:12 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache
2026/09/21 11:06:12 update.go:904: [WARN] [stacks] update recovery: uptime-kuma was interrupted in pulling (started 2026-09-21T11:04:52Z) — nothing had run; putting the pin back
2026/09/21 11:06:12 sync.go:592: [DEBUG] [sync] Running: git fetch --depth 1 origin main
2026/09/21 11:06:12 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/uptime-kuma — 2 env vars, 0 encrypted, 0 sensitive fields
2026/09/21 11:06:12 [INFO] [stacks] SaveAppConfig: saved config for uptime-kuma
2026/09/21 11:06:12 pin.go:93: [INFO] [stacks] pin uptime-kuma: uptime-kuma=louislam/uptime-kuma:2.4.0
2026/09/21 11:06:12 update.go:705: [INFO] [stacks] update uptime-kuma: pin and definition PUT BACK to the pre-update version (uptime-kuma=louislam/uptime-kuma:2.4.0)
2026/09/21 11:06:12 info.go:13: [DEBUG] [system] CPUCollector.Start: sampleRate=5s
2026/09/21 11:06:12 main.go:511: [INFO] Metrics store opened at /opt/docker/felhom-controller/data/metrics.db
2026/09/21 11:06:12 main.go:523: [INFO] Metrics collector started (60s interval)
2026/09/21 11:06:12 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)

== 2. app.yaml — pinned_images vs installed_images ==
# Auto-generated by felhom-controller — do not edit locked fields manually
deployed: true
deployed_at: "2026-09-21T10:57:12Z"
env:
    DOMAIN: enkisfelhom.hu
    SUBDOMAIN: status
locked_fields:
    - DOMAIN
    - SUBDOMAIN
desired_state: running
installed_images:
    uptime-kuma:
        ref: louislam/uptime-kuma:2.4.0
        digest: sha256:91e963bfda569ba115206e843febb446f473ab525add4e08b2b9e3beffa16985
        at: "2026-09-21T10:57:45Z"
pinned_images:
    uptime-kuma: louislam/uptime-kuma:2.4.0

== live docker-compose.yml image line ==
    image: louislam/uptime-kuma:2.4.0

== 3. update-journal.json after recovery ==

== 4. Was a HOLD set? (API view) ==
 state                'running'
 deployed             True
 updating             False
 deploying            False
 update_phase         'failed'
 update_phase_label   'A frissítés nem sikerült'
 update_error         'A frissítés megszakadt, mert a vezérlő újraindult, mielőtt az új verzió elindult volna. Az alkalmazás a korábbi verzióval fut tovább.'
 health_probe.healthy  True
 containers            [('louislam/uptime-kuma:2.4.0', 'Up 31 seconds (healthy)')]
 installed_images      {'uptime-kuma': 'louislam/uptime-kuma:2.4.0'}
 pinned_images         {'uptime-kuma': 'louislam/uptime-kuma:2.4.0'}
 catalog_images        {'uptime-kuma': 'louislam/uptime-kuma:2.5.0'}
 template_images       {'uptime-kuma': 'louislam/uptime-kuma:2.5.0'}

== hold-related log lines (positive+negative control) ==
grep -ci 'hold' in the log: 0
(negative control) grep -c 'ZZZ-not-present': 0
== 5. What the app page says to the household after the cut ==
--- [hu] badge + update-state block ---
<span class="tag tag-warn" title="Újabb változat érhető el ehhez az alkalmazáshoz. A frissítés indításához nyomd meg a Frissítés gombot.">Frissítés elérhető — ma</span>
  sentences shown:
A frissítés indításához nyomd meg a Frissítés gombot.">Frissítés elérhető — ma
A frissítés megszakadt, mert a vezérlő újraindult, mielőtt az új verzió elindult volna. Az alkalmazás a korábbi verzióval fut tovább.
--- [en] badge + update-state block ---
<span class="tag tag-warn" title="A newer version of this app is available. Select the Update button to start it.">Update available — today</span>
  sentences shown:
A frissítés megszakadt, mert a vezérlő újraindult, mielőtt az új verzió elindult volna. Az alkalmazás a korábbi verzióval fut tovább.

== 6. Is the app running AND serving? ==
uptime-kuma | louislam/uptime-kuma:2.4.0 | Up 2 minutes (healthy)
  HTTP from inside the guest to the app container :3001/ -> 302
  controller health probe:
    {'healthy': True, 'last_check': '2026-09-21T11:06:22.247118521Z', 'details': [{'type': 'http', 'target': ':3001/', 'healthy': True, 'status': 302, 'latency': '4ms'}]}
