{
  "schema_version": 1,
  "channel": "homelab-runtime",
  "command_id": "GRAM1-SITE-AVAX-LINK-V20-ATOMIC-PRODUCTION-MUTATION-20260731T220900Z",
  "status": "OK",
  "rc": 0,
  "host": "pve01",
  "mode": "change",
  "component": "gram1-site-avax-link-v20-atomic-production-mutation",
  "started_at_utc": "2026-07-31T22:18:24Z",
  "finished_at_utc": "2026-07-31T22:18:48Z",
  "reference_register_checked": true,
  "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
  "error_register_checked": true,
  "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83",
  "command_sha256": "465e234302202d5a832e014aec226c4494aabd30acc600c920775941c143f1e5",
  "duplicate_failed_command_blocked": false,
  "block_reason": null,
  "execution_started": true,
  "change_declared": true,
  "result_contract_valid": true,
  "result_contract_status": "OK",
  "result_contract_error": null,
  "command_rc": 0,
  "changes_made": true,
  "rollback_started": false,
  "rollback_restored": null,
  "mutation_outcome": "MUTATED",
  "sanitized": true,
  "secrets_included": false,
  "private_addresses_included": false,
  "raw_evidence_retained_locally": true,
  "raw_evidence_sha256": "97f9ed6bf5fd41340f0ac1660c8149cb500e569abda070ad88da07da6d3983a2",
  "sanitized_output_sha256": "97f9ed6bf5fd41340f0ac1660c8149cb500e569abda070ad88da07da6d3983a2",
  "output_truncated_in_json": false,
  "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
  "output": "HOMELAB_RESULT_CONTRACT={\"changes_made\":true,\"command_id\":\"GRAM1-SITE-AVAX-LINK-V20-ATOMIC-PRODUCTION-MUTATION-20260731T220900Z\",\"mutation_outcome\":\"MUTATED\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"changes_made\":true,\"command_id\":\"GRAM1-SITE-AVAX-LINK-V20-ATOMIC-PRODUCTION-MUTATION-20260731T220900Z\",\"control_plane_error\":null,\"gitea_changed\":false,\"mutation_outcome\":\"MUTATED\",\"previous_capsule_sha256\":\"81c62833d4f97fcc0bd44b3b250f66570f8676813b2122a587f63ee6c2492fde\",\"previous_command_id\":\"GRAM1-SITE-AVAX-LINK-V19-COMPACT-EXACT-MUTATION-PLAN-20260731T214500Z\",\"previous_output_sha256\":\"7fc7bae7e40690157caeec045fa657f44d1c5cedd22f4060067ea3cce02703bf\",\"previous_runner_json_sha256\":\"f7e495f9a5de1c03a733a74d9c7972ae914eb12baf418426729cc49c3c9dbf6e\",\"previous_runner_text_sha256\":\"c26fe54741d027a1edc83aa7d3a2dc837d63a293b9be6e7f15fcf2f7352da977\",\"production_site_changed\":true,\"rc\":0,\"remote_result\":{\"backup_path\":\"/var/lib/homelab-change-rollback/GRAM1-SITE-AVAX-LINK-V20-ATOMIC-PRODUCTION-MUTATION-20260731T220900Z\",\"changed_paths\":[\"app.py\",\"worker.py\",\"templates/index.html\"],\"changes_made\":true,\"command_id\":\"GRAM1-SITE-AVAX-LINK-V20-ATOMIC-PRODUCTION-MUTATION-20260731T220900Z\",\"compose_services\":[\"web\",\"worker\"],\"control_plane_error\":null,\"deployment\":{\"container_hash_checks\":[{\"marker\":\"WEB_APP_HASH_OK\",\"path\":\"app.py\",\"service\":\"web\",\"sha256\":\"ec226952cdb7fb58edbfc0173af47f4d901f3206e15169df12294983731fbc20\"},{\"marker\":\"WORKER_HASH_OK\",\"path\":\"worker.py\",\"service\":\"worker\",\"sha256\":\"4a7b16ece826fe2d938f392db6b0b5ca028dcb6ff02fdff4ab431f114edf0e5c\"},{\"marker\":\"FRONTEND_HASH_OK\",\"path\":\"templates/index.html\",\"service\":\"web\",\"sha256\":\"4bff850e158898f09cbcaea38d39126c4de702f701a4f9c034d9e3a72002ff8b\"}],\"services_running\":[\"web\",\"worker\"]},\"duration_seconds\":23.823,\"gitea_changed\":false,\"idempotent\":false,\"installed_hashes\":{\"app.py\":\"ec226952cdb7fb58edbfc0173af47f4d901f3206e15169df12294983731fbc20\",\"templates/index.html\":\"4bff850e158898f09cbcaea38d39126c4de702f701a4f9c034d9e3a72002ff8b\",\"worker.py\":\"4a7b16ece826fe2d938f392db6b0b5ca028dcb6ff02fdff4ab431f114edf0e5c\"},\"mutation_outcome\":\"MUTATED\",\"old_hashes\":{\"app.py\":\"44df2b25183b7c5d87ff1516ec2d9cd1d169acde3031f7c2aa1fc4e0c7813cd2\",\"templates/index.html\":\"e497a36d8549654c6d451360a11a2ad714e19c23e6d384330a5436f7d32267cb\",\"worker.py\":\"174a14b86014535980d200a76d0057110c7af102c66f16c2e21fc3e74bb2e49e\"},\"production_site_changed\":true,\"rc\":0,\"rollback_restored\":null,\"rollback_started\":false,\"schema\":1,\"status\":\"OK\",\"target_hashes\":{\"app.py\":\"ec226952cdb7fb58edbfc0173af47f4d901f3206e15169df12294983731fbc20\",\"templates/index.html\":\"4bff850e158898f09cbcaea38d39126c4de702f701a4f9c034d9e3a72002ff8b\",\"worker.py\":\"4a7b16ece826fe2d938f392db6b0b5ca028dcb6ff02fdff4ab431f114edf0e5c\"}},\"rollback_restored\":null,\"rollback_started\":false,\"schema\":1,\"selected_method\":\"ALIAS_PINNED_AS_DEBIAN\",\"ssh_method_probes\":[{\"duration_seconds\":0.125,\"identity_count\":null,\"identity_sudo_read_write_ok\":true,\"name\":\"ALIAS_PINNED_AS_DEBIAN\",\"rc\":0,\"stderr\":\"\"},{\"duration_seconds\":0.139,\"identity_count\":2,\"identity_sudo_read_write_ok\":true,\"name\":\"DIRECT_PINNED_AS_DEBIAN_NO_PROXY\",\"rc\":0,\"stderr\":\"\"}],\"status\":\"OK\"}\n"
}
