=== RUN   TestPartC_DigestOnlyBehindAtHead
    partc_scratch_test.go:29: 1. CatalogOrder = 2 (catalog digests map[web:sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa], tested 2026-09-29 00:00:00 +0000 UTC; installed {Ref:nextcloud:34.0.1-apache Digest:sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb At:2026-09-20T00:00:00Z})
    partc_scratch_test.go:32: 2. night leg: presses=0 step={App:nextcloud Outcome:skipped Reason:no_test_record From:map[] To:map[] Seconds:0}
    partc_scratch_test.go:35:    log: [INFO] [update-leg] started (test): window 02:30, no step starts at or after 07:30
    partc_scratch_test.go:35:    log: [INFO] [update-leg] nextcloud: skipped — no_test_record
    partc_scratch_test.go:35:    log: [INFO] [update-leg] update leg (test): done=0 undone=0 held=0 failed=0 skipped=1 in 0s [skipped: nextcloud=no_test_record]
    partc_scratch_test.go:45: 3. Update button: phase=done err="" presses=1; live compose pins the tested digest dA: true; pin=nextcloud:34.0.1-apache
--- PASS: TestPartC_DigestOnlyBehindAtHead (0.01s)
=== RUN   TestPartC_IfTheCatalogWroteARefreshEntry
    partc_scratch_test.go:66: 1. CatalogOrder = 2
    partc_scratch_test.go:70: 2. night leg: presses=1 step={App:nextcloud Outcome:done Reason: From:map[web:nextcloud:34.0.1-apache] To:map[web:nextcloud:34.0.1-apache] Seconds:0}; live compose pins dA: true
    partc_scratch_test.go:73:    log: [INFO] [update-leg] started (test): window 02:30, no step starts at or after 07:30
    partc_scratch_test.go:73:    log: [INFO] [update-leg] nextcloud: step pressed web=nextcloud:34.0.1-apache → web=nextcloud:34.0.1-apache
    partc_scratch_test.go:73:    log: [INFO] [stacks] update nextcloud: ladder — the last step (2 of 2) — the catalog's current definition
    partc_scratch_test.go:73:    log: [INFO] [update-leg] nextcloud: step ended done after 0.0 s
    partc_scratch_test.go:73:    log: [INFO] [update-leg] update leg (test): done=1 undone=0 held=0 failed=0 skipped=0 in 0s [skipped: ]
    partc_scratch_test.go:77: 3. the next night: presses=1 step={App: Outcome: Reason: From:map[] To:map[] Seconds:0}
--- PASS: TestPartC_IfTheCatalogWroteARefreshEntry (0.01s)
PASS
ok  	gitea.dooplex.hu/admin/felhom-controller/internal/stacks	0.027s
