{ "harness_version": 1, "app": "opengist", "venue": "guest 9202 demo-hp-scratch, controller 0.261.0", "class": "other", "from": { "opengist": "ghcr.io/thomiceli/opengist:1.13" }, "to": { "opengist": "ghcr.io/thomiceli/opengist:1.15" }, "verdict": "inconclusive", "seed_read_before": true, "seed_read_after": false, "healthy_after": true, "migration_observed": null, "abort": "not-attempted", "abort_detail": null, "duration_s": 14.4, "measured_at": "2026-09-21T19:33:06.999531+00:00", "evidence": "apps/opengist/", "notes": [ "CORRECTED from `failed` to `inconclusive` the same night, deliberately. The UPDATE itself SUCCEEDED: phase `done` in 14.4 s, and all four version observables agree on `ghcr.io/thomiceli/opengist:1.15` with the container running and zero restarts. What failed was the READBACK: it was attempted immediately after `done` and the sign-in form was not yet being served, so the fixture got no `_csrf` and returned `http=None`. Whether the seeded account survived was therefore NOT ESTABLISHED. Recording that as `failed` would have blamed the app for the harness's impatience — `inconclusive` is the honest verdict and it is never collapsed into `failed`. The fixture now waits for the LOGIN FORM rather than for the root page." ], "badge_catchup_seconds": 4.5, "observables_after": { "pinned_images": { "opengist": "ghcr.io/thomiceli/opengist:1.15" }, "installed_images": { "opengist": "ghcr.io/thomiceli/opengist:1.15" }, "catalog_images": { "opengist": "ghcr.io/thomiceli/opengist:1.15" }, "live_compose_image_lines": [ "image: ghcr.io/thomiceli/opengist:1.15" ], "docker_inspect": [ "opengist ghcr.io/thomiceli/opengist:1.15 running=true restarts=0" ] }, "final_phase": "done", "hold_reason": null, "update_error": null }