{ "generated_at": "2026-10-07T17:29:44.652650+00:00", "heads": [ "11dbc7e55914c8898353afe51776501a8fb5c579", "2d961a5763b551c2af6c28c64aa8e271573e4be2", "72898709c83ad1ca243e7f3ceb7f0d086b61ef6f", "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "b54733427f9c9ed44628073356a957a43bc4e8bb", "d175e030a47f6caa0d454bc88ff14f8dc7cc7fab", "d4d352189363d3958231fc5225bb0e869334971b", "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "e4297c75564bc2e27d40e152ec10280593eaf931", "ee7975a8d0946f33f3677119ae657dc89962babe", "f06f1b262c4deaca1a2d538e86bd9843ed434f2f" ], "inventory_counts": { "app": 93, "recipe": 20 }, "inventory_sha256": "63b5ca53885b401a22ee4e5b3d1b6548376f64813723506860bab4aaf3402f22", "limits": [ "Final snapshot as requested; each target retains its own evidence identity.", "Read only ordinary exact app-.json and recipe-.json files; no private diagnostics, credentials or browser state.", "Each pass applies only to its recorded head, binary SHA256, image identities, host and probes. Later source fixes are not live passes.", "Missing or unrecorded stages are not-run. Historical source heads are retained even for untouched not-run records.", "Generic Setup/Check and archive sentinels do not prove browser acceptance, application workload, database-content recovery, migration, VPN fail-closed or external provider enrollment.", "Payload seed/restored stages provide only the App-specific probe named in the evidence. Absent payload stages are not-run, never inferred.", "Image IDs and cleanup are reproduced as recorded; this generator does not inspect Docker or independently establish expected service completeness.", "The matrix uses latest per-target records. Immutable archives preserve earlier iterations where available; two d175 failure records survive only in the redacted run log after they were overwritten before archival." ], "outcome_counts": { "awaiting-external-credentials": 8, "failed": 3, "manual": 5, "pass": 97 }, "schema_version": 1, "snapshot_read_errors": [], "status": "final", "targets": [ { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-17b23555", "finished": "2026-10-07T08:34:02.703512394Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:cfacf9b19b21268807a6e6c6289f7a27dfc5adfc2539aa35a15ed38cfba236ab", "platform": "linux/amd64", "service": "actual-budget" } ], "name": "app-actual-budget", "observed_target_apps": [ "actual-budget" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-actual-budget.json", "source_sha256": "9fa85f5db1f8e03cac53e3caf6745d042f3b04d459d2c7edf7df1ba73e7f12df", "stages": [ { "apps": { "actual-budget": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "actual-budget": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "actual-budget": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "actual-budget": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "actual-budget": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "actual-budget": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "actual-budget": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "actual-budget": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "actual-budget": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "actual-budget": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "actual-budget": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "actual-budget": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:30:37.867795141Z", "target": { "apps": [ "actual-budget" ], "id": "actual-budget", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-01e6d4b2", "finished": "2026-10-07T09:49:47.53138197Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:a3d077a550b96aea74f4c66577d154a0b9ee1622b9ecd5c536195da54c0eadc4", "platform": "linux/amd64", "service": "adguard-home" } ], "name": "app-adguard-home", "observed_target_apps": [ "adguard-home" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-adguard-home.json", "source_sha256": "6f48f1caba3c2558a236f1456afb3c046139c883caed0109ce05d82b1ac4f29d", "stages": [ { "apps": { "adguard-home": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "adguard-home": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "adguard-home": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "adguard-home": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "adguard-home": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "adguard-home": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "adguard-home": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "adguard-home": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "adguard-home": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "adguard-home": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "adguard-home": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "adguard-home": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:49:31.7697974Z", "target": { "apps": [ "adguard-home" ], "id": "adguard-home", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-223088d8", "finished": "2026-10-07T12:52:57.202601322Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 2 }, "images": [ { "id": "sha256:257eecbae05ceedd514feb0a71ffc29681f451f618595db11428361e5fb20d96", "platform": "linux/amd64", "service": "archive-team-warrior-init" }, { "id": "sha256:257eecbae05ceedd514feb0a71ffc29681f451f618595db11428361e5fb20d96", "platform": "linux/amd64", "service": "archive-team-warrior" } ], "name": "app-archive-team-warrior", "observed_target_apps": [ "archive-team-warrior" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-archive-team-warrior.json", "source_sha256": "bab3e9e0fb218db584658e747c805ab3133b4d78de9979041f1da978d095767f", "stages": [ { "apps": { "archive-team-warrior": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "archive-team-warrior": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "archive-team-warrior": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "archive-team-warrior": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "archive-team-warrior": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "archive-team-warrior": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "archive-team-warrior": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "archive-team-warrior": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "archive-team-warrior": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "archive-team-warrior": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "archive-team-warrior": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "archive-team-warrior": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T12:44:15.337533275Z", "target": { "apps": [ "archive-team-warrior" ], "id": "archive-team-warrior", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-ba886ab7", "finished": "2026-10-07T09:49:27.404457151Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:4e6669ce208ad72e6f02089dbb2069bee43884f1399f153d46f8583ebf5ea05e", "platform": "linux/amd64", "service": "aria2" } ], "name": "app-aria2", "observed_target_apps": [ "aria2" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-aria2.json", "source_sha256": "b8c68196116d4f9ac98b7eb39e02e0eb18cbca65d3495f5a7f9c3f0b07b156c0", "stages": [ { "apps": { "aria2": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "aria2": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "aria2": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "aria2": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "aria2": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "aria2": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "aria2": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "aria2": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "aria2": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "aria2": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "aria2": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "aria2": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:48:35.636392144Z", "target": { "apps": [ "aria2" ], "id": "aria2", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-2e37589f", "finished": "2026-10-07T09:49:31.769606277Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:69688a328f8fafafdce9a23915c19c84bc75a7d883b5dd182b3a6d3d4c11701d", "platform": "linux/amd64", "service": "audiobookshelf" } ], "name": "app-audiobookshelf", "observed_target_apps": [ "audiobookshelf" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-audiobookshelf.json", "source_sha256": "7dbd8fd288053c25fa693003df0edc0549f83001d4ac332a5aaa178eca3a7524", "stages": [ { "apps": { "audiobookshelf": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "audiobookshelf": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "audiobookshelf": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "audiobookshelf": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "audiobookshelf": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:49:08.645376085Z", "target": { "apps": [ "audiobookshelf" ], "id": "audiobookshelf", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-a6cc3a59", "finished": "2026-10-07T12:32:55.668534183Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:07511d91138c91c47b3873abe850d932d32958fb79b6f6a4c5b15b36ca37545f", "platform": "linux/amd64", "service": "authelia" } ], "name": "app-authelia", "observed_target_apps": [ "authelia" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion; Authelia canonical-origin administrator login and session identity through owned verified TLS during source and restored Setup/Check; no MFA/browser claim", "source_file": "app-authelia.json", "source_sha256": "b0f7a9e689a0ffd6722319cb3451c8e93c1baeee3f89bf3bb3d023143a90cbf3", "stages": [ { "apps": { "authelia": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "authelia": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "authelia": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "authelia": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "authelia": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "authelia": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "authelia": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "authelia": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "authelia": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "authelia": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "authelia": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "authelia": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T12:30:08.143854137Z", "target": { "apps": [ "authelia" ], "id": "authelia", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-6c55f706", "finished": "2026-10-07T10:15:16.663936548Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 3 }, "images": [ { "id": "sha256:d4d6843a3c120bb1b809048ce8429e0e617f68a3991aaa0779d6f5bd802b34d9", "platform": "linux/amd64", "service": "authentik" }, { "id": "sha256:d4d6843a3c120bb1b809048ce8429e0e617f68a3991aaa0779d6f5bd802b34d9", "platform": "linux/amd64", "service": "worker" }, { "id": "sha256:81bd698b4594e751a3269e4dcd3e03a4a0ec0daf7b72e7aa1abd43cce9887542", "platform": "linux/amd64", "service": "postgresql" } ], "name": "app-authentik", "observed_target_apps": [ "authentik" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-authentik.json", "source_sha256": "645864c57cdc029c235c544976821bf9445668ff64ce035a0c7fb4ab66a23eb6", "stages": [ { "apps": { "authentik": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "authentik": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "authentik": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "authentik": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "authentik": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "authentik": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "authentik": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "authentik": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "authentik": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "authentik": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "authentik": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "authentik": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:44:05.16172027Z", "target": { "apps": [ "authentik" ], "id": "authentik", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-f86b87ca", "finished": "2026-10-07T09:50:06.559030305Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:b2c739fed2a223406d66ca04255a7748384e68163dbcca4b86b882cee04612a1", "platform": "linux/amd64", "service": "bazarr" } ], "name": "app-bazarr", "observed_target_apps": [ "bazarr" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-bazarr.json", "source_sha256": "18ec0bcd62aad6f2b2b3550bd8775e0f5dc12b3c58b88c7ee1ae317cf5ccde70", "stages": [ { "apps": { "bazarr": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "bazarr": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "bazarr": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "bazarr": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "bazarr": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "bazarr": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "bazarr": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "bazarr": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "bazarr": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "bazarr": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "bazarr": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "bazarr": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:48:10.616350165Z", "target": { "apps": [ "bazarr" ], "id": "bazarr", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-760fefc5", "finished": "2026-10-07T09:48:24.608487913Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:f14c004ff4a414ba156427046926e5e2db1d1bd769b069509c2bcd3e5bee4f7a", "platform": "linux/amd64", "service": "beszel" } ], "name": "app-beszel", "observed_target_apps": [ "beszel" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-beszel.json", "source_sha256": "fe059059d6feed889a333f7eedd568636988e2bbc984fa31363c1b4637ae65b2", "stages": [ { "apps": { "beszel": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "beszel": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "beszel": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "beszel": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "beszel": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "beszel": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "beszel": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "beszel": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "beszel": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "beszel": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "beszel": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "beszel": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:47:46.096683506Z", "target": { "apps": [ "beszel" ], "id": "beszel", "kind": "app" } }, { "binary_sha256": "9c52cfe6dad38f9832a3613ff911f33f505cc0367afb539dbabf3d8498203012", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-4292c8e7", "finished": "2026-10-07T17:18:27.574690637Z", "head": "72898709c83ad1ca243e7f3ceb7f0d086b61ef6f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 2 }, "images": [ { "id": "sha256:675c1edfab2ab727303aa5014df941f710ee858b472500d75faeb1a775bde4a4", "platform": "linux/amd64", "service": "bookstack" }, { "id": "sha256:deb9a3a5e1952c4bddf4b1afe48fd6040295a6d7c41379ce68c0d067512ca912", "platform": "linux/amd64", "service": "db" } ], "name": "app-bookstack", "observed_target_apps": [ "bookstack" ], "outcome": "failed", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-bookstack.json", "source_sha256": "3297ffc53c4a631786c8b89a824724807031a5f3014a92e6409b041b7dfc3185", "stages": [ { "apps": { "bookstack": "fail" }, "failures": [ { "app": "bookstack", "error": "timed out after 3m0s: HTTP 502", "hint": "bookstack did not answer on /login; read its logs with: self-host logs bookstack", "kind": "step.fail", "step": "ready" }, { "app": "bookstack", "error": "BookStack startup status: app_key_present=true pool_identity_includes_root=true launcher_root_mode=true php_process_present=false php_upstream_listening=false database_tcp_listening=true database_authenticated=true launcher_source_matches=true launcher_source_executable=true launcher_compiled_matches=true launcher_compiled_executable=true php_service_wanted=true php_service_up=false php_config_valid=false php_config_error=config_open php_failure_path=main_config process_uid_zero=true failure_path_readable=true failure_path_writable=true failure_path_owner_current=true", "hint": "Check owned image initialization, PHP-FPM readiness and database health before retrying; a database TCP listener does not prove authenticated database access. Ask the host administrator to review PHP-FPM confinement compatibility: its configuration appears readable but PHP-FPM cannot open it.", "kind": "step.fail", "step": "startup-status" } ], "name": "install", "outcome": "fail", "reason": "redacted CLI failure details retained" }, { "apps": { "bookstack": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "bookstack": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "bookstack": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "bookstack": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "bookstack": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "bookstack": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "bookstack": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "bookstack": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "bookstack": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "bookstack": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "bookstack": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T17:15:19.147296517Z", "target": { "apps": [ "bookstack" ], "id": "bookstack", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-a844f622", "finished": "2026-10-07T09:48:24.752472473Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:99459932e068b41700c6218fcc3925ac201f4779bc626631918800a3089d1080", "platform": "linux/amd64", "service": "borgmatic" } ], "name": "app-borgmatic", "observed_target_apps": [ "borgmatic" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-borgmatic.json", "source_sha256": "a9d2ce57977629ebd44462e6daeaa311599b8aea824e6420de73580655fb3081", "stages": [ { "apps": { "borgmatic": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "borgmatic": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "borgmatic": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "borgmatic": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "borgmatic": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "borgmatic": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "borgmatic": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "borgmatic": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "borgmatic": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "borgmatic": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "borgmatic": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "borgmatic": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:44:22.941676712Z", "target": { "apps": [ "borgmatic" ], "id": "borgmatic", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-49e5fcee", "finished": "2026-10-07T09:15:02.190042857Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:2d8b1708bf8008935c0e2a9b6564f7f080cf9a73af3b27718f286230449b7101", "platform": "linux/amd64", "service": "caddy" } ], "name": "app-caddy", "observed_target_apps": [ "caddy" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-caddy.json", "source_sha256": "085b2d014003b81e2d45fee0e5769379bebe001dc56cdda887d5c6f58c6dae41", "stages": [ { "apps": { "caddy": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "caddy": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "caddy": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "caddy": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "caddy": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "caddy": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "caddy": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "caddy": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "caddy": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "caddy": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "caddy": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "caddy": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:14:52.500550378Z", "target": { "apps": [ "caddy" ], "id": "caddy", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "awaiting-external-credentials", "cleanup": "not-run", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": false, "platforms": [], "service_count": 0 }, "images": [], "name": "app-cloudflare-tunnel", "observed_target_apps": [ "cloudflare-tunnel" ], "outcome": "awaiting-external-credentials", "platform": "", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-cloudflare-tunnel.json", "source_sha256": "f7057ab8ad78dd5c3d5d703760476e5b18a05d26c117e6f454a7df22d726365c", "stages": [ { "apps": { "cloudflare-tunnel": "not-run" }, "name": "install", "outcome": "not-run" }, { "apps": { "cloudflare-tunnel": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "cloudflare-tunnel": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "cloudflare-tunnel": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "cloudflare-tunnel": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "cloudflare-tunnel": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "cloudflare-tunnel": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "cloudflare-tunnel": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "cloudflare-tunnel": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "cloudflare-tunnel": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "cloudflare-tunnel": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "cloudflare-tunnel": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T09:44:05.161528483Z", "target": { "apps": [ "cloudflare-tunnel" ], "id": "cloudflare-tunnel", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-3c088ba8", "finished": "2026-10-07T09:49:08.645101388Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:cbeea4f558d65ab557aecfd383ddf5ac6a2f03cacc5a163a85303fae99cfea3c", "platform": "linux/amd64", "service": "dashdot" } ], "name": "app-dashdot", "observed_target_apps": [ "dashdot" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-dashdot.json", "source_sha256": "205745259deeffa78eb65ff49a6439eee1800150dedff822d42a6ea8291c4b5e", "stages": [ { "apps": { "dashdot": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "dashdot": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "dashdot": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "dashdot": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "dashdot": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "dashdot": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "dashdot": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "dashdot": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "dashdot": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "dashdot": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "dashdot": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "dashdot": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:40:46.036076815Z", "target": { "apps": [ "dashdot" ], "id": "dashdot", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-330d7ec9", "finished": "2026-10-07T09:48:44.24917673Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:9afc6b4a46f5ab0734732022a07a196279c821eb91db1c7154aeac641a518a9d", "platform": "linux/amd64", "service": "deluge" } ], "name": "app-deluge", "observed_target_apps": [ "deluge" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-deluge.json", "source_sha256": "e1cdbcbcbc60d3e69c5270adb1e34bc678c5f9a0fb71cedc63c866ab64765f44", "stages": [ { "apps": { "deluge": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "deluge": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "deluge": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "deluge": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "deluge": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "deluge": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "deluge": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "deluge": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "deluge": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "deluge": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "deluge": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "deluge": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:37:59.039497007Z", "target": { "apps": [ "deluge" ], "id": "deluge", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-17d4ec43", "finished": "2026-10-07T09:48:10.616110072Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": false, "platforms": [], "service_count": 0 }, "images": [], "name": "app-dockge", "observed_target_apps": [ "dockge" ], "outcome": "manual", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-dockge.json", "source_sha256": "7eef6e68c6afa1ad4903bff418180bd9bd86ef8ab6b6723bf711f8d200402409", "stages": [ { "apps": { "dockge": "manual" }, "failures": [ { "app": "dockge", "error": "this App has no headless way to create its first administrator", "hint": "Open http://127.0.0.1:44001, create the administrator admin with the password shown by `self-host credentials`; open Dockge and create the first administrator account, then run: self-host setup dockge", "kind": "step.fail", "step": "admin" } ], "name": "install", "outcome": "manual", "reason": "first administrator requires web UI" }, { "apps": { "dockge": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "dockge": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "dockge": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "dockge": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "dockge": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "dockge": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "dockge": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "dockge": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "dockge": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "dockge": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "dockge": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T09:27:50.247786278Z", "target": { "apps": [ "dockge" ], "id": "dockge", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-a795108c", "finished": "2026-10-07T12:32:00.112195662Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 3 }, "images": [ { "id": "sha256:0f146d72f36fa6ff9b12147b72719ca80df208342ecd1b757dd43f93b8a332e9", "platform": "linux/amd64", "service": "docmost" }, { "id": "sha256:29754c7520f4b9654cf8ff98e19ac73b88e255c3a53f6236ebe9d52249bb6df3", "platform": "linux/amd64", "service": "db" }, { "id": "sha256:992eb34c6118138585e0d651b256e0085d1b6aaecf39dc16df5ba50cfbe1609e", "platform": "linux/amd64", "service": "redis" } ], "name": "app-docmost", "observed_target_apps": [ "docmost" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-docmost.json", "source_sha256": "f81cb23ece1e74b2eab7fe6783320be0ba9da123c586a86027f6083ada96fe15", "stages": [ { "apps": { "docmost": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "docmost": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "docmost": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "docmost": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "docmost": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "docmost": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "docmost": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "docmost": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "docmost": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "docmost": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "docmost": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "docmost": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T12:28:53.282928028Z", "target": { "apps": [ "docmost" ], "id": "docmost", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-822dbc40", "finished": "2026-10-07T09:44:22.941420092Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": false, "platforms": [], "service_count": 0 }, "images": [], "name": "app-emby", "observed_target_apps": [ "emby" ], "outcome": "manual", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-emby.json", "source_sha256": "3bd82abf5c6f4695ba4a9c5e5c5522eaca77423c26e8ba8ccfe3ec47ea9ca177", "stages": [ { "apps": { "emby": "manual" }, "failures": [ { "app": "emby", "error": "this App has no headless way to create its first administrator", "hint": "Open http://127.0.0.1:44205, create the administrator admin with the password shown by `self-host credentials`; open the first-owner wizard and create the administrator with username admin and the password from `self-host credentials`, then run: self-host setup emby", "kind": "step.fail", "step": "admin" } ], "name": "install", "outcome": "manual", "reason": "first administrator requires web UI" }, { "apps": { "emby": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "emby": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "emby": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "emby": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "emby": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "emby": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "emby": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "emby": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "emby": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "emby": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "emby": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T09:27:38.173055216Z", "target": { "apps": [ "emby" ], "id": "emby", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-ef7714a3", "finished": "2026-10-07T10:02:05.693275082Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 2 }, "images": [ { "id": "sha256:29754c7520f4b9654cf8ff98e19ac73b88e255c3a53f6236ebe9d52249bb6df3", "platform": "linux/amd64", "service": "db" }, { "id": "sha256:a8901b1675e54014d1ceace3d389e926ef6781d150e6df9c086b774d5d6c60e9", "platform": "linux/amd64", "service": "firefly-iii" } ], "name": "app-firefly-iii", "observed_target_apps": [ "firefly-iii" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-firefly-iii.json", "source_sha256": "8b57c910cc200c10ec56c396dd9b838dc77c8cf07ac0cc916501881771c01688", "stages": [ { "apps": { "firefly-iii": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "firefly-iii": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "firefly-iii": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "firefly-iii": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "firefly-iii": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "firefly-iii": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "firefly-iii": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "firefly-iii": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "firefly-iii": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "firefly-iii": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "firefly-iii": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "firefly-iii": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:27:12.65679082Z", "target": { "apps": [ "firefly-iii" ], "id": "firefly-iii", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-0560d31b", "finished": "2026-10-07T09:27:40.378920953Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:831ef608fc00db376c4b7ccd3883a505e504005a43d578bcf6d22dc955d95e55", "platform": "linux/amd64", "service": "forgejo" } ], "name": "app-forgejo", "observed_target_apps": [ "forgejo" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-forgejo.json", "source_sha256": "c0781f0e287145212dc904d3e62d557179b2c6bfd5c3a5f12929673ed3b583e3", "stages": [ { "apps": { "forgejo": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "forgejo": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "forgejo": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "forgejo": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "forgejo": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "forgejo": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "forgejo": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "forgejo": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "forgejo": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "forgejo": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "forgejo": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "forgejo": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:21:22.443592957Z", "target": { "apps": [ "forgejo" ], "id": "forgejo", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-1250d0ff", "finished": "2026-10-07T09:27:38.172867324Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:df2d167c82b1276ad93461b5b0c030aa33e695af21a3ec42a60743e28e003a47", "platform": "linux/amd64", "service": "freshrss" } ], "name": "app-freshrss", "observed_target_apps": [ "freshrss" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-freshrss.json", "source_sha256": "d603d90d53d7353e5fad2b44b09754fb0c7bc34fe41241f51fa1cf348ab8c00f", "stages": [ { "apps": { "freshrss": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "freshrss": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "freshrss": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "freshrss": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "freshrss": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "freshrss": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "freshrss": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "freshrss": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "freshrss": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "freshrss": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "freshrss": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "freshrss": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:15:59.716543407Z", "target": { "apps": [ "freshrss" ], "id": "freshrss", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-2bc89521", "finished": "2026-10-07T12:47:12.646390754Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:808254590862db209e363fba48a609d954a20ed98cceab51389616a1a3ba7f08", "platform": "linux/amd64", "service": "frigate" } ], "name": "app-frigate", "observed_target_apps": [ "frigate" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-frigate.json", "source_sha256": "18a1cd42ea461d6330ca5e2c6ebde07a63d26832cdeba0cd5cc78d2344a36955", "stages": [ { "apps": { "frigate": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "frigate": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "frigate": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "frigate": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "frigate": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "frigate": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "frigate": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "frigate": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "frigate": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "frigate": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "frigate": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "frigate": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T12:41:34.06722682Z", "target": { "apps": [ "frigate" ], "id": "frigate", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-e1ba6cf5", "finished": "2026-10-07T08:55:10.568340123Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:c6fe0e8a6f2bbbdc47fd8e9df2d009aeb4cf3d46a265a406ff63dd9a47ea9015", "platform": "linux/amd64", "service": "gatus" } ], "name": "app-gatus", "observed_target_apps": [ "gatus" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-gatus.json", "source_sha256": "4e2dd16dfdf4d46fa2ffdc20176a932c07442d8ed20476cbdbd15f27a9b21e53", "stages": [ { "apps": { "gatus": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "gatus": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "gatus": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "gatus": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "gatus": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "gatus": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "gatus": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "gatus": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "gatus": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "gatus": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "gatus": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "gatus": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:55:00.333772061Z", "target": { "apps": [ "gatus" ], "id": "gatus", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-320b5440", "finished": "2026-10-07T09:14:03.862529204Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:48010f0354bd398a963fd0bf20628964c6ef62a3f4a23bd17924e393ca53c625", "platform": "linux/amd64", "service": "glances" } ], "name": "app-glances", "observed_target_apps": [ "glances" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-glances.json", "source_sha256": "bd8d586a9c0cf6f5862a4ad894849c3c9853555658c16211659fa6f2c1999f06", "stages": [ { "apps": { "glances": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "glances": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "glances": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "glances": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "glances": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "glances": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "glances": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "glances": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "glances": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "glances": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "glances": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "glances": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:13:44.334909389Z", "target": { "apps": [ "glances" ], "id": "glances", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "awaiting-external-credentials", "cleanup": "not-run", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": false, "platforms": [], "service_count": 0 }, "images": [], "name": "app-gluetun", "observed_target_apps": [ "gluetun" ], "outcome": "awaiting-external-credentials", "platform": "", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-gluetun.json", "source_sha256": "b02d4db1c60c841e1a15620b2b2eecd9a655491460d59f9586e7079bd081ff78", "stages": [ { "apps": { "gluetun": "not-run" }, "name": "install", "outcome": "not-run" }, { "apps": { "gluetun": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "gluetun": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "gluetun": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "gluetun": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "gluetun": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "gluetun": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "gluetun": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "gluetun": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "gluetun": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "gluetun": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "gluetun": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T09:13:44.334690899Z", "target": { "apps": [ "gluetun" ], "id": "gluetun", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-7137993d", "finished": "2026-10-07T09:13:44.328691819Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:69f8392b7df9bf94443d70a118171540db144bd1bf13a7bb06075e99564add71", "platform": "linux/amd64", "service": "gotify" } ], "name": "app-gotify", "observed_target_apps": [ "gotify" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-gotify.json", "source_sha256": "f2a363df43b6acc1c1cd04c1190a2b95b169575cb0a7df262f4add74cfd651b9", "stages": [ { "apps": { "gotify": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "gotify": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "gotify": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "gotify": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "gotify": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "gotify": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "gotify": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "gotify": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "gotify": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "gotify": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "gotify": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "gotify": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:13:10.165549419Z", "target": { "apps": [ "gotify" ], "id": "gotify", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-3aa85dc2", "finished": "2026-10-07T12:28:53.282743279Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:747aaf291145d9a84a547f1fa4edf48697371db6ab386b81c95ad3a725c20f17", "platform": "linux/amd64", "service": "grafana" } ], "name": "app-grafana", "observed_target_apps": [ "grafana" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-grafana.json", "source_sha256": "019b2d3e415dd4e9929c3acd33dfd682cbf594663e8df26d271a8512f37eba7b", "stages": [ { "apps": { "grafana": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "grafana": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "grafana": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "grafana": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "grafana": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "grafana": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "grafana": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "grafana": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "grafana": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "grafana": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "grafana": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "grafana": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T12:27:03.874205994Z", "target": { "apps": [ "grafana" ], "id": "grafana", "kind": "app" } }, { "binary_sha256": "6d3d92a500bfff1fda316eeeed1b0ac27fe89c108393b33ba5998dae2aa88d68", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-e381f86d", "finished": "2026-10-07T14:48:18.311581072Z", "head": "ee7975a8d0946f33f3677119ae657dc89962babe", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 2 }, "images": [ { "id": "sha256:d880f33f5d9b3f8d68f14f3993def05d8adf5f08e67ae8c1a1964b1eb6369a51", "platform": "linux/amd64", "service": "haproxy" }, { "id": "sha256:f22fb212dc2e08a70135153566666ccd279eb7c12313cb7424ace76264147762", "platform": "linux/amd64", "service": "ntfy" } ], "name": "app-haproxy", "observed_target_apps": [ "haproxy", "ntfy" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; exact application data across isolated restore for ntfy only; other Apps have no workload or database-content assertion; real HAProxy-to-owned-ntfy routing and protected statistics before backup and after isolated restore", "source_file": "app-haproxy.json", "source_sha256": "64f02893d0049eb3da7bf2760e4b4fb136bbeb26e45e62e0aeef7b22a0cca5c6", "stages": [ { "apps": { "haproxy": "pass", "ntfy": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "haproxy": "pass", "ntfy": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "haproxy": "pass", "ntfy": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "haproxy": "pass", "ntfy": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "haproxy": "pass", "ntfy": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "haproxy": "pass", "ntfy": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "payload-seed", "outcome": "pass" }, { "apps": { "haproxy": "pass", "ntfy": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "haproxy": "pass", "ntfy": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "haproxy": "pass", "ntfy": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "payload-restored", "outcome": "pass" }, { "apps": { "haproxy": "pass", "ntfy": "pass" }, "name": "sentinel", "outcome": "pass" }, { "apps": { "haproxy": "pass", "ntfy": "pass" }, "name": "backend-routing", "outcome": "pass" }, { "apps": { "haproxy": "pass", "ntfy": "pass" }, "name": "restored-backend-routing", "outcome": "pass" } ], "started": "2026-10-07T14:38:59.940505271Z", "target": { "apps": [ "haproxy" ], "id": "haproxy", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-6830ee24", "finished": "2026-10-07T12:44:15.337209938Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:b329f56bbea054fba0034499309911b20b4b7aa597ec236931a44c012164cf88", "platform": "linux/amd64", "service": "headscale" } ], "name": "app-headscale", "observed_target_apps": [ "headscale" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-headscale.json", "source_sha256": "358995d4ee249a03cb0815734c814272ef6beb576653cfe33f77b96b8d4596b5", "stages": [ { "apps": { "headscale": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "headscale": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "headscale": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "headscale": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "headscale": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "headscale": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "headscale": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "headscale": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "headscale": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "headscale": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "headscale": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "headscale": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T12:35:01.099513302Z", "target": { "apps": [ "headscale" ], "id": "headscale", "kind": "app" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-7b163927", "finished": "2026-10-07T11:42:45.553037948Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:2ee513d49656093361150d2fd3cfdd5574fe65135a8b10102339872f86f0ed58", "platform": "linux/amd64", "service": "homarr" } ], "name": "app-homarr", "observed_target_apps": [ "homarr" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-homarr.json", "source_sha256": "80c4fdb201545de25a4ecf1f226dd9f224795b6bd79f0a8f0e048c2c2b2994a9", "stages": [ { "apps": { "homarr": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "homarr": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "homarr": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "homarr": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "homarr": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "homarr": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "homarr": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "homarr": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "homarr": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "homarr": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "homarr": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "homarr": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T11:30:54.1448853Z", "target": { "apps": [ "homarr" ], "id": "homarr", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-6e8f8072", "finished": "2026-10-07T09:13:10.165291157Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:5157d3b45f2333749443ae7fb2c655b3ac7954018761c3f01144bd971030968f", "platform": "linux/amd64", "service": "home-assistant" } ], "name": "app-home-assistant", "observed_target_apps": [ "home-assistant" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-home-assistant.json", "source_sha256": "bad0e69df10589b53fc8a10e86851527fa536cf626e49f47721b9df5275dae65", "stages": [ { "apps": { "home-assistant": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "home-assistant": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "home-assistant": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "home-assistant": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "home-assistant": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "home-assistant": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "home-assistant": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "home-assistant": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "home-assistant": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "home-assistant": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "home-assistant": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "home-assistant": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:12:03.883060587Z", "target": { "apps": [ "home-assistant" ], "id": "home-assistant", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-b8c6e532", "finished": "2026-10-07T09:12:43.842475046Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:94609dcbdea8b3cd62e1d0e0c36bc6173756a60dfb2b42bb00370ea6a2b9aafd", "platform": "linux/amd64", "service": "homebridge" } ], "name": "app-homebridge", "observed_target_apps": [ "homebridge" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-homebridge.json", "source_sha256": "75b1974d4c8bd6334be76a63299451b824be2794ad8cce5207a1e2131a52a892", "stages": [ { "apps": { "homebridge": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "homebridge": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "homebridge": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "homebridge": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "homebridge": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "homebridge": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "homebridge": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "homebridge": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "homebridge": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "homebridge": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "homebridge": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "homebridge": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:11:05.520833598Z", "target": { "apps": [ "homebridge" ], "id": "homebridge", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-63627817", "finished": "2026-10-07T09:40:46.035783161Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 4 }, "images": [ { "id": "sha256:726dea3590a895d94203fe918b97ae2af8f609f04675590be0070cf64797ba88", "platform": "linux/amd64", "service": "redis" }, { "id": "sha256:178719aeb38df6f0ce8edc1d8320008379fcf04eb3444e76419cc98d9861e331", "platform": "linux/amd64", "service": "database" }, { "id": "sha256:b1a1cc8cac12989dcfe0d61535afcbbae552f76c3cd38ab66e10c66457720800", "platform": "linux/amd64", "service": "immich" }, { "id": "sha256:c53e2e5c4e9467ae83344fa9e67f2a99014a45f98c4d0b3b2f24afa5f46e97e3", "platform": "linux/amd64", "service": "immich-machine-learning" } ], "name": "app-immich", "observed_target_apps": [ "immich" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-immich.json", "source_sha256": "720a1607402911472d9227f35f69d9e855abcb42d980feb3c8f7cec726a59734", "stages": [ { "apps": { "immich": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "immich": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "immich": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "immich": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "immich": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "immich": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "immich": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "immich": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "immich": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "immich": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "immich": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "immich": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:10:05.718179532Z", "target": { "apps": [ "immich" ], "id": "immich", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-92843a5b", "finished": "2026-10-07T09:45:33.115861302Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:fbd967af0187a569b0c18d2db6cb311fdf0df4aeb520102c63f19320aadf964d", "platform": "linux/amd64", "service": "jellyfin" } ], "name": "app-jellyfin", "observed_target_apps": [ "jellyfin" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-jellyfin.json", "source_sha256": "63cc51ec2f8095d4006e94bc457c415199bec0b497c519bb50bcbe1f50b936ce", "stages": [ { "apps": { "jellyfin": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "jellyfin": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "jellyfin": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "jellyfin": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "jellyfin": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "jellyfin": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "jellyfin": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "jellyfin": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "jellyfin": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "jellyfin": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "jellyfin": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "jellyfin": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:09:55.843728376Z", "target": { "apps": [ "jellyfin" ], "id": "jellyfin", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-04435355", "finished": "2026-10-07T10:17:45.917852441Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 2 }, "images": [ { "id": "sha256:b2f3e1b85071d17a1da8d2cbcc54707853d19c74ae027071789ea1bb12b3ec89", "platform": "linux/amd64", "service": "keycloak" }, { "id": "sha256:79bd7c99e923138f136f8009d6bffa66e21e9d4fda5c0c561b00fc9c90cfe537", "platform": "linux/amd64", "service": "db" } ], "name": "app-keycloak", "observed_target_apps": [ "keycloak" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-keycloak.json", "source_sha256": "24f03b94a27a1bb3d1bf032d82ab24b78af4398a7141bfc8d6fe8859c348df07", "stages": [ { "apps": { "keycloak": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "keycloak": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "keycloak": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "keycloak": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "keycloak": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "keycloak": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "keycloak": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "keycloak": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "keycloak": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "keycloak": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "keycloak": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "keycloak": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:06:31.692288407Z", "target": { "apps": [ "keycloak" ], "id": "keycloak", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-bab6b764", "finished": "2026-10-07T12:29:36.017318202Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:3033ab0726ec64ff091d7f584f52987390e59eb7d30ca16bd36fcdc34c58ad96", "platform": "linux/amd64", "service": "kopia" } ], "name": "app-kopia", "observed_target_apps": [ "kopia" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-kopia.json", "source_sha256": "8b137f6bf08cfe11d54c844bb3cd1b42c165d09517f5e3ebeaa92804185f7d0b", "stages": [ { "apps": { "kopia": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "kopia": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "kopia": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "kopia": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "kopia": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "kopia": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "kopia": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "kopia": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "kopia": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "kopia": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "kopia": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "kopia": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T12:29:23.815692839Z", "target": { "apps": [ "kopia" ], "id": "kopia", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-663801b2", "finished": "2026-10-07T09:11:05.520549679Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:7fb9a5572b1719bd8a9b4b2e51752b2265626adde208210bff28f5abb5308437", "platform": "linux/amd64", "service": "lidarr" } ], "name": "app-lidarr", "observed_target_apps": [ "lidarr" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-lidarr.json", "source_sha256": "340e5fe654fded907ad0f75f72b4f1143d9e4843b0de51a1f93e8b0322ef4d15", "stages": [ { "apps": { "lidarr": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "lidarr": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "lidarr": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "lidarr": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "lidarr": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "lidarr": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "lidarr": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "lidarr": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "lidarr": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "lidarr": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "lidarr": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "lidarr": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:00:55.85815634Z", "target": { "apps": [ "lidarr" ], "id": "lidarr", "kind": "app" } }, { "binary_sha256": "6d3d92a500bfff1fda316eeeed1b0ac27fe89c108393b33ba5998dae2aa88d68", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-7796c079", "finished": "2026-10-07T15:02:02.374642253Z", "head": "ee7975a8d0946f33f3677119ae657dc89962babe", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 3 }, "images": [ { "id": "sha256:cab61b2e1fb52429632b77893abbc2433b14c19948bca1d7b558f10101fda91e", "platform": "linux/amd64", "service": "linkwarden" }, { "id": "sha256:81bd698b4594e751a3269e4dcd3e03a4a0ec0daf7b72e7aa1abd43cce9887542", "platform": "linux/amd64", "service": "postgres" }, { "id": "sha256:35435ac707829f4d914096dd74bf9626ace85669c002be2bcc7fa6b8bbdec43d", "platform": "linux/amd64", "service": "meilisearch" } ], "name": "app-linkwarden", "observed_target_apps": [ "linkwarden" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-linkwarden.json", "source_sha256": "7236af48996fc47f9c21197e41b9739e1b06aadd9ba58ae0826c4f445077e78c", "stages": [ { "apps": { "linkwarden": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "linkwarden": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "linkwarden": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "linkwarden": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "linkwarden": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "linkwarden": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "linkwarden": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "linkwarden": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "linkwarden": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "linkwarden": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "linkwarden": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "linkwarden": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T14:38:59.940864638Z", "target": { "apps": [ "linkwarden" ], "id": "linkwarden", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-f59c04ce", "finished": "2026-10-07T12:29:23.815479017Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:1f4a8a01d1e3fa5928f9918081cccdec144d09f0eb5a83f252dbac73487f9181", "platform": "linux/amd64", "service": "lldap" } ], "name": "app-lldap", "observed_target_apps": [ "lldap" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-lldap.json", "source_sha256": "c74e5fcf71b4b073e54ac17858170a596034cc25a8e4ed5d5e0d2313c6275143", "stages": [ { "apps": { "lldap": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "lldap": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "lldap": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "lldap": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "lldap": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "lldap": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "lldap": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "lldap": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "lldap": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "lldap": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "lldap": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "lldap": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T12:27:03.874187314Z", "target": { "apps": [ "lldap" ], "id": "lldap", "kind": "app" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-d84bcbf0", "finished": "2026-10-07T11:44:15.064400099Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:6ea410afab1b8e0d360d87bd3c3ea27ab1b2af0027badb6f18758c5a6efc3a17", "platform": "linux/amd64", "service": "loki" } ], "name": "app-loki", "observed_target_apps": [ "loki" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-loki.json", "source_sha256": "d1f7d02d153afa061663e10da54ececfabd0aa2e16ad5e1396f0b42159391f8d", "stages": [ { "apps": { "loki": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "loki": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "loki": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "loki": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "loki": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "loki": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "loki": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "loki": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "loki": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "loki": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "loki": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "loki": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T11:42:12.035404547Z", "target": { "apps": [ "loki" ], "id": "loki", "kind": "app" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-f017598b", "finished": "2026-10-07T12:02:49.613069897Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 4 }, "images": [ { "id": "sha256:c9988d9822cb01b4c63ba9b027fa45ec1e465eaca10208d91966da1e0ad99eb1", "platform": "linux/amd64", "service": "mayan-edms" }, { "id": "sha256:86832d1a469e1d9994122fff86321ded3622a964eac9b60999396e845ff42b20", "platform": "linux/amd64", "service": "postgresql" }, { "id": "sha256:cc97eca371f3fb53aed644b3b5162572b7162a69023e7ca82b99d2f279cba837", "platform": "linux/amd64", "service": "rabbitmq" }, { "id": "sha256:7ceda270a3137de18c0b3aff75fa0002faa1c2a87e2b25e86978a1c3f20b3b78", "platform": "linux/amd64", "service": "redis" } ], "name": "app-mayan-edms", "observed_target_apps": [ "mayan-edms" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-mayan-edms.json", "source_sha256": "c705e12900ee2f638a55202826593aaa760c9c9c3845d97a36c701749de72dd1", "stages": [ { "apps": { "mayan-edms": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "mayan-edms": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "mayan-edms": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "mayan-edms": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "mayan-edms": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "mayan-edms": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "mayan-edms": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "mayan-edms": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "mayan-edms": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "mayan-edms": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "mayan-edms": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "mayan-edms": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T11:52:37.142846488Z", "target": { "apps": [ "mayan-edms" ], "id": "mayan-edms", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "awaiting-external-credentials", "cleanup": "not-run", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": false, "platforms": [], "service_count": 0 }, "images": [], "name": "app-minio", "observed_target_apps": [ "minio" ], "outcome": "awaiting-external-credentials", "platform": "", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-minio.json", "source_sha256": "dd11a5690277c57f5138589da7c8861f1faec5fa76e712ec35d2b9aa30a2e5b2", "stages": [ { "apps": { "minio": "not-run" }, "name": "install", "outcome": "not-run" }, { "apps": { "minio": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "minio": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "minio": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "minio": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "minio": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "minio": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "minio": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "minio": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "minio": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "minio": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "minio": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T08:55:19.59822772Z", "target": { "apps": [ "minio" ], "id": "minio", "kind": "app" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-176afd89", "finished": "2026-10-07T11:59:58.414514229Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:082c198a14c9f2c36bb714830e1e3bf5ec785c36f384c6b982cb24c5a88da555", "platform": "linux/amd64", "service": "navidrome" } ], "name": "app-navidrome", "observed_target_apps": [ "navidrome" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-navidrome.json", "source_sha256": "9c0e0a7c10725f3955536f3dbef319bea59db84187fe13608017c6641c568f0b", "stages": [ { "apps": { "navidrome": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "navidrome": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "navidrome": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "navidrome": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "navidrome": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "navidrome": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "navidrome": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "navidrome": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "navidrome": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "navidrome": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "navidrome": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "navidrome": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T11:49:09.798979999Z", "target": { "apps": [ "navidrome" ], "id": "navidrome", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-a5fdb8f0", "finished": "2026-10-07T13:17:03.636531609Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 2 }, "images": [ { "id": "sha256:d01da33f8decbc6b6c37e44383b5d400fa0e7c49bc318ed074f44519847d62ee", "platform": "linux/amd64", "service": "netbird" }, { "id": "sha256:b80d5dbc3c1309db133bbaf5ede0229a43a58cda586d1c55eec61981d69967ab", "platform": "linux/amd64", "service": "server" } ], "name": "app-netbird", "observed_target_apps": [ "netbird" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion; real NetBird owner and protected management API through owned verified loopback HTTPS before backup and after isolated restore; no peer/VPN/browser claim", "source_file": "app-netbird.json", "source_sha256": "fa2ce29542cd18830c2119285a6a172145e53af5e1fd9845c2aa2a84e0fc4f90", "stages": [ { "apps": { "netbird": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "netbird": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "netbird": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "netbird": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "netbird": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "netbird": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "netbird": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "netbird": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "netbird": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "netbird": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "netbird": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "netbird": "pass" }, "name": "sentinel", "outcome": "pass" }, { "apps": { "netbird": "pass" }, "name": "management-tls", "outcome": "pass" }, { "apps": { "netbird": "pass" }, "name": "restored-management-tls", "outcome": "pass" } ], "started": "2026-10-07T12:53:01.589514487Z", "target": { "apps": [ "netbird" ], "id": "netbird", "kind": "app" } }, { "binary_sha256": "6d3d92a500bfff1fda316eeeed1b0ac27fe89c108393b33ba5998dae2aa88d68", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-4b6378f4", "finished": "2026-10-07T14:56:10.012283501Z", "head": "ee7975a8d0946f33f3677119ae657dc89962babe", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:cf6fd23dc412ad44a9cc31c3427824e633a4e295f0ff5ab54e87ac789c3d43e1", "platform": "linux/amd64", "service": "netdata" } ], "name": "app-netdata", "observed_target_apps": [ "netdata" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-netdata.json", "source_sha256": "bd8c2b41d19a23a389ce846ca9321c3d1142f5a954b74ae07ddc641139461cbd", "stages": [ { "apps": { "netdata": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "netdata": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "netdata": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "netdata": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "netdata": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "netdata": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "netdata": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "netdata": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "netdata": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "netdata": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "netdata": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "netdata": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T14:38:59.941166444Z", "target": { "apps": [ "netdata" ], "id": "netdata", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-eab548d5", "finished": "2026-10-07T09:00:25.914514316Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 4 }, "images": [ { "id": "sha256:deb9a3a5e1952c4bddf4b1afe48fd6040295a6d7c41379ce68c0d067512ca912", "platform": "linux/amd64", "service": "db" }, { "id": "sha256:15f5a4aad4c3ba34b9874ddbc7f755b469dbd7b8a9e88c12690c52ef6c72465c", "platform": "linux/amd64", "service": "redis" }, { "id": "sha256:42aa95fc13ded13dfe60355a3b6ffb83b8d99e360b96b18dd56506d5f12d3467", "platform": "linux/amd64", "service": "cron" }, { "id": "sha256:42aa95fc13ded13dfe60355a3b6ffb83b8d99e360b96b18dd56506d5f12d3467", "platform": "linux/amd64", "service": "nextcloud" } ], "name": "app-nextcloud", "observed_target_apps": [ "nextcloud" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-nextcloud.json", "source_sha256": "ccd6f58f59599f9035c2ee4c52bc7d571cf5e7205aaec11834d815161f278bb7", "stages": [ { "apps": { "nextcloud": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "nextcloud": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "nextcloud": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "nextcloud": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "nextcloud": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "nextcloud": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "nextcloud": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "nextcloud": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "nextcloud": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "nextcloud": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "nextcloud": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "nextcloud": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:33:03.180587338Z", "target": { "apps": [ "nextcloud" ], "id": "nextcloud", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-5346d49b", "finished": "2026-10-07T12:56:43.26781212Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:5c80aaf5e26c1f45a6ce9f58ad00edceabb717d68236ff5b06d6f4d1f1271742", "platform": "linux/amd64", "service": "nginx-proxy-manager" } ], "name": "app-nginx-proxy-manager", "observed_target_apps": [ "nginx-proxy-manager" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-nginx-proxy-manager.json", "source_sha256": "fcc529015ac1850cdf8c91cc87a483053f4bfde53b8eb06e4eb04855e927558d", "stages": [ { "apps": { "nginx-proxy-manager": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "nginx-proxy-manager": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "nginx-proxy-manager": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "nginx-proxy-manager": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "nginx-proxy-manager": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "nginx-proxy-manager": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "nginx-proxy-manager": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "nginx-proxy-manager": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "nginx-proxy-manager": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "nginx-proxy-manager": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "nginx-proxy-manager": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "nginx-proxy-manager": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T12:47:12.646917358Z", "target": { "apps": [ "nginx-proxy-manager" ], "id": "nginx-proxy-manager", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-f5110edb", "finished": "2026-10-07T08:38:12.085607549Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:9c9df61df63d0a8a4aabfef98fda647ede418d7c758fab1abada07a32121fe32", "platform": "linux/amd64", "service": "node-red" } ], "name": "app-node-red", "observed_target_apps": [ "node-red" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-node-red.json", "source_sha256": "5dd5e4ec21e980affb86235d741d4ef215fd9222655635107729820bc589801c", "stages": [ { "apps": { "node-red": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "node-red": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "node-red": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "node-red": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "node-red": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "node-red": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "node-red": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "node-red": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "node-red": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "node-red": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "node-red": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "node-red": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:30:37.89377595Z", "target": { "apps": [ "node-red" ], "id": "node-red", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-2ba4dd30", "finished": "2026-10-07T08:34:45.858776362Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:f22fb212dc2e08a70135153566666ccd279eb7c12313cb7424ace76264147762", "platform": "linux/amd64", "service": "ntfy" } ], "name": "app-ntfy", "observed_target_apps": [ "ntfy" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; exact application data across isolated restore for ntfy only; other Apps have no workload or database-content assertion", "source_file": "app-ntfy.json", "source_sha256": "64d19c8a48a3375305bbf7914c41a08a8d54e73d94a8992b96d304a28cb73425", "stages": [ { "apps": { "ntfy": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "payload-seed", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "payload-restored", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:30:37.885784593Z", "target": { "apps": [ "ntfy" ], "id": "ntfy", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-f2a73e3f", "finished": "2026-10-07T08:36:54.839558699Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:1ba0db04c88f6b4d7fa4882af2e17f67c12c109d9f4bb5f572541a24ce814817", "platform": "linux/amd64", "service": "nzbget" } ], "name": "app-nzbget", "observed_target_apps": [ "nzbget" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-nzbget.json", "source_sha256": "071424109caeb0b766e428c0bc0e334c26cdf2ec94298c4dd11ff474d8903741", "stages": [ { "apps": { "nzbget": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "nzbget": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "nzbget": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "nzbget": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "nzbget": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "nzbget": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "nzbget": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "nzbget": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "nzbget": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "nzbget": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "nzbget": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "nzbget": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:30:37.87637684Z", "target": { "apps": [ "nzbget" ], "id": "nzbget", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-50200cc4", "finished": "2026-10-07T09:27:50.24751817Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:4d056959f70534c6906184776d53ab39135dce95912d666e9dd60ca2d0c4dac1", "platform": "linux/amd64", "service": "ollama" } ], "name": "app-ollama", "observed_target_apps": [ "ollama" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-ollama.json", "source_sha256": "295cb9940bd6714a71ec9b264eb3946a18821809937b43377d998673bd1bf0af", "stages": [ { "apps": { "ollama": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "ollama": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "ollama": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "ollama": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "ollama": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "ollama": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "ollama": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "ollama": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "ollama": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "ollama": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "ollama": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "ollama": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:30:37.869331471Z", "target": { "apps": [ "ollama" ], "id": "ollama", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-0d2a1bd9", "finished": "2026-10-07T08:46:25.621903025Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:8719e348fa22da550b1b4911ce4e3baf9b994614270cc0a99f2db4c2e690b286", "platform": "linux/amd64", "service": "open-webui" } ], "name": "app-open-webui", "observed_target_apps": [ "open-webui" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-open-webui.json", "source_sha256": "212db6f332ad1703133db277b065ff6f7d53baa94bc93507db5e19dfd69df356", "stages": [ { "apps": { "open-webui": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "open-webui": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "open-webui": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "open-webui": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "open-webui": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "open-webui": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "open-webui": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "open-webui": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "open-webui": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "open-webui": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "open-webui": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "open-webui": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:30:37.8692819Z", "target": { "apps": [ "open-webui" ], "id": "open-webui", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-d28b1bb2", "finished": "2026-10-07T13:21:44.724522372Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 2 }, "images": [ { "id": "sha256:57c185c0f9968fba4c36f293d18802c79f896d0cbed9810f6e7a10ee9ec97b20", "platform": "linux/amd64", "service": "server" }, { "id": "sha256:5a93040e5abdf181145d7c242964eca7999ffd700e0447b242ef212f3ee44d55", "platform": "linux/amd64", "service": "pangolin" } ], "name": "app-pangolin", "observed_target_apps": [ "pangolin" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-pangolin.json", "source_sha256": "634c03abf30a6e65a31d50c2c28739f4ad08a57fa195344ab7f445798f96a2bf", "stages": [ { "apps": { "pangolin": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "pangolin": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "pangolin": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "pangolin": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "pangolin": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "pangolin": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "pangolin": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "pangolin": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "pangolin": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "pangolin": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "pangolin": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "pangolin": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T13:05:31.912773969Z", "target": { "apps": [ "pangolin" ], "id": "pangolin", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-3d220123", "finished": "2026-10-07T09:27:12.656466374Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 3 }, "images": [ { "id": "sha256:40ab224f823ae96d9d05adfbb31d7068cbf96708be5d8b2691621b703a02de3d", "platform": "linux/amd64", "service": "broker" }, { "id": "sha256:29754c7520f4b9654cf8ff98e19ac73b88e255c3a53f6236ebe9d52249bb6df3", "platform": "linux/amd64", "service": "db" }, { "id": "sha256:448f5f79b979cce73b43f094b0e14552b6e82a4b06ae510681e0839754d56215", "platform": "linux/amd64", "service": "paperless-ngx" } ], "name": "app-paperless-ngx", "observed_target_apps": [ "paperless-ngx" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-paperless-ngx.json", "source_sha256": "22e4dbd81fd2b1fd28de62e363f848557041b0ec85444c4f0a8e5456d5387b9a", "stages": [ { "apps": { "paperless-ngx": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "paperless-ngx": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "paperless-ngx": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "paperless-ngx": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "paperless-ngx": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "paperless-ngx": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "paperless-ngx": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "paperless-ngx": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "paperless-ngx": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "paperless-ngx": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "paperless-ngx": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "paperless-ngx": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:30:37.868980409Z", "target": { "apps": [ "paperless-ngx" ], "id": "paperless-ngx", "kind": "app" } }, { "binary_sha256": "40acccc931a9995c84cd8816bed922673cdac6a57d78e75f36f4ad2a0a7b1c7a", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-df772c47", "finished": "2026-10-07T17:28:06.137832559Z", "head": "b54733427f9c9ed44628073356a957a43bc4e8bb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 3 }, "images": [ { "id": "sha256:a7d4b166b6702ca0752e51f734638f95ba383b7446f9028082b0ea7c34b6facb", "platform": "linux/amd64", "service": "passbolt" }, { "id": "sha256:41096ae9913468679bb5e05bbc19f44edcaf0eae45d67fcde224ffdeda9d3a1f", "platform": "linux/amd64", "service": "db" }, { "id": "sha256:c83674e1999044d33d751661371b873539f47e5b5c5ca3320c7e0377acca6238", "platform": "linux/amd64", "service": "passbolt-prerequisites" } ], "name": "app-passbolt", "observed_target_apps": [ "passbolt" ], "outcome": "failed", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion; fixture helper linux/amd64 sha256:fabe112a90ac77e9f36a60b2da5c3a4cad4864ace0aba7d64e9b0338fc132e9f; owned verified canonical HTTPS and private no-auth STARTTLS delivery are prerequisites only; browser-extension owner OpenPGP enrollment and key recovery remain manual", "source_file": "app-passbolt.json", "source_sha256": "f43e16dc62986386cb1b1b0e9287568b0f72af95d539c11140850f5990bcdb10", "stages": [ { "apps": { "passbolt": "fail" }, "failures": [ { "app": "passbolt", "error": "timed out after 3m0s: HTTP 500", "hint": "passbolt did not answer on /auth/verify.json; read its logs with: self-host logs passbolt", "kind": "step.fail", "step": "ready" }, { "app": "passbolt", "error": "Passbolt verification returned HTTP 500; cause remains unclassified. If server-key and database checks pass, ask the host administrator to verify PHP-FPM access to Passbolt bootstrap and configuration files.", "hint": "inspect only allowlisted startup/configuration and key-file accessibility booleans in the owned Project; no raw logs or key payloads", "kind": "step.fail", "step": "startup-diagnostic" }, { "app": "passbolt", "error": "owned Passbolt public-key metadata: exists=true, www-data-readable=true, directory-owner=www-data, directory-group=www-data, directory-mode=0700", "hint": "read-only fixed public-key path metadata; an unobserved probe proves no missing file or readability failure", "kind": "step.fail", "step": "startup-metadata" }, { "app": "passbolt", "error": "owned Passbolt application metadata: private-key-exists=true, private-key-readable=true, keyring-readable=true, keyring-writable=true, gnupg-extension=true, pdo-mysql-extension=true, canonical-input-valid=true, ssl-force-input=true, datasource=connected, schema=present", "hint": "read-only key accessibility and owned-env PDO/schema metadata; does not prove key import or effective Cake/FPM configuration", "kind": "step.fail", "step": "startup-application-metadata" }, { "app": "passbolt", "error": "owned Passbolt effective metadata: bootstrap=initialized, configured-public-path-matches=true, configured-public-readable=true, original-url-present=true, canonical-match=true, url-enforced=false, fingerprint-present=false, fingerprint-valid=false, authentication=session", "hint": "normal CLI application bootstrap/configuration booleans only; does not establish FPM configuration or key import", "kind": "step.fail", "step": "startup-effective-metadata" } ], "name": "install", "outcome": "fail", "reason": "redacted CLI failure details retained" }, { "apps": { "passbolt": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "passbolt": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "passbolt": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "passbolt": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "passbolt": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "passbolt": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "passbolt": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "passbolt": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "passbolt": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "passbolt": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "passbolt": "not-run" }, "name": "sentinel", "outcome": "not-run" }, { "apps": { "passbolt": "not-run", "passbolt-prerequisites": "not-run" }, "name": "local-prerequisites", "outcome": "not-run" }, { "apps": { "passbolt": "not-run", "passbolt-prerequisites": "not-run" }, "name": "restored-local-prerequisites", "outcome": "not-run" } ], "started": "2026-10-07T17:25:00.017385043Z", "target": { "apps": [ "passbolt" ], "id": "passbolt", "kind": "app" } }, { "binary_sha256": "5dfdde2c3e31ea22410c1d0a8e90ef7ba2c39afb159cd84e1e233c8fe094f4c3", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-4c57a66c", "finished": "2026-10-07T13:38:26.344078557Z", "head": "d4d352189363d3958231fc5225bb0e869334971b", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 4 }, "images": [ { "id": "sha256:3eb66c712003216ac81802cef79dbfb7dcfb3e80aaf24ccab8be708649f68b5d", "platform": "linux/amd64", "service": "patchmon" }, { "id": "sha256:79bd7c99e923138f136f8009d6bffa66e21e9d4fda5c0c561b00fc9c90cfe537", "platform": "linux/amd64", "service": "database" }, { "id": "sha256:f84b0c4678011602b9b98c227a4dcd5468bf8b088b02fdd4165cb7758bad8058", "platform": "linux/amd64", "service": "redis" }, { "id": "sha256:b80c272f9e68727650f09960e88546990ea5590aec5bcbebd04547e728633044", "platform": "linux/amd64", "service": "guacd" } ], "name": "app-patchmon", "observed_target_apps": [ "patchmon" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-patchmon.json", "source_sha256": "bf7b51f837ea273063161f736be4583eabcadb43309c6dccee65366fdb560be9", "stages": [ { "apps": { "patchmon": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "patchmon": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "patchmon": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "patchmon": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "patchmon": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "patchmon": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "patchmon": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "patchmon": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "patchmon": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "patchmon": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "patchmon": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "patchmon": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T13:37:02.863821716Z", "target": { "apps": [ "patchmon" ], "id": "patchmon", "kind": "app" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-eeb86d98", "finished": "2026-10-07T11:43:34.693814249Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:da9b7f23e8b2d0d3240b6105e54e56b9626e4263e30ab871bbe831fa73428679", "platform": "linux/amd64", "service": "peanut" } ], "name": "app-peanut", "observed_target_apps": [ "peanut" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-peanut.json", "source_sha256": "85b76be3cdd1c93aeea556bdc883934fc2e47a91a29f1aca1ea7d924d5127cda", "stages": [ { "apps": { "peanut": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "peanut": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "peanut": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "peanut": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "peanut": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "peanut": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "peanut": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "peanut": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "peanut": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "peanut": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "peanut": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "peanut": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T11:42:45.55332991Z", "target": { "apps": [ "peanut" ], "id": "peanut", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-22c08040", "finished": "2026-10-07T08:34:42.655842359Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:cbaec6ae439c14053f225d7a264a1e05fbca7328e1e2a5d76293e7beaf99246c", "platform": "linux/amd64", "service": "photoprism" } ], "name": "app-photoprism", "observed_target_apps": [ "photoprism" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-photoprism.json", "source_sha256": "d52703c07465e00095a8bfda8da7c22bd779b720ee6fc197cd0608eb349b4869", "stages": [ { "apps": { "photoprism": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "photoprism": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "photoprism": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "photoprism": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "photoprism": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "photoprism": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "photoprism": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "photoprism": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "photoprism": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "photoprism": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "photoprism": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "photoprism": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:30:37.868678317Z", "target": { "apps": [ "photoprism" ], "id": "photoprism", "kind": "app" } }, { "binary_sha256": "c7fc7b3533de5b5d55bae223476909f7ed3b50a646b52a6cb57993b3a698059e", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-ecc0717c", "finished": "2026-10-07T15:41:20.802890922Z", "head": "d175e030a47f6caa0d454bc88ff14f8dc7cc7fab", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:15d302c0f85902d6378e159b906b3ffc7b5ef2af079e1d296d1dcf3f5f217e29", "platform": "linux/amd64", "service": "pihole" } ], "name": "app-pihole", "observed_target_apps": [ "pihole" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-pihole.json", "source_sha256": "cbe9be675850d92b89a63577a00eb3a2750ec6e1564003b10ce3e8b5d8a34855", "stages": [ { "apps": { "pihole": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "pihole": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "pihole": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "pihole": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "pihole": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "pihole": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "pihole": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "pihole": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "pihole": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "pihole": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "pihole": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "pihole": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T15:20:01.177954012Z", "target": { "apps": [ "pihole" ], "id": "pihole", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "awaiting-external-credentials", "cleanup": "not-run", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": false, "platforms": [], "service_count": 0 }, "images": [], "name": "app-plex", "observed_target_apps": [ "plex" ], "outcome": "awaiting-external-credentials", "platform": "", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-plex.json", "source_sha256": "7e9fabfd6e199e6940925494df70177cc886a715e5ed85f1a3443fc3069da4c9", "stages": [ { "apps": { "plex": "not-run" }, "name": "install", "outcome": "not-run" }, { "apps": { "plex": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "plex": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "plex": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "plex": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "plex": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "plex": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "plex": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "plex": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "plex": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "plex": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "plex": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T08:30:37.868553756Z", "target": { "apps": [ "plex" ], "id": "plex", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-8fd88949", "finished": "2026-10-07T08:33:40.949538689Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:dda734886443b826a8f0dfa0d7bd672fbf3ffc80e8f2807bfec53d4226e8cfb0", "platform": "linux/amd64", "service": "portainer" } ], "name": "app-portainer", "observed_target_apps": [ "portainer" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-portainer.json", "source_sha256": "05d52714696e61a1f9a726e082f703364fb6abcba91a1e97888c54e831072d0e", "stages": [ { "apps": { "portainer": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "portainer": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "portainer": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "portainer": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "portainer": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "portainer": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "portainer": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "portainer": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "portainer": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "portainer": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "portainer": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "portainer": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:30:37.868478271Z", "target": { "apps": [ "portainer" ], "id": "portainer", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-ef73209b", "finished": "2026-10-07T08:36:19.578978995Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:29754c7520f4b9654cf8ff98e19ac73b88e255c3a53f6236ebe9d52249bb6df3", "platform": "linux/amd64", "service": "postgresql" } ], "name": "app-postgresql", "observed_target_apps": [ "postgresql" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; exact application data across isolated restore for postgresql only; other Apps have no workload or database-content assertion", "source_file": "app-postgresql.json", "source_sha256": "57b8ece0089d46faf4c51f1419842a9e232a96c34475472f2768b06b38bf8776", "stages": [ { "apps": { "postgresql": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "postgresql": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "postgresql": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "postgresql": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "postgresql": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "postgresql": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "postgresql": "pass" }, "name": "payload-seed", "outcome": "pass" }, { "apps": { "postgresql": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "postgresql": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "postgresql": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "postgresql": "pass" }, "name": "payload-restored", "outcome": "pass" }, { "apps": { "postgresql": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:30:37.868410339Z", "target": { "apps": [ "postgresql" ], "id": "postgresql", "kind": "app" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-1c86445b", "finished": "2026-10-07T11:25:23.853370866Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:66416213a3b43651d3521acc3987277b4f97ad0ae29acc581f910ef9bd3959bd", "platform": "linux/amd64", "service": "prometheus" } ], "name": "app-prometheus", "observed_target_apps": [ "prometheus" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-prometheus.json", "source_sha256": "848ad2b2335870abc3ddf7fea9735ffe150f765203063a94c6a92dfbc5a06aaf", "stages": [ { "apps": { "prometheus": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "prometheus": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "prometheus": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "prometheus": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "prometheus": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "prometheus": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "prometheus": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "prometheus": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "prometheus": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "prometheus": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "prometheus": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "prometheus": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T11:23:50.893377512Z", "target": { "apps": [ "prometheus" ], "id": "prometheus", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-f38ad735", "finished": "2026-10-07T08:34:14.223240386Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:899607d03e6bb4d702464157700a5e9ba714eee49cf14334016fc56b0c38130f", "platform": "linux/amd64", "service": "prowlarr" } ], "name": "app-prowlarr", "observed_target_apps": [ "prowlarr" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-prowlarr.json", "source_sha256": "f6577a4aa15dcc10f0941efcac7e4846e75baf1e071eefd92e98a903069e0290", "stages": [ { "apps": { "prowlarr": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "prowlarr": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "prowlarr": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "prowlarr": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "prowlarr": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "prowlarr": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "prowlarr": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "prowlarr": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "prowlarr": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "prowlarr": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "prowlarr": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "prowlarr": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:30:37.868244521Z", "target": { "apps": [ "prowlarr" ], "id": "prowlarr", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-9034772b", "finished": "2026-10-07T13:18:02.589742821Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:f1997322e699e5af789d8f522cca90d78ebe87dd3a972b8affda6382faeab2b8", "platform": "linux/amd64", "service": "qbittorrent" } ], "name": "app-qbittorrent", "observed_target_apps": [ "qbittorrent" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-qbittorrent.json", "source_sha256": "92e4ae7bbdbadaf6ae24f27d116eabde1cd6fd0aab9f7aa6e3ba56dedf5d112d", "stages": [ { "apps": { "qbittorrent": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "qbittorrent": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "qbittorrent": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "qbittorrent": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "qbittorrent": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "qbittorrent": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "qbittorrent": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "qbittorrent": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "qbittorrent": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "qbittorrent": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "qbittorrent": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "qbittorrent": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T13:06:14.006629614Z", "target": { "apps": [ "qbittorrent" ], "id": "qbittorrent", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-b29c4c65", "finished": "2026-10-07T08:35:54.991202265Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:34a3a98b3b5d869daa2dd652143155044cb229bda273dae1b6966abcd2e039e8", "platform": "linux/amd64", "service": "radarr" } ], "name": "app-radarr", "observed_target_apps": [ "radarr" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-radarr.json", "source_sha256": "40ca3f489d59e08c600cd6aff518e2a056775b0308e16d4481c041608448b832", "stages": [ { "apps": { "radarr": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "radarr": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "radarr": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "radarr": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "radarr": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "radarr": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "radarr": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "radarr": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "radarr": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "radarr": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "radarr": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "radarr": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:30:37.869430492Z", "target": { "apps": [ "radarr" ], "id": "radarr", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-40212251", "finished": "2026-10-07T13:05:31.912487668Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 2 }, "images": [ { "id": "sha256:677bef3d96cfa807a8e076b411b8bb6e12db8744eebedeba24bc015c9822c01b", "platform": "linux/amd64", "service": "renovate" }, { "id": "sha256:831ef608fc00db376c4b7ccd3883a505e504005a43d578bcf6d22dc955d95e55", "platform": "linux/amd64", "service": "forgejo" } ], "name": "app-renovate", "observed_target_apps": [ "renovate", "forgejo" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion; Renovate prepared and inert (--version only), no dependency jobs, scheduler or pull-request claim; actual dedicated owned Forgejo PAT identity and exact persisted token ID before backup and after restore", "source_file": "app-renovate.json", "source_sha256": "e5b8174e2dd1672634ce2c2e853c92564d33549e3f43857929c4ce47e3382975", "stages": [ { "apps": { "forgejo": "pass", "renovate": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "forgejo": "pass", "renovate": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "forgejo": "pass", "renovate": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "forgejo": "pass", "renovate": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "forgejo": "pass", "renovate": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "forgejo": "pass", "renovate": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "renovate": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "forgejo": "pass", "renovate": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "forgejo": "pass", "renovate": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "forgejo": "pass", "renovate": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "renovate": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "forgejo": "pass", "renovate": "pass" }, "name": "sentinel", "outcome": "pass" }, { "apps": { "forgejo": "pass", "renovate": "pass" }, "name": "forge-token-identity", "outcome": "pass" }, { "apps": { "forgejo": "pass", "renovate": "pass" }, "name": "restored-forge-token-identity", "outcome": "pass" } ], "started": "2026-10-07T12:56:43.268043796Z", "target": { "apps": [ "renovate" ], "id": "renovate", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-e7be5160", "finished": "2026-10-07T09:48:35.636167394Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:abdfb98c81b7e48c9b91f0870383f1b2bcdc3137d196dbfb8abe0b1ae713942f", "platform": "linux/amd64", "service": "restic" } ], "name": "app-restic", "observed_target_apps": [ "restic" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-restic.json", "source_sha256": "949d83806e4889e62f8f8a478c7e2e0281a3e54567017893d899b8212331a84c", "stages": [ { "apps": { "restic": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "restic": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "restic": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "restic": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "restic": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "restic": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "restic": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "restic": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "restic": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "restic": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "restic": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "restic": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:48:24.752778027Z", "target": { "apps": [ "restic" ], "id": "restic", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-c5ca1e11", "finished": "2026-10-07T09:14:39.414319798Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:07792c85fd59f0ce2d987aab4f972cee2040b52404ee65e5509ee9212324ce5a", "platform": "linux/amd64", "service": "sabnzbd" } ], "name": "app-sabnzbd", "observed_target_apps": [ "sabnzbd" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-sabnzbd.json", "source_sha256": "a75e3eaad649ee719dd6b12c5f0834fb295b010f0f461e12746b9644d6a7ee99", "stages": [ { "apps": { "sabnzbd": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "sabnzbd": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "sabnzbd": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "sabnzbd": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "sabnzbd": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "sabnzbd": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "sabnzbd": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "sabnzbd": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "sabnzbd": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "sabnzbd": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "sabnzbd": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "sabnzbd": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:14:03.862799455Z", "target": { "apps": [ "sabnzbd" ], "id": "sabnzbd", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-bde6c4b1", "finished": "2026-10-07T08:53:29.320856454Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:f36c27b79fd325d3c5f3dc23ef17a201a2ee03fa61b46f0786736641bf4dcf0f", "platform": "linux/amd64", "service": "scrypted" } ], "name": "app-scrypted", "observed_target_apps": [ "scrypted" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-scrypted.json", "source_sha256": "d52329020b465fbaef4d0eb576d0b1924e005eef4fca9488d35964107947a338", "stages": [ { "apps": { "scrypted": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "scrypted": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "scrypted": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "scrypted": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "scrypted": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "scrypted": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "scrypted": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "scrypted": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "scrypted": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "scrypted": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "scrypted": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "scrypted": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:52:41.845280792Z", "target": { "apps": [ "scrypted" ], "id": "scrypted", "kind": "app" } }, { "binary_sha256": "6d3d92a500bfff1fda316eeeed1b0ac27fe89c108393b33ba5998dae2aa88d68", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-a1e26c4f", "finished": "2026-10-07T14:57:57.198201498Z", "head": "ee7975a8d0946f33f3677119ae657dc89962babe", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 3 }, "images": [ { "id": "sha256:41096ae9913468679bb5e05bbc19f44edcaf0eae45d67fcde224ffdeda9d3a1f", "platform": "linux/amd64", "service": "db" }, { "id": "sha256:0f70e98a63db10e169cff3f0720e3d4b7afd67ab7aec931b9a91113bff510d41", "platform": "linux/amd64", "service": "redis" }, { "id": "sha256:d3b8f07584d05a6cc1443bb86b48f916b452bbd49b0d6fea9f127fcf354bb490", "platform": "linux/amd64", "service": "seafile" } ], "name": "app-seafile", "observed_target_apps": [ "seafile" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-seafile.json", "source_sha256": "796976b2159023092406695ff33184d0743ec72005772361364194817df1a04f", "stages": [ { "apps": { "seafile": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "seafile": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "seafile": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "seafile": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "seafile": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "seafile": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "seafile": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "seafile": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "seafile": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "seafile": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "seafile": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "seafile": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T14:38:59.940606705Z", "target": { "apps": [ "seafile" ], "id": "seafile", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-e4ca40d4", "finished": "2026-10-07T13:06:14.00632012Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:c1673c6c7835e21540cacbf517abb7c4a80d2893b3484bec1b1a11212ac247fb", "platform": "linux/amd64", "service": "seerr" } ], "name": "app-seerr", "observed_target_apps": [ "seerr" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-seerr.json", "source_sha256": "9e292a39dbb90cd71a9ea0400da5252f561e1aa95b7feb5743aab0b3f70fd4c9", "stages": [ { "apps": { "seerr": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "seerr": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "seerr": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "seerr": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "seerr": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "seerr": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "seerr": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "seerr": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "seerr": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "seerr": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "seerr": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "seerr": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T13:04:41.856326423Z", "target": { "apps": [ "seerr" ], "id": "seerr", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-e62577ed", "finished": "2026-10-07T08:52:41.845081195Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:feb8c64211e4a10d9efb8c831d96b1687e674b3d86080a2ec9d150cdfc941293", "platform": "linux/amd64", "service": "slskd" } ], "name": "app-slskd", "observed_target_apps": [ "slskd" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-slskd.json", "source_sha256": "9c3f8bf9cc070fcb10a31d463a7a97c0338056e62105621d49bf9a7eb2f9c5e5", "stages": [ { "apps": { "slskd": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "slskd": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "slskd": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "slskd": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "slskd": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "slskd": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "slskd": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "slskd": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "slskd": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "slskd": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "slskd": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "slskd": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:41:11.921833219Z", "target": { "apps": [ "slskd" ], "id": "slskd", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-6542307d", "finished": "2026-10-07T08:53:24.94320514Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:1a11b87590c6a6ddc63a5a72e6e5a0b545c063b5d5e99af54e458a426f1b7bb8", "platform": "linux/amd64", "service": "sonarr" } ], "name": "app-sonarr", "observed_target_apps": [ "sonarr" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-sonarr.json", "source_sha256": "9c966eeec109374f51c6e9fd32815cb48cce5dcc3188ddd64a1935a062628528", "stages": [ { "apps": { "sonarr": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "sonarr": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "sonarr": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "sonarr": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "sonarr": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "sonarr": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "sonarr": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "sonarr": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "sonarr": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "sonarr": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "sonarr": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "sonarr": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:46:25.636522516Z", "target": { "apps": [ "sonarr" ], "id": "sonarr", "kind": "app" } }, { "binary_sha256": "9c52cfe6dad38f9832a3613ff911f33f505cc0367afb539dbabf3d8498203012", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-97dfc1f7", "finished": "2026-10-07T17:21:33.013837873Z", "head": "72898709c83ad1ca243e7f3ceb7f0d086b61ef6f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:dccd57c84f9c4d46b43017952aeaa0e928e4626f15c5e7d0023a77b72f121df0", "platform": "linux/amd64", "service": "speedtest-tracker" } ], "name": "app-speedtest-tracker", "observed_target_apps": [ "speedtest-tracker" ], "outcome": "failed", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-speedtest-tracker.json", "source_sha256": "e5cf259d8e1d137fc83a4d5b650a366d8423c0f4a883a2f6011525cfb708cfe5", "stages": [ { "apps": { "speedtest-tracker": "fail" }, "failures": [ { "app": "speedtest-tracker", "error": "timed out after 3m0s: HTTP 502; app_key_present=true app_key_file_readable=true pool_identity_includes_root=true php_upstream_listening=false launcher_source_matches=true launcher_source_executable=true launcher_compiled_matches=true launcher_compiled_executable=true php_service_wanted=true php_service_up=false php_config_valid=false php_config_error=config_open php_failure_path=main_config process_uid_zero=true failure_path_readable=true failure_path_writable=true failure_path_owner_current=true; ask the host administrator to review PHP-FPM confinement compatibility: its configuration appears readable but PHP-FPM cannot open it", "hint": "A persistent HTTP 502 means nginx did not obtain a response from its pinned PHP-FPM upstream; verify owned application initialization and PHP-FPM readiness before changing the healthcheck route.", "kind": "step.fail", "step": "ready" } ], "name": "install", "outcome": "fail", "reason": "redacted CLI failure details retained" }, { "apps": { "speedtest-tracker": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "speedtest-tracker": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "speedtest-tracker": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "speedtest-tracker": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "speedtest-tracker": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "speedtest-tracker": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "speedtest-tracker": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "speedtest-tracker": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "speedtest-tracker": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "speedtest-tracker": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "speedtest-tracker": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T17:15:19.147395793Z", "target": { "apps": [ "speedtest-tracker" ], "id": "speedtest-tracker", "kind": "app" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-463eba64", "finished": "2026-10-07T11:59:10.374253242Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:8594300806dba2e587f4e2ad7f2a2c6e6328976907dd9de2bc37965a3d8d8d20", "platform": "linux/amd64", "service": "stalwart-mail" } ], "name": "app-stalwart-mail", "observed_target_apps": [ "stalwart-mail" ], "outcome": "manual", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-stalwart-mail.json", "source_sha256": "93cf803409d1e73c457f46494ac661b1f5dec008e6c1c0b4311c02bb8650453a", "stages": [ { "apps": { "stalwart-mail": "manual" }, "failures": [ { "app": "stalwart-mail", "error": "Stalwart has no headless way to verify its administrator login", "hint": "Open http://127.0.0.1:41141 and complete the first-run wizard for mail.e2e.selfhost.test; set the administrator admin@e2e.selfhost.test with the password from `self-host credentials`. Mail delivery needs separate SMTP ports, DNS, TLS and anti-abuse approval.", "kind": "step.fail", "step": "admin" } ], "name": "install", "outcome": "manual", "reason": "first administrator requires web UI" }, { "apps": { "stalwart-mail": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "stalwart-mail": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "stalwart-mail": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "stalwart-mail": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "stalwart-mail": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "stalwart-mail": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "stalwart-mail": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "stalwart-mail": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "stalwart-mail": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "stalwart-mail": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "stalwart-mail": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T11:55:50.341882174Z", "target": { "apps": [ "stalwart-mail" ], "id": "stalwart-mail", "kind": "app" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-47004ba9", "finished": "2026-10-07T12:30:08.143593247Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:c3a466dd9901ab1b24526225f16bd1dfa9c86c51cd15a7b5dcb509c28fbf9c5e", "platform": "linux/amd64", "service": "stirling-pdf" } ], "name": "app-stirling-pdf", "observed_target_apps": [ "stirling-pdf" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-stirling-pdf.json", "source_sha256": "e0dd63ca8f4a26f3f42c27f6c2613fbc477a22413de363f14edefa6edb9ddf78", "stages": [ { "apps": { "stirling-pdf": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "stirling-pdf": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "stirling-pdf": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "stirling-pdf": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "stirling-pdf": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "stirling-pdf": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "stirling-pdf": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "stirling-pdf": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "stirling-pdf": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "stirling-pdf": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "stirling-pdf": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "stirling-pdf": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T12:27:03.874240594Z", "target": { "apps": [ "stirling-pdf" ], "id": "stirling-pdf", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-298c2d48", "finished": "2026-10-07T08:41:11.921050874Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:d2e46cb6ec1efe23b392e1e8f77ab54c12a2390df64fd0ee4d7328f7b510cb23", "platform": "linux/amd64", "service": "syncthing" } ], "name": "app-syncthing", "observed_target_apps": [ "syncthing" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-syncthing.json", "source_sha256": "901150de86aca028bf44331d326e4976d32f99f1ee3de17feecda35e70a87169", "stages": [ { "apps": { "syncthing": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "syncthing": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "syncthing": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "syncthing": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "syncthing": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "syncthing": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "syncthing": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "syncthing": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "syncthing": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "syncthing": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "syncthing": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "syncthing": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:36:45.792839907Z", "target": { "apps": [ "syncthing" ], "id": "syncthing", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "awaiting-external-credentials", "cleanup": "not-run", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": false, "platforms": [], "service_count": 0 }, "images": [], "name": "app-tailscale", "observed_target_apps": [ "tailscale" ], "outcome": "awaiting-external-credentials", "platform": "", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-tailscale.json", "source_sha256": "639fcba2f32869950613a836966ed6835c3823d1ab0b66c15f5298ef54ab4835", "stages": [ { "apps": { "tailscale": "not-run" }, "name": "install", "outcome": "not-run" }, { "apps": { "tailscale": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "tailscale": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "tailscale": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "tailscale": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "tailscale": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "tailscale": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "tailscale": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "tailscale": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "tailscale": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "tailscale": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "tailscale": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T08:41:11.921331641Z", "target": { "apps": [ "tailscale" ], "id": "tailscale", "kind": "app" } }, { "binary_sha256": "de1dfe7b546d5da19478ff959da258230003d34ec7f1220c331f0e057861650d", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-29f79268", "finished": "2026-10-07T12:17:52.698805418Z", "head": "e4297c75564bc2e27d40e152ec10280593eaf931", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:844e1c4fc2b37449104b89dadb8a6879142d934c36d78c7382f5d59e4768e10d", "platform": "linux/amd64", "service": "tdarr" } ], "name": "app-tdarr", "observed_target_apps": [ "tdarr" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-tdarr.json", "source_sha256": "1b38a0cab965bf352e2348a9eeaf137457cd4116ff79e4e3bc67325927279e73", "stages": [ { "apps": { "tdarr": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "tdarr": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "tdarr": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "tdarr": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "tdarr": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "tdarr": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "tdarr": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "tdarr": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "tdarr": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "tdarr": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "tdarr": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "tdarr": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T12:16:48.333729678Z", "target": { "apps": [ "tdarr" ], "id": "tdarr", "kind": "app" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-eea132dd", "finished": "2026-10-07T12:03:08.186532276Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:3cbdabc2b181b45f36107c74824398d25cba6533dced69d59a9e0c3b30234301", "platform": "linux/amd64", "service": "technitium-dns" } ], "name": "app-technitium-dns", "observed_target_apps": [ "technitium-dns" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-technitium-dns.json", "source_sha256": "e5f54a4dc020bedc14a2dc41f0dfc86baf4e2cf18cc3b8ecafcec1a5894ff80a", "stages": [ { "apps": { "technitium-dns": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "technitium-dns": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "technitium-dns": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "technitium-dns": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "technitium-dns": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "technitium-dns": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "technitium-dns": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "technitium-dns": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "technitium-dns": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "technitium-dns": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "technitium-dns": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "technitium-dns": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T11:59:10.383492069Z", "target": { "apps": [ "technitium-dns" ], "id": "technitium-dns", "kind": "app" } }, { "binary_sha256": "20e3a9745340b39959cc23dea9efe3153101ad756bee014cfd73a2e1500b81e8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-448a2c47", "finished": "2026-10-07T15:54:42.998626427Z", "head": "2d961a5763b551c2af6c28c64aa8e271573e4be2", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 3 }, "images": [ { "id": "sha256:ee26f73f7d687975f938c2d4be31e767438bf8574368ae759b4aea920778802d", "platform": "linux/amd64", "service": "tracearr" }, { "id": "sha256:a4618863a155f0e305224cad44dc50196e3136f9bfb0b13127da82955a093f0c", "platform": "linux/amd64", "service": "timescale" }, { "id": "sha256:15f5a4aad4c3ba34b9874ddbc7f755b469dbd7b8a9e88c12690c52ef6c72465c", "platform": "linux/amd64", "service": "redis" } ], "name": "app-tracearr", "observed_target_apps": [ "tracearr" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-tracearr.json", "source_sha256": "17050658b3114bf8876c251c3bcb50da8d3f007312714a594de316286244fa23", "stages": [ { "apps": { "tracearr": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "tracearr": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "tracearr": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "tracearr": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "tracearr": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "tracearr": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "tracearr": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "tracearr": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "tracearr": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "tracearr": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "tracearr": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "tracearr": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T15:49:39.813155737Z", "target": { "apps": [ "tracearr" ], "id": "tracearr", "kind": "app" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-f629a0f1", "finished": "2026-10-07T11:25:28.753329836Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:b77b108f8e9b258a30f8bbd95d88d484881b3fe1013eb08c33fce0183eab69c7", "platform": "linux/amd64", "service": "traefik" } ], "name": "app-traefik", "observed_target_apps": [ "traefik" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-traefik.json", "source_sha256": "d66ff637536fea96c852639cb1623102773b27ee2625a6dc66c92c7254ac32a7", "stages": [ { "apps": { "traefik": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "traefik": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "traefik": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "traefik": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "traefik": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "traefik": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "traefik": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "traefik": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "traefik": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "traefik": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "traefik": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "traefik": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T11:24:31.952585676Z", "target": { "apps": [ "traefik" ], "id": "traefik", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-85cb602d", "finished": "2026-10-07T08:37:49.644030629Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:d09f1618717cdcb5763ef00a6fddb4e699e17f87de8d8c27058b87a39a44aa63", "platform": "linux/amd64", "service": "transmission" } ], "name": "app-transmission", "observed_target_apps": [ "transmission" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-transmission.json", "source_sha256": "c3f05fde4c3521618c6210e0da57cf4286e97d30cc926d9788c5f899afd75d6d", "stages": [ { "apps": { "transmission": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "transmission": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "transmission": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "transmission": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "transmission": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "transmission": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "transmission": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "transmission": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "transmission": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "transmission": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "transmission": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "transmission": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:37:04.549622951Z", "target": { "apps": [ "transmission" ], "id": "transmission", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-a93a8046", "finished": "2026-10-07T10:11:00.930891016Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 2 }, "images": [ { "id": "sha256:9f376b984d0badac396b5366cc15a3561119bb4b256df14c2b7b984e9ea9c5be", "platform": "linux/amd64", "service": "umami" }, { "id": "sha256:319d040b5d68e3e5b98a238f0b5d375b4b4d9c5b3a6a9afb0308a8bcf0de72a5", "platform": "linux/amd64", "service": "db" } ], "name": "app-umami", "observed_target_apps": [ "umami" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-umami.json", "source_sha256": "b4ee9aea4bea73150a69d5344d63bc15430bcf906389d1352112624a5b2087b0", "stages": [ { "apps": { "umami": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "umami": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "umami": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "umami": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "umami": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "umami": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "umami": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "umami": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "umami": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "umami": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "umami": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "umami": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:37:00.842590018Z", "target": { "apps": [ "umami" ], "id": "umami", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-23fac9fd", "finished": "2026-10-07T08:37:34.607694029Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:eb8e727fd324dd758ec05e61b2267693cbff3d2715c9b0a13055eca619837905", "platform": "linux/amd64", "service": "unbound" } ], "name": "app-unbound", "observed_target_apps": [ "unbound" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-unbound.json", "source_sha256": "c2e51f360ed40558d2b3f94b2398544e05cc645b8732b11c8a011f312ab447e5", "stages": [ { "apps": { "unbound": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "unbound": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "unbound": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "unbound": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "unbound": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "unbound": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "unbound": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "unbound": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "unbound": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "unbound": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "unbound": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "unbound": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:36:54.839838116Z", "target": { "apps": [ "unbound" ], "id": "unbound", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-90ff164e", "finished": "2026-10-07T08:37:04.549348833Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": false, "platforms": [], "service_count": 0 }, "images": [], "name": "app-uptime-kuma", "observed_target_apps": [ "uptime-kuma" ], "outcome": "manual", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-uptime-kuma.json", "source_sha256": "43fa1fafb6bdfea86b63546a83e7b02a492d9a8725843487d5cf8daf5b6011ab", "stages": [ { "apps": { "uptime-kuma": "manual" }, "failures": [ { "app": "uptime-kuma", "error": "this App has no headless way to create its first administrator", "hint": "Open http://127.0.0.1:46303, create the administrator admin with the password shown by `self-host credentials`; Uptime Kuma creates its first administrator in the web UI and has no HTTP setup API; open the App, create the administrator, then rerun setup., then run: self-host setup uptime-kuma", "kind": "step.fail", "step": "admin" } ], "name": "install", "outcome": "manual", "reason": "first administrator requires web UI" }, { "apps": { "uptime-kuma": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "uptime-kuma": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "uptime-kuma": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "uptime-kuma": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "uptime-kuma": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "uptime-kuma": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "uptime-kuma": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "uptime-kuma": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "uptime-kuma": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "uptime-kuma": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "uptime-kuma": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T08:36:51.645428228Z", "target": { "apps": [ "uptime-kuma" ], "id": "uptime-kuma", "kind": "app" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-3a21468b", "finished": "2026-10-07T11:42:24.652017233Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:726dea3590a895d94203fe918b97ae2af8f609f04675590be0070cf64797ba88", "platform": "linux/amd64", "service": "valkey" } ], "name": "app-valkey", "observed_target_apps": [ "valkey" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-valkey.json", "source_sha256": "8b827f05819b60b44f1efe65c19e244ec36450ab30dbd588aaa6874449be7459", "stages": [ { "apps": { "valkey": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "valkey": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "valkey": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "valkey": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "valkey": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "valkey": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "valkey": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "valkey": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "valkey": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "valkey": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "valkey": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "valkey": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T11:37:47.192395275Z", "target": { "apps": [ "valkey" ], "id": "valkey", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-6db04868", "finished": "2026-10-07T08:36:51.645257051Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:b4312ccf9634e3b5e7044a90ca13169c78b2627c648b81092f0523a5d07fd7f6", "platform": "linux/amd64", "service": "vaultwarden" } ], "name": "app-vaultwarden", "observed_target_apps": [ "vaultwarden" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-vaultwarden.json", "source_sha256": "7d14cbcc5c3835878a6d812396ad4f4ab436344da808fd49cd1ff4b7c65be253", "stages": [ { "apps": { "vaultwarden": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "vaultwarden": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "vaultwarden": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "vaultwarden": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "vaultwarden": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "vaultwarden": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "vaultwarden": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "vaultwarden": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "vaultwarden": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "vaultwarden": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "vaultwarden": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "vaultwarden": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:30:37.867843516Z", "target": { "apps": [ "vaultwarden" ], "id": "vaultwarden", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-85ed1f45", "finished": "2026-10-07T09:14:52.500263924Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:92c275b73d880922a265918a7c3c4f2cc0dd87338447ff357809f2d18a64a48e", "platform": "linux/amd64", "service": "vector" } ], "name": "app-vector", "observed_target_apps": [ "vector" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-vector.json", "source_sha256": "5b1bc504b747ddd3daa73adea3916a303ea6c64f0a914167305e5003bce61a65", "stages": [ { "apps": { "vector": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "vector": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "vector": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "vector": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "vector": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "vector": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "vector": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "vector": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "vector": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "vector": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "vector": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "vector": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:14:41.00847242Z", "target": { "apps": [ "vector" ], "id": "vector", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-fd599cd8", "finished": "2026-10-07T08:37:00.842286732Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:dab34bc934dbbecc11e92a4f46f5febfa0b7c1afba23f8b11106ca57d8562606", "platform": "linux/amd64", "service": "victoria-metrics" } ], "name": "app-victoria-metrics", "observed_target_apps": [ "victoria-metrics" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-victoria-metrics.json", "source_sha256": "1c5542986eab53036c072c567ee8e75b74a5f1da2dada264030f25891b4b91f5", "stages": [ { "apps": { "victoria-metrics": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "victoria-metrics": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "victoria-metrics": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "victoria-metrics": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "victoria-metrics": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "victoria-metrics": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "victoria-metrics": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "victoria-metrics": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "victoria-metrics": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "victoria-metrics": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "victoria-metrics": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "victoria-metrics": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:36:40.325176123Z", "target": { "apps": [ "victoria-metrics" ], "id": "victoria-metrics", "kind": "app" } }, { "binary_sha256": "1bf405ac49ab175529cc92ab8083a3762aa8cc84d15e7f6d419490d7c254b3b2", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-01e95de8", "finished": "2026-10-07T16:51:03.039960405Z", "head": "11dbc7e55914c8898353afe51776501a8fb5c579", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 3 }, "images": [ { "id": "sha256:9eff3699b764ca309af57f2da517ea628cbc61b70d72a50f92518d1d276afc3d", "platform": "linux/amd64", "service": "wud" }, { "id": "sha256:2a9ce4a61de215b23367af546f72e2f2a42cd0ba3573408cc0006f7096b4b6f1", "platform": "linux/amd64", "service": "ntfy" }, { "id": "sha256:c83674e1999044d33d751661371b873539f47e5b5c5ca3320c7e0377acca6238", "platform": "linux/amd64", "service": "wud-facade" } ], "name": "app-wud", "observed_target_apps": [ "wud", "ntfy" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; exact application data across isolated restore for ntfy only; other Apps have no workload or database-content assertion; fresh exact owned ntfy container/image inventory through private read-only mTLS Docker facade before backup and after restore; digest/tag registry checks disabled, no registry-update claim", "source_file": "app-wud.json", "source_sha256": "8ea7cb7cf3edb6bf8c841cb2c0f4f2c2f96705df005c8d15c8612a9a96ccd3ad", "stages": [ { "apps": { "ntfy": "pass", "wud": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "ntfy": "pass", "wud": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "ntfy": "pass", "wud": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "ntfy": "pass", "wud": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "ntfy": "pass", "wud": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "ntfy": "pass", "wud": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "payload-seed", "outcome": "pass" }, { "apps": { "ntfy": "pass", "wud": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "ntfy": "pass", "wud": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "ntfy": "pass", "wud": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "ntfy": "pass" }, "name": "payload-restored", "outcome": "pass" }, { "apps": { "ntfy": "pass", "wud": "pass" }, "name": "sentinel", "outcome": "pass" }, { "apps": { "ntfy": "pass", "wud": "pass" }, "name": "owned-inventory", "outcome": "pass" }, { "apps": { "ntfy": "pass", "wud": "pass" }, "name": "restored-owned-inventory", "outcome": "pass" } ], "started": "2026-10-07T16:47:17.523322569Z", "target": { "apps": [ "wud" ], "id": "wud", "kind": "app" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-45739c6b", "finished": "2026-10-07T08:36:40.324882799Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:af2df864e7d5e516724210cde735bba3b15b816944a0b4a6735c24478899a938", "platform": "linux/amd64", "service": "zerotier" } ], "name": "app-zerotier", "observed_target_apps": [ "zerotier" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "app-zerotier.json", "source_sha256": "811cbb6b2215655d133b9c6ffad4578a9389b064af45962c40afd35991192867", "stages": [ { "apps": { "zerotier": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "zerotier": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "zerotier": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "zerotier": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "zerotier": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "zerotier": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "zerotier": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "zerotier": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "zerotier": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "zerotier": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "zerotier": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "zerotier": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:35:54.99194091Z", "target": { "apps": [ "zerotier" ], "id": "zerotier", "kind": "app" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-eddff46d", "finished": "2026-10-07T11:37:47.192232513Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 2 }, "images": [ { "id": "sha256:69688a328f8fafafdce9a23915c19c84bc75a7d883b5dd182b3a6d3d4c11701d", "platform": "linux/amd64", "service": "audiobookshelf" }, { "id": "sha256:082c198a14c9f2c36bb714830e1e3bf5ec785c36f384c6b982cb24c5a88da555", "platform": "linux/amd64", "service": "navidrome" } ], "name": "recipe-audio-library", "observed_target_apps": [ "audiobookshelf", "navidrome" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-audio-library.json", "source_sha256": "93698ed1b8bdcc6457d010b87038c525abdcee81c97c6844dc0eabd96ac8332d", "stages": [ { "apps": { "audiobookshelf": "pass", "navidrome": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass", "navidrome": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass", "navidrome": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass", "navidrome": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass", "navidrome": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass", "navidrome": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "audiobookshelf": "not-run", "navidrome": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "audiobookshelf": "pass", "navidrome": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass", "navidrome": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass", "navidrome": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "audiobookshelf": "not-run", "navidrome": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "audiobookshelf": "pass", "navidrome": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T11:27:56.000163702Z", "target": { "apps": [ "audiobookshelf", "navidrome" ], "id": "audio-library", "kind": "recipe" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-9e6eb377", "finished": "2026-10-07T08:41:19.864872527Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:abdfb98c81b7e48c9b91f0870383f1b2bcdc3137d196dbfb8abe0b1ae713942f", "platform": "linux/amd64", "service": "restic" } ], "name": "recipe-backups", "observed_target_apps": [ "restic" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-backups.json", "source_sha256": "8559ceccbe42dac726763e2ccbedeb375449b2a9fa60e8a96cddb2c5e90e70ef", "stages": [ { "apps": { "restic": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "restic": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "restic": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "restic": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "restic": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "restic": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "restic": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "restic": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "restic": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "restic": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "restic": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "restic": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:36:09.639555364Z", "target": { "apps": [ "restic" ], "id": "backups", "kind": "recipe" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-fff61885", "finished": "2026-10-07T08:47:01.382646801Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 2 }, "images": [ { "id": "sha256:eb8e727fd324dd758ec05e61b2267693cbff3d2715c9b0a13055eca619837905", "platform": "linux/amd64", "service": "unbound" }, { "id": "sha256:a3d077a550b96aea74f4c66577d154a0b9ee1622b9ecd5c536195da54c0eadc4", "platform": "linux/amd64", "service": "adguard-home" } ], "name": "recipe-dns", "observed_target_apps": [ "unbound", "adguard-home" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-dns.json", "source_sha256": "9ce27818a0f437a205c3a11597c94999dcd5994d85e4b80f5b91afdee839db86", "stages": [ { "apps": { "adguard-home": "pass", "unbound": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "adguard-home": "pass", "unbound": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "adguard-home": "pass", "unbound": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "adguard-home": "pass", "unbound": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "adguard-home": "pass", "unbound": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "adguard-home": "pass", "unbound": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "adguard-home": "not-run", "unbound": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "adguard-home": "pass", "unbound": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "adguard-home": "pass", "unbound": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "adguard-home": "pass", "unbound": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "adguard-home": "not-run", "unbound": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "adguard-home": "pass", "unbound": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:30:37.867861312Z", "target": { "apps": [ "unbound", "adguard-home" ], "id": "dns", "kind": "recipe" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-ef23dc45", "finished": "2026-10-07T11:36:44.37103168Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 4 }, "images": [ { "id": "sha256:448f5f79b979cce73b43f094b0e14552b6e82a4b06ae510681e0839754d56215", "platform": "linux/amd64", "service": "paperless-ngx" }, { "id": "sha256:40ab224f823ae96d9d05adfbb31d7068cbf96708be5d8b2691621b703a02de3d", "platform": "linux/amd64", "service": "broker" }, { "id": "sha256:29754c7520f4b9654cf8ff98e19ac73b88e255c3a53f6236ebe9d52249bb6df3", "platform": "linux/amd64", "service": "db" }, { "id": "sha256:c3a466dd9901ab1b24526225f16bd1dfa9c86c51cd15a7b5dcb509c28fbf9c5e", "platform": "linux/amd64", "service": "stirling-pdf" } ], "name": "recipe-documents", "observed_target_apps": [ "paperless-ngx", "stirling-pdf" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-documents.json", "source_sha256": "93b83cf44cb40732bc9a3e2cab481ed3157ca157e2b3644d76f1cad629956ca0", "stages": [ { "apps": { "paperless-ngx": "pass", "stirling-pdf": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "paperless-ngx": "pass", "stirling-pdf": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "paperless-ngx": "pass", "stirling-pdf": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "paperless-ngx": "pass", "stirling-pdf": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "paperless-ngx": "pass", "stirling-pdf": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "paperless-ngx": "pass", "stirling-pdf": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "paperless-ngx": "not-run", "stirling-pdf": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "paperless-ngx": "pass", "stirling-pdf": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "paperless-ngx": "pass", "stirling-pdf": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "paperless-ngx": "pass", "stirling-pdf": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "paperless-ngx": "not-run", "stirling-pdf": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "paperless-ngx": "pass", "stirling-pdf": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T11:27:29.864118721Z", "target": { "apps": [ "paperless-ngx", "stirling-pdf" ], "id": "documents", "kind": "recipe" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "awaiting-external-credentials", "cleanup": "not-run", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": false, "platforms": [], "service_count": 0 }, "images": [], "name": "recipe-download-privacy", "observed_target_apps": [ "gluetun", "qbittorrent" ], "outcome": "awaiting-external-credentials", "platform": "", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-download-privacy.json", "source_sha256": "fe61df273fa5be94386592316742e055fcbd3b58f3d47dd6d678cdc706a524da", "stages": [ { "apps": { "gluetun": "not-run", "qbittorrent": "not-run" }, "name": "install", "outcome": "not-run" }, { "apps": { "gluetun": "not-run", "qbittorrent": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "gluetun": "not-run", "qbittorrent": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "gluetun": "not-run", "qbittorrent": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "gluetun": "not-run", "qbittorrent": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "gluetun": "not-run", "qbittorrent": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "gluetun": "not-run", "qbittorrent": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "gluetun": "not-run", "qbittorrent": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "gluetun": "not-run", "qbittorrent": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "gluetun": "not-run", "qbittorrent": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "gluetun": "not-run", "qbittorrent": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "gluetun": "not-run", "qbittorrent": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T08:30:37.867911182Z", "target": { "apps": [ "gluetun", "qbittorrent" ], "id": "download-privacy", "kind": "recipe" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-996e8c47", "finished": "2026-10-07T09:58:29.831884764Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 4 }, "images": [ { "id": "sha256:deb9a3a5e1952c4bddf4b1afe48fd6040295a6d7c41379ce68c0d067512ca912", "platform": "linux/amd64", "service": "db" }, { "id": "sha256:15f5a4aad4c3ba34b9874ddbc7f755b469dbd7b8a9e88c12690c52ef6c72465c", "platform": "linux/amd64", "service": "redis" }, { "id": "sha256:42aa95fc13ded13dfe60355a3b6ffb83b8d99e360b96b18dd56506d5f12d3467", "platform": "linux/amd64", "service": "cron" }, { "id": "sha256:42aa95fc13ded13dfe60355a3b6ffb83b8d99e360b96b18dd56506d5f12d3467", "platform": "linux/amd64", "service": "nextcloud" } ], "name": "recipe-files", "observed_target_apps": [ "nextcloud" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-files.json", "source_sha256": "9449796b2e8e4e593dca9458f99897ba20b02e493c15058b91741d0f3734a798", "stages": [ { "apps": { "nextcloud": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "nextcloud": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "nextcloud": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "nextcloud": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "nextcloud": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "nextcloud": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "nextcloud": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "nextcloud": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "nextcloud": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "nextcloud": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "nextcloud": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "nextcloud": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:48:24.608675102Z", "target": { "apps": [ "nextcloud" ], "id": "files", "kind": "recipe" } }, { "binary_sha256": "c7fc7b3533de5b5d55bae223476909f7ed3b50a646b52a6cb57993b3a698059e", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-1d614b4a", "finished": "2026-10-07T15:26:33.356038782Z", "head": "d175e030a47f6caa0d454bc88ff14f8dc7cc7fab", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 18 }, "images": [ { "id": "sha256:f1997322e699e5af789d8f522cca90d78ebe87dd3a972b8affda6382faeab2b8", "platform": "linux/amd64", "service": "qbittorrent" }, { "id": "sha256:cc10ec0691c72ac0282a72a61032afa138a3ee4f1c6297c66e60036b737ce4eb", "platform": "linux/amd64", "service": "prowlarr" }, { "id": "sha256:1a11b87590c6a6ddc63a5a72e6e5a0b545c063b5d5e99af54e458a426f1b7bb8", "platform": "linux/amd64", "service": "sonarr" }, { "id": "sha256:34a3a98b3b5d869daa2dd652143155044cb229bda273dae1b6966abcd2e039e8", "platform": "linux/amd64", "service": "radarr" }, { "id": "sha256:fbd967af0187a569b0c18d2db6cb311fdf0df4aeb520102c63f19320aadf964d", "platform": "linux/amd64", "service": "jellyfin" }, { "id": "sha256:c1673c6c7835e21540cacbf517abb7c4a80d2893b3484bec1b1a11212ac247fb", "platform": "linux/amd64", "service": "seerr" }, { "id": "sha256:b1a1cc8cac12989dcfe0d61535afcbbae552f76c3cd38ab66e10c66457720800", "platform": "linux/amd64", "service": "immich" }, { "id": "sha256:c53e2e5c4e9467ae83344fa9e67f2a99014a45f98c4d0b3b2f24afa5f46e97e3", "platform": "linux/amd64", "service": "immich-machine-learning" }, { "id": "sha256:726dea3590a895d94203fe918b97ae2af8f609f04675590be0070cf64797ba88", "platform": "linux/amd64", "service": "immich-redis" }, { "id": "sha256:178719aeb38df6f0ce8edc1d8320008379fcf04eb3444e76419cc98d9861e331", "platform": "linux/amd64", "service": "database" }, { "id": "sha256:42aa95fc13ded13dfe60355a3b6ffb83b8d99e360b96b18dd56506d5f12d3467", "platform": "linux/amd64", "service": "nextcloud" }, { "id": "sha256:deb9a3a5e1952c4bddf4b1afe48fd6040295a6d7c41379ce68c0d067512ca912", "platform": "linux/amd64", "service": "db" }, { "id": "sha256:15f5a4aad4c3ba34b9874ddbc7f755b469dbd7b8a9e88c12690c52ef6c72465c", "platform": "linux/amd64", "service": "nextcloud-redis" }, { "id": "sha256:42aa95fc13ded13dfe60355a3b6ffb83b8d99e360b96b18dd56506d5f12d3467", "platform": "linux/amd64", "service": "cron" }, { "id": "sha256:082c198a14c9f2c36bb714830e1e3bf5ec785c36f384c6b982cb24c5a88da555", "platform": "linux/amd64", "service": "navidrome" }, { "id": "sha256:69688a328f8fafafdce9a23915c19c84bc75a7d883b5dd182b3a6d3d4c11701d", "platform": "linux/amd64", "service": "audiobookshelf" }, { "id": "sha256:b4312ccf9634e3b5e7044a90ca13169c78b2627c648b81092f0523a5d07fd7f6", "platform": "linux/amd64", "service": "vaultwarden" }, { "id": "sha256:5157d3b45f2333749443ae7fb2c655b3ac7954018761c3f01144bd971030968f", "platform": "linux/amd64", "service": "home-assistant" } ], "name": "recipe-full", "observed_target_apps": [ "qbittorrent", "prowlarr", "sonarr", "radarr", "jellyfin", "seerr", "immich", "nextcloud", "navidrome", "audiobookshelf", "vaultwarden", "home-assistant" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-full.json", "source_sha256": "54167e02e0c23b2c5702d75710c1472a7b06eaf5397ab30dd80a3b57052f4b6c", "stages": [ { "apps": { "audiobookshelf": "pass", "home-assistant": "pass", "immich": "pass", "jellyfin": "pass", "navidrome": "pass", "nextcloud": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass", "vaultwarden": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass", "home-assistant": "pass", "immich": "pass", "jellyfin": "pass", "navidrome": "pass", "nextcloud": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass", "vaultwarden": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass", "home-assistant": "pass", "immich": "pass", "jellyfin": "pass", "navidrome": "pass", "nextcloud": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass", "vaultwarden": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass", "home-assistant": "pass", "immich": "pass", "jellyfin": "pass", "navidrome": "pass", "nextcloud": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass", "vaultwarden": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass", "home-assistant": "pass", "immich": "pass", "jellyfin": "pass", "navidrome": "pass", "nextcloud": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass", "vaultwarden": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass", "home-assistant": "pass", "immich": "pass", "jellyfin": "pass", "navidrome": "pass", "nextcloud": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass", "vaultwarden": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "audiobookshelf": "not-run", "home-assistant": "not-run", "immich": "not-run", "jellyfin": "not-run", "navidrome": "not-run", "nextcloud": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run", "vaultwarden": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "audiobookshelf": "pass", "home-assistant": "pass", "immich": "pass", "jellyfin": "pass", "navidrome": "pass", "nextcloud": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass", "vaultwarden": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass", "home-assistant": "pass", "immich": "pass", "jellyfin": "pass", "navidrome": "pass", "nextcloud": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass", "vaultwarden": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "audiobookshelf": "pass", "home-assistant": "pass", "immich": "pass", "jellyfin": "pass", "navidrome": "pass", "nextcloud": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass", "vaultwarden": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "audiobookshelf": "not-run", "home-assistant": "not-run", "immich": "not-run", "jellyfin": "not-run", "navidrome": "not-run", "nextcloud": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run", "vaultwarden": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "audiobookshelf": "pass", "home-assistant": "pass", "immich": "pass", "jellyfin": "pass", "navidrome": "pass", "nextcloud": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass", "vaultwarden": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T15:20:01.177984451Z", "target": { "apps": [ "qbittorrent", "prowlarr", "sonarr", "radarr", "jellyfin", "seerr", "immich", "nextcloud", "navidrome", "audiobookshelf", "vaultwarden", "home-assistant" ], "id": "full", "kind": "recipe" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-2c7bd46f", "finished": "2026-10-07T11:27:55.999971174Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:4c446d8ebadc1756a54cf8c575aa547504a1760abb56738ae30426321e7accaa", "platform": "linux/amd64", "service": "homarr" } ], "name": "recipe-homarr-control-plane", "observed_target_apps": [ "homarr" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-homarr-control-plane.json", "source_sha256": "a9b41d89201e203f8616f00e6171c00713a50a5cc9631bf9e4edc6590844995f", "stages": [ { "apps": { "homarr": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "homarr": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "homarr": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "homarr": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "homarr": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "homarr": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "homarr": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "homarr": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "homarr": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "homarr": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "homarr": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "homarr": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T11:25:23.853550139Z", "target": { "apps": [ "homarr" ], "id": "homarr-control-plane", "kind": "recipe" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-ca812f30", "finished": "2026-10-07T11:30:54.144581639Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 3 }, "images": [ { "id": "sha256:5157d3b45f2333749443ae7fb2c655b3ac7954018761c3f01144bd971030968f", "platform": "linux/amd64", "service": "home-assistant" }, { "id": "sha256:9c9df61df63d0a8a4aabfef98fda647ede418d7c758fab1abada07a32121fe32", "platform": "linux/amd64", "service": "node-red" }, { "id": "sha256:808254590862db209e363fba48a609d954a20ed98cceab51389616a1a3ba7f08", "platform": "linux/amd64", "service": "frigate" } ], "name": "recipe-home-automation", "observed_target_apps": [ "home-assistant", "node-red", "frigate" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-home-automation.json", "source_sha256": "c0aef02c26f1fae7469c75e4bf4b547bb974a4efd35b70eca6162be18cc009c3", "stages": [ { "apps": { "frigate": "pass", "home-assistant": "pass", "node-red": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "frigate": "pass", "home-assistant": "pass", "node-red": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "frigate": "pass", "home-assistant": "pass", "node-red": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "frigate": "pass", "home-assistant": "pass", "node-red": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "frigate": "pass", "home-assistant": "pass", "node-red": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "frigate": "pass", "home-assistant": "pass", "node-red": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "frigate": "not-run", "home-assistant": "not-run", "node-red": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "frigate": "pass", "home-assistant": "pass", "node-red": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "frigate": "pass", "home-assistant": "pass", "node-red": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "frigate": "pass", "home-assistant": "pass", "node-red": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "frigate": "not-run", "home-assistant": "not-run", "node-red": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "frigate": "pass", "home-assistant": "pass", "node-red": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T11:25:11.409235435Z", "target": { "apps": [ "home-assistant", "node-red", "frigate" ], "id": "home-automation", "kind": "recipe" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-5ede0f73", "finished": "2026-10-07T09:21:22.429625055Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 3 }, "images": [ { "id": "sha256:4d056959f70534c6906184776d53ab39135dce95912d666e9dd60ca2d0c4dac1", "platform": "linux/amd64", "service": "ollama" }, { "id": "sha256:8719e348fa22da550b1b4911ce4e3baf9b994614270cc0a99f2db4c2e690b286", "platform": "linux/amd64", "service": "open-webui" }, { "id": "sha256:f14c004ff4a414ba156427046926e5e2db1d1bd769b069509c2bcd3e5bee4f7a", "platform": "linux/amd64", "service": "beszel" } ], "name": "recipe-local-ai", "observed_target_apps": [ "ollama", "open-webui", "beszel" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-local-ai.json", "source_sha256": "337b0ac27c7b13a1358344d1dac831e84bcc9caf3199ab32860d3b7b019c831e", "stages": [ { "apps": { "beszel": "pass", "ollama": "pass", "open-webui": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "beszel": "pass", "ollama": "pass", "open-webui": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "beszel": "pass", "ollama": "pass", "open-webui": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "beszel": "pass", "ollama": "pass", "open-webui": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "beszel": "pass", "ollama": "pass", "open-webui": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "beszel": "pass", "ollama": "pass", "open-webui": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "beszel": "not-run", "ollama": "not-run", "open-webui": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "beszel": "pass", "ollama": "pass", "open-webui": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "beszel": "pass", "ollama": "pass", "open-webui": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "beszel": "pass", "ollama": "pass", "open-webui": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "beszel": "not-run", "ollama": "not-run", "open-webui": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "beszel": "pass", "ollama": "pass", "open-webui": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T09:14:39.414590666Z", "target": { "apps": [ "ollama", "open-webui", "beszel" ], "id": "local-ai", "kind": "recipe" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-471ff9bc", "finished": "2026-10-07T11:27:29.863773023Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 6 }, "images": [ { "id": "sha256:f1997322e699e5af789d8f522cca90d78ebe87dd3a972b8affda6382faeab2b8", "platform": "linux/amd64", "service": "qbittorrent" }, { "id": "sha256:1a11b87590c6a6ddc63a5a72e6e5a0b545c063b5d5e99af54e458a426f1b7bb8", "platform": "linux/amd64", "service": "sonarr" }, { "id": "sha256:34a3a98b3b5d869daa2dd652143155044cb229bda273dae1b6966abcd2e039e8", "platform": "linux/amd64", "service": "radarr" }, { "id": "sha256:cc10ec0691c72ac0282a72a61032afa138a3ee4f1c6297c66e60036b737ce4eb", "platform": "linux/amd64", "service": "prowlarr" }, { "id": "sha256:fbd967af0187a569b0c18d2db6cb311fdf0df4aeb520102c63f19320aadf964d", "platform": "linux/amd64", "service": "jellyfin" }, { "id": "sha256:c1673c6c7835e21540cacbf517abb7c4a80d2893b3484bec1b1a11212ac247fb", "platform": "linux/amd64", "service": "seerr" } ], "name": "recipe-media", "observed_target_apps": [ "qbittorrent", "sonarr", "radarr", "prowlarr", "jellyfin", "seerr" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-media.json", "source_sha256": "26230e25fdd7c0a4d753290ed72c25c6585d291da8db73ac615fe7f338557a6b", "stages": [ { "apps": { "jellyfin": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "jellyfin": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "jellyfin": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "jellyfin": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "jellyfin": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "jellyfin": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "jellyfin": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "jellyfin": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "jellyfin": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "jellyfin": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "jellyfin": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "jellyfin": "pass", "prowlarr": "pass", "qbittorrent": "pass", "radarr": "pass", "seerr": "pass", "sonarr": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T11:24:43.230441643Z", "target": { "apps": [ "qbittorrent", "sonarr", "radarr", "prowlarr", "jellyfin", "seerr" ], "id": "media", "kind": "recipe" } }, { "binary_sha256": "fd7ffb47a78afb5adf0b3469c9f0c2020a0e972940685f6b4ef6f943cd8f39b8", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-f4df9dac", "finished": "2026-10-07T11:24:31.946645068Z", "head": "b17d9de4a75ab6bb895725d5be35898adbf2d5eb", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 5 }, "images": [ { "id": "sha256:66416213a3b43651d3521acc3987277b4f97ad0ae29acc581f910ef9bd3959bd", "platform": "linux/amd64", "service": "prometheus" }, { "id": "sha256:6ea410afab1b8e0d360d87bd3c3ea27ab1b2af0027badb6f18758c5a6efc3a17", "platform": "linux/amd64", "service": "loki" }, { "id": "sha256:f14c004ff4a414ba156427046926e5e2db1d1bd769b069509c2bcd3e5bee4f7a", "platform": "linux/amd64", "service": "beszel" }, { "id": "sha256:836213aba0d589c3a4977c218a25b27ef3f5a6f7c2cac6883636afca1afcda46", "platform": "linux/amd64", "service": "uptime-kuma" }, { "id": "sha256:747aaf291145d9a84a547f1fa4edf48697371db6ab386b81c95ad3a725c20f17", "platform": "linux/amd64", "service": "grafana" } ], "name": "recipe-monitoring", "observed_target_apps": [ "prometheus", "loki", "beszel", "uptime-kuma", "grafana" ], "outcome": "manual", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-monitoring.json", "source_sha256": "4e63c08328fac14abf44ab4fb5ec5bfa55c54021dc7212d3b4ffe1800c3831f1", "stages": [ { "apps": { "beszel": "not-run", "grafana": "not-run", "loki": "not-run", "prometheus": "not-run", "uptime-kuma": "manual" }, "failures": [ { "app": "uptime-kuma", "error": "this App has no headless way to create its first administrator", "hint": "Open http://127.0.0.1:35459, create the administrator admin with the password shown by `self-host credentials`; Uptime Kuma creates its first administrator in the web UI and has no HTTP setup API; open the App, create the administrator, then rerun setup., then run: self-host setup uptime-kuma", "kind": "step.fail", "step": "admin" } ], "name": "install", "outcome": "manual", "reason": "first administrator requires web UI" }, { "apps": { "beszel": "not-run", "grafana": "not-run", "loki": "not-run", "prometheus": "not-run", "uptime-kuma": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "beszel": "not-run", "grafana": "not-run", "loki": "not-run", "prometheus": "not-run", "uptime-kuma": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "beszel": "not-run", "grafana": "not-run", "loki": "not-run", "prometheus": "not-run", "uptime-kuma": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "beszel": "not-run", "grafana": "not-run", "loki": "not-run", "prometheus": "not-run", "uptime-kuma": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "beszel": "not-run", "grafana": "not-run", "loki": "not-run", "prometheus": "not-run", "uptime-kuma": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "beszel": "not-run", "grafana": "not-run", "loki": "not-run", "prometheus": "not-run", "uptime-kuma": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "beszel": "not-run", "grafana": "not-run", "loki": "not-run", "prometheus": "not-run", "uptime-kuma": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "beszel": "not-run", "grafana": "not-run", "loki": "not-run", "prometheus": "not-run", "uptime-kuma": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "beszel": "not-run", "grafana": "not-run", "loki": "not-run", "prometheus": "not-run", "uptime-kuma": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "beszel": "not-run", "grafana": "not-run", "loki": "not-run", "prometheus": "not-run", "uptime-kuma": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "beszel": "not-run", "grafana": "not-run", "loki": "not-run", "prometheus": "not-run", "uptime-kuma": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T11:23:50.89334947Z", "target": { "apps": [ "prometheus", "loki", "beszel", "uptime-kuma", "grafana" ], "id": "monitoring", "kind": "recipe" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-a5556472", "finished": "2026-10-07T09:59:45.860816677Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:fbd967af0187a569b0c18d2db6cb311fdf0df4aeb520102c63f19320aadf964d", "platform": "linux/amd64", "service": "jellyfin" } ], "name": "recipe-owned-video-library", "observed_target_apps": [ "jellyfin" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-owned-video-library.json", "source_sha256": "6b996ec8c6b23340b09c8c5e6a79f9b6c7176f50fa63089f3712d33b0b4ca356", "stages": [ { "apps": { "jellyfin": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "jellyfin": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "jellyfin": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "jellyfin": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "jellyfin": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "jellyfin": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "jellyfin": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "jellyfin": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "jellyfin": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "jellyfin": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "jellyfin": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "jellyfin": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:51:45.62356634Z", "target": { "apps": [ "jellyfin" ], "id": "owned-video-library", "kind": "recipe" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-6a35a086", "finished": "2026-10-07T09:00:55.85753388Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:b4312ccf9634e3b5e7044a90ca13169c78b2627c648b81092f0523a5d07fd7f6", "platform": "linux/amd64", "service": "vaultwarden" } ], "name": "recipe-passwords", "observed_target_apps": [ "vaultwarden" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-passwords.json", "source_sha256": "f13cd0c46d9b0815cef37f1e7541a981871ed72375def5c9f3928d0cbf3951fc", "stages": [ { "apps": { "vaultwarden": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "vaultwarden": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "vaultwarden": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "vaultwarden": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "vaultwarden": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "vaultwarden": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "vaultwarden": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "vaultwarden": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "vaultwarden": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "vaultwarden": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "vaultwarden": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "vaultwarden": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:50:39.396407319Z", "target": { "apps": [ "vaultwarden" ], "id": "passwords", "kind": "recipe" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-bf1d95f8", "finished": "2026-10-07T10:21:37.131142255Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 1 }, "images": [ { "id": "sha256:cfacf9b19b21268807a6e6c6289f7a27dfc5adfc2539aa35a15ed38cfba236ab", "platform": "linux/amd64", "service": "actual-budget" } ], "name": "recipe-personal-finance", "observed_target_apps": [ "actual-budget" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-personal-finance.json", "source_sha256": "ce5b0f4a7854610648037f17c57c787f7ea4fdc11b96d3c0b553b01766705c9f", "stages": [ { "apps": { "actual-budget": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "actual-budget": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "actual-budget": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "actual-budget": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "actual-budget": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "actual-budget": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "actual-budget": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "actual-budget": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "actual-budget": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "actual-budget": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "actual-budget": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "actual-budget": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:34:14.223467335Z", "target": { "apps": [ "actual-budget" ], "id": "personal-finance", "kind": "recipe" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "awaiting-external-credentials", "cleanup": "not-run", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": false, "platforms": [], "service_count": 0 }, "images": [], "name": "recipe-personal-media", "observed_target_apps": [ "qbittorrent", "gluetun", "sonarr", "radarr", "prowlarr", "bazarr", "jellyfin", "seerr" ], "outcome": "awaiting-external-credentials", "platform": "", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-personal-media.json", "source_sha256": "d724b6631b78a0a3df04bd3237cbbd2b46688462d3fbcfc81abb2322627f6e82", "stages": [ { "apps": { "bazarr": "not-run", "gluetun": "not-run", "jellyfin": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run" }, "name": "install", "outcome": "not-run" }, { "apps": { "bazarr": "not-run", "gluetun": "not-run", "jellyfin": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "bazarr": "not-run", "gluetun": "not-run", "jellyfin": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "bazarr": "not-run", "gluetun": "not-run", "jellyfin": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "bazarr": "not-run", "gluetun": "not-run", "jellyfin": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "bazarr": "not-run", "gluetun": "not-run", "jellyfin": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "bazarr": "not-run", "gluetun": "not-run", "jellyfin": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "bazarr": "not-run", "gluetun": "not-run", "jellyfin": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "bazarr": "not-run", "gluetun": "not-run", "jellyfin": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "bazarr": "not-run", "gluetun": "not-run", "jellyfin": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "bazarr": "not-run", "gluetun": "not-run", "jellyfin": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "bazarr": "not-run", "gluetun": "not-run", "jellyfin": "not-run", "prowlarr": "not-run", "qbittorrent": "not-run", "radarr": "not-run", "seerr": "not-run", "sonarr": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T08:35:54.99150152Z", "target": { "apps": [ "qbittorrent", "gluetun", "sonarr", "radarr", "prowlarr", "bazarr", "jellyfin", "seerr" ], "id": "personal-media", "kind": "recipe" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-3189d89d", "finished": "2026-10-07T09:54:27.955338081Z", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 4 }, "images": [ { "id": "sha256:b1a1cc8cac12989dcfe0d61535afcbbae552f76c3cd38ab66e10c66457720800", "platform": "linux/amd64", "service": "immich" }, { "id": "sha256:c53e2e5c4e9467ae83344fa9e67f2a99014a45f98c4d0b3b2f24afa5f46e97e3", "platform": "linux/amd64", "service": "immich-machine-learning" }, { "id": "sha256:726dea3590a895d94203fe918b97ae2af8f609f04675590be0070cf64797ba88", "platform": "linux/amd64", "service": "redis" }, { "id": "sha256:178719aeb38df6f0ce8edc1d8320008379fcf04eb3444e76419cc98d9861e331", "platform": "linux/amd64", "service": "database" } ], "name": "recipe-photos", "observed_target_apps": [ "immich" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-photos.json", "source_sha256": "5cd93ffad782e7bb4a49e69ef4774924b6293e5fe93fea5a935c4efa30aa5e07", "stages": [ { "apps": { "immich": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "immich": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "immich": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "immich": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "immich": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "immich": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "immich": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "immich": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "immich": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "immich": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "immich": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "immich": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T08:35:40.525921926Z", "target": { "apps": [ "immich" ], "id": "photos", "kind": "recipe" } }, { "binary_sha256": "c7fc7b3533de5b5d55bae223476909f7ed3b50a646b52a6cb57993b3a698059e", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-9242bc32", "finished": "2026-10-07T15:38:35.054991999Z", "head": "d175e030a47f6caa0d454bc88ff14f8dc7cc7fab", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 8 }, "images": [ { "id": "sha256:b1a1cc8cac12989dcfe0d61535afcbbae552f76c3cd38ab66e10c66457720800", "platform": "linux/amd64", "service": "immich" }, { "id": "sha256:c53e2e5c4e9467ae83344fa9e67f2a99014a45f98c4d0b3b2f24afa5f46e97e3", "platform": "linux/amd64", "service": "immich-machine-learning" }, { "id": "sha256:726dea3590a895d94203fe918b97ae2af8f609f04675590be0070cf64797ba88", "platform": "linux/amd64", "service": "immich-redis" }, { "id": "sha256:178719aeb38df6f0ce8edc1d8320008379fcf04eb3444e76419cc98d9861e331", "platform": "linux/amd64", "service": "database" }, { "id": "sha256:42aa95fc13ded13dfe60355a3b6ffb83b8d99e360b96b18dd56506d5f12d3467", "platform": "linux/amd64", "service": "nextcloud" }, { "id": "sha256:deb9a3a5e1952c4bddf4b1afe48fd6040295a6d7c41379ce68c0d067512ca912", "platform": "linux/amd64", "service": "db" }, { "id": "sha256:15f5a4aad4c3ba34b9874ddbc7f755b469dbd7b8a9e88c12690c52ef6c72465c", "platform": "linux/amd64", "service": "nextcloud-redis" }, { "id": "sha256:42aa95fc13ded13dfe60355a3b6ffb83b8d99e360b96b18dd56506d5f12d3467", "platform": "linux/amd64", "service": "cron" } ], "name": "recipe-photos-and-files", "observed_target_apps": [ "immich", "nextcloud" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-photos-and-files.json", "source_sha256": "74b9c41fc5f192940461d247bdaa62d9ea6c52bba4abf120ce98aba41c04efa4", "stages": [ { "apps": { "immich": "pass", "nextcloud": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "immich": "pass", "nextcloud": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "immich": "pass", "nextcloud": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "immich": "pass", "nextcloud": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "immich": "pass", "nextcloud": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "immich": "pass", "nextcloud": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "immich": "not-run", "nextcloud": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "immich": "pass", "nextcloud": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "immich": "pass", "nextcloud": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "immich": "pass", "nextcloud": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "immich": "not-run", "nextcloud": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "immich": "pass", "nextcloud": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T15:20:01.178706597Z", "target": { "apps": [ "immich", "nextcloud" ], "id": "photos-and-files", "kind": "recipe" } }, { "binary_sha256": "926e1c165d148ebdbe03885248d15caebf6b6be476e2c0c3ce0c8853bef97fbd", "classification": "runnable", "cleanup": "pass", "compose_project": "selfhost-e2e-e353bb01", "finished": "2026-10-07T13:23:36.042433159Z", "head": "f06f1b262c4deaca1a2d538e86bd9843ed434f2f", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": true, "platforms": [ "linux/amd64" ], "service_count": 3 }, "images": [ { "id": "sha256:992eb34c6118138585e0d651b256e0085d1b6aaecf39dc16df5ba50cfbe1609e", "platform": "linux/amd64", "service": "redis" }, { "id": "sha256:0f146d72f36fa6ff9b12147b72719ca80df208342ecd1b757dd43f93b8a332e9", "platform": "linux/amd64", "service": "docmost" }, { "id": "sha256:29754c7520f4b9654cf8ff98e19ac73b88e255c3a53f6236ebe9d52249bb6df3", "platform": "linux/amd64", "service": "db" } ], "name": "recipe-private-notes", "observed_target_apps": [ "docmost" ], "outcome": "pass", "platform": "linux/amd64", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-private-notes.json", "source_sha256": "128b293225c7fcbe9b120f4fe5ac20f5b52d83674a3428a6d1cd5e536789006d", "stages": [ { "apps": { "docmost": "pass" }, "name": "install", "outcome": "pass" }, { "apps": { "docmost": "pass" }, "name": "setup-check", "outcome": "pass" }, { "apps": { "docmost": "pass" }, "name": "idempotency", "outcome": "pass" }, { "apps": { "docmost": "pass" }, "name": "restart", "outcome": "pass" }, { "apps": { "docmost": "pass" }, "name": "recovery", "outcome": "pass" }, { "apps": { "docmost": "pass" }, "name": "update", "outcome": "pass" }, { "apps": { "docmost": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "docmost": "pass" }, "name": "backup", "outcome": "pass" }, { "apps": { "docmost": "pass" }, "name": "isolated-restore", "outcome": "pass" }, { "apps": { "docmost": "pass" }, "name": "restored-check", "outcome": "pass" }, { "apps": { "docmost": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "docmost": "pass" }, "name": "sentinel", "outcome": "pass" } ], "started": "2026-10-07T13:16:19.290111313Z", "target": { "apps": [ "docmost" ], "id": "private-notes", "kind": "recipe" } }, { "binary_sha256": "4d5c0aab60e18d4b2671eef3079b1abdc28f11f5520285301cd89caf03dc1cdc", "classification": "awaiting-external-credentials", "cleanup": "not-run", "head": "d724ebd4fb800a9f6cbb970e591c3692bbd817cc", "image_proof": { "coverage": "as-recorded; expected-service completeness is a harness obligation", "immutable_ids_recorded": false, "platforms": [], "service_count": 0 }, "images": [], "name": "recipe-remote-access", "observed_target_apps": [ "tailscale", "cloudflare-tunnel", "caddy" ], "outcome": "awaiting-external-credentials", "platform": "", "probe": "App Setup/Check and filesystem backup sentinel; no workload or database-content assertion", "source_file": "recipe-remote-access.json", "source_sha256": "215ecf48a4d6028588eff55f6c2c47d8efe520cd6f21983d0cfe968bd1a1cbb9", "stages": [ { "apps": { "caddy": "not-run", "cloudflare-tunnel": "not-run", "tailscale": "not-run" }, "name": "install", "outcome": "not-run" }, { "apps": { "caddy": "not-run", "cloudflare-tunnel": "not-run", "tailscale": "not-run" }, "name": "setup-check", "outcome": "not-run" }, { "apps": { "caddy": "not-run", "cloudflare-tunnel": "not-run", "tailscale": "not-run" }, "name": "idempotency", "outcome": "not-run" }, { "apps": { "caddy": "not-run", "cloudflare-tunnel": "not-run", "tailscale": "not-run" }, "name": "restart", "outcome": "not-run" }, { "apps": { "caddy": "not-run", "cloudflare-tunnel": "not-run", "tailscale": "not-run" }, "name": "recovery", "outcome": "not-run" }, { "apps": { "caddy": "not-run", "cloudflare-tunnel": "not-run", "tailscale": "not-run" }, "name": "update", "outcome": "not-run" }, { "apps": { "caddy": "not-run", "cloudflare-tunnel": "not-run", "tailscale": "not-run" }, "name": "payload-seed", "outcome": "not-run", "recorded": false }, { "apps": { "caddy": "not-run", "cloudflare-tunnel": "not-run", "tailscale": "not-run" }, "name": "backup", "outcome": "not-run" }, { "apps": { "caddy": "not-run", "cloudflare-tunnel": "not-run", "tailscale": "not-run" }, "name": "isolated-restore", "outcome": "not-run" }, { "apps": { "caddy": "not-run", "cloudflare-tunnel": "not-run", "tailscale": "not-run" }, "name": "restored-check", "outcome": "not-run" }, { "apps": { "caddy": "not-run", "cloudflare-tunnel": "not-run", "tailscale": "not-run" }, "name": "payload-restored", "outcome": "not-run", "recorded": false }, { "apps": { "caddy": "not-run", "cloudflare-tunnel": "not-run", "tailscale": "not-run" }, "name": "sentinel", "outcome": "not-run" } ], "started": "2026-10-07T08:34:42.656006679Z", "target": { "apps": [ "tailscale", "cloudflare-tunnel", "caddy" ], "id": "remote-access", "kind": "recipe" } } ] }