{
  "schema_version": 1,
  "channel": "homelab-runtime",
  "command_id": "GRAM1-SITE-CHARTS-V30-EXACT-RUNTIME-CSP-DIAG-20260801T110100Z",
  "status": "OK",
  "rc": 0,
  "host": "pve01",
  "mode": "verify",
  "component": "gram1-charts-v30-exact-diag",
  "started_at_utc": "2026-08-01T11:28:00Z",
  "finished_at_utc": "2026-08-01T11:28:01Z",
  "reference_register_checked": true,
  "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
  "error_register_checked": true,
  "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83",
  "command_sha256": "26ed1acad28bcf5098089d123d50297984db72a087cd07fbb028a052dfc0c00e",
  "duplicate_failed_command_blocked": false,
  "block_reason": null,
  "execution_started": true,
  "change_declared": false,
  "result_contract_valid": true,
  "result_contract_status": null,
  "result_contract_error": null,
  "command_rc": 0,
  "changes_made": false,
  "rollback_started": false,
  "rollback_restored": null,
  "mutation_outcome": "NO_MUTATION",
  "sanitized": true,
  "secrets_included": false,
  "private_addresses_included": false,
  "raw_evidence_retained_locally": true,
  "raw_evidence_sha256": "2eba4dc33959e5eb7e87a96288bcb0d5e63cd8afedcffeca4fb5c4a1adab9637",
  "sanitized_output_sha256": "71c1b653c6d50af9725e22c169d2d56fb52e5b91a213efc2f2bd26100807ce8a",
  "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\":false,\"command_id\":\"GRAM1-SITE-CHARTS-V30-EXACT-RUNTIME-CSP-DIAG-20260801T110100Z\",\"mutation_outcome\":\"NO_MUTATION\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"changes_made\":false,\"command_id\":\"GRAM1-SITE-CHARTS-V30-EXACT-RUNTIME-CSP-DIAG-20260801T110100Z\",\"control_plane_error\":null,\"gitea_changed\":false,\"mutation_outcome\":\"NO_MUTATION\",\"pinned_host_key_aliases\":[\"[PRIVATE_IP]\"],\"production_site_changed\":false,\"rc\":0,\"remote_result\":{\"changes_made\":false,\"command_id\":\"GRAM1-SITE-CHARTS-V30-EXACT-RUNTIME-CSP-DIAG-20260801T110100Z\",\"compose_services\":[\"worker\",\"web\"],\"control_plane_error\":null,\"csp_policy\":{\"directives\":{},\"raw\":\"\",\"script_tokens\":[],\"style_tokens\":[],\"v29_inline_script_allowed\":true,\"v29_inline_style_allowed\":true},\"current_template\":{\"bytes\":36137,\"inline_script_tags\":5,\"inline_script_with_nonce\":0,\"inline_style_tags\":4,\"inline_style_with_nonce\":0,\"label\":\"current_v29_target\",\"library_scripts\":[{\"async\":false,\"defer\":false,\"id\":null,\"nonce\":null,\"offset\":24639,\"order\":3,\"src\":\"/vendor/lightweight-charts.js\"}],\"markers\":{\"chart_id\":1,\"no_data\":2,\"tvCharts\":4,\"v29_script\":2,\"v29_style\":1},\"nonce_expressions\":[],\"service_worker_refs\":0,\"sha256\":\"e9e723c9b916383ce10dffe8f8bbdb4049b78d89c5b139e2de5ed82194a27be4\",\"v29_script\":{\"count\":1,\"href\":null,\"nonce\":null,\"offset\":24693,\"opening_tag\":\"<script id=\\\"LOCAL_TRADINGVIEW_CHARTS_V3_STATIC_COMPAT_ACCORDION\\\">\",\"src\":null},\"v29_style\":{\"count\":1,\"href\":null,\"nonce\":null,\"offset\":23729,\"opening_tag\":\"<style id=\\\"TRADINGVIEW_ACCORDION_STYLE_V3\\\">\",\"src\":null}},\"diagnosis\":[\"FLASK_RUNTIME_INTROSPECTION_UNAVAILABLE\"],\"duration_seconds\":0.736,\"exact_state\":{\"backup_metadata_sha256\":\"062c8b3b06560553b71e2b831a1a462292f5dfb448a6d45e895d3bdaede07469\",\"compose_sha256\":\"6d344e46b3de94ad86131a914df2ff3ff25e9d82f7ce0557cbffa468b8cdc1b8\",\"current_hashes\":{\"app.py\":\"ec226952cdb7fb58edbfc0173af47f4d901f3206e15169df12294983731fbc20\",\"templates/index.html\":\"e9e723c9b916383ce10dffe8f8bbdb4049b78d89c5b139e2de5ed82194a27be4\",\"worker.py\":\"4a7b16ece826fe2d938f392db6b0b5ca028dcb6ff02fdff4ab431f114edf0e5c\"},\"old_hashes\":{\"app.py\":\"ec226952cdb7fb58edbfc0173af47f4d901f3206e15169df12294983731fbc20\",\"templates/index.html\":\"db9a1605bd37fca7d6ff651921dd3bc0ccac991f2e8f221179c4dddc3b2c3536\",\"worker.py\":\"4a7b16ece826fe2d938f392db6b0b5ca028dcb6ff02fdff4ab431f114edf0e5c\"},\"target_hashes\":{\"app.py\":\"ec226952cdb7fb58edbfc0173af47f4d901f3206e15169df12294983731fbc20\",\"templates/index.html\":\"e9e723c9b916383ce10dffe8f8bbdb4049b78d89c5b139e2de5ed82194a27be4\",\"worker.py\":\"4a7b16ece826fe2d938f392db6b0b5ca028dcb6ff02fdff4ab431f114edf0e5c\"}},\"flask_runtime\":{\"available\":false,\"error\":\"Flask application object not found\",\"error_type\":\"RuntimeError\",\"traceback\":\"Traceback (most recent call last):\\n  File \\\"<string>\\\", line 76, in <module>\\nRuntimeError: Flask application object not found\\n\"},\"gitea_changed\":false,\"javascript_syntax\":{\"available\":false},\"mutation_outcome\":\"NO_MUTATION\",\"pre_v29_template\":{\"bytes\":32738,\"inline_script_tags\":5,\"inline_script_with_nonce\":0,\"inline_style_tags\":4,\"inline_style_with_nonce\":0,\"label\":\"pre_v29_backup\",\"library_scripts\":[{\"async\":false,\"defer\":false,\"id\":null,\"nonce\":null,\"offset\":24595,\"order\":3,\"src\":\"/vendor/lightweight-charts.js\"}],\"markers\":{\"chart_id\":1,\"no_data\":3,\"tvCharts\":3,\"v29_script\":0,\"v29_style\":0},\"nonce_expressions\":[],\"service_worker_refs\":0,\"sha256\":\"db9a1605bd37fca7d6ff651921dd3bc0ccac991f2e8f221179c4dddc3b2c3536\",\"v29_script\":{\"count\":0},\"v29_style\":{\"count\":0}},\"previous_capsule_sha256\":\"9ec17fec41c314ec7ce4589cbc76b1cbe6e9a2c832473a036249dfd295524b7d\",\"previous_command_id\":\"GRAM1-SITE-CHARTS-STATIC-COMPAT-ACCORDION-V29-ATOMIC-FIX-20260801T105500Z\",\"production_site_changed\":false,\"rc\":0,\"rollback_restored\":null,\"rollback_started\":false,\"schema\":1,\"status\":\"OK\"},\"rollback_restored\":null,\"rollback_started\":false,\"schema\":1,\"selected_method\":\"ALIAS_PINNED_AS_DEBIAN\",\"ssh_method_probes\":[{\"duration_seconds\":0.12,\"identity_count\":null,\"identity_sudo_read_ok\":true,\"name\":\"ALIAS_PINNED_AS_DEBIAN\",\"rc\":0,\"stderr\":\"\"},{\"duration_seconds\":0.124,\"identity_count\":2,\"identity_sudo_read_ok\":true,\"name\":\"DIRECT_PINNED_AS_DEBIAN_NO_PROXY\",\"rc\":0,\"stderr\":\"\"}],\"status\":\"OK\"}\n"
}
