{
  "schema_version": 1,
  "channel": "homelab-runtime",
  "command_id": "RUN7P1-IMMUTABLE-RESULT-PLAN-20260726T154634Z",
  "status": "FAIL",
  "rc": 2,
  "host": "pve01",
  "mode": "verify",
  "component": "evidence-delivery",
  "started_at_utc": "2026-07-26T15:54:51Z",
  "finished_at_utc": "2026-07-26T15:54:52Z",
  "reference_register_checked": true,
  "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
  "error_register_checked": true,
  "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83",
  "command_sha256": "317b507e77cebd2da1bfa6929e277df3bc09ecfd115d5b15d32b9705445d03ee",
  "duplicate_failed_command_blocked": false,
  "block_reason": null,
  "execution_started": true,
  "changes_made": false,
  "sanitized": true,
  "secrets_included": false,
  "private_addresses_included": false,
  "raw_evidence_retained_locally": true,
  "raw_evidence_sha256": "3e4c291c2612a19e2f249cc30480639c87a6d497643f07022f10dcec1ebe9800",
  "sanitized_output_sha256": "3e4c291c2612a19e2f249cc30480639c87a6d497643f07022f10dcec1ebe9800",
  "output_truncated_in_json": false,
  "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
  "output": "RUN7P1_IMMUTABLE_RESULT_PLAN=BLOCKED\nPLAN_SHA256=40dee3f5a655b78fb38477b146c651f0c9a46a56111211876f56df41538c74ca\n{\"PLAN_SHA256\":\"40dee3f5a655b78fb38477b146c651f0c9a46a56111211876f56df41538c74ca\",\"acceptance_requires_separate_capsule\":true,\"anti_regression\":[\"AR-P1-001 stale latest cannot satisfy runner\",\"AR-P1-002 exact command_id and command_sha256 required\",\"AR-P1-003 exact command TXT SHA required\",\"AR-P1-004 context-auto cannot overwrite by-command result\",\"AR-P1-005 same ID same payload is idempotent\",\"AR-P1-006 same ID different payload is rejected\",\"AR-P1-007 JSON is readiness marker published after TXT\",\"AR-P1-008 sanitizer does not cross line boundaries\",\"AR-P1-009 public payload remains sanitized and address-free\",\"AR-P1-010 temporary files are cleaned\"],\"backup\":{\"core_apps\":\"/var/lib/homelab-runtime-receive/backups/homelab-runtime-receive.25b1d3ddb71ea76fa8a067c4ab97e5f2a17c6dd7657440e74517647ab25ae72c\",\"exact_sha_required\":true,\"pve01\":\"/var/lib/homelab-chat-run/state/backups/homelab-chat-run.2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\"},\"blockers\":[\"REMOTE_RECEIVER_SHA_DISAGREEMENT\",\"REMOTE_SOURCE_LOCK_MISMATCH:receiver\",\"TRANSFORMATION_FAILED:RuntimeError\"],\"cleanup\":[\"remove all remote /tmp rehearsal and apply staging files\",\"retain verified rollback copies until phase seal\",\"do not remove historical runtime results\"],\"component\":\"evidence-delivery\",\"created_at_utc\":\"2026-07-26T15:54:52.541976+00:00\",\"declared_change_flags_for_apply\":{\"backup\":false,\"cluster\":false,\"gitea\":true,\"production\":true},\"exact_diff\":[\"add immutable .well-known/by-command/<COMMAND_ID>.json and .txt\",\"write TXT first and JSON last as readiness marker\",\"idempotent same COMMAND_ID with identical JSON/TXT\",\"fail closed on same COMMAND_ID with differing JSON/TXT\",\"prevent Git history overwrite on COMMAND_ID conflict\",\"retain latest.json/latest.txt as non-authoritative convenience\",\"runner publishes own immutable TXT URL\",\"runner polls exact immutable JSON and TXT\",\"runner verifies command_id, command_sha256 and sanitized flags\",\"fix multiline sanitizer false-positive with horizontal whitespace\",\"add persistent --self-test anti-regression entrypoints\"],\"gates\":{\"G0_context_lock\":{\"source_evidence_sha256\":\"844bd57846acb2dcb939392fd22eeae005b348bd346f3aace0bc219f6bafa38a\",\"source_preplan_basis_sha256\":\"6ae59d4b7877710758ecb8e315a8322e71c475b6dcda680864eff8c1f7e7e0d9\",\"status\":\"FAIL\"},\"G1_read_only_discovery\":{\"source_hashes\":{\"adapter\":\"f2410cd328e2837b99e8ce4a28e25cb031a6bdd596d0286ac77a1822ef1cecd0\",\"adapter_unit\":\"74d0f37878652ed9d46b53ae8556bbb30ebd683741f293c3f59b3527876ed2d7\",\"portal\":\"8056faf4ef6348f0b06319ad3c49fbfeeadf25b6370f857ea19569bd27652ee2\",\"portal_unit\":\"8453eab30f5c3ccd285fc9f70fff18f564809bb27f7bf84f51f2ba593aa85263\",\"receiver\":\"25b1d3ddb71ea76fa8a067c4ab97e5f2a17c6dd7657440e74517647ab25ae72c\",\"runner\":\"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\"},\"status\":\"PASS\",\"units\":{\"adapter\":{\"active\":\"active\",\"enabled\":\"enabled\",\"group\":\"homelab-command-portal\",\"restarts\":\"0\",\"user\":\"root\"},\"portal\":{\"active\":\"active\",\"enabled\":\"enabled\",\"group\":\"homelab-command-portal\",\"restarts\":\"0\",\"user\":\"homelab-command-portal\"}}},\"G2_static_validation\":{\"status\":\"FAIL\",\"target_hashes\":{}},\"G3_identity_equivalent\":{\"current_receiver_sudo_contract_rc\":64,\"remote_install_available\":true,\"remote_mkdir_available\":true,\"status\":\"PASS\"},\"G4_integration_rehearsal\":{\"production_mutation\":false,\"results\":{\"remote_cleanup_rc\":0},\"status\":\"PASS\"}},\"kind\":\"homelab-change-plan\",\"mutation_journal\":{\"core_apps\":\"/var/lib/homelab-runtime-receive/RUN7P1-immutable-result-mutation.json\",\"pve01\":\"/var/lib/homelab-chat-run/state/RUN7P1-immutable-result-mutation.json\"},\"plan_id\":\"RUN7P1-IMMUTABLE-PUBLIC-RESULT\",\"postconditions\":[\"installed files match planned target SHA-256\",\"installed runner --self-test returns PASS\",\"installed receiver --self-test via sudo returns PASS\",\"APPLY itself completes through backward-compatible latest channel\",\"separate acceptance capsule is fetched by exact by-command URL\",\"context-auto overwrite of latest does not change acceptance result\",\"same-ID same-content receiver test is idempotent\",\"same-ID different-content receiver test fails closed\"],\"preconditions\":[\"all source SHA-256 values exactly match this plan\",\"Portal and Adapter remain active/enabled with NRestarts=0\",\"no unresolved mutating failure or rollback\",\"exact PLAN_SHA256 is embedded in APPLY capsule\",\"APPLY capsule source evidence SHA matches RUN7P1 evidence\"],\"risk\":{\"backup_subsystem_touched\":false,\"level\":\"MEDIUM\",\"reason\":\"changes public sanitized-result transport on two hosts\",\"second_runner_created\":false},\"rollback\":[\"capture diagnostics before rollback\",\"record file SHA/mode/owner, runner and receiver self-tests\",\"record exact by-command HTTP status and response SHA\",\"restore both exact source files from verified backups\",\"verify restored SHA/mode/owner\",\"do not restart unrelated services\"],\"schema\":1,\"scope\":[{\"group\":\"root\",\"host\":\"pve01\",\"mode\":\"0750\",\"owner\":\"root\",\"path\":\"/usr/local/sbin/homelab-chat-run\",\"source_sha256\":\"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\",\"target_sha256\":null},{\"group\":\"root\",\"host\":\"core-apps\",\"mode\":\"0750\",\"owner\":\"root\",\"path\":\"/usr/local/sbin/homelab-runtime-receive\",\"source_sha256\":\"25b1d3ddb71ea76fa8a067c4ab97e5f2a17c6dd7657440e74517647ab25ae72c\",\"target_sha256\":null}],\"service_identity_test\":{\"proposed_receiver_self_test\":\"PASS\",\"proposed_runner_self_test\":\"PASS\",\"receiver_current_sudo_usage_rc\":64},\"source\":{\"live_source_hashes\":{\"core_apps_receiver\":\"25b1d3ddb71ea76fa8a067c4ab97e5f2a17c6dd7657440e74517647ab25ae72c\",\"pve01_runner\":\"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\"},\"run7a_capsule_sha256\":\"b45c17b1b5f4ac00868c84dd66ef8b59a6033b92c9886f7f3e6c5b48ea5da5a8\",\"run7a_evidence_sha256\":\"844bd57846acb2dcb939392fd22eeae005b348bd346f3aace0bc219f6bafa38a\",\"run7a_preplan_basis_sha256\":\"6ae59d4b7877710758ecb8e315a8322e71c475b6dcda680864eff8c1f7e7e0d9\",\"run7a_runner_json_sha256\":\"7c77a1aa9f229e7d67ab7a74769bcf4dee22b2fbd474c9c909fb796123b5a7bb\"},\"target\":{\"core_apps_receiver_sha256\":null,\"pve01_runner_sha256\":null},\"warnings\":[]}\n"
}
