{
  "schema_version": 1,
  "channel": "homelab-runtime",
  "command_id": "HBARHUB-LOCAL-CORE-APPS-DEPLOYMENT-PLAN-FIX1-20260729T184000Z",
  "status": "OK",
  "rc": 0,
  "host": "pve01",
  "mode": "verify",
  "component": "hbarhub-local-core-apps-deployment-plan-fix1",
  "started_at_utc": "2026-07-29T18:40:39Z",
  "finished_at_utc": "2026-07-29T18:40:43Z",
  "reference_register_checked": true,
  "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
  "error_register_checked": true,
  "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83",
  "command_sha256": "0c6e3565861761f2ea5b21d9fe7746dd5c4f0c9590c981fccfb43c21f2d86a54",
  "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": "a2d2ab009f2f10f2379393a5fe42848ee84c87ceae0e607823eb670bf5ffc344",
  "sanitized_output_sha256": "a2d2ab009f2f10f2379393a5fe42848ee84c87ceae0e607823eb670bf5ffc344",
  "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\":\"HBARHUB-LOCAL-CORE-APPS-DEPLOYMENT-PLAN-FIX1-20260729T184000Z\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"PLAN_SHA256\":\"17843c5ce02793b59f5536bda2aa5f9f5dc1a4790e45c082690397f3786b4a02\",\"approved_deployment\":{\"compose_project\":\"hbarhub\",\"health\":[\"/health/live\",\"/health/ready\"],\"path\":\"/opt/stacks/hbarhub\",\"port\":8040,\"public_proxy\":false,\"role\":\"core-apps\",\"rollback\":[\"docker compose down --volumes --remove-orphans\",\"remove only hbarhub project images\",\"remove /opt/stacks/hbarhub because precondition requires it absent\"],\"secrets\":\"generated locally on core-apps with restrictive permissions\",\"services\":[\"web\",\"worker\",\"scheduler\",\"postgres\",\"redis\"],\"source_archive_sha256\":\"25fb04b8dd74d4da2f50ba3aef76680b1813799a61fbd26c55bfcc1466cf82ac\",\"source_commit\":\"57d2704dc4dc4f1e00c3e1bda67fc0bc2bef6957\",\"source_delivery\":\"verified archive from pve01; no Git credentials on core-apps\"},\"changes_made\":false,\"checks\":{\"compose_config_valid\":true,\"core_hostname\":true,\"disk_free_minimum\":true,\"docker_compose_available\":true,\"docker_server_available\":true,\"docker_tags_available\":true,\"memory_available_minimum\":false,\"no_hbarhub_containers\":true,\"no_hbarhub_images\":true,\"no_hbarhub_networks\":true,\"no_hbarhub_volumes\":true,\"no_mutation\":true,\"opt_stacks_exists\":true,\"parent_apply_verified\":true,\"port_8040_free\":true,\"pypi_versions_available\":true,\"repository_clean\":true,\"repository_exact\":true,\"source_archive_verified\":true,\"target_path_absent\":true},\"command_id\":\"HBARHUB-LOCAL-CORE-APPS-DEPLOYMENT-PLAN-FIX1-20260729T184000Z\",\"core_apps\":{\"capacity\":{\"disk_free_bytes\":76823736320,\"disk_total_bytes\":126605975552,\"memory\":{\"MemAvailable\":2814652416,\"MemTotal\":10435301376}},\"compose_config\":{\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"},\"docker\":{\"compose_available\":true,\"hbarhub_containers\":[],\"hbarhub_images\":[],\"hbarhub_networks\":[],\"hbarhub_volumes\":[],\"present\":true,\"server_available\":true},\"hostname_matches\":true,\"image_endpoints\":{\"postgres:17-alpine\":{\"body_sha256\":\"10c54d313aa9cb5af571a2c27ee6deb7bf715b8be5ffd87bd431461167419f03\",\"body_within_limit\":true,\"http\":200},\"python:3.13-slim-bookworm\":{\"body_sha256\":\"56f02eef1a26a4e8576a57d9510e81a4821825e0782d51308533c5ef3e1bdada\",\"body_within_limit\":true,\"http\":200},\"redis:8-alpine\":{\"body_sha256\":\"90d3a87a7ad4fdde399c2bf2493cb6b9d87f4e89105a0349727a16f32a364112\",\"body_within_limit\":true,\"http\":200}},\"opt_stacks\":{\"bytes\":4096,\"exists\":true,\"gid\":0,\"is_dir\":true,\"is_file\":false,\"is_symlink\":false,\"mode\":\"0755\",\"path\":\"/opt/stacks\",\"uid\":0},\"package_endpoints\":{\"Django==6.0.7\":{\"body_sha256\":\"e804a8fe17787c0f90428c1c95670a8b398f75fbc3f97d501178b77510a336af\",\"body_within_limit\":true,\"http\":200},\"celery==5.6.3\":{\"body_sha256\":\"04ef2f4a42d608d03a783e5041c670f63088f484fe3e0b9db13123d5202e7c47\",\"body_within_limit\":true,\"http\":200},\"gunicorn==26.0.0\":{\"body_sha256\":\"9e6d4748de32f8b78925b5caf4e3103c0aa2b3288caca0bc12e1a6cecc158a71\",\"body_within_limit\":true,\"http\":200},\"psycopg==3.3.4\":{\"body_sha256\":\"63d5a4c0721d2ba1ce82e3a460ff276d6d8f049a3f4d51b300500e32c9f354d2\",\"body_within_limit\":true,\"http\":200},\"redis==8.0.1\":{\"body_sha256\":\"399ed4ded863c4baab5e66085220c58e9facd20a1eb3394db77a35694a9d8332\",\"body_within_limit\":true,\"http\":200}},\"port_8040_free\":true,\"role\":\"core-apps\",\"schema\":1,\"target\":{\"exists\":false,\"is_dir\":false,\"is_file\":false,\"is_symlink\":false,\"path\":\"/opt/stacks/hbarhub\"},\"temporary_archive_sha256\":\"25fb04b8dd74d4da2f50ba3aef76680b1813799a61fbd26c55bfcc1466cf82ac\"},\"gate\":\"LOCAL_CORE_APPS_DEPLOYMENT_BLOCKED\",\"image_checks\":{\"postgres:17-alpine\":true,\"python:3.13-slim-bookworm\":true,\"redis:8-alpine\":true},\"mutation_outcome\":\"NO_MUTATION\",\"next_stage\":\"TARGETED_LOCAL_DEPLOYMENT_DIAGNOSTIC\",\"package_checks\":{\"Django==6.0.7\":true,\"celery==5.6.3\":true,\"gunicorn==26.0.0\":true,\"psycopg==3.3.4\":true,\"redis==8.0.1\":true},\"parent_evidence\":{\"changeset_sha256\":\"54a29d95776878c40f8996f83857e9c25a84e8ccbb6b0b6151fc4e51660e1d24\",\"new_main\":\"57d2704dc4dc4f1e00c3e1bda67fc0bc2bef6957\",\"pull_request_number\":3,\"result_sequence\":\"34604e5a2cff63e718f0c6927c253fa632be2f9f2c81af0bb76cd2dd5acfa7a8\",\"result_sha256\":\"3c6b2ffd466db964d7728474323b23f599ea933c54c6996e2c8d8ccbc268ae6a\"},\"private_addresses_included\":false,\"repository\":{\"archive_bytes\":10084,\"archive_sha256\":\"25fb04b8dd74d4da2f50ba3aef76680b1813799a61fbd26c55bfcc1466cf82ac\",\"branch_names\":[\"main\"],\"compose_services\":[\"postgres\",\"redis\",\"scheduler\",\"web\",\"worker\"],\"crypto_assets\":[\"HBAR\",\"POL\",\"AVAX\",\"LINK\"],\"file_count\":27,\"main_head\":\"57d2704dc4dc4f1e00c3e1bda67fc0bc2bef6957\",\"open_pull_request_count\":0,\"parent_head\":\"42a020bf825bb6bb499fca8e438ccb462e6984f0\",\"python_compile\":true,\"requirements\":[\"Django==6.0.7\",\"celery==5.6.3\",\"gunicorn==26.0.0\",\"psycopg[binary]==3.3.4\",\"redis==8.0.1\"],\"tracked_asset_count\":18},\"rollback_restored\":null,\"rollback_started\":false,\"sanitized\":true,\"schema\":1,\"secrets_included\":false,\"status\":\"PLAN_COMPLETE\"}\n"
}
