{ "schema_version": 1, "channel": "homelab-runtime", "command_id": "HOMELAB-CLUSTER-KB-V1-EXACT-OUTPUT-PROJECTION-READ-ONLY-20260805T130500Z", "status": "OK", "rc": 0, "host": "pve01", "mode": "verify", "component": "cluster-knowledge-base-error-system", "started_at_utc": "2026-08-05T13:08:01Z", "finished_at_utc": "2026-08-05T13:08:01Z", "reference_register_checked": true, "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", "error_register_checked": true, "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", "command_sha256": "8d626b3d942e0c8ad8135e1fbf4148a82c5df736a52cc969eb0f6ae022f1ee59", "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": "2a7ec04b2e7036e6cc5751216e516b7d78ef56dc135326379580ef58dbc66a29", "sanitized_output_sha256": "2a7ec04b2e7036e6cc5751216e516b7d78ef56dc135326379580ef58dbc66a29", "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\":\"HOMELAB-CLUSTER-KB-V1-EXACT-OUTPUT-PROJECTION-READ-ONLY-20260805T130500Z\",\"command_rc\":0,\"mutation_outcome\":\"NO_MUTATION\",\"output_truncated_in_json\":false,\"rc\":0,\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"bounded_adapter_scan\":null,\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-KB-V1-EXACT-OUTPUT-PROJECTION-READ-ONLY-20260805T130500Z\",\"command_rc\":0,\"evidence_bundle\":{\"bundle_bytes_ok\":true,\"bundle_sha256_ok\":true,\"exists\":true,\"member_count\":6,\"output_member_matches\":0,\"path_is_exact_from_previous_result\":true,\"runner_json_member_matches\":1,\"runner_text_member_matches\":1,\"unsafe_member_rejected\":false},\"files_written\":false,\"mutation_outcome\":\"NO_MUTATION\",\"network_requests_made\":false,\"next_action\":\"RUN_ONE_READ_ONLY_GITEA_DEFINED_CLUSTER_FACT_AND_DOCUMENT_GAP_ANALYSIS\",\"output_truncated_in_json\":false,\"pre_command_known_error_gate\":{\"checked\":true,\"count\":28,\"ids\":[\"candidate-file-limit-600-20260805\",\"runner-wrapper-mismatch-after-success-20260805\",\"canonical-cluster-handbook-ambiguous-20260805\",\"pvesh-adapter-context-unreadable-20260805\",\"homelab-ops-bare-repository-not-found-local-20260805\",\"gitea-network-fallback-stage-not-emitted-20260805\",\"gitea-owner-hardcoded-homelab-admin-20260805\",\"gitea-git-auth-required-or-credential-unavailable-20260805\",\"gitea-process-self-match-payload-name-20260805\",\"sanitize-bool-attributeerror-20260805\",\"reader-v3-path-misclassified-as-route-20260805\",\"reader-v3-loopback-assumption-20260805\",\"reader-v3-capability-not-treated-as-secret-20260805\",\"reader-v3-systemd-unit-fed-to-python-ast-20260805\",\"reader-v3-helper-control-flow-not-traced-20260805\",\"reader-v3-post-capability-operation-not-derived-20260805\",\"reader-v3-detected-operations-not-tested-20260805\",\"reader-v3-manifest-global-not-bound-in-sandbox-20260805\",\"reader-v3-result-file-second-source-not-read-20260805\",\"reader-v3-negative-control-mixed-with-production-20260805\",\"reader-v3-manifest-schema-guessed-20260805\",\"reader-result-output-bound-after-compaction-20260805\",\"reader-v3-generation-record-shape-guessed-20260805\",\"reader-v3-result-file-assumed-standalone-json-20260805\",\"reader-v3-gitea-detail-marker-false-inventory-20260805\",\"reverse-proxy-runtime-not-visible-on-host-20260805\",\"gitea-public-owner-not-anonymously-discoverable-20260805\",\"exact-output-long-line-not-projectable-by-portal-view-20260805\"]},\"projection\":{\"analysis_outcome\":{\"error_fingerprint\":\"26d65952ac8f64197a6fd76ec56e3b5ffda8c4838efe2af2947a603d01270b92\",\"next_action\":\"RUN_ONE_READ_ONLY_GITEA_DEFINED_CLUSTER_FACT_AND_DOCUMENT_GAP_ANALYSIS\",\"ready_for_gitea_defined_cluster_fact_analysis\":true,\"root_cause_classification\":\"GITEA_CLUSTER_HANDBOOK_AND_ERROR_SYSTEM_DEEPLY_ANALYZED\",\"status\":\"OK\"},\"canonical_handbook\":{\"candidates\":[{\"canonical_phrase_hits\":3,\"canonical_score\":227,\"content_sha256\":\"8051e3e761493a1b7088a0f3ed7e0aa9218673f453ca88171178364d26701f64\",\"headings\":[],\"inbound_reference_count\":8,\"path\":\"errors/regression-cases.json\"},{\"canonical_phrase_hits\":0,\"canonical_score\":74,\"content_sha256\":\"a49bcb32ac7212d7fb9768db8a277cb5525c873c84dd6fb633edae35dc6de532\",\"headings\":[],\"inbound_reference_count\":0,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\"},{\"canonical_phrase_hits\":1,\"canonical_score\":56,\"content_sha256\":\"ac5dc881dcd9fcb72644bc893e866f463c9c2b9b4544e32434e21b5d34168fb5\",\"headings\":[],\"inbound_reference_count\":1,\"path\":\"inventory/access-paths.json\"},{\"canonical_phrase_hits\":0,\"canonical_score\":55,\"content_sha256\":\"666072447ba11d346772f62f274dadc974c4463e20f67e67f82f228f1fcf2ce8\",\"headings\":[],\"inbound_reference_count\":0,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh\"},{\"canonical_phrase_hits\":0,\"canonical_score\":54,\"content_sha256\":\"636254d2526f0f62184d47cdb4c30c2831b11869c2000c557666f60b55d7691b\",\"headings\":[],\"inbound_reference_count\":0,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\"}],\"path\":\"errors/regression-cases.json\",\"status\":\"UNIQUE_CONFIRMED\"},\"documentation_coverage\":{\"access\":{\"file_count\":22,\"paths\":[\"changes/CR-2026-0018/regression-cases-draft.json\",\"docs/planned/skladchik-moderator-assistant.md\",\"errors/regression-cases.json\",\"inventory/access-paths.json\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/dry-run.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/prepare.sh\"]},\"backup\":{\"file_count\":29,\"paths\":[\"docs/ARCHITECTURE.md\",\"docs/skladchik-cookie-refresh.md\",\"errors/regression-cases.json\",\"observed/cluster-guests.json\",\"policies/cluster-cloud-quorum.json\",\"schemas/change.schema.json\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/assets/pve02-vm160-preflight-probe.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/assets/vm160-cloud-quorum-worker.sh\"]},\"error_system\":{\"file_count\":44,\"paths\":[\".gitea/workflows/ci.yml\",\"changes/CR-2026-0018/caller-inventory-requirements.md\",\"changes/CR-2026-0018/regression-cases-draft.json\",\"changes/README.md\",\"docs/ARCHITECTURE.md\",\"docs/skladchik-cookie-refresh.md\",\"docs/WORKFLOW.md\",\"errors/regression-cases.json\"]},\"internal_external\":{\"file_count\":7,\"paths\":[\"changes/CR-2026-0018/regression-cases-draft.json\",\"errors/regression-cases.json\",\"policies/operating-policy.json\",\"tasks/homelab-logrotate-namespace-latch-clearance-v1/README.txt\",\"tests/test_cr_2026_0005.py\",\"tests/test_cr_2026_0011_skladchik_cookie_jar_reset.py\",\"tests/test_cr_2026_0012_skladchik_cookie_refresh_runbook.py\"]},\"repair\":{\"file_count\":31,\"paths\":[\"changes/CR-2026-0018/caller-inventory-requirements.md\",\"changes/README.md\",\"docs/ARCHITECTURE.md\",\"docs/skladchik-cookie-refresh.md\",\"docs/WORKFLOW.md\",\"errors/regression-cases.json\",\"policies/cluster-cloud-quorum.json\",\"policies/operating-policy.json\"]},\"services\":{\"file_count\":21,\"paths\":[\"changes/CR-2026-0018/caller-inventory-requirements.md\",\"docs/ARCHITECTURE.md\",\"docs/planned/skladchik-moderator-assistant.md\",\"errors/regression-cases.json\",\"observed/cluster-guests.json\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/assets/vm160-cloud-quorum-worker.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/dry-run.sh\"]}},\"enumeration\":{\"candidate_file_count\":50,\"fetch_failure_count\":0,\"fetched_file_count\":50,\"fetched_total_bytes\":173536,\"tree_blob_count\":125,\"tree_complete\":true,\"tree_directory_count\":36,\"tree_entry_count\":161},\"error_system_current\":{\"duplicate_error_ids\":[],\"duplicate_fingerprints\":[],\"enforcement_path_count\":7,\"enforcement_paths\":[\"schemas/change.schema.json\",\"schemas/context.schema.json\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/assets/pve02-vm160-preflight-probe.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\",\"tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh\",\"tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/edge-preflight.sh\",\"tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh\"],\"gate_signals\":{\"ci_workflow_present\":true,\"duplicate_failed_command_block_signal\":false,\"error_register_checked_signal\":false,\"fingerprint_signal\":false,\"preflight_references_error_register\":true,\"reference_register_checked_signal\":false,\"schema_validation_signal\":true,\"tests_present\":true},\"machine_parseable_registry_file_count\":2,\"prevention_evidence_count\":0,\"registry_path_count\":2,\"registry_paths\":[\"changes/CR-2026-0018/regression-cases-draft.json\",\"errors/regression-cases.json\"],\"regression_path_count\":2,\"regression_paths\":[\"changes/CR-2026-0018/regression-cases-draft.json\",\"errors/regression-cases.json\"],\"superseded_path_count\":0,\"superseded_paths\":[],\"test_path_count\":14,\"test_paths\":[\"tests/fixtures/gitea-legacy-auth-permission.json\",\"tests/test_cr_2026_0005.py\",\"tests/test_cr_2026_0006.py\",\"tests/test_cr_2026_0006_vm160_task.py\",\"tests/test_cr_2026_0007_skladchik_reauth.py\",\"tests/test_cr_2026_0007_skladchik_semantic_repair.py\",\"tests/test_cr_2026_0008_skladchik_snapshot_integrity.py\",\"tests/test_cr_2026_0009_skladchik_concurrency_guard.py\",\"tests/test_cr_2026_0011_skladchik_cookie_jar_reset.py\",\"tests/test_cr_2026_0012_skladchik_cookie_refresh_runbook.py\"],\"unique_error_id_count\":61,\"unique_fingerprint_count\":0,\"workflow_path_count\":1,\"workflow_paths\":[\".gitea/workflows/ci.yml\"]},\"gaps\":[\"no_static_evidence_error_fingerprint_gate\"],\"pre_command_gate\":{\"checked\":true,\"projection_command_known_error_count\":28,\"regression_tests_passed\":true,\"reported_error_count\":27},\"previous_exact_result\":{\"capsule_sha256\":\"031aa6c1029c24d8b7dac8192707376fa67ee93cdcfceedcfb768a0b7d4ceb8e\",\"command_id\":\"HOMELAB-CLUSTER-KB-V1-GITEA-REPOSITORY-CONTENT-DEEP-ANALYSIS-READ-ONLY-20260805T124500Z\",\"identity_fully_verified\":true,\"output_bytes\":27219,\"output_sha256\":\"ead28fd156e646c27f6e988c12ea1e89a498882f07071faacba670e87c8a7983\",\"runner_json_sha256\":\"e3211267d27f7497339cd34ecdbe0cce21d039965625ffd5f3236dc20513b082\",\"runner_text_sha256\":\"083286377044254ff016f0f9024655e228a67ae2737d7e1d9641996d5af8e09a\"},\"previous_result_contract\":{\"changes_made\":false,\"command_rc\":0,\"mutation_outcome\":\"NO_MUTATION\",\"output_truncated_in_json\":false,\"rc\":0,\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\"},\"recommended_error_system_v2\":{\"acceptance_criteria\":[\"zero hard-coded owner/path/host/version unless proven by exact prior evidence or current Gitea content\",\"zero mutation without byte-for-byte backup and tested rollback\",\"zero repeated known error fingerprint\",\"all command outputs bounded and non-truncated\",\"all new errors recorded before any subsequent command\"],\"components\":[{\"component\":\"machine_error_registry\",\"requirement\":\"one append-only machine-readable record per proven failure with stable id, normalized fingerprint, exact command/capsule/result SHA, root cause, correction and prevention test\"},{\"component\":\"pre_command_gate\",\"requirement\":\"before every .hcmd, read canonical cluster reference and entire active error registry; block duplicate failed fingerprints and commands that violate a prevention test\"},{\"component\":\"transaction_manifest\",\"requirement\":\"every mutation declares exact source SHA, candidate SHA, byte backup SHA, preconditions, atomic apply, verification and deterministic rollback\"},{\"component\":\"post_result_ingestion\",\"requirement\":\"after exact-result verification, automatically classify the outcome, append new proven failures, close corrected cases and link superseded commands\"},{\"component\":\"regression_suite\",\"requirement\":\"positive and negative fixtures for every recorded error; payload self-test and repository CI must pass before command publication\"},{\"component\":\"knowledge_freshness\",\"requirement\":\"canonical handbook stores last verified fact source, verification time, source SHA and stale/unknown markers; commands may not rely on stale or unknown values\"}],\"grounded_in_detected_gaps\":[\"no_static_evidence_error_fingerprint_gate\"],\"minimum_gate_order\":[\"verify previous exact result identity\",\"read canonical handbook at exact branch commit\",\"read active errors and prevention tests\",\"validate target facts from authoritative source\",\"run payload regression tests\",\"only then publish or execute the next command\"],\"name\":\"Error System V2: evidence-first command gate\",\"reuse_existing_error_root\":\"changes/CR-2026-0018\"},\"repository\":{\"branch_commit_sha\":\"fe1221b06643db3b00a621b0230f92a46a4edc2b\",\"default_branch\":\"main\",\"full_name\":\"homelab-admin/homelab-ops\",\"private\":true},\"source_result_projection\":{\"budget_bytes\":29232,\"bytes\":26771,\"max_bytes\":30000,\"steps\":[\"top_analyzed_files_12\",\"handbook_candidates_6\"]}},\"projection_bytes_before_final_wrapper\":11730,\"rc\":0,\"read_only\":true,\"regression_tests\":{\"duplicate_sha_string_rejected\":true,\"passed\":true,\"recursive_command_identity\":true,\"unique_sha_string_extraction\":true},\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"EXACT_PRIOR_GITEA_DEEP_ANALYSIS_OUTPUT_PROJECTED\",\"schema\":1,\"status\":\"OK\"}\n" }