From 70c7b82c69269e89f67db8b38dec2de227730186 Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Mon, 3 Aug 2026 09:53:57 +0000 Subject: [PATCH] runtime: publish HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z --- ...LOYMENT-PLAN-FIX2-V6-20260803T094841Z.json | 38 +++++++++++++++++++ ...PLOYMENT-PLAN-FIX2-V6-20260803T094841Z.txt | 34 +++++++++++++++++ runtime/latest.json | 22 +++++------ runtime/latest.txt | 20 +++++----- 4 files changed, 93 insertions(+), 21 deletions(-) create mode 100644 runtime/history/HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z.json create mode 100644 runtime/history/HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z.txt diff --git a/runtime/history/HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z.json b/runtime/history/HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z.json new file mode 100644 index 0000000..0c854c2 --- /dev/null +++ b/runtime/history/HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "verify", + "component": "hbarhub-standard-local-deployment-plan-fix2-v6", + "started_at_utc": "2026-08-03T09:53:56Z", + "finished_at_utc": "2026-08-03T09:53:56Z", + "reference_register_checked": true, + "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", + "error_register_checked": true, + "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", + "command_sha256": "cda1dbd047b226d23bcd8c6e8c02f46be9957c2f777aab7b559e582a794b8d0b", + "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": "8a879b5f406593f076d9eaff004256d4df2e02ac75e5088cee94d964a841fcfc", + "sanitized_output_sha256": "8a879b5f406593f076d9eaff004256d4df2e02ac75e5088cee94d964a841fcfc", + "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-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z\",\"mutation_outcome\":\"NO_MUTATION\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"PLAN_SHA256\":\"7c5e7eed51a9c2de733631c21063714423ac3f4a692549958d4b4807140b6684\",\"candidate_plan_sha256\":\"7c5e7eed51a9c2de733631c21063714423ac3f4a692549958d4b4807140b6684\",\"capacity\":{\"disk\":{\"available_bytes\":76465217536,\"gate\":true,\"required_available_bytes\":10737418240,\"total_bytes\":126605975552},\"memory\":{\"available_bytes\":2744274944,\"required_available_bytes\":2147483648,\"standard_gate\":true,\"swap_free_bytes\":6714781696,\"swap_total_bytes\":8589930496,\"total_bytes\":10435301376}},\"changes_made\":false,\"checks\":{\"archive_bytes_exact\":true,\"archive_sha256_exact\":true,\"compose_config_valid\":true,\"compose_env_file_handling_valid\":true,\"compose_services_exact\":true,\"compose_source_exact\":true,\"compose_v4_unsupported_flag_removed\":true,\"core_hostname\":true,\"disk_gate\":true,\"docker_available\":true,\"no_hbarhub_containers\":true,\"no_hbarhub_images\":true,\"no_hbarhub_networks\":true,\"no_hbarhub_volumes\":true,\"only_main_branch\":true,\"port_8040_free\":true,\"python_syntax_valid\":true,\"read_only\":true,\"requirements_exact\":true,\"safe_manifest_exact\":true,\"source_available\":true,\"source_commit_exact\":true,\"source_tree_exact\":true,\"standard_memory_gate\":true,\"target_env_absent\":true,\"target_path_absent\":true,\"tracked_file_count_exact\":true,\"tracked_total_bytes_exact\":true,\"tree_listing_exact\":true,\"tree_path_set_exact\":true},\"command_audit\":[{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-candidate-1-is-bare\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":5,\"stdout_sha256\":\"a17fcf0a2f50e2d495e4f90ce263410edc183add6c62699a2facbccf60410f74\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-main-head\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":41,\"stdout_sha256\":\"dc0f064e529250268d3ff6232078a19aca8a12b3abc0291e79756ffde77303ed\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-main-tree\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":41,\"stdout_sha256\":\"59f30ea418f3e638f5c0294f375feeda787f7da9acc07ac67f8276032be811a2\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-branches\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":5,\"stdout_sha256\":\"6403203dd5a0867eb14d104ee8a73730bd72dd9ad92e78d996a6dba0a5dcfc01\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-main-ls-tree\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":2095,\"stdout_sha256\":\"8119f9a0c680eca043b5d648b8bf90567c90e5a6ae4f503779f4e8b66fcaa954\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":1,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-main-archive\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":9760,\"stdout_sha256\":\"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":11,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-server-version\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":13,\"stdout_sha256\":\"8484e7b831ba500ccf015246dc0a7b3f98de3c11519b347437ff8e91db018257\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":24,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-compose-version\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":9,\"stdout_sha256\":\"9a98539f27de5f629edafed2968b89d8ca06b9b39c9469ed2c22f3ca265bb6f9\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":7,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-hbarhub-containers\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":6,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-hbarhub-networks\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":5,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-hbarhub-volumes\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":10,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-hbarhub-images\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":30,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-compose-config\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":4267,\"stdout_sha256\":\"05e127c4b23822d5229a6497983c9d412175ec5ac6fc7058013d0bd45bf5cda1\",\"timed_out\":false,\"tool\":\"docker\"}],\"command_id\":\"HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z\",\"container_environment_requested\":false,\"control_plane_error\":null,\"diagnosis\":\"HBARHUB_STANDARD_LOCAL_DEPLOYMENT_PLAN_READY\",\"diagnostic_complete\":true,\"docker\":{\"available\":true,\"compose_config\":{\"attempted\":true,\"config_bytes\":4267,\"config_input_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"config_sha256\":\"05e127c4b23822d5229a6497983c9d412175ec5ac6fc7058013d0bd45bf5cda1\",\"env_file_transform\":{\"config_input_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"env_file_present\":false,\"method\":\"SOURCE_UNCHANGED_NO_ENV_FILE\",\"removed_block_count\":0,\"removed_block_set_sha256\":\"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945\",\"removed_path_count\":0,\"removed_paths_all_dot_env\":true,\"secret_file_read\":false,\"source_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"source_unchanged\":true,\"valid\":true,\"writes_performed\":false},\"rc\":0,\"secret_file_read\":false,\"services\":[\"postgres\",\"redis\",\"scheduler\",\"web\",\"worker\"],\"services_match\":true,\"source_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"v4_failure_stderr_sha256\":\"ba21762623983ad018d6304d027d71b6daf31b7c183482acf2579424be4cc326\",\"v4_unsupported_flag_removed\":true,\"valid\":true},\"compose_version\":\"2.26.1-4\",\"container_environment_requested\":false,\"containers\":[],\"images\":[],\"networks\":[],\"server_version\":\"26.1.5+dfsg1\",\"volumes\":[]},\"duration_ms\":105,\"failed_checks\":[],\"failures\":[],\"gate\":\"READY_FOR_STANDARD_LOCAL_DEPLOYMENT_APPLY\",\"identity\":{\"expected_hostname\":\"core-apps\",\"hostname_short\":\"core-apps\",\"matches\":true},\"mutation_outcome\":\"NO_MUTATION\",\"plan\":{\"acceptance\":[\"all five services are present\",\"postgres and redis are healthy\",\"web is healthy and /health/live returns success\",\"/health/ready returns success after migrations\",\"worker and scheduler are running\",\"Gitea main remains unchanged\",\"public proxy remains unchanged\"],\"apply_operations\":[\"create /opt/stacks/hbarhub from the verified in-memory git archive\",\"generate deployment secrets locally and write .env mode 0600\",\"validate docker compose config again\",\"build only the hbarhub application image\",\"start postgres and redis, then run Django migrations\",\"start web, worker, and scheduler\",\"verify local live and ready health on port 8040\"],\"apply_preconditions\":[\"all source locks match exactly\",\"only main branch is present\",\"target path and target .env are absent\",\"no hbarhub containers, networks, volumes, or images exist\",\"port 8040 has no listener\",\"standard memory and disk gates pass\",\"docker compose config validates the exact source\"],\"compose_validation\":{\"command\":\"docker compose config --format json --no-interpolate\",\"config_input_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"env_file_transform\":{\"config_input_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"env_file_present\":false,\"method\":\"SOURCE_UNCHANGED_NO_ENV_FILE\",\"removed_block_count\":0,\"removed_block_set_sha256\":\"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945\",\"removed_path_count\":0,\"removed_paths_all_dot_env\":true,\"secret_file_read\":false,\"source_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"source_unchanged\":true,\"valid\":true,\"writes_performed\":false},\"method\":\"SOURCE_UNCHANGED_OR_IN_MEMORY_ENV_FILE_OMISSION\",\"normalized_config_sha256\":\"05e127c4b23822d5229a6497983c9d412175ec5ac6fc7058013d0bd45bf5cda1\",\"secret_file_read\":false,\"services\":[\"postgres\",\"redis\",\"scheduler\",\"web\",\"worker\"],\"source_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"unsupported_v4_flag_removed\":true,\"writes_performed\":false},\"forbidden\":[\"modify Gitea refs or repository content\",\"modify NPMplus, DNS, TLS, or any public proxy\",\"modify monitoring, backups, or other compose projects\",\"read, print, publish, or return generated secret values\",\"write outside the new stack and Docker resources labeled project hbarhub\"],\"next_stage\":\"STANDARD_LOCAL_DEPLOYMENT_APPLY\",\"operation\":\"HBARHUB_FRESH_STANDARD_LOCAL_DEPLOYMENT\",\"parent_inventory\":{\"capsule_sha256\":\"15578fd16d67bd7180858370ff06017184bc79ce14da4eee8005fc9cf8e4219d\",\"changes_made\":false,\"command_id\":\"HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX1-V5-20260803T093519Z\",\"diagnosis\":\"HBARHUB_DEPLOYMENT_PLAN_UNEXPECTED_EXCEPTION\",\"exception_evidence_sha256\":\"7d844bbd82129943f3b700ec95bbc2a73652300ec16c6c8353289e2ec0590fd0\",\"exception_identity\":\"COMPOSE_ENV_FILE_BLOCK_MISSING\",\"exception_type\":\"ValueError\",\"mutation_outcome\":\"NO_MUTATION\",\"output_sha256\":\"8eb695a48187cae0e47dc156a53e7a978b12d5e9e5dcc4108186db746f006206\",\"runner_document_rc\":1,\"runner_json_sha256\":\"84358dea8b34a147269c560fb233581a68e31b49eb0d30618ebc6e90e1a0f756\",\"runner_rc\":1,\"runtime_archive_bytes\":9760,\"runtime_archive_sha256\":\"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e\",\"status\":\"FAIL\"},\"profile\":{\"health_endpoints\":[\"/health/live\",\"/health/ready\"],\"minimum_available_disk_bytes\":10737418240,\"minimum_available_memory_bytes\":2147483648,\"name\":\"STANDARD\",\"services\":[\"postgres\",\"redis\",\"scheduler\",\"web\",\"worker\"]},\"rollback\":{\"operations\":[\"capture sanitized failure evidence\",\"docker compose down --volumes --remove-orphans\",\"remove only application images created by this apply\",\"remove only /opt/stacks/hbarhub created by this apply\",\"verify no hbarhub resources remain and port 8040 is free\"],\"preexisting_data_preserved\":\"preconditions require no preexisting stack or project resources\",\"trigger\":\"any failed post-mutation check\"},\"schema\":1,\"source_lock\":{\"archive_bytes\":9760,\"archive_sha256\":\"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e\",\"branch\":\"main\",\"commit\":\"57d2704dc4dc4f1e00c3e1bda67fc0bc2bef6957\",\"delivery\":\"local bare repository git archive; no Git credentials\",\"repository\":\"homelab-admin/hbarhub\",\"tree\":\"7e13a2e1b5ab35046dbe172383a814151c16cce0\"},\"target\":{\"compose_project\":\"hbarhub\",\"hostname\":\"core-apps\",\"local_port\":8040,\"public_proxy\":false,\"role\":\"core-apps\",\"stack_path\":\"/opt/stacks/hbarhub\",\"vmid\":170}},\"port_listener\":{\"addresses_read_from_output\":false,\"errors\":[],\"kernel_tables_read\":2,\"listener_entry_count\":0,\"listener_present\":false,\"port\":8040},\"private_addresses_included\":false,\"rc\":0,\"read_only\":true,\"ready_for_apply\":true,\"rollback_restored\":null,\"rollback_started\":false,\"sanitized\":true,\"schema\":1,\"secret_files_read\":false,\"secrets_included\":false,\"source\":{\"archive_bytes\":9760,\"archive_member_count\":33,\"archive_member_set_sha256\":\"2bb39282d17b0cbcb368739c4cbd947b72c43585b527b3e685937b6e6dd2b142\",\"archive_sha256\":\"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e\",\"available\":true,\"branch_names\":[\"main\"],\"env_example_key_count\":12,\"env_example_key_set_sha256\":\"730754b06ebb1f8d8855881238d6d5ed290120bb911b1f22cc68c12b4759085e\",\"invalid_utf8_path_count\":0,\"main_head\":\"57d2704dc4dc4f1e00c3e1bda67fc0bc2bef6957\",\"main_tree\":\"7e13a2e1b5ab35046dbe172383a814151c16cce0\",\"published_path_candidates\":[{\"bare_repository\":true,\"bytes\":4096,\"exists\":true,\"gid\":1000,\"git_rc\":0,\"kind\":\"directory\",\"mode\":\"0755\",\"path\":\"/opt/stacks/gitea/data/git/repositories/homelab-admin/hbarhub.git\",\"uid\":1000},{\"exists\":false,\"kind\":null,\"path\":\"/opt/stacks/gitea/data/gitea-repositories/homelab-admin/hbarhub.git\"}],\"python_compile_failures\":[],\"python_file_count\":13,\"requirements\":[\"Django==6.0.7\",\"celery==5.6.3\",\"gunicorn==26.0.0\",\"psycopg[binary]==3.3.4\",\"redis==8.0.1\"],\"requirements_match\":true,\"safe_manifest\":{\".dockerignore\":{\"bytes\":82,\"exists\":true,\"expected_sha256\":\"3870cba2def4ee4e45c8ef33cb7239c6d391a9b57ff17e9b26d7bbdaf03501fa\",\"matches\":true,\"sha256\":\"3870cba2def4ee4e45c8ef33cb7239c6d391a9b57ff17e9b26d7bbdaf03501fa\"},\".env.example\":{\"bytes\":419,\"exists\":true,\"expected_sha256\":\"0c93f24bb448c384a430b65bebcd54b86b570c62df88aa073e1342f7a3eba5b3\",\"matches\":true,\"sha256\":\"0c93f24bb448c384a430b65bebcd54b86b570c62df88aa073e1342f7a3eba5b3\"},\"Dockerfile\":{\"bytes\":477,\"exists\":true,\"expected_sha256\":\"9c0be49681f983c329937f486427dbf002b826973a48d5c1851de7f55a6ce1ab\",\"matches\":true,\"sha256\":\"9c0be49681f983c329937f486427dbf002b826973a48d5c1851de7f55a6ce1ab\"},\"README.md\":{\"bytes\":1429,\"exists\":true,\"expected_sha256\":\"3b6de9c4d5c9f76d51280bb395f86e3cf51b69c982ea6a5a8d3740d09739cfff\",\"matches\":true,\"sha256\":\"3b6de9c4d5c9f76d51280bb395f86e3cf51b69c982ea6a5a8d3740d09739cfff\"},\"compose.yaml\":{\"bytes\":2980,\"exists\":true,\"expected_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"matches\":true,\"sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\"},\"config/assets.json\":{\"bytes\":2787,\"exists\":true,\"expected_sha256\":\"dfa2fc55e610dc5bb341169c24d45aaaf4143a1b8c9d021db37a8a8725cd15ff\",\"matches\":true,\"sha256\":\"dfa2fc55e610dc5bb341169c24d45aaaf4143a1b8c9d021db37a8a8725cd15ff\"},\"docs/ARCHITECTURE.md\":{\"bytes\":1214,\"exists\":true,\"expected_sha256\":\"cf219e2f0ee4be0e4881afc7035afff4c79b167579486ecf2eb601fd925d0e8e\",\"matches\":true,\"sha256\":\"cf219e2f0ee4be0e4881afc7035afff4c79b167579486ecf2eb601fd925d0e8e\"},\"docs/OPERATIONS.md\":{\"bytes\":957,\"exists\":true,\"expected_sha256\":\"5b41e7fcb4527eea3e5ab2496ec2239d8021ae8843c302a9f5371d77fdd043a7\",\"matches\":true,\"sha256\":\"5b41e7fcb4527eea3e5ab2496ec2239d8021ae8843c302a9f5371d77fdd043a7\"},\"hbarhub/__init__.py\":{\"bytes\":65,\"exists\":true,\"expected_sha256\":\"8974a9c493587f508e73f358876ade4f3ab0369012b29ffb14280dbe30f721ce\",\"matches\":true,\"sha256\":\"8974a9c493587f508e73f358876ade4f3ab0369012b29ffb14280dbe30f721ce\"},\"hbarhub/celery.py\":{\"bytes\":223,\"exists\":true,\"expected_sha256\":\"b33bfae9785e01372e6b3c88a5747275013831fa5b323cfc60ada4f361551a47\",\"matches\":true,\"sha256\":\"b33bfae9785e01372e6b3c88a5747275013831fa5b323cfc60ada4f361551a47\"},\"hbarhub/settings.py\":{\"bytes\":3614,\"exists\":true,\"expected_sha256\":\"662118548cce23f916be7ed66a468255a3405a3430b301bfe5adba4b764a1f88\",\"matches\":true,\"sha256\":\"662118548cce23f916be7ed66a468255a3405a3430b301bfe5adba4b764a1f88\"},\"hbarhub/urls.py\":{\"bytes\":165,\"exists\":true,\"expected_sha256\":\"ddcebb4348c298dd8047df40cd1698603523f8a4ced6b518ad58f4b724db8cac\",\"matches\":true,\"sha256\":\"ddcebb4348c298dd8047df40cd1698603523f8a4ced6b518ad58f4b724db8cac\"},\"hbarhub/wsgi.py\":{\"bytes\":168,\"exists\":true,\"expected_sha256\":\"03ee75d6dd996de897b4a1c221584459e3b41c507d21f010d5b0372c4da8a630\",\"matches\":true,\"sha256\":\"03ee75d6dd996de897b4a1c221584459e3b41c507d21f010d5b0372c4da8a630\"},\"manage.py\":{\"bytes\":284,\"exists\":true,\"expected_sha256\":\"f9cca66c33a7b629895d0637299fa3aa2396ab6759bcade14ed28a6e2d306b5a\",\"matches\":true,\"sha256\":\"f9cca66c33a7b629895d0637299fa3aa2396ab6759bcade14ed28a6e2d306b5a\"},\"portal/__init__.py\":{\"bytes\":0,\"exists\":true,\"expected_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"matches\":true,\"sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"},\"portal/apps.py\":{\"bytes\":174,\"exists\":true,\"expected_sha256\":\"9308f2f4d7e9d110253fe8574aa42edeabd35a7316ab740d9e5e6ac0ee5498a2\",\"matches\":true,\"sha256\":\"9308f2f4d7e9d110253fe8574aa42edeabd35a7316ab740d9e5e6ac0ee5498a2\"},\"portal/assets.py\":{\"bytes\":911,\"exists\":true,\"expected_sha256\":\"ce231cb3af3460166ef2a23c1456e3f704e44d9f19db42ce030af8a4bea71019\",\"matches\":true,\"sha256\":\"ce231cb3af3460166ef2a23c1456e3f704e44d9f19db42ce030af8a4bea71019\"},\"portal/tasks.py\":{\"bytes\":192,\"exists\":true,\"expected_sha256\":\"8b4402ff2ac1c8603bc9c0821ca16b3b6d610facad7eccf76b83076ee912f0b2\",\"matches\":true,\"sha256\":\"8b4402ff2ac1c8603bc9c0821ca16b3b6d610facad7eccf76b83076ee912f0b2\"},\"portal/templates/portal/home.html\":{\"bytes\":3478,\"exists\":true,\"expected_sha256\":\"bad177066fedee2f8e427cb81ba9c32db4ae36ce533ce0f2090e60b6970378ae\",\"matches\":true,\"sha256\":\"bad177066fedee2f8e427cb81ba9c32db4ae36ce533ce0f2090e60b6970378ae\"},\"portal/tests.py\":{\"bytes\":1371,\"exists\":true,\"expected_sha256\":\"42420399fd48c97ce5ab4872d95b5490e0d3a266df8677d31d0ee1987852c9ff\",\"matches\":true,\"sha256\":\"42420399fd48c97ce5ab4872d95b5490e0d3a266df8677d31d0ee1987852c9ff\"},\"portal/urls.py\":{\"bytes\":260,\"exists\":true,\"expected_sha256\":\"164665d9a442ab79bc4c0f250d1e3d76a096b4f93825e9900fab5bde0d53a088\",\"matches\":true,\"sha256\":\"164665d9a442ab79bc4c0f250d1e3d76a096b4f93825e9900fab5bde0d53a088\"},\"portal/views.py\":{\"bytes\":1449,\"exists\":true,\"expected_sha256\":\"b1166fa6008792a83701740f560f93a3b74b3203003bc738c35a5f56454c1f14\",\"matches\":true,\"sha256\":\"b1166fa6008792a83701740f560f93a3b74b3203003bc738c35a5f56454c1f14\"},\"requirements.txt\":{\"bytes\":81,\"exists\":true,\"expected_sha256\":\"9838729f64d26b126c20f47836bcedfc97262a46059c6f810e088b1b7bf02ffa\",\"matches\":true,\"sha256\":\"9838729f64d26b126c20f47836bcedfc97262a46059c6f810e088b1b7bf02ffa\"}},\"safe_manifest_all_match\":true,\"safe_manifest_scope\":\"PUBLISHED_23_SOURCE_FILES\",\"secret_file_read\":false,\"selected_path\":\"/opt/stacks/gitea/data/git/repositories/homelab-admin/hbarhub.git\",\"tracked_file_count\":27,\"tracked_total_bytes\":26067,\"tree_listing_sha256\":\"8119f9a0c680eca043b5d648b8bf90567c90e5a6ae4f503779f4e8b66fcaa954\",\"tree_path_set_sha256\":\"245c3f22584759bed02f493855facb68662333953100f036716afffc1f65e83f\"},\"stack\":{\"root\":{\"exists\":false,\"kind\":null,\"path\":\"/opt/stacks/hbarhub\"},\"secret_env_metadata_only\":{\"content_read\":false,\"exists\":false,\"kind\":null,\"path\":\"/opt/stacks/hbarhub/.env\"}},\"status\":\"OK\",\"unexpected_exception\":{}}\n" +} diff --git a/runtime/history/HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z.txt b/runtime/history/HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z.txt new file mode 100644 index 0000000..d42df5d --- /dev/null +++ b/runtime/history/HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z.txt @@ -0,0 +1,34 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z +STATUS=OK +RC=0 +HOST=pve01 +MODE=verify +COMPONENT=hbarhub-standard-local-deployment-plan-fix2-v6 +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 +COMMAND_SHA256=cda1dbd047b226d23bcd8c6e8c02f46be9957c2f777aab7b559e582a794b8d0b +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGE_DECLARED=false +RESULT_CONTRACT_VALID=true +RESULT_CONTRACT_STATUS=NOT_APPLICABLE +RESULT_CONTRACT_ERROR=NONE +COMMAND_RC=0 +CHANGES_MADE=false +ROLLBACK_STARTED=false +ROLLBACK_RESTORED=null +MUTATION_OUTCOME=NO_MUTATION +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=8a879b5f406593f076d9eaff004256d4df2e02ac75e5088cee94d964a841fcfc +SANITIZED_OUTPUT_SHA256=8a879b5f406593f076d9eaff004256d4df2e02ac75e5088cee94d964a841fcfc +OUTPUT_BEGIN +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z","mutation_outcome":"NO_MUTATION","rollback_restored":null,"rollback_started":false,"status":"OK","version":1} +{"PLAN_SHA256":"7c5e7eed51a9c2de733631c21063714423ac3f4a692549958d4b4807140b6684","candidate_plan_sha256":"7c5e7eed51a9c2de733631c21063714423ac3f4a692549958d4b4807140b6684","capacity":{"disk":{"available_bytes":76465217536,"gate":true,"required_available_bytes":10737418240,"total_bytes":126605975552},"memory":{"available_bytes":2744274944,"required_available_bytes":2147483648,"standard_gate":true,"swap_free_bytes":6714781696,"swap_total_bytes":8589930496,"total_bytes":10435301376}},"changes_made":false,"checks":{"archive_bytes_exact":true,"archive_sha256_exact":true,"compose_config_valid":true,"compose_env_file_handling_valid":true,"compose_services_exact":true,"compose_source_exact":true,"compose_v4_unsupported_flag_removed":true,"core_hostname":true,"disk_gate":true,"docker_available":true,"no_hbarhub_containers":true,"no_hbarhub_images":true,"no_hbarhub_networks":true,"no_hbarhub_volumes":true,"only_main_branch":true,"port_8040_free":true,"python_syntax_valid":true,"read_only":true,"requirements_exact":true,"safe_manifest_exact":true,"source_available":true,"source_commit_exact":true,"source_tree_exact":true,"standard_memory_gate":true,"target_env_absent":true,"target_path_absent":true,"tracked_file_count_exact":true,"tracked_total_bytes_exact":true,"tree_listing_exact":true,"tree_path_set_exact":true},"command_audit":[{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-candidate-1-is-bare","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":5,"stdout_sha256":"a17fcf0a2f50e2d495e4f90ce263410edc183add6c62699a2facbccf60410f74","timed_out":false,"tool":"git"},{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-main-head","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":41,"stdout_sha256":"dc0f064e529250268d3ff6232078a19aca8a12b3abc0291e79756ffde77303ed","timed_out":false,"tool":"git"},{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-main-tree","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":41,"stdout_sha256":"59f30ea418f3e638f5c0294f375feeda787f7da9acc07ac67f8276032be811a2","timed_out":false,"tool":"git"},{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-branches","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":5,"stdout_sha256":"6403203dd5a0867eb14d104ee8a73730bd72dd9ad92e78d996a6dba0a5dcfc01","timed_out":false,"tool":"git"},{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-main-ls-tree","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":2095,"stdout_sha256":"8119f9a0c680eca043b5d648b8bf90567c90e5a6ae4f503779f4e8b66fcaa954","timed_out":false,"tool":"git"},{"duration_ms":1,"output_within_limit":true,"rc":0,"stage":"git-main-archive","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":9760,"stdout_sha256":"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e","timed_out":false,"tool":"git"},{"duration_ms":11,"output_within_limit":true,"rc":0,"stage":"docker-server-version","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":13,"stdout_sha256":"8484e7b831ba500ccf015246dc0a7b3f98de3c11519b347437ff8e91db018257","timed_out":false,"tool":"docker"},{"duration_ms":24,"output_within_limit":true,"rc":0,"stage":"docker-compose-version","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":9,"stdout_sha256":"9a98539f27de5f629edafed2968b89d8ca06b9b39c9469ed2c22f3ca265bb6f9","timed_out":false,"tool":"docker"},{"duration_ms":7,"output_within_limit":true,"rc":0,"stage":"docker-hbarhub-containers","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","timed_out":false,"tool":"docker"},{"duration_ms":6,"output_within_limit":true,"rc":0,"stage":"docker-hbarhub-networks","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","timed_out":false,"tool":"docker"},{"duration_ms":5,"output_within_limit":true,"rc":0,"stage":"docker-hbarhub-volumes","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","timed_out":false,"tool":"docker"},{"duration_ms":10,"output_within_limit":true,"rc":0,"stage":"docker-hbarhub-images","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","timed_out":false,"tool":"docker"},{"duration_ms":30,"output_within_limit":true,"rc":0,"stage":"docker-compose-config","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":4267,"stdout_sha256":"05e127c4b23822d5229a6497983c9d412175ec5ac6fc7058013d0bd45bf5cda1","timed_out":false,"tool":"docker"}],"command_id":"HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z","container_environment_requested":false,"control_plane_error":null,"diagnosis":"HBARHUB_STANDARD_LOCAL_DEPLOYMENT_PLAN_READY","diagnostic_complete":true,"docker":{"available":true,"compose_config":{"attempted":true,"config_bytes":4267,"config_input_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","config_sha256":"05e127c4b23822d5229a6497983c9d412175ec5ac6fc7058013d0bd45bf5cda1","env_file_transform":{"config_input_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","env_file_present":false,"method":"SOURCE_UNCHANGED_NO_ENV_FILE","removed_block_count":0,"removed_block_set_sha256":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","removed_path_count":0,"removed_paths_all_dot_env":true,"secret_file_read":false,"source_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","source_unchanged":true,"valid":true,"writes_performed":false},"rc":0,"secret_file_read":false,"services":["postgres","redis","scheduler","web","worker"],"services_match":true,"source_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","v4_failure_stderr_sha256":"ba21762623983ad018d6304d027d71b6daf31b7c183482acf2579424be4cc326","v4_unsupported_flag_removed":true,"valid":true},"compose_version":"2.26.1-4","container_environment_requested":false,"containers":[],"images":[],"networks":[],"server_version":"26.1.5+dfsg1","volumes":[]},"duration_ms":105,"failed_checks":[],"failures":[],"gate":"READY_FOR_STANDARD_LOCAL_DEPLOYMENT_APPLY","identity":{"expected_hostname":"core-apps","hostname_short":"core-apps","matches":true},"mutation_outcome":"NO_MUTATION","plan":{"acceptance":["all five services are present","postgres and redis are healthy","web is healthy and /health/live returns success","/health/ready returns success after migrations","worker and scheduler are running","Gitea main remains unchanged","public proxy remains unchanged"],"apply_operations":["create /opt/stacks/hbarhub from the verified in-memory git archive","generate deployment secrets locally and write .env mode 0600","validate docker compose config again","build only the hbarhub application image","start postgres and redis, then run Django migrations","start web, worker, and scheduler","verify local live and ready health on port 8040"],"apply_preconditions":["all source locks match exactly","only main branch is present","target path and target .env are absent","no hbarhub containers, networks, volumes, or images exist","port 8040 has no listener","standard memory and disk gates pass","docker compose config validates the exact source"],"compose_validation":{"command":"docker compose config --format json --no-interpolate","config_input_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","env_file_transform":{"config_input_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","env_file_present":false,"method":"SOURCE_UNCHANGED_NO_ENV_FILE","removed_block_count":0,"removed_block_set_sha256":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","removed_path_count":0,"removed_paths_all_dot_env":true,"secret_file_read":false,"source_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","source_unchanged":true,"valid":true,"writes_performed":false},"method":"SOURCE_UNCHANGED_OR_IN_MEMORY_ENV_FILE_OMISSION","normalized_config_sha256":"05e127c4b23822d5229a6497983c9d412175ec5ac6fc7058013d0bd45bf5cda1","secret_file_read":false,"services":["postgres","redis","scheduler","web","worker"],"source_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","unsupported_v4_flag_removed":true,"writes_performed":false},"forbidden":["modify Gitea refs or repository content","modify NPMplus, DNS, TLS, or any public proxy","modify monitoring, backups, or other compose projects","read, print, publish, or return generated secret values","write outside the new stack and Docker resources labeled project hbarhub"],"next_stage":"STANDARD_LOCAL_DEPLOYMENT_APPLY","operation":"HBARHUB_FRESH_STANDARD_LOCAL_DEPLOYMENT","parent_inventory":{"capsule_sha256":"15578fd16d67bd7180858370ff06017184bc79ce14da4eee8005fc9cf8e4219d","changes_made":false,"command_id":"HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX1-V5-20260803T093519Z","diagnosis":"HBARHUB_DEPLOYMENT_PLAN_UNEXPECTED_EXCEPTION","exception_evidence_sha256":"7d844bbd82129943f3b700ec95bbc2a73652300ec16c6c8353289e2ec0590fd0","exception_identity":"COMPOSE_ENV_FILE_BLOCK_MISSING","exception_type":"ValueError","mutation_outcome":"NO_MUTATION","output_sha256":"8eb695a48187cae0e47dc156a53e7a978b12d5e9e5dcc4108186db746f006206","runner_document_rc":1,"runner_json_sha256":"84358dea8b34a147269c560fb233581a68e31b49eb0d30618ebc6e90e1a0f756","runner_rc":1,"runtime_archive_bytes":9760,"runtime_archive_sha256":"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e","status":"FAIL"},"profile":{"health_endpoints":["/health/live","/health/ready"],"minimum_available_disk_bytes":10737418240,"minimum_available_memory_bytes":2147483648,"name":"STANDARD","services":["postgres","redis","scheduler","web","worker"]},"rollback":{"operations":["capture sanitized failure evidence","docker compose down --volumes --remove-orphans","remove only application images created by this apply","remove only /opt/stacks/hbarhub created by this apply","verify no hbarhub resources remain and port 8040 is free"],"preexisting_data_preserved":"preconditions require no preexisting stack or project resources","trigger":"any failed post-mutation check"},"schema":1,"source_lock":{"archive_bytes":9760,"archive_sha256":"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e","branch":"main","commit":"57d2704dc4dc4f1e00c3e1bda67fc0bc2bef6957","delivery":"local bare repository git archive; no Git credentials","repository":"homelab-admin/hbarhub","tree":"7e13a2e1b5ab35046dbe172383a814151c16cce0"},"target":{"compose_project":"hbarhub","hostname":"core-apps","local_port":8040,"public_proxy":false,"role":"core-apps","stack_path":"/opt/stacks/hbarhub","vmid":170}},"port_listener":{"addresses_read_from_output":false,"errors":[],"kernel_tables_read":2,"listener_entry_count":0,"listener_present":false,"port":8040},"private_addresses_included":false,"rc":0,"read_only":true,"ready_for_apply":true,"rollback_restored":null,"rollback_started":false,"sanitized":true,"schema":1,"secret_files_read":false,"secrets_included":false,"source":{"archive_bytes":9760,"archive_member_count":33,"archive_member_set_sha256":"2bb39282d17b0cbcb368739c4cbd947b72c43585b527b3e685937b6e6dd2b142","archive_sha256":"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e","available":true,"branch_names":["main"],"env_example_key_count":12,"env_example_key_set_sha256":"730754b06ebb1f8d8855881238d6d5ed290120bb911b1f22cc68c12b4759085e","invalid_utf8_path_count":0,"main_head":"57d2704dc4dc4f1e00c3e1bda67fc0bc2bef6957","main_tree":"7e13a2e1b5ab35046dbe172383a814151c16cce0","published_path_candidates":[{"bare_repository":true,"bytes":4096,"exists":true,"gid":1000,"git_rc":0,"kind":"directory","mode":"0755","path":"/opt/stacks/gitea/data/git/repositories/homelab-admin/hbarhub.git","uid":1000},{"exists":false,"kind":null,"path":"/opt/stacks/gitea/data/gitea-repositories/homelab-admin/hbarhub.git"}],"python_compile_failures":[],"python_file_count":13,"requirements":["Django==6.0.7","celery==5.6.3","gunicorn==26.0.0","psycopg[binary]==3.3.4","redis==8.0.1"],"requirements_match":true,"safe_manifest":{".dockerignore":{"bytes":82,"exists":true,"expected_sha256":"3870cba2def4ee4e45c8ef33cb7239c6d391a9b57ff17e9b26d7bbdaf03501fa","matches":true,"sha256":"3870cba2def4ee4e45c8ef33cb7239c6d391a9b57ff17e9b26d7bbdaf03501fa"},".env.example":{"bytes":419,"exists":true,"expected_sha256":"0c93f24bb448c384a430b65bebcd54b86b570c62df88aa073e1342f7a3eba5b3","matches":true,"sha256":"0c93f24bb448c384a430b65bebcd54b86b570c62df88aa073e1342f7a3eba5b3"},"Dockerfile":{"bytes":477,"exists":true,"expected_sha256":"9c0be49681f983c329937f486427dbf002b826973a48d5c1851de7f55a6ce1ab","matches":true,"sha256":"9c0be49681f983c329937f486427dbf002b826973a48d5c1851de7f55a6ce1ab"},"README.md":{"bytes":1429,"exists":true,"expected_sha256":"3b6de9c4d5c9f76d51280bb395f86e3cf51b69c982ea6a5a8d3740d09739cfff","matches":true,"sha256":"3b6de9c4d5c9f76d51280bb395f86e3cf51b69c982ea6a5a8d3740d09739cfff"},"compose.yaml":{"bytes":2980,"exists":true,"expected_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","matches":true,"sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc"},"config/assets.json":{"bytes":2787,"exists":true,"expected_sha256":"dfa2fc55e610dc5bb341169c24d45aaaf4143a1b8c9d021db37a8a8725cd15ff","matches":true,"sha256":"dfa2fc55e610dc5bb341169c24d45aaaf4143a1b8c9d021db37a8a8725cd15ff"},"docs/ARCHITECTURE.md":{"bytes":1214,"exists":true,"expected_sha256":"cf219e2f0ee4be0e4881afc7035afff4c79b167579486ecf2eb601fd925d0e8e","matches":true,"sha256":"cf219e2f0ee4be0e4881afc7035afff4c79b167579486ecf2eb601fd925d0e8e"},"docs/OPERATIONS.md":{"bytes":957,"exists":true,"expected_sha256":"5b41e7fcb4527eea3e5ab2496ec2239d8021ae8843c302a9f5371d77fdd043a7","matches":true,"sha256":"5b41e7fcb4527eea3e5ab2496ec2239d8021ae8843c302a9f5371d77fdd043a7"},"hbarhub/__init__.py":{"bytes":65,"exists":true,"expected_sha256":"8974a9c493587f508e73f358876ade4f3ab0369012b29ffb14280dbe30f721ce","matches":true,"sha256":"8974a9c493587f508e73f358876ade4f3ab0369012b29ffb14280dbe30f721ce"},"hbarhub/celery.py":{"bytes":223,"exists":true,"expected_sha256":"b33bfae9785e01372e6b3c88a5747275013831fa5b323cfc60ada4f361551a47","matches":true,"sha256":"b33bfae9785e01372e6b3c88a5747275013831fa5b323cfc60ada4f361551a47"},"hbarhub/settings.py":{"bytes":3614,"exists":true,"expected_sha256":"662118548cce23f916be7ed66a468255a3405a3430b301bfe5adba4b764a1f88","matches":true,"sha256":"662118548cce23f916be7ed66a468255a3405a3430b301bfe5adba4b764a1f88"},"hbarhub/urls.py":{"bytes":165,"exists":true,"expected_sha256":"ddcebb4348c298dd8047df40cd1698603523f8a4ced6b518ad58f4b724db8cac","matches":true,"sha256":"ddcebb4348c298dd8047df40cd1698603523f8a4ced6b518ad58f4b724db8cac"},"hbarhub/wsgi.py":{"bytes":168,"exists":true,"expected_sha256":"03ee75d6dd996de897b4a1c221584459e3b41c507d21f010d5b0372c4da8a630","matches":true,"sha256":"03ee75d6dd996de897b4a1c221584459e3b41c507d21f010d5b0372c4da8a630"},"manage.py":{"bytes":284,"exists":true,"expected_sha256":"f9cca66c33a7b629895d0637299fa3aa2396ab6759bcade14ed28a6e2d306b5a","matches":true,"sha256":"f9cca66c33a7b629895d0637299fa3aa2396ab6759bcade14ed28a6e2d306b5a"},"portal/__init__.py":{"bytes":0,"exists":true,"expected_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","matches":true,"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"portal/apps.py":{"bytes":174,"exists":true,"expected_sha256":"9308f2f4d7e9d110253fe8574aa42edeabd35a7316ab740d9e5e6ac0ee5498a2","matches":true,"sha256":"9308f2f4d7e9d110253fe8574aa42edeabd35a7316ab740d9e5e6ac0ee5498a2"},"portal/assets.py":{"bytes":911,"exists":true,"expected_sha256":"ce231cb3af3460166ef2a23c1456e3f704e44d9f19db42ce030af8a4bea71019","matches":true,"sha256":"ce231cb3af3460166ef2a23c1456e3f704e44d9f19db42ce030af8a4bea71019"},"portal/tasks.py":{"bytes":192,"exists":true,"expected_sha256":"8b4402ff2ac1c8603bc9c0821ca16b3b6d610facad7eccf76b83076ee912f0b2","matches":true,"sha256":"8b4402ff2ac1c8603bc9c0821ca16b3b6d610facad7eccf76b83076ee912f0b2"},"portal/templates/portal/home.html":{"bytes":3478,"exists":true,"expected_sha256":"bad177066fedee2f8e427cb81ba9c32db4ae36ce533ce0f2090e60b6970378ae","matches":true,"sha256":"bad177066fedee2f8e427cb81ba9c32db4ae36ce533ce0f2090e60b6970378ae"},"portal/tests.py":{"bytes":1371,"exists":true,"expected_sha256":"42420399fd48c97ce5ab4872d95b5490e0d3a266df8677d31d0ee1987852c9ff","matches":true,"sha256":"42420399fd48c97ce5ab4872d95b5490e0d3a266df8677d31d0ee1987852c9ff"},"portal/urls.py":{"bytes":260,"exists":true,"expected_sha256":"164665d9a442ab79bc4c0f250d1e3d76a096b4f93825e9900fab5bde0d53a088","matches":true,"sha256":"164665d9a442ab79bc4c0f250d1e3d76a096b4f93825e9900fab5bde0d53a088"},"portal/views.py":{"bytes":1449,"exists":true,"expected_sha256":"b1166fa6008792a83701740f560f93a3b74b3203003bc738c35a5f56454c1f14","matches":true,"sha256":"b1166fa6008792a83701740f560f93a3b74b3203003bc738c35a5f56454c1f14"},"requirements.txt":{"bytes":81,"exists":true,"expected_sha256":"9838729f64d26b126c20f47836bcedfc97262a46059c6f810e088b1b7bf02ffa","matches":true,"sha256":"9838729f64d26b126c20f47836bcedfc97262a46059c6f810e088b1b7bf02ffa"}},"safe_manifest_all_match":true,"safe_manifest_scope":"PUBLISHED_23_SOURCE_FILES","secret_file_read":false,"selected_path":"/opt/stacks/gitea/data/git/repositories/homelab-admin/hbarhub.git","tracked_file_count":27,"tracked_total_bytes":26067,"tree_listing_sha256":"8119f9a0c680eca043b5d648b8bf90567c90e5a6ae4f503779f4e8b66fcaa954","tree_path_set_sha256":"245c3f22584759bed02f493855facb68662333953100f036716afffc1f65e83f"},"stack":{"root":{"exists":false,"kind":null,"path":"/opt/stacks/hbarhub"},"secret_env_metadata_only":{"content_read":false,"exists":false,"kind":null,"path":"/opt/stacks/hbarhub/.env"}},"status":"OK","unexpected_exception":{}} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 0d28915..0c854c2 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX1-V5-20260803T093519Z", - "status": "FAIL", - "rc": 1, + "command_id": "HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z", + "status": "OK", + "rc": 0, "host": "pve01", "mode": "verify", - "component": "hbarhub-standard-local-deployment-plan-fix1-v5", - "started_at_utc": "2026-08-03T09:40:59Z", - "finished_at_utc": "2026-08-03T09:40:59Z", + "component": "hbarhub-standard-local-deployment-plan-fix2-v6", + "started_at_utc": "2026-08-03T09:53:56Z", + "finished_at_utc": "2026-08-03T09:53:56Z", "reference_register_checked": true, "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", "error_register_checked": true, "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", - "command_sha256": "1f0e900e6b1b1b11716a07b3ed1cb3f227571cba359bec737b419dc39327db6a", + "command_sha256": "cda1dbd047b226d23bcd8c6e8c02f46be9957c2f777aab7b559e582a794b8d0b", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -21,7 +21,7 @@ "result_contract_valid": true, "result_contract_status": null, "result_contract_error": null, - "command_rc": 1, + "command_rc": 0, "changes_made": false, "rollback_started": false, "rollback_restored": null, @@ -30,9 +30,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "8eb695a48187cae0e47dc156a53e7a978b12d5e9e5dcc4108186db746f006206", - "sanitized_output_sha256": "8eb695a48187cae0e47dc156a53e7a978b12d5e9e5dcc4108186db746f006206", + "raw_evidence_sha256": "8a879b5f406593f076d9eaff004256d4df2e02ac75e5088cee94d964a841fcfc", + "sanitized_output_sha256": "8a879b5f406593f076d9eaff004256d4df2e02ac75e5088cee94d964a841fcfc", "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-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX1-V5-20260803T093519Z\",\"mutation_outcome\":\"NO_MUTATION\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"FAIL\",\"version\":1}\n{\"PLAN_SHA256\":null,\"candidate_plan_sha256\":null,\"capacity\":{},\"changes_made\":false,\"checks\":{},\"command_audit\":[{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-candidate-1-is-bare\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":5,\"stdout_sha256\":\"a17fcf0a2f50e2d495e4f90ce263410edc183add6c62699a2facbccf60410f74\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-main-head\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":41,\"stdout_sha256\":\"dc0f064e529250268d3ff6232078a19aca8a12b3abc0291e79756ffde77303ed\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-main-tree\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":41,\"stdout_sha256\":\"59f30ea418f3e638f5c0294f375feeda787f7da9acc07ac67f8276032be811a2\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-branches\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":5,\"stdout_sha256\":\"6403203dd5a0867eb14d104ee8a73730bd72dd9ad92e78d996a6dba0a5dcfc01\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-main-ls-tree\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":2095,\"stdout_sha256\":\"8119f9a0c680eca043b5d648b8bf90567c90e5a6ae4f503779f4e8b66fcaa954\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":1,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-main-archive\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":9760,\"stdout_sha256\":\"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":9,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-server-version\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":13,\"stdout_sha256\":\"8484e7b831ba500ccf015246dc0a7b3f98de3c11519b347437ff8e91db018257\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":25,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-compose-version\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":9,\"stdout_sha256\":\"9a98539f27de5f629edafed2968b89d8ca06b9b39c9469ed2c22f3ca265bb6f9\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":7,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-hbarhub-containers\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":5,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-hbarhub-networks\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":6,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-hbarhub-volumes\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":11,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-hbarhub-images\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"timed_out\":false,\"tool\":\"docker\"}],\"command_id\":\"HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX1-V5-20260803T093519Z\",\"container_environment_requested\":false,\"control_plane_error\":null,\"diagnosis\":\"HBARHUB_DEPLOYMENT_PLAN_UNEXPECTED_EXCEPTION\",\"diagnostic_complete\":false,\"docker\":{},\"duration_ms\":74,\"failed_checks\":[],\"failures\":[\"HBARHUB_DEPLOYMENT_PLAN_UNEXPECTED_EXCEPTION\"],\"gate\":\"DEPLOYMENT_PLAN_DIAGNOSTIC_INCOMPLETE\",\"identity\":{\"expected_hostname\":\"core-apps\",\"hostname_short\":\"core-apps\",\"matches\":true},\"mutation_outcome\":\"NO_MUTATION\",\"plan\":{},\"port_listener\":{},\"private_addresses_included\":false,\"rc\":1,\"read_only\":true,\"ready_for_apply\":false,\"rollback_restored\":null,\"rollback_started\":false,\"sanitized\":true,\"schema\":1,\"secret_files_read\":false,\"secrets_included\":false,\"source\":{\"archive_bytes\":9760,\"archive_member_count\":33,\"archive_member_set_sha256\":\"2bb39282d17b0cbcb368739c4cbd947b72c43585b527b3e685937b6e6dd2b142\",\"archive_sha256\":\"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e\",\"available\":true,\"branch_names\":[\"main\"],\"env_example_key_count\":12,\"env_example_key_set_sha256\":\"730754b06ebb1f8d8855881238d6d5ed290120bb911b1f22cc68c12b4759085e\",\"invalid_utf8_path_count\":0,\"main_head\":\"57d2704dc4dc4f1e00c3e1bda67fc0bc2bef6957\",\"main_tree\":\"7e13a2e1b5ab35046dbe172383a814151c16cce0\",\"published_path_candidates\":[{\"bare_repository\":true,\"bytes\":4096,\"exists\":true,\"gid\":1000,\"git_rc\":0,\"kind\":\"directory\",\"mode\":\"0755\",\"path\":\"/opt/stacks/gitea/data/git/repositories/homelab-admin/hbarhub.git\",\"uid\":1000},{\"exists\":false,\"kind\":null,\"path\":\"/opt/stacks/gitea/data/gitea-repositories/homelab-admin/hbarhub.git\"}],\"python_compile_failures\":[],\"python_file_count\":13,\"requirements\":[\"Django==6.0.7\",\"celery==5.6.3\",\"gunicorn==26.0.0\",\"psycopg[binary]==3.3.4\",\"redis==8.0.1\"],\"requirements_match\":true,\"safe_manifest\":{\".dockerignore\":{\"bytes\":82,\"exists\":true,\"expected_sha256\":\"3870cba2def4ee4e45c8ef33cb7239c6d391a9b57ff17e9b26d7bbdaf03501fa\",\"matches\":true,\"sha256\":\"3870cba2def4ee4e45c8ef33cb7239c6d391a9b57ff17e9b26d7bbdaf03501fa\"},\".env.example\":{\"bytes\":419,\"exists\":true,\"expected_sha256\":\"0c93f24bb448c384a430b65bebcd54b86b570c62df88aa073e1342f7a3eba5b3\",\"matches\":true,\"sha256\":\"0c93f24bb448c384a430b65bebcd54b86b570c62df88aa073e1342f7a3eba5b3\"},\"Dockerfile\":{\"bytes\":477,\"exists\":true,\"expected_sha256\":\"9c0be49681f983c329937f486427dbf002b826973a48d5c1851de7f55a6ce1ab\",\"matches\":true,\"sha256\":\"9c0be49681f983c329937f486427dbf002b826973a48d5c1851de7f55a6ce1ab\"},\"README.md\":{\"bytes\":1429,\"exists\":true,\"expected_sha256\":\"3b6de9c4d5c9f76d51280bb395f86e3cf51b69c982ea6a5a8d3740d09739cfff\",\"matches\":true,\"sha256\":\"3b6de9c4d5c9f76d51280bb395f86e3cf51b69c982ea6a5a8d3740d09739cfff\"},\"compose.yaml\":{\"bytes\":2980,\"exists\":true,\"expected_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"matches\":true,\"sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\"},\"config/assets.json\":{\"bytes\":2787,\"exists\":true,\"expected_sha256\":\"dfa2fc55e610dc5bb341169c24d45aaaf4143a1b8c9d021db37a8a8725cd15ff\",\"matches\":true,\"sha256\":\"dfa2fc55e610dc5bb341169c24d45aaaf4143a1b8c9d021db37a8a8725cd15ff\"},\"docs/ARCHITECTURE.md\":{\"bytes\":1214,\"exists\":true,\"expected_sha256\":\"cf219e2f0ee4be0e4881afc7035afff4c79b167579486ecf2eb601fd925d0e8e\",\"matches\":true,\"sha256\":\"cf219e2f0ee4be0e4881afc7035afff4c79b167579486ecf2eb601fd925d0e8e\"},\"docs/OPERATIONS.md\":{\"bytes\":957,\"exists\":true,\"expected_sha256\":\"5b41e7fcb4527eea3e5ab2496ec2239d8021ae8843c302a9f5371d77fdd043a7\",\"matches\":true,\"sha256\":\"5b41e7fcb4527eea3e5ab2496ec2239d8021ae8843c302a9f5371d77fdd043a7\"},\"hbarhub/__init__.py\":{\"bytes\":65,\"exists\":true,\"expected_sha256\":\"8974a9c493587f508e73f358876ade4f3ab0369012b29ffb14280dbe30f721ce\",\"matches\":true,\"sha256\":\"8974a9c493587f508e73f358876ade4f3ab0369012b29ffb14280dbe30f721ce\"},\"hbarhub/celery.py\":{\"bytes\":223,\"exists\":true,\"expected_sha256\":\"b33bfae9785e01372e6b3c88a5747275013831fa5b323cfc60ada4f361551a47\",\"matches\":true,\"sha256\":\"b33bfae9785e01372e6b3c88a5747275013831fa5b323cfc60ada4f361551a47\"},\"hbarhub/settings.py\":{\"bytes\":3614,\"exists\":true,\"expected_sha256\":\"662118548cce23f916be7ed66a468255a3405a3430b301bfe5adba4b764a1f88\",\"matches\":true,\"sha256\":\"662118548cce23f916be7ed66a468255a3405a3430b301bfe5adba4b764a1f88\"},\"hbarhub/urls.py\":{\"bytes\":165,\"exists\":true,\"expected_sha256\":\"ddcebb4348c298dd8047df40cd1698603523f8a4ced6b518ad58f4b724db8cac\",\"matches\":true,\"sha256\":\"ddcebb4348c298dd8047df40cd1698603523f8a4ced6b518ad58f4b724db8cac\"},\"hbarhub/wsgi.py\":{\"bytes\":168,\"exists\":true,\"expected_sha256\":\"03ee75d6dd996de897b4a1c221584459e3b41c507d21f010d5b0372c4da8a630\",\"matches\":true,\"sha256\":\"03ee75d6dd996de897b4a1c221584459e3b41c507d21f010d5b0372c4da8a630\"},\"manage.py\":{\"bytes\":284,\"exists\":true,\"expected_sha256\":\"f9cca66c33a7b629895d0637299fa3aa2396ab6759bcade14ed28a6e2d306b5a\",\"matches\":true,\"sha256\":\"f9cca66c33a7b629895d0637299fa3aa2396ab6759bcade14ed28a6e2d306b5a\"},\"portal/__init__.py\":{\"bytes\":0,\"exists\":true,\"expected_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"matches\":true,\"sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"},\"portal/apps.py\":{\"bytes\":174,\"exists\":true,\"expected_sha256\":\"9308f2f4d7e9d110253fe8574aa42edeabd35a7316ab740d9e5e6ac0ee5498a2\",\"matches\":true,\"sha256\":\"9308f2f4d7e9d110253fe8574aa42edeabd35a7316ab740d9e5e6ac0ee5498a2\"},\"portal/assets.py\":{\"bytes\":911,\"exists\":true,\"expected_sha256\":\"ce231cb3af3460166ef2a23c1456e3f704e44d9f19db42ce030af8a4bea71019\",\"matches\":true,\"sha256\":\"ce231cb3af3460166ef2a23c1456e3f704e44d9f19db42ce030af8a4bea71019\"},\"portal/tasks.py\":{\"bytes\":192,\"exists\":true,\"expected_sha256\":\"8b4402ff2ac1c8603bc9c0821ca16b3b6d610facad7eccf76b83076ee912f0b2\",\"matches\":true,\"sha256\":\"8b4402ff2ac1c8603bc9c0821ca16b3b6d610facad7eccf76b83076ee912f0b2\"},\"portal/templates/portal/home.html\":{\"bytes\":3478,\"exists\":true,\"expected_sha256\":\"bad177066fedee2f8e427cb81ba9c32db4ae36ce533ce0f2090e60b6970378ae\",\"matches\":true,\"sha256\":\"bad177066fedee2f8e427cb81ba9c32db4ae36ce533ce0f2090e60b6970378ae\"},\"portal/tests.py\":{\"bytes\":1371,\"exists\":true,\"expected_sha256\":\"42420399fd48c97ce5ab4872d95b5490e0d3a266df8677d31d0ee1987852c9ff\",\"matches\":true,\"sha256\":\"42420399fd48c97ce5ab4872d95b5490e0d3a266df8677d31d0ee1987852c9ff\"},\"portal/urls.py\":{\"bytes\":260,\"exists\":true,\"expected_sha256\":\"164665d9a442ab79bc4c0f250d1e3d76a096b4f93825e9900fab5bde0d53a088\",\"matches\":true,\"sha256\":\"164665d9a442ab79bc4c0f250d1e3d76a096b4f93825e9900fab5bde0d53a088\"},\"portal/views.py\":{\"bytes\":1449,\"exists\":true,\"expected_sha256\":\"b1166fa6008792a83701740f560f93a3b74b3203003bc738c35a5f56454c1f14\",\"matches\":true,\"sha256\":\"b1166fa6008792a83701740f560f93a3b74b3203003bc738c35a5f56454c1f14\"},\"requirements.txt\":{\"bytes\":81,\"exists\":true,\"expected_sha256\":\"9838729f64d26b126c20f47836bcedfc97262a46059c6f810e088b1b7bf02ffa\",\"matches\":true,\"sha256\":\"9838729f64d26b126c20f47836bcedfc97262a46059c6f810e088b1b7bf02ffa\"}},\"safe_manifest_all_match\":true,\"safe_manifest_scope\":\"PUBLISHED_23_SOURCE_FILES\",\"secret_file_read\":false,\"selected_path\":\"/opt/stacks/gitea/data/git/repositories/homelab-admin/hbarhub.git\",\"tracked_file_count\":27,\"tracked_total_bytes\":26067,\"tree_listing_sha256\":\"8119f9a0c680eca043b5d648b8bf90567c90e5a6ae4f503779f4e8b66fcaa954\",\"tree_path_set_sha256\":\"245c3f22584759bed02f493855facb68662333953100f036716afffc1f65e83f\"},\"stack\":{},\"status\":\"FAIL\",\"unexpected_exception\":{\"errno\":null,\"message_bytes\":41,\"message_sha256\":\"7d844bbd82129943f3b700ec95bbc2a73652300ec16c6c8353289e2ec0590fd0\",\"type\":\"ValueError\"}}\n" + "output": "HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z\",\"mutation_outcome\":\"NO_MUTATION\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"PLAN_SHA256\":\"7c5e7eed51a9c2de733631c21063714423ac3f4a692549958d4b4807140b6684\",\"candidate_plan_sha256\":\"7c5e7eed51a9c2de733631c21063714423ac3f4a692549958d4b4807140b6684\",\"capacity\":{\"disk\":{\"available_bytes\":76465217536,\"gate\":true,\"required_available_bytes\":10737418240,\"total_bytes\":126605975552},\"memory\":{\"available_bytes\":2744274944,\"required_available_bytes\":2147483648,\"standard_gate\":true,\"swap_free_bytes\":6714781696,\"swap_total_bytes\":8589930496,\"total_bytes\":10435301376}},\"changes_made\":false,\"checks\":{\"archive_bytes_exact\":true,\"archive_sha256_exact\":true,\"compose_config_valid\":true,\"compose_env_file_handling_valid\":true,\"compose_services_exact\":true,\"compose_source_exact\":true,\"compose_v4_unsupported_flag_removed\":true,\"core_hostname\":true,\"disk_gate\":true,\"docker_available\":true,\"no_hbarhub_containers\":true,\"no_hbarhub_images\":true,\"no_hbarhub_networks\":true,\"no_hbarhub_volumes\":true,\"only_main_branch\":true,\"port_8040_free\":true,\"python_syntax_valid\":true,\"read_only\":true,\"requirements_exact\":true,\"safe_manifest_exact\":true,\"source_available\":true,\"source_commit_exact\":true,\"source_tree_exact\":true,\"standard_memory_gate\":true,\"target_env_absent\":true,\"target_path_absent\":true,\"tracked_file_count_exact\":true,\"tracked_total_bytes_exact\":true,\"tree_listing_exact\":true,\"tree_path_set_exact\":true},\"command_audit\":[{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-candidate-1-is-bare\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":5,\"stdout_sha256\":\"a17fcf0a2f50e2d495e4f90ce263410edc183add6c62699a2facbccf60410f74\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-main-head\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":41,\"stdout_sha256\":\"dc0f064e529250268d3ff6232078a19aca8a12b3abc0291e79756ffde77303ed\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-main-tree\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":41,\"stdout_sha256\":\"59f30ea418f3e638f5c0294f375feeda787f7da9acc07ac67f8276032be811a2\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-branches\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":5,\"stdout_sha256\":\"6403203dd5a0867eb14d104ee8a73730bd72dd9ad92e78d996a6dba0a5dcfc01\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":0,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-main-ls-tree\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":2095,\"stdout_sha256\":\"8119f9a0c680eca043b5d648b8bf90567c90e5a6ae4f503779f4e8b66fcaa954\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":1,\"output_within_limit\":true,\"rc\":0,\"stage\":\"git-main-archive\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":9760,\"stdout_sha256\":\"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e\",\"timed_out\":false,\"tool\":\"git\"},{\"duration_ms\":11,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-server-version\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":13,\"stdout_sha256\":\"8484e7b831ba500ccf015246dc0a7b3f98de3c11519b347437ff8e91db018257\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":24,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-compose-version\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":9,\"stdout_sha256\":\"9a98539f27de5f629edafed2968b89d8ca06b9b39c9469ed2c22f3ca265bb6f9\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":7,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-hbarhub-containers\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":6,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-hbarhub-networks\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":5,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-hbarhub-volumes\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":10,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-hbarhub-images\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"timed_out\":false,\"tool\":\"docker\"},{\"duration_ms\":30,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-compose-config\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":4267,\"stdout_sha256\":\"05e127c4b23822d5229a6497983c9d412175ec5ac6fc7058013d0bd45bf5cda1\",\"timed_out\":false,\"tool\":\"docker\"}],\"command_id\":\"HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z\",\"container_environment_requested\":false,\"control_plane_error\":null,\"diagnosis\":\"HBARHUB_STANDARD_LOCAL_DEPLOYMENT_PLAN_READY\",\"diagnostic_complete\":true,\"docker\":{\"available\":true,\"compose_config\":{\"attempted\":true,\"config_bytes\":4267,\"config_input_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"config_sha256\":\"05e127c4b23822d5229a6497983c9d412175ec5ac6fc7058013d0bd45bf5cda1\",\"env_file_transform\":{\"config_input_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"env_file_present\":false,\"method\":\"SOURCE_UNCHANGED_NO_ENV_FILE\",\"removed_block_count\":0,\"removed_block_set_sha256\":\"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945\",\"removed_path_count\":0,\"removed_paths_all_dot_env\":true,\"secret_file_read\":false,\"source_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"source_unchanged\":true,\"valid\":true,\"writes_performed\":false},\"rc\":0,\"secret_file_read\":false,\"services\":[\"postgres\",\"redis\",\"scheduler\",\"web\",\"worker\"],\"services_match\":true,\"source_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"v4_failure_stderr_sha256\":\"ba21762623983ad018d6304d027d71b6daf31b7c183482acf2579424be4cc326\",\"v4_unsupported_flag_removed\":true,\"valid\":true},\"compose_version\":\"2.26.1-4\",\"container_environment_requested\":false,\"containers\":[],\"images\":[],\"networks\":[],\"server_version\":\"26.1.5+dfsg1\",\"volumes\":[]},\"duration_ms\":105,\"failed_checks\":[],\"failures\":[],\"gate\":\"READY_FOR_STANDARD_LOCAL_DEPLOYMENT_APPLY\",\"identity\":{\"expected_hostname\":\"core-apps\",\"hostname_short\":\"core-apps\",\"matches\":true},\"mutation_outcome\":\"NO_MUTATION\",\"plan\":{\"acceptance\":[\"all five services are present\",\"postgres and redis are healthy\",\"web is healthy and /health/live returns success\",\"/health/ready returns success after migrations\",\"worker and scheduler are running\",\"Gitea main remains unchanged\",\"public proxy remains unchanged\"],\"apply_operations\":[\"create /opt/stacks/hbarhub from the verified in-memory git archive\",\"generate deployment secrets locally and write .env mode 0600\",\"validate docker compose config again\",\"build only the hbarhub application image\",\"start postgres and redis, then run Django migrations\",\"start web, worker, and scheduler\",\"verify local live and ready health on port 8040\"],\"apply_preconditions\":[\"all source locks match exactly\",\"only main branch is present\",\"target path and target .env are absent\",\"no hbarhub containers, networks, volumes, or images exist\",\"port 8040 has no listener\",\"standard memory and disk gates pass\",\"docker compose config validates the exact source\"],\"compose_validation\":{\"command\":\"docker compose config --format json --no-interpolate\",\"config_input_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"env_file_transform\":{\"config_input_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"env_file_present\":false,\"method\":\"SOURCE_UNCHANGED_NO_ENV_FILE\",\"removed_block_count\":0,\"removed_block_set_sha256\":\"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945\",\"removed_path_count\":0,\"removed_paths_all_dot_env\":true,\"secret_file_read\":false,\"source_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"source_unchanged\":true,\"valid\":true,\"writes_performed\":false},\"method\":\"SOURCE_UNCHANGED_OR_IN_MEMORY_ENV_FILE_OMISSION\",\"normalized_config_sha256\":\"05e127c4b23822d5229a6497983c9d412175ec5ac6fc7058013d0bd45bf5cda1\",\"secret_file_read\":false,\"services\":[\"postgres\",\"redis\",\"scheduler\",\"web\",\"worker\"],\"source_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"unsupported_v4_flag_removed\":true,\"writes_performed\":false},\"forbidden\":[\"modify Gitea refs or repository content\",\"modify NPMplus, DNS, TLS, or any public proxy\",\"modify monitoring, backups, or other compose projects\",\"read, print, publish, or return generated secret values\",\"write outside the new stack and Docker resources labeled project hbarhub\"],\"next_stage\":\"STANDARD_LOCAL_DEPLOYMENT_APPLY\",\"operation\":\"HBARHUB_FRESH_STANDARD_LOCAL_DEPLOYMENT\",\"parent_inventory\":{\"capsule_sha256\":\"15578fd16d67bd7180858370ff06017184bc79ce14da4eee8005fc9cf8e4219d\",\"changes_made\":false,\"command_id\":\"HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX1-V5-20260803T093519Z\",\"diagnosis\":\"HBARHUB_DEPLOYMENT_PLAN_UNEXPECTED_EXCEPTION\",\"exception_evidence_sha256\":\"7d844bbd82129943f3b700ec95bbc2a73652300ec16c6c8353289e2ec0590fd0\",\"exception_identity\":\"COMPOSE_ENV_FILE_BLOCK_MISSING\",\"exception_type\":\"ValueError\",\"mutation_outcome\":\"NO_MUTATION\",\"output_sha256\":\"8eb695a48187cae0e47dc156a53e7a978b12d5e9e5dcc4108186db746f006206\",\"runner_document_rc\":1,\"runner_json_sha256\":\"84358dea8b34a147269c560fb233581a68e31b49eb0d30618ebc6e90e1a0f756\",\"runner_rc\":1,\"runtime_archive_bytes\":9760,\"runtime_archive_sha256\":\"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e\",\"status\":\"FAIL\"},\"profile\":{\"health_endpoints\":[\"/health/live\",\"/health/ready\"],\"minimum_available_disk_bytes\":10737418240,\"minimum_available_memory_bytes\":2147483648,\"name\":\"STANDARD\",\"services\":[\"postgres\",\"redis\",\"scheduler\",\"web\",\"worker\"]},\"rollback\":{\"operations\":[\"capture sanitized failure evidence\",\"docker compose down --volumes --remove-orphans\",\"remove only application images created by this apply\",\"remove only /opt/stacks/hbarhub created by this apply\",\"verify no hbarhub resources remain and port 8040 is free\"],\"preexisting_data_preserved\":\"preconditions require no preexisting stack or project resources\",\"trigger\":\"any failed post-mutation check\"},\"schema\":1,\"source_lock\":{\"archive_bytes\":9760,\"archive_sha256\":\"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e\",\"branch\":\"main\",\"commit\":\"57d2704dc4dc4f1e00c3e1bda67fc0bc2bef6957\",\"delivery\":\"local bare repository git archive; no Git credentials\",\"repository\":\"homelab-admin/hbarhub\",\"tree\":\"7e13a2e1b5ab35046dbe172383a814151c16cce0\"},\"target\":{\"compose_project\":\"hbarhub\",\"hostname\":\"core-apps\",\"local_port\":8040,\"public_proxy\":false,\"role\":\"core-apps\",\"stack_path\":\"/opt/stacks/hbarhub\",\"vmid\":170}},\"port_listener\":{\"addresses_read_from_output\":false,\"errors\":[],\"kernel_tables_read\":2,\"listener_entry_count\":0,\"listener_present\":false,\"port\":8040},\"private_addresses_included\":false,\"rc\":0,\"read_only\":true,\"ready_for_apply\":true,\"rollback_restored\":null,\"rollback_started\":false,\"sanitized\":true,\"schema\":1,\"secret_files_read\":false,\"secrets_included\":false,\"source\":{\"archive_bytes\":9760,\"archive_member_count\":33,\"archive_member_set_sha256\":\"2bb39282d17b0cbcb368739c4cbd947b72c43585b527b3e685937b6e6dd2b142\",\"archive_sha256\":\"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e\",\"available\":true,\"branch_names\":[\"main\"],\"env_example_key_count\":12,\"env_example_key_set_sha256\":\"730754b06ebb1f8d8855881238d6d5ed290120bb911b1f22cc68c12b4759085e\",\"invalid_utf8_path_count\":0,\"main_head\":\"57d2704dc4dc4f1e00c3e1bda67fc0bc2bef6957\",\"main_tree\":\"7e13a2e1b5ab35046dbe172383a814151c16cce0\",\"published_path_candidates\":[{\"bare_repository\":true,\"bytes\":4096,\"exists\":true,\"gid\":1000,\"git_rc\":0,\"kind\":\"directory\",\"mode\":\"0755\",\"path\":\"/opt/stacks/gitea/data/git/repositories/homelab-admin/hbarhub.git\",\"uid\":1000},{\"exists\":false,\"kind\":null,\"path\":\"/opt/stacks/gitea/data/gitea-repositories/homelab-admin/hbarhub.git\"}],\"python_compile_failures\":[],\"python_file_count\":13,\"requirements\":[\"Django==6.0.7\",\"celery==5.6.3\",\"gunicorn==26.0.0\",\"psycopg[binary]==3.3.4\",\"redis==8.0.1\"],\"requirements_match\":true,\"safe_manifest\":{\".dockerignore\":{\"bytes\":82,\"exists\":true,\"expected_sha256\":\"3870cba2def4ee4e45c8ef33cb7239c6d391a9b57ff17e9b26d7bbdaf03501fa\",\"matches\":true,\"sha256\":\"3870cba2def4ee4e45c8ef33cb7239c6d391a9b57ff17e9b26d7bbdaf03501fa\"},\".env.example\":{\"bytes\":419,\"exists\":true,\"expected_sha256\":\"0c93f24bb448c384a430b65bebcd54b86b570c62df88aa073e1342f7a3eba5b3\",\"matches\":true,\"sha256\":\"0c93f24bb448c384a430b65bebcd54b86b570c62df88aa073e1342f7a3eba5b3\"},\"Dockerfile\":{\"bytes\":477,\"exists\":true,\"expected_sha256\":\"9c0be49681f983c329937f486427dbf002b826973a48d5c1851de7f55a6ce1ab\",\"matches\":true,\"sha256\":\"9c0be49681f983c329937f486427dbf002b826973a48d5c1851de7f55a6ce1ab\"},\"README.md\":{\"bytes\":1429,\"exists\":true,\"expected_sha256\":\"3b6de9c4d5c9f76d51280bb395f86e3cf51b69c982ea6a5a8d3740d09739cfff\",\"matches\":true,\"sha256\":\"3b6de9c4d5c9f76d51280bb395f86e3cf51b69c982ea6a5a8d3740d09739cfff\"},\"compose.yaml\":{\"bytes\":2980,\"exists\":true,\"expected_sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\",\"matches\":true,\"sha256\":\"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc\"},\"config/assets.json\":{\"bytes\":2787,\"exists\":true,\"expected_sha256\":\"dfa2fc55e610dc5bb341169c24d45aaaf4143a1b8c9d021db37a8a8725cd15ff\",\"matches\":true,\"sha256\":\"dfa2fc55e610dc5bb341169c24d45aaaf4143a1b8c9d021db37a8a8725cd15ff\"},\"docs/ARCHITECTURE.md\":{\"bytes\":1214,\"exists\":true,\"expected_sha256\":\"cf219e2f0ee4be0e4881afc7035afff4c79b167579486ecf2eb601fd925d0e8e\",\"matches\":true,\"sha256\":\"cf219e2f0ee4be0e4881afc7035afff4c79b167579486ecf2eb601fd925d0e8e\"},\"docs/OPERATIONS.md\":{\"bytes\":957,\"exists\":true,\"expected_sha256\":\"5b41e7fcb4527eea3e5ab2496ec2239d8021ae8843c302a9f5371d77fdd043a7\",\"matches\":true,\"sha256\":\"5b41e7fcb4527eea3e5ab2496ec2239d8021ae8843c302a9f5371d77fdd043a7\"},\"hbarhub/__init__.py\":{\"bytes\":65,\"exists\":true,\"expected_sha256\":\"8974a9c493587f508e73f358876ade4f3ab0369012b29ffb14280dbe30f721ce\",\"matches\":true,\"sha256\":\"8974a9c493587f508e73f358876ade4f3ab0369012b29ffb14280dbe30f721ce\"},\"hbarhub/celery.py\":{\"bytes\":223,\"exists\":true,\"expected_sha256\":\"b33bfae9785e01372e6b3c88a5747275013831fa5b323cfc60ada4f361551a47\",\"matches\":true,\"sha256\":\"b33bfae9785e01372e6b3c88a5747275013831fa5b323cfc60ada4f361551a47\"},\"hbarhub/settings.py\":{\"bytes\":3614,\"exists\":true,\"expected_sha256\":\"662118548cce23f916be7ed66a468255a3405a3430b301bfe5adba4b764a1f88\",\"matches\":true,\"sha256\":\"662118548cce23f916be7ed66a468255a3405a3430b301bfe5adba4b764a1f88\"},\"hbarhub/urls.py\":{\"bytes\":165,\"exists\":true,\"expected_sha256\":\"ddcebb4348c298dd8047df40cd1698603523f8a4ced6b518ad58f4b724db8cac\",\"matches\":true,\"sha256\":\"ddcebb4348c298dd8047df40cd1698603523f8a4ced6b518ad58f4b724db8cac\"},\"hbarhub/wsgi.py\":{\"bytes\":168,\"exists\":true,\"expected_sha256\":\"03ee75d6dd996de897b4a1c221584459e3b41c507d21f010d5b0372c4da8a630\",\"matches\":true,\"sha256\":\"03ee75d6dd996de897b4a1c221584459e3b41c507d21f010d5b0372c4da8a630\"},\"manage.py\":{\"bytes\":284,\"exists\":true,\"expected_sha256\":\"f9cca66c33a7b629895d0637299fa3aa2396ab6759bcade14ed28a6e2d306b5a\",\"matches\":true,\"sha256\":\"f9cca66c33a7b629895d0637299fa3aa2396ab6759bcade14ed28a6e2d306b5a\"},\"portal/__init__.py\":{\"bytes\":0,\"exists\":true,\"expected_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"matches\":true,\"sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"},\"portal/apps.py\":{\"bytes\":174,\"exists\":true,\"expected_sha256\":\"9308f2f4d7e9d110253fe8574aa42edeabd35a7316ab740d9e5e6ac0ee5498a2\",\"matches\":true,\"sha256\":\"9308f2f4d7e9d110253fe8574aa42edeabd35a7316ab740d9e5e6ac0ee5498a2\"},\"portal/assets.py\":{\"bytes\":911,\"exists\":true,\"expected_sha256\":\"ce231cb3af3460166ef2a23c1456e3f704e44d9f19db42ce030af8a4bea71019\",\"matches\":true,\"sha256\":\"ce231cb3af3460166ef2a23c1456e3f704e44d9f19db42ce030af8a4bea71019\"},\"portal/tasks.py\":{\"bytes\":192,\"exists\":true,\"expected_sha256\":\"8b4402ff2ac1c8603bc9c0821ca16b3b6d610facad7eccf76b83076ee912f0b2\",\"matches\":true,\"sha256\":\"8b4402ff2ac1c8603bc9c0821ca16b3b6d610facad7eccf76b83076ee912f0b2\"},\"portal/templates/portal/home.html\":{\"bytes\":3478,\"exists\":true,\"expected_sha256\":\"bad177066fedee2f8e427cb81ba9c32db4ae36ce533ce0f2090e60b6970378ae\",\"matches\":true,\"sha256\":\"bad177066fedee2f8e427cb81ba9c32db4ae36ce533ce0f2090e60b6970378ae\"},\"portal/tests.py\":{\"bytes\":1371,\"exists\":true,\"expected_sha256\":\"42420399fd48c97ce5ab4872d95b5490e0d3a266df8677d31d0ee1987852c9ff\",\"matches\":true,\"sha256\":\"42420399fd48c97ce5ab4872d95b5490e0d3a266df8677d31d0ee1987852c9ff\"},\"portal/urls.py\":{\"bytes\":260,\"exists\":true,\"expected_sha256\":\"164665d9a442ab79bc4c0f250d1e3d76a096b4f93825e9900fab5bde0d53a088\",\"matches\":true,\"sha256\":\"164665d9a442ab79bc4c0f250d1e3d76a096b4f93825e9900fab5bde0d53a088\"},\"portal/views.py\":{\"bytes\":1449,\"exists\":true,\"expected_sha256\":\"b1166fa6008792a83701740f560f93a3b74b3203003bc738c35a5f56454c1f14\",\"matches\":true,\"sha256\":\"b1166fa6008792a83701740f560f93a3b74b3203003bc738c35a5f56454c1f14\"},\"requirements.txt\":{\"bytes\":81,\"exists\":true,\"expected_sha256\":\"9838729f64d26b126c20f47836bcedfc97262a46059c6f810e088b1b7bf02ffa\",\"matches\":true,\"sha256\":\"9838729f64d26b126c20f47836bcedfc97262a46059c6f810e088b1b7bf02ffa\"}},\"safe_manifest_all_match\":true,\"safe_manifest_scope\":\"PUBLISHED_23_SOURCE_FILES\",\"secret_file_read\":false,\"selected_path\":\"/opt/stacks/gitea/data/git/repositories/homelab-admin/hbarhub.git\",\"tracked_file_count\":27,\"tracked_total_bytes\":26067,\"tree_listing_sha256\":\"8119f9a0c680eca043b5d648b8bf90567c90e5a6ae4f503779f4e8b66fcaa954\",\"tree_path_set_sha256\":\"245c3f22584759bed02f493855facb68662333953100f036716afffc1f65e83f\"},\"stack\":{\"root\":{\"exists\":false,\"kind\":null,\"path\":\"/opt/stacks/hbarhub\"},\"secret_env_metadata_only\":{\"content_read\":false,\"exists\":false,\"kind\":null,\"path\":\"/opt/stacks/hbarhub/.env\"}},\"status\":\"OK\",\"unexpected_exception\":{}}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index a37a199..d42df5d 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,22 +1,22 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX1-V5-20260803T093519Z -STATUS=FAIL -RC=1 +COMMAND_ID=HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z +STATUS=OK +RC=0 HOST=pve01 MODE=verify -COMPONENT=hbarhub-standard-local-deployment-plan-fix1-v5 +COMPONENT=hbarhub-standard-local-deployment-plan-fix2-v6 REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 -COMMAND_SHA256=1f0e900e6b1b1b11716a07b3ed1cb3f227571cba359bec737b419dc39327db6a +COMMAND_SHA256=cda1dbd047b226d23bcd8c6e8c02f46be9957c2f777aab7b559e582a794b8d0b DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGE_DECLARED=false RESULT_CONTRACT_VALID=true RESULT_CONTRACT_STATUS=NOT_APPLICABLE RESULT_CONTRACT_ERROR=NONE -COMMAND_RC=1 +COMMAND_RC=0 CHANGES_MADE=false ROLLBACK_STARTED=false ROLLBACK_RESTORED=null @@ -24,11 +24,11 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=8eb695a48187cae0e47dc156a53e7a978b12d5e9e5dcc4108186db746f006206 -SANITIZED_OUTPUT_SHA256=8eb695a48187cae0e47dc156a53e7a978b12d5e9e5dcc4108186db746f006206 +RAW_EVIDENCE_SHA256=8a879b5f406593f076d9eaff004256d4df2e02ac75e5088cee94d964a841fcfc +SANITIZED_OUTPUT_SHA256=8a879b5f406593f076d9eaff004256d4df2e02ac75e5088cee94d964a841fcfc OUTPUT_BEGIN -HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX1-V5-20260803T093519Z","mutation_outcome":"NO_MUTATION","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1} -{"PLAN_SHA256":null,"candidate_plan_sha256":null,"capacity":{},"changes_made":false,"checks":{},"command_audit":[{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-candidate-1-is-bare","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":5,"stdout_sha256":"a17fcf0a2f50e2d495e4f90ce263410edc183add6c62699a2facbccf60410f74","timed_out":false,"tool":"git"},{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-main-head","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":41,"stdout_sha256":"dc0f064e529250268d3ff6232078a19aca8a12b3abc0291e79756ffde77303ed","timed_out":false,"tool":"git"},{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-main-tree","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":41,"stdout_sha256":"59f30ea418f3e638f5c0294f375feeda787f7da9acc07ac67f8276032be811a2","timed_out":false,"tool":"git"},{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-branches","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":5,"stdout_sha256":"6403203dd5a0867eb14d104ee8a73730bd72dd9ad92e78d996a6dba0a5dcfc01","timed_out":false,"tool":"git"},{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-main-ls-tree","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":2095,"stdout_sha256":"8119f9a0c680eca043b5d648b8bf90567c90e5a6ae4f503779f4e8b66fcaa954","timed_out":false,"tool":"git"},{"duration_ms":1,"output_within_limit":true,"rc":0,"stage":"git-main-archive","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":9760,"stdout_sha256":"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e","timed_out":false,"tool":"git"},{"duration_ms":9,"output_within_limit":true,"rc":0,"stage":"docker-server-version","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":13,"stdout_sha256":"8484e7b831ba500ccf015246dc0a7b3f98de3c11519b347437ff8e91db018257","timed_out":false,"tool":"docker"},{"duration_ms":25,"output_within_limit":true,"rc":0,"stage":"docker-compose-version","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":9,"stdout_sha256":"9a98539f27de5f629edafed2968b89d8ca06b9b39c9469ed2c22f3ca265bb6f9","timed_out":false,"tool":"docker"},{"duration_ms":7,"output_within_limit":true,"rc":0,"stage":"docker-hbarhub-containers","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","timed_out":false,"tool":"docker"},{"duration_ms":5,"output_within_limit":true,"rc":0,"stage":"docker-hbarhub-networks","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","timed_out":false,"tool":"docker"},{"duration_ms":6,"output_within_limit":true,"rc":0,"stage":"docker-hbarhub-volumes","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","timed_out":false,"tool":"docker"},{"duration_ms":11,"output_within_limit":true,"rc":0,"stage":"docker-hbarhub-images","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","timed_out":false,"tool":"docker"}],"command_id":"HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX1-V5-20260803T093519Z","container_environment_requested":false,"control_plane_error":null,"diagnosis":"HBARHUB_DEPLOYMENT_PLAN_UNEXPECTED_EXCEPTION","diagnostic_complete":false,"docker":{},"duration_ms":74,"failed_checks":[],"failures":["HBARHUB_DEPLOYMENT_PLAN_UNEXPECTED_EXCEPTION"],"gate":"DEPLOYMENT_PLAN_DIAGNOSTIC_INCOMPLETE","identity":{"expected_hostname":"core-apps","hostname_short":"core-apps","matches":true},"mutation_outcome":"NO_MUTATION","plan":{},"port_listener":{},"private_addresses_included":false,"rc":1,"read_only":true,"ready_for_apply":false,"rollback_restored":null,"rollback_started":false,"sanitized":true,"schema":1,"secret_files_read":false,"secrets_included":false,"source":{"archive_bytes":9760,"archive_member_count":33,"archive_member_set_sha256":"2bb39282d17b0cbcb368739c4cbd947b72c43585b527b3e685937b6e6dd2b142","archive_sha256":"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e","available":true,"branch_names":["main"],"env_example_key_count":12,"env_example_key_set_sha256":"730754b06ebb1f8d8855881238d6d5ed290120bb911b1f22cc68c12b4759085e","invalid_utf8_path_count":0,"main_head":"57d2704dc4dc4f1e00c3e1bda67fc0bc2bef6957","main_tree":"7e13a2e1b5ab35046dbe172383a814151c16cce0","published_path_candidates":[{"bare_repository":true,"bytes":4096,"exists":true,"gid":1000,"git_rc":0,"kind":"directory","mode":"0755","path":"/opt/stacks/gitea/data/git/repositories/homelab-admin/hbarhub.git","uid":1000},{"exists":false,"kind":null,"path":"/opt/stacks/gitea/data/gitea-repositories/homelab-admin/hbarhub.git"}],"python_compile_failures":[],"python_file_count":13,"requirements":["Django==6.0.7","celery==5.6.3","gunicorn==26.0.0","psycopg[binary]==3.3.4","redis==8.0.1"],"requirements_match":true,"safe_manifest":{".dockerignore":{"bytes":82,"exists":true,"expected_sha256":"3870cba2def4ee4e45c8ef33cb7239c6d391a9b57ff17e9b26d7bbdaf03501fa","matches":true,"sha256":"3870cba2def4ee4e45c8ef33cb7239c6d391a9b57ff17e9b26d7bbdaf03501fa"},".env.example":{"bytes":419,"exists":true,"expected_sha256":"0c93f24bb448c384a430b65bebcd54b86b570c62df88aa073e1342f7a3eba5b3","matches":true,"sha256":"0c93f24bb448c384a430b65bebcd54b86b570c62df88aa073e1342f7a3eba5b3"},"Dockerfile":{"bytes":477,"exists":true,"expected_sha256":"9c0be49681f983c329937f486427dbf002b826973a48d5c1851de7f55a6ce1ab","matches":true,"sha256":"9c0be49681f983c329937f486427dbf002b826973a48d5c1851de7f55a6ce1ab"},"README.md":{"bytes":1429,"exists":true,"expected_sha256":"3b6de9c4d5c9f76d51280bb395f86e3cf51b69c982ea6a5a8d3740d09739cfff","matches":true,"sha256":"3b6de9c4d5c9f76d51280bb395f86e3cf51b69c982ea6a5a8d3740d09739cfff"},"compose.yaml":{"bytes":2980,"exists":true,"expected_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","matches":true,"sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc"},"config/assets.json":{"bytes":2787,"exists":true,"expected_sha256":"dfa2fc55e610dc5bb341169c24d45aaaf4143a1b8c9d021db37a8a8725cd15ff","matches":true,"sha256":"dfa2fc55e610dc5bb341169c24d45aaaf4143a1b8c9d021db37a8a8725cd15ff"},"docs/ARCHITECTURE.md":{"bytes":1214,"exists":true,"expected_sha256":"cf219e2f0ee4be0e4881afc7035afff4c79b167579486ecf2eb601fd925d0e8e","matches":true,"sha256":"cf219e2f0ee4be0e4881afc7035afff4c79b167579486ecf2eb601fd925d0e8e"},"docs/OPERATIONS.md":{"bytes":957,"exists":true,"expected_sha256":"5b41e7fcb4527eea3e5ab2496ec2239d8021ae8843c302a9f5371d77fdd043a7","matches":true,"sha256":"5b41e7fcb4527eea3e5ab2496ec2239d8021ae8843c302a9f5371d77fdd043a7"},"hbarhub/__init__.py":{"bytes":65,"exists":true,"expected_sha256":"8974a9c493587f508e73f358876ade4f3ab0369012b29ffb14280dbe30f721ce","matches":true,"sha256":"8974a9c493587f508e73f358876ade4f3ab0369012b29ffb14280dbe30f721ce"},"hbarhub/celery.py":{"bytes":223,"exists":true,"expected_sha256":"b33bfae9785e01372e6b3c88a5747275013831fa5b323cfc60ada4f361551a47","matches":true,"sha256":"b33bfae9785e01372e6b3c88a5747275013831fa5b323cfc60ada4f361551a47"},"hbarhub/settings.py":{"bytes":3614,"exists":true,"expected_sha256":"662118548cce23f916be7ed66a468255a3405a3430b301bfe5adba4b764a1f88","matches":true,"sha256":"662118548cce23f916be7ed66a468255a3405a3430b301bfe5adba4b764a1f88"},"hbarhub/urls.py":{"bytes":165,"exists":true,"expected_sha256":"ddcebb4348c298dd8047df40cd1698603523f8a4ced6b518ad58f4b724db8cac","matches":true,"sha256":"ddcebb4348c298dd8047df40cd1698603523f8a4ced6b518ad58f4b724db8cac"},"hbarhub/wsgi.py":{"bytes":168,"exists":true,"expected_sha256":"03ee75d6dd996de897b4a1c221584459e3b41c507d21f010d5b0372c4da8a630","matches":true,"sha256":"03ee75d6dd996de897b4a1c221584459e3b41c507d21f010d5b0372c4da8a630"},"manage.py":{"bytes":284,"exists":true,"expected_sha256":"f9cca66c33a7b629895d0637299fa3aa2396ab6759bcade14ed28a6e2d306b5a","matches":true,"sha256":"f9cca66c33a7b629895d0637299fa3aa2396ab6759bcade14ed28a6e2d306b5a"},"portal/__init__.py":{"bytes":0,"exists":true,"expected_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","matches":true,"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"portal/apps.py":{"bytes":174,"exists":true,"expected_sha256":"9308f2f4d7e9d110253fe8574aa42edeabd35a7316ab740d9e5e6ac0ee5498a2","matches":true,"sha256":"9308f2f4d7e9d110253fe8574aa42edeabd35a7316ab740d9e5e6ac0ee5498a2"},"portal/assets.py":{"bytes":911,"exists":true,"expected_sha256":"ce231cb3af3460166ef2a23c1456e3f704e44d9f19db42ce030af8a4bea71019","matches":true,"sha256":"ce231cb3af3460166ef2a23c1456e3f704e44d9f19db42ce030af8a4bea71019"},"portal/tasks.py":{"bytes":192,"exists":true,"expected_sha256":"8b4402ff2ac1c8603bc9c0821ca16b3b6d610facad7eccf76b83076ee912f0b2","matches":true,"sha256":"8b4402ff2ac1c8603bc9c0821ca16b3b6d610facad7eccf76b83076ee912f0b2"},"portal/templates/portal/home.html":{"bytes":3478,"exists":true,"expected_sha256":"bad177066fedee2f8e427cb81ba9c32db4ae36ce533ce0f2090e60b6970378ae","matches":true,"sha256":"bad177066fedee2f8e427cb81ba9c32db4ae36ce533ce0f2090e60b6970378ae"},"portal/tests.py":{"bytes":1371,"exists":true,"expected_sha256":"42420399fd48c97ce5ab4872d95b5490e0d3a266df8677d31d0ee1987852c9ff","matches":true,"sha256":"42420399fd48c97ce5ab4872d95b5490e0d3a266df8677d31d0ee1987852c9ff"},"portal/urls.py":{"bytes":260,"exists":true,"expected_sha256":"164665d9a442ab79bc4c0f250d1e3d76a096b4f93825e9900fab5bde0d53a088","matches":true,"sha256":"164665d9a442ab79bc4c0f250d1e3d76a096b4f93825e9900fab5bde0d53a088"},"portal/views.py":{"bytes":1449,"exists":true,"expected_sha256":"b1166fa6008792a83701740f560f93a3b74b3203003bc738c35a5f56454c1f14","matches":true,"sha256":"b1166fa6008792a83701740f560f93a3b74b3203003bc738c35a5f56454c1f14"},"requirements.txt":{"bytes":81,"exists":true,"expected_sha256":"9838729f64d26b126c20f47836bcedfc97262a46059c6f810e088b1b7bf02ffa","matches":true,"sha256":"9838729f64d26b126c20f47836bcedfc97262a46059c6f810e088b1b7bf02ffa"}},"safe_manifest_all_match":true,"safe_manifest_scope":"PUBLISHED_23_SOURCE_FILES","secret_file_read":false,"selected_path":"/opt/stacks/gitea/data/git/repositories/homelab-admin/hbarhub.git","tracked_file_count":27,"tracked_total_bytes":26067,"tree_listing_sha256":"8119f9a0c680eca043b5d648b8bf90567c90e5a6ae4f503779f4e8b66fcaa954","tree_path_set_sha256":"245c3f22584759bed02f493855facb68662333953100f036716afffc1f65e83f"},"stack":{},"status":"FAIL","unexpected_exception":{"errno":null,"message_bytes":41,"message_sha256":"7d844bbd82129943f3b700ec95bbc2a73652300ec16c6c8353289e2ec0590fd0","type":"ValueError"}} +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z","mutation_outcome":"NO_MUTATION","rollback_restored":null,"rollback_started":false,"status":"OK","version":1} +{"PLAN_SHA256":"7c5e7eed51a9c2de733631c21063714423ac3f4a692549958d4b4807140b6684","candidate_plan_sha256":"7c5e7eed51a9c2de733631c21063714423ac3f4a692549958d4b4807140b6684","capacity":{"disk":{"available_bytes":76465217536,"gate":true,"required_available_bytes":10737418240,"total_bytes":126605975552},"memory":{"available_bytes":2744274944,"required_available_bytes":2147483648,"standard_gate":true,"swap_free_bytes":6714781696,"swap_total_bytes":8589930496,"total_bytes":10435301376}},"changes_made":false,"checks":{"archive_bytes_exact":true,"archive_sha256_exact":true,"compose_config_valid":true,"compose_env_file_handling_valid":true,"compose_services_exact":true,"compose_source_exact":true,"compose_v4_unsupported_flag_removed":true,"core_hostname":true,"disk_gate":true,"docker_available":true,"no_hbarhub_containers":true,"no_hbarhub_images":true,"no_hbarhub_networks":true,"no_hbarhub_volumes":true,"only_main_branch":true,"port_8040_free":true,"python_syntax_valid":true,"read_only":true,"requirements_exact":true,"safe_manifest_exact":true,"source_available":true,"source_commit_exact":true,"source_tree_exact":true,"standard_memory_gate":true,"target_env_absent":true,"target_path_absent":true,"tracked_file_count_exact":true,"tracked_total_bytes_exact":true,"tree_listing_exact":true,"tree_path_set_exact":true},"command_audit":[{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-candidate-1-is-bare","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":5,"stdout_sha256":"a17fcf0a2f50e2d495e4f90ce263410edc183add6c62699a2facbccf60410f74","timed_out":false,"tool":"git"},{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-main-head","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":41,"stdout_sha256":"dc0f064e529250268d3ff6232078a19aca8a12b3abc0291e79756ffde77303ed","timed_out":false,"tool":"git"},{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-main-tree","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":41,"stdout_sha256":"59f30ea418f3e638f5c0294f375feeda787f7da9acc07ac67f8276032be811a2","timed_out":false,"tool":"git"},{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-branches","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":5,"stdout_sha256":"6403203dd5a0867eb14d104ee8a73730bd72dd9ad92e78d996a6dba0a5dcfc01","timed_out":false,"tool":"git"},{"duration_ms":0,"output_within_limit":true,"rc":0,"stage":"git-main-ls-tree","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":2095,"stdout_sha256":"8119f9a0c680eca043b5d648b8bf90567c90e5a6ae4f503779f4e8b66fcaa954","timed_out":false,"tool":"git"},{"duration_ms":1,"output_within_limit":true,"rc":0,"stage":"git-main-archive","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":9760,"stdout_sha256":"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e","timed_out":false,"tool":"git"},{"duration_ms":11,"output_within_limit":true,"rc":0,"stage":"docker-server-version","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":13,"stdout_sha256":"8484e7b831ba500ccf015246dc0a7b3f98de3c11519b347437ff8e91db018257","timed_out":false,"tool":"docker"},{"duration_ms":24,"output_within_limit":true,"rc":0,"stage":"docker-compose-version","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":9,"stdout_sha256":"9a98539f27de5f629edafed2968b89d8ca06b9b39c9469ed2c22f3ca265bb6f9","timed_out":false,"tool":"docker"},{"duration_ms":7,"output_within_limit":true,"rc":0,"stage":"docker-hbarhub-containers","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","timed_out":false,"tool":"docker"},{"duration_ms":6,"output_within_limit":true,"rc":0,"stage":"docker-hbarhub-networks","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","timed_out":false,"tool":"docker"},{"duration_ms":5,"output_within_limit":true,"rc":0,"stage":"docker-hbarhub-volumes","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","timed_out":false,"tool":"docker"},{"duration_ms":10,"output_within_limit":true,"rc":0,"stage":"docker-hbarhub-images","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","timed_out":false,"tool":"docker"},{"duration_ms":30,"output_within_limit":true,"rc":0,"stage":"docker-compose-config","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":4267,"stdout_sha256":"05e127c4b23822d5229a6497983c9d412175ec5ac6fc7058013d0bd45bf5cda1","timed_out":false,"tool":"docker"}],"command_id":"HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX2-V6-20260803T094841Z","container_environment_requested":false,"control_plane_error":null,"diagnosis":"HBARHUB_STANDARD_LOCAL_DEPLOYMENT_PLAN_READY","diagnostic_complete":true,"docker":{"available":true,"compose_config":{"attempted":true,"config_bytes":4267,"config_input_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","config_sha256":"05e127c4b23822d5229a6497983c9d412175ec5ac6fc7058013d0bd45bf5cda1","env_file_transform":{"config_input_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","env_file_present":false,"method":"SOURCE_UNCHANGED_NO_ENV_FILE","removed_block_count":0,"removed_block_set_sha256":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","removed_path_count":0,"removed_paths_all_dot_env":true,"secret_file_read":false,"source_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","source_unchanged":true,"valid":true,"writes_performed":false},"rc":0,"secret_file_read":false,"services":["postgres","redis","scheduler","web","worker"],"services_match":true,"source_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","v4_failure_stderr_sha256":"ba21762623983ad018d6304d027d71b6daf31b7c183482acf2579424be4cc326","v4_unsupported_flag_removed":true,"valid":true},"compose_version":"2.26.1-4","container_environment_requested":false,"containers":[],"images":[],"networks":[],"server_version":"26.1.5+dfsg1","volumes":[]},"duration_ms":105,"failed_checks":[],"failures":[],"gate":"READY_FOR_STANDARD_LOCAL_DEPLOYMENT_APPLY","identity":{"expected_hostname":"core-apps","hostname_short":"core-apps","matches":true},"mutation_outcome":"NO_MUTATION","plan":{"acceptance":["all five services are present","postgres and redis are healthy","web is healthy and /health/live returns success","/health/ready returns success after migrations","worker and scheduler are running","Gitea main remains unchanged","public proxy remains unchanged"],"apply_operations":["create /opt/stacks/hbarhub from the verified in-memory git archive","generate deployment secrets locally and write .env mode 0600","validate docker compose config again","build only the hbarhub application image","start postgres and redis, then run Django migrations","start web, worker, and scheduler","verify local live and ready health on port 8040"],"apply_preconditions":["all source locks match exactly","only main branch is present","target path and target .env are absent","no hbarhub containers, networks, volumes, or images exist","port 8040 has no listener","standard memory and disk gates pass","docker compose config validates the exact source"],"compose_validation":{"command":"docker compose config --format json --no-interpolate","config_input_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","env_file_transform":{"config_input_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","env_file_present":false,"method":"SOURCE_UNCHANGED_NO_ENV_FILE","removed_block_count":0,"removed_block_set_sha256":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","removed_path_count":0,"removed_paths_all_dot_env":true,"secret_file_read":false,"source_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","source_unchanged":true,"valid":true,"writes_performed":false},"method":"SOURCE_UNCHANGED_OR_IN_MEMORY_ENV_FILE_OMISSION","normalized_config_sha256":"05e127c4b23822d5229a6497983c9d412175ec5ac6fc7058013d0bd45bf5cda1","secret_file_read":false,"services":["postgres","redis","scheduler","web","worker"],"source_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","unsupported_v4_flag_removed":true,"writes_performed":false},"forbidden":["modify Gitea refs or repository content","modify NPMplus, DNS, TLS, or any public proxy","modify monitoring, backups, or other compose projects","read, print, publish, or return generated secret values","write outside the new stack and Docker resources labeled project hbarhub"],"next_stage":"STANDARD_LOCAL_DEPLOYMENT_APPLY","operation":"HBARHUB_FRESH_STANDARD_LOCAL_DEPLOYMENT","parent_inventory":{"capsule_sha256":"15578fd16d67bd7180858370ff06017184bc79ce14da4eee8005fc9cf8e4219d","changes_made":false,"command_id":"HBARHUB-STANDARD-LOCAL-DEPLOYMENT-PLAN-FIX1-V5-20260803T093519Z","diagnosis":"HBARHUB_DEPLOYMENT_PLAN_UNEXPECTED_EXCEPTION","exception_evidence_sha256":"7d844bbd82129943f3b700ec95bbc2a73652300ec16c6c8353289e2ec0590fd0","exception_identity":"COMPOSE_ENV_FILE_BLOCK_MISSING","exception_type":"ValueError","mutation_outcome":"NO_MUTATION","output_sha256":"8eb695a48187cae0e47dc156a53e7a978b12d5e9e5dcc4108186db746f006206","runner_document_rc":1,"runner_json_sha256":"84358dea8b34a147269c560fb233581a68e31b49eb0d30618ebc6e90e1a0f756","runner_rc":1,"runtime_archive_bytes":9760,"runtime_archive_sha256":"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e","status":"FAIL"},"profile":{"health_endpoints":["/health/live","/health/ready"],"minimum_available_disk_bytes":10737418240,"minimum_available_memory_bytes":2147483648,"name":"STANDARD","services":["postgres","redis","scheduler","web","worker"]},"rollback":{"operations":["capture sanitized failure evidence","docker compose down --volumes --remove-orphans","remove only application images created by this apply","remove only /opt/stacks/hbarhub created by this apply","verify no hbarhub resources remain and port 8040 is free"],"preexisting_data_preserved":"preconditions require no preexisting stack or project resources","trigger":"any failed post-mutation check"},"schema":1,"source_lock":{"archive_bytes":9760,"archive_sha256":"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e","branch":"main","commit":"57d2704dc4dc4f1e00c3e1bda67fc0bc2bef6957","delivery":"local bare repository git archive; no Git credentials","repository":"homelab-admin/hbarhub","tree":"7e13a2e1b5ab35046dbe172383a814151c16cce0"},"target":{"compose_project":"hbarhub","hostname":"core-apps","local_port":8040,"public_proxy":false,"role":"core-apps","stack_path":"/opt/stacks/hbarhub","vmid":170}},"port_listener":{"addresses_read_from_output":false,"errors":[],"kernel_tables_read":2,"listener_entry_count":0,"listener_present":false,"port":8040},"private_addresses_included":false,"rc":0,"read_only":true,"ready_for_apply":true,"rollback_restored":null,"rollback_started":false,"sanitized":true,"schema":1,"secret_files_read":false,"secrets_included":false,"source":{"archive_bytes":9760,"archive_member_count":33,"archive_member_set_sha256":"2bb39282d17b0cbcb368739c4cbd947b72c43585b527b3e685937b6e6dd2b142","archive_sha256":"a7fcc963703dfcf71e1c72410e4af8836ced830b35eff10dbcc59f333bbd0a9e","available":true,"branch_names":["main"],"env_example_key_count":12,"env_example_key_set_sha256":"730754b06ebb1f8d8855881238d6d5ed290120bb911b1f22cc68c12b4759085e","invalid_utf8_path_count":0,"main_head":"57d2704dc4dc4f1e00c3e1bda67fc0bc2bef6957","main_tree":"7e13a2e1b5ab35046dbe172383a814151c16cce0","published_path_candidates":[{"bare_repository":true,"bytes":4096,"exists":true,"gid":1000,"git_rc":0,"kind":"directory","mode":"0755","path":"/opt/stacks/gitea/data/git/repositories/homelab-admin/hbarhub.git","uid":1000},{"exists":false,"kind":null,"path":"/opt/stacks/gitea/data/gitea-repositories/homelab-admin/hbarhub.git"}],"python_compile_failures":[],"python_file_count":13,"requirements":["Django==6.0.7","celery==5.6.3","gunicorn==26.0.0","psycopg[binary]==3.3.4","redis==8.0.1"],"requirements_match":true,"safe_manifest":{".dockerignore":{"bytes":82,"exists":true,"expected_sha256":"3870cba2def4ee4e45c8ef33cb7239c6d391a9b57ff17e9b26d7bbdaf03501fa","matches":true,"sha256":"3870cba2def4ee4e45c8ef33cb7239c6d391a9b57ff17e9b26d7bbdaf03501fa"},".env.example":{"bytes":419,"exists":true,"expected_sha256":"0c93f24bb448c384a430b65bebcd54b86b570c62df88aa073e1342f7a3eba5b3","matches":true,"sha256":"0c93f24bb448c384a430b65bebcd54b86b570c62df88aa073e1342f7a3eba5b3"},"Dockerfile":{"bytes":477,"exists":true,"expected_sha256":"9c0be49681f983c329937f486427dbf002b826973a48d5c1851de7f55a6ce1ab","matches":true,"sha256":"9c0be49681f983c329937f486427dbf002b826973a48d5c1851de7f55a6ce1ab"},"README.md":{"bytes":1429,"exists":true,"expected_sha256":"3b6de9c4d5c9f76d51280bb395f86e3cf51b69c982ea6a5a8d3740d09739cfff","matches":true,"sha256":"3b6de9c4d5c9f76d51280bb395f86e3cf51b69c982ea6a5a8d3740d09739cfff"},"compose.yaml":{"bytes":2980,"exists":true,"expected_sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc","matches":true,"sha256":"65ea3fe0cd0d13651f920a776379876e9202a9614dd0368404d7a24561497efc"},"config/assets.json":{"bytes":2787,"exists":true,"expected_sha256":"dfa2fc55e610dc5bb341169c24d45aaaf4143a1b8c9d021db37a8a8725cd15ff","matches":true,"sha256":"dfa2fc55e610dc5bb341169c24d45aaaf4143a1b8c9d021db37a8a8725cd15ff"},"docs/ARCHITECTURE.md":{"bytes":1214,"exists":true,"expected_sha256":"cf219e2f0ee4be0e4881afc7035afff4c79b167579486ecf2eb601fd925d0e8e","matches":true,"sha256":"cf219e2f0ee4be0e4881afc7035afff4c79b167579486ecf2eb601fd925d0e8e"},"docs/OPERATIONS.md":{"bytes":957,"exists":true,"expected_sha256":"5b41e7fcb4527eea3e5ab2496ec2239d8021ae8843c302a9f5371d77fdd043a7","matches":true,"sha256":"5b41e7fcb4527eea3e5ab2496ec2239d8021ae8843c302a9f5371d77fdd043a7"},"hbarhub/__init__.py":{"bytes":65,"exists":true,"expected_sha256":"8974a9c493587f508e73f358876ade4f3ab0369012b29ffb14280dbe30f721ce","matches":true,"sha256":"8974a9c493587f508e73f358876ade4f3ab0369012b29ffb14280dbe30f721ce"},"hbarhub/celery.py":{"bytes":223,"exists":true,"expected_sha256":"b33bfae9785e01372e6b3c88a5747275013831fa5b323cfc60ada4f361551a47","matches":true,"sha256":"b33bfae9785e01372e6b3c88a5747275013831fa5b323cfc60ada4f361551a47"},"hbarhub/settings.py":{"bytes":3614,"exists":true,"expected_sha256":"662118548cce23f916be7ed66a468255a3405a3430b301bfe5adba4b764a1f88","matches":true,"sha256":"662118548cce23f916be7ed66a468255a3405a3430b301bfe5adba4b764a1f88"},"hbarhub/urls.py":{"bytes":165,"exists":true,"expected_sha256":"ddcebb4348c298dd8047df40cd1698603523f8a4ced6b518ad58f4b724db8cac","matches":true,"sha256":"ddcebb4348c298dd8047df40cd1698603523f8a4ced6b518ad58f4b724db8cac"},"hbarhub/wsgi.py":{"bytes":168,"exists":true,"expected_sha256":"03ee75d6dd996de897b4a1c221584459e3b41c507d21f010d5b0372c4da8a630","matches":true,"sha256":"03ee75d6dd996de897b4a1c221584459e3b41c507d21f010d5b0372c4da8a630"},"manage.py":{"bytes":284,"exists":true,"expected_sha256":"f9cca66c33a7b629895d0637299fa3aa2396ab6759bcade14ed28a6e2d306b5a","matches":true,"sha256":"f9cca66c33a7b629895d0637299fa3aa2396ab6759bcade14ed28a6e2d306b5a"},"portal/__init__.py":{"bytes":0,"exists":true,"expected_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","matches":true,"sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"portal/apps.py":{"bytes":174,"exists":true,"expected_sha256":"9308f2f4d7e9d110253fe8574aa42edeabd35a7316ab740d9e5e6ac0ee5498a2","matches":true,"sha256":"9308f2f4d7e9d110253fe8574aa42edeabd35a7316ab740d9e5e6ac0ee5498a2"},"portal/assets.py":{"bytes":911,"exists":true,"expected_sha256":"ce231cb3af3460166ef2a23c1456e3f704e44d9f19db42ce030af8a4bea71019","matches":true,"sha256":"ce231cb3af3460166ef2a23c1456e3f704e44d9f19db42ce030af8a4bea71019"},"portal/tasks.py":{"bytes":192,"exists":true,"expected_sha256":"8b4402ff2ac1c8603bc9c0821ca16b3b6d610facad7eccf76b83076ee912f0b2","matches":true,"sha256":"8b4402ff2ac1c8603bc9c0821ca16b3b6d610facad7eccf76b83076ee912f0b2"},"portal/templates/portal/home.html":{"bytes":3478,"exists":true,"expected_sha256":"bad177066fedee2f8e427cb81ba9c32db4ae36ce533ce0f2090e60b6970378ae","matches":true,"sha256":"bad177066fedee2f8e427cb81ba9c32db4ae36ce533ce0f2090e60b6970378ae"},"portal/tests.py":{"bytes":1371,"exists":true,"expected_sha256":"42420399fd48c97ce5ab4872d95b5490e0d3a266df8677d31d0ee1987852c9ff","matches":true,"sha256":"42420399fd48c97ce5ab4872d95b5490e0d3a266df8677d31d0ee1987852c9ff"},"portal/urls.py":{"bytes":260,"exists":true,"expected_sha256":"164665d9a442ab79bc4c0f250d1e3d76a096b4f93825e9900fab5bde0d53a088","matches":true,"sha256":"164665d9a442ab79bc4c0f250d1e3d76a096b4f93825e9900fab5bde0d53a088"},"portal/views.py":{"bytes":1449,"exists":true,"expected_sha256":"b1166fa6008792a83701740f560f93a3b74b3203003bc738c35a5f56454c1f14","matches":true,"sha256":"b1166fa6008792a83701740f560f93a3b74b3203003bc738c35a5f56454c1f14"},"requirements.txt":{"bytes":81,"exists":true,"expected_sha256":"9838729f64d26b126c20f47836bcedfc97262a46059c6f810e088b1b7bf02ffa","matches":true,"sha256":"9838729f64d26b126c20f47836bcedfc97262a46059c6f810e088b1b7bf02ffa"}},"safe_manifest_all_match":true,"safe_manifest_scope":"PUBLISHED_23_SOURCE_FILES","secret_file_read":false,"selected_path":"/opt/stacks/gitea/data/git/repositories/homelab-admin/hbarhub.git","tracked_file_count":27,"tracked_total_bytes":26067,"tree_listing_sha256":"8119f9a0c680eca043b5d648b8bf90567c90e5a6ae4f503779f4e8b66fcaa954","tree_path_set_sha256":"245c3f22584759bed02f493855facb68662333953100f036716afffc1f65e83f"},"stack":{"root":{"exists":false,"kind":null,"path":"/opt/stacks/hbarhub"},"secret_env_metadata_only":{"content_read":false,"exists":false,"kind":null,"path":"/opt/stacks/hbarhub/.env"}},"status":"OK","unexpected_exception":{}} OUTPUT_END CHAT_OUTPUT_END