{
  "schema_version": 1,
  "channel": "homelab-runtime",
  "command_id": "GRAM1-SITE-USDC-V50-READ-ONLY-DIRECT-QGA-SOURCE-DIAG-20260802T223529Z",
  "status": "OK",
  "rc": 0,
  "host": "pve01",
  "mode": "verify",
  "component": "gram1-site-usdc-read-only-direct-qga-source-diag",
  "started_at_utc": "2026-08-02T22:40:22Z",
  "finished_at_utc": "2026-08-02T22:40:22Z",
  "reference_register_checked": true,
  "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
  "error_register_checked": true,
  "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83",
  "command_sha256": "3f8cc02deb5c35249b401acfaefa0cee6e5e542ca5f32624ea159b9c0f77bf15",
  "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": "d0630af716a246d0621840fdab6bcbd7cfc6e5a03c4accc464b597d374b9ace9",
  "sanitized_output_sha256": "d0630af716a246d0621840fdab6bcbd7cfc6e5a03c4accc464b597d374b9ace9",
  "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-USDC-V50-READ-ONLY-DIRECT-QGA-SOURCE-DIAG-20260802T223529Z\",\"mutation_outcome\":\"NO_MUTATION\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"changes_made\":false,\"command_id\":\"GRAM1-SITE-USDC-V50-READ-ONLY-DIRECT-QGA-SOURCE-DIAG-20260802T223529Z\",\"commands\":[{\"duration_ms\":32,\"rc\":0,\"stage\":\"compose-config-services\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":11,\"stdout_sha256\":\"eef9f2ae690badd252b6332992b53a6658f483425b294de9826500063f55de9f\"},{\"duration_ms\":7,\"rc\":0,\"stage\":\"inspect-crypto-portfolio\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":12670,\"stdout_sha256\":\"f47f2e23fd203fc060cf3bdda469c6bb73ec47f9f6dfcbcd0f799ac7050b53c0\"},{\"duration_ms\":7,\"rc\":0,\"stage\":\"inspect-crypto-portfolio-worker\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":10792,\"stdout_sha256\":\"ff1345dd2cf83f368e02dff11123f1e10dc6212d8caf30cb8ecdf3979694d428\"},{\"duration_ms\":118,\"rc\":0,\"stage\":\"source-hashes-crypto-portfolio\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":262,\"stdout_sha256\":\"ada0aa78b4a0c5b6b44e7d076e7307359471e2c06065f5fa85e8e9fe549f5bf3\"},{\"duration_ms\":74,\"rc\":0,\"stage\":\"source-hashes-crypto-portfolio-worker\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":86,\"stdout_sha256\":\"572f389d914e2ebb95fb6d85531efd753e4e9de54d1ac2e866c4e26605624de5\"}],\"control_plane_error\":null,\"duration_ms\":293,\"error\":null,\"error_type\":null,\"mutation_outcome\":\"NO_MUTATION\",\"observations\":{\"compose\":{\"available\":true,\"rc\":0,\"services\":[\"web\",\"worker\"]},\"containers\":{\"crypto-portfolio\":{\"app_bind_mounted\":false,\"available\":true,\"image_id\":\"sha256:2a9339d475b2f4a01f060162f48a23b9590eb3ba4b036b46aad72adad540c40d\",\"image_ref\":\"crypto-portfolio-web\",\"restart_count\":0,\"running\":true},\"crypto-portfolio-worker\":{\"app_bind_mounted\":false,\"available\":true,\"image_id\":\"sha256:7ff5fdff7ab373e6b22dfa1a677b000d83ff9d021e4464915078e506781fd0ed\",\"image_ref\":\"crypto-portfolio-worker\",\"restart_count\":0,\"running\":true}},\"database\":{\"amounts_read\":false,\"available\":true,\"holding_rows\":4,\"quick_check\":\"ok\",\"usdc_holding_rows\":0},\"expected_v46_baseline_sha256\":{\"app.py\":\"3b55b78c015173eea66b67afb8fb9371f0d7d2e38a7679d4c433749f4c07301d\",\"compose.yaml\":\"6d344e46b3de94ad86131a914df2ff3ff25e9d82f7ce0557cbffa468b8cdc1b8\",\"templates/index.html\":\"3752846b9a2d47a2c82377d222e5f8603f78101eda11422bc8634567e26209d2\",\"worker.py\":\"4a7b16ece826fe2d938f392db6b0b5ca028dcb6ff02fdff4ab431f114edf0e5c\"},\"expected_v46_target_sha256\":{\"app.py\":\"8a81d075297856c2dd843da34e6dd1cb6baa1d9c36d24dbee6865e02aa625e25\",\"compose.yaml\":\"6d344e46b3de94ad86131a914df2ff3ff25e9d82f7ce0557cbffa468b8cdc1b8\",\"templates/index.html\":\"6ce3a065ba677a74e4b73db15613a1114a1167dc9af40bc76a29ced556aabe36\",\"worker.py\":\"4a7b16ece826fe2d938f392db6b0b5ca028dcb6ff02fdff4ab431f114edf0e5c\"},\"runtime_source\":{\"web\":{\"available\":true,\"rc\":0,\"sha256\":{\"/app/app.py\":\"3b55b78c015173eea66b67afb8fb9371f0d7d2e38a7679d4c433749f4c07301d\",\"/app/templates/index.html\":\"3752846b9a2d47a2c82377d222e5f8603f78101eda11422bc8634567e26209d2\",\"/app/worker.py\":\"4a7b16ece826fe2d938f392db6b0b5ca028dcb6ff02fdff4ab431f114edf0e5c\"}},\"worker\":{\"available\":true,\"rc\":0,\"sha256\":{\"/app/worker.py\":\"4a7b16ece826fe2d938f392db6b0b5ca028dcb6ff02fdff4ab431f114edf0e5c\"}}},\"source_classification\":\"V46_BASELINE\",\"source_files\":{\"app.py\":{\"bytes\":32843,\"exists\":true,\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0640\",\"path\":\"/opt/stacks/crypto-portfolio/app.py\",\"sha256\":\"3b55b78c015173eea66b67afb8fb9371f0d7d2e38a7679d4c433749f4c07301d\",\"uid\":0},\"compose.yaml\":{\"bytes\":1233,\"exists\":true,\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0644\",\"path\":\"/opt/stacks/crypto-portfolio/compose.yaml\",\"sha256\":\"6d344e46b3de94ad86131a914df2ff3ff25e9d82f7ce0557cbffa468b8cdc1b8\",\"uid\":0},\"templates/index.html\":{\"bytes\":38036,\"exists\":true,\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0644\",\"path\":\"/opt/stacks/crypto-portfolio/templates/index.html\",\"sha256\":\"3752846b9a2d47a2c82377d222e5f8603f78101eda11422bc8634567e26209d2\",\"uid\":0},\"worker.py\":{\"bytes\":10300,\"exists\":true,\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0640\",\"path\":\"/opt/stacks/crypto-portfolio/worker.py\",\"sha256\":\"4a7b16ece826fe2d938f392db6b0b5ca028dcb6ff02fdff4ab431f114edf0e5c\",\"uid\":0}},\"source_semantics\":{\"alerts_still_use_shared_set\":true,\"alerts_use_shared_ids\":true,\"app_readable\":true,\"fixed_usdc_price_present\":false,\"holding_accepts_portfolio_set\":false,\"portfolio_coins_declaration_count\":0,\"portfolio_market_declaration_count\":0,\"positions_use_portfolio_ids\":false,\"positions_use_shared_ids\":true,\"template_readable\":true,\"top_cards_use_shared_ids\":true},\"target_identity\":{\"docker_state\":{\"bytes\":30721152,\"exists\":true,\"gid\":0,\"is_dir\":false,\"is_file\":true,\"is_symlink\":false,\"mode\":\"0755\",\"path\":\"/usr/bin/docker\",\"sha256\":\"dcd656567975bc326ab55e8a043989a60ca336638689d9faa10ef15614709b71\",\"uid\":0},\"euid\":0,\"observed_hostname\":\"core-apps\",\"root_state\":{\"bytes\":4096,\"exists\":true,\"gid\":0,\"is_dir\":true,\"is_file\":false,\"is_symlink\":false,\"mode\":\"0750\",\"path\":\"/opt/stacks/crypto-portfolio\",\"resolved_path\":\"/opt/stacks/crypto-portfolio\",\"uid\":0},\"transport\":\"QEMU_GUEST_AGENT\",\"v46_expected_hostname\":\"core-apps\",\"v46_hostname_match\":true,\"vmid\":170}},\"private_addresses_included\":false,\"rc\":0,\"read_only\":true,\"rollback_restored\":null,\"rollback_started\":false,\"sanitized\":true,\"schema\":1,\"secrets_included\":false,\"status\":\"OK\"}\n"
}
