1
0
Files
homelab-public-context/runtime/latest.json
T

39 lines
28 KiB
JSON

{
"schema_version": 1,
"channel": "homelab-runtime",
"command_id": "HOMELAB-CLUSTER-KB-V1-GITEA-DEFINED-CLUSTER-FACT-GAP-READ-ONLY-20260805T131000Z",
"status": "OK",
"rc": 0,
"host": "pve01",
"mode": "verify",
"component": "cluster-knowledge-base-error-system",
"started_at_utc": "2026-08-05T13:23:00Z",
"finished_at_utc": "2026-08-05T13:23:08Z",
"reference_register_checked": true,
"reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
"error_register_checked": true,
"error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83",
"command_sha256": "9088e8f5ce54b2b810894f0d1860a25390b3179b29d85f63e19e6f81c9f066a6",
"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": "6c2d4b05d4a1d95e2dfbc5ebcff23469e469ec2d5e1550a49d07c3ad51a5f205",
"sanitized_output_sha256": "6c2d4b05d4a1d95e2dfbc5ebcff23469e469ec2d5e1550a49d07c3ad51a5f205",
"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-GITEA-DEFINED-CLUSTER-FACT-GAP-READ-ONLY-20260805T131000Z\",\"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{\"api\":{\"fetch_failure_count\":0,\"fetched_file_count\":104,\"fetched_total_bytes\":297443,\"route_coverage\":{\"blob\":true,\"branch\":true,\"repo\":true,\"tree\":true},\"text_file_count\":104,\"tree\":{\"blob_count\":125,\"body_emitted\":false,\"complete\":true,\"entry_count\":161,\"exact_commit\":\"fe1221b06643db3b00a621b0230f92a46a4edc2b\",\"json_parse_ok\":true,\"status\":200,\"tree_count\":36,\"truncated\":false}},\"authorization_sent\":true,\"authorization_values_emitted\":false,\"branch\":{\"body_emitted\":false,\"branch\":\"main\",\"commit_sha\":\"fe1221b06643db3b00a621b0230f92a46a4edc2b\",\"json_parse_ok\":true,\"matches_expected_commit\":true,\"status\":200},\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-KB-V1-GITEA-DEFINED-CLUSTER-FACT-GAP-READ-ONLY-20260805T131000Z\",\"command_rc\":0,\"credential_values_emitted\":false,\"endpoint_summary\":{\"address_literal_occurrence_count\":81,\"raw_addresses_emitted\":false,\"raw_url_occurrence_count\":6,\"raw_urls_emitted\":false,\"scope_counts\":{\"external_hostname\":2,\"known_external_gitea\":1,\"private\":1},\"tokens\":[{\"host_scope\":\"external_hostname\",\"host_sha256\":\"8005522570737cc57f67406b7c6fb5d572797e4ba947dfb0bf3befee3639e667\",\"path_depth\":2,\"port\":null,\"scheme\":\"https\"},{\"host_scope\":\"known_external_gitea\",\"host_sha256\":\"92feea413ab6bd72fdd8b9102d872777d284d002a6be3e5323ca6e848105ee88\",\"path_depth\":2,\"port\":null,\"scheme\":\"https\"},{\"host_scope\":\"external_hostname\",\"host_sha256\":\"11d6a89894efa93b767088253526b02bac35874c1f63783507a3fb1d3b194e8a\",\"path_depth\":3,\"port\":null,\"scheme\":\"https\"},{\"host_scope\":\"private\",\"host_sha256\":\"7f25d5297f515cb92000161cbee4cb49a7fbbbd1c0ef2466a5d88644f4bb6d69\",\"path_depth\":1,\"port\":8081,\"scheme\":\"http\"}],\"unique_endpoint_token_count\":4},\"error_fingerprint\":\"dadccd2e354a457c337b9089047ec0a0918a5d3cccd5a188b83f8dce425a59ab\",\"error_registry\":{\"content_sha256\":\"8051e3e761493a1b7088a0f3ed7e0aa9218673f453ca88171178364d26701f64\",\"duplicate_fingerprint_count\":0,\"duplicate_id_count\":0,\"duplicate_ids\":[],\"fingerprint_value_count\":0,\"fingerprint_values_emitted\":false,\"migratable_record_count\":0,\"migration_coverage_ratio\":0.0,\"path\":\"errors/regression-cases.json\",\"present\":true,\"prevention_evidence_count\":0,\"raw_records_emitted\":false,\"record_count\":59,\"status_counts\":{},\"unique_fingerprint_count\":0,\"unique_id_count\":59},\"fact_record_summary\":{\"domain_record_counts\":{\"access\":10,\"freshness\":25,\"identity\":16},\"emitted_record_count\":25,\"raw_record_values_emitted\":false,\"secret_hashes_emitted\":false,\"source_record_counts\":{\"inventory/access-paths.json\":9,\"inventory/cluster-nodes.json\":3,\"observed/cluster-guests.json\":11,\"observed/current-context.json\":2},\"top_fields\":[\"status\",\"id\",\"node\",\"type\",\"name\",\"vmid\",\"address\",\"service\"],\"unique_record_count\":25},\"fact_records\":[],\"fact_records_omitted_but_count_retained\":true,\"files_written\":false,\"http_methods\":[\"GET\"],\"mutation_blueprint\":{\"atomicity_requirements\":[\"read all exact source blobs again at the expected branch commit\",\"build the full candidate tree in a temporary directory\",\"validate JSON, JSONL, schemas, gate self-tests and repository tests\",\"create byte-for-byte backup objects for every modified blob\",\"create one commit against the expected parent commit\",\"verify the new commit tree and CI-visible files\",\"on any failure restore the exact previous branch state\"],\"code_root_choice\":{\"basis\":\"existing_top_level_code_or_directory\",\"existing_python_file_count\":2,\"path\":\"tools/pre_command_gate.py\",\"path_exists\":false,\"root\":\"tools\"},\"files_to_create_or_replace\":[\"docs/CLUSTER-HANDBOOK.md\",\"inventory/cluster-reference.json\",\"docs/ERROR-SYSTEM-V2.md\",\"schemas/error-record.schema.json\",\"errors/error-registry.jsonl\",\"tools/pre_command_gate.py\",\"tests/test_error_system_v2.py\"],\"files_to_update_conditionally\":[\".gitea/workflows/ci.yml\",\"docs/WORKFLOW.md\"],\"migration_requirements\":{\"append_runtime_failures_from_known_error_gate\":true,\"derive_fingerprint_only_from_sanitized_stable_fields\":true,\"mark_parallel_draft_superseded_only_after_validation\":true,\"preserve_all_existing_records\":true,\"require_prevention_test_for_each_active_record\":true},\"migration_source\":\"errors/regression-cases.json\",\"ready\":true,\"transaction_preconditions\":{\"branch\":\"main\",\"exact_source_sha256\":{\".gitea/workflows/ci.yml\":\"b078ac1b57e0846a90fd6acb1f3cb0866dbed0fb3bbde0d7070d29a344907681\",\"docs/WORKFLOW.md\":\"87a6f9a0960ee7240261138ecea122fd8fbd727d87bb0b27b02c103c3bc2f122\",\"errors/regression-cases.json\":\"8051e3e761493a1b7088a0f3ed7e0aa9218673f453ca88171178364d26701f64\",\"schemas/change.schema.json\":\"57fbce7c6ca1f53c5ec2f8cd604d787f01019a2184b611e3b4406b467331d0af\",\"schemas/context.schema.json\":\"84c3c29984402b25c102575b54bdb82544844e455d3d2e115fefc5f42021e043\"},\"expected_branch_commit\":\"fe1221b06643db3b00a621b0230f92a46a4edc2b\",\"proposed_paths\":[{\"creation_precondition\":\"must_remain_absent\",\"exists_at_exact_commit\":false,\"path\":\"docs/CLUSTER-HANDBOOK.md\"},{\"creation_precondition\":\"must_remain_absent\",\"exists_at_exact_commit\":false,\"path\":\"inventory/cluster-reference.json\"},{\"creation_precondition\":\"must_remain_absent\",\"exists_at_exact_commit\":false,\"path\":\"docs/ERROR-SYSTEM-V2.md\"},{\"creation_precondition\":\"must_remain_absent\",\"exists_at_exact_commit\":false,\"path\":\"schemas/error-record.schema.json\"},{\"creation_precondition\":\"must_remain_absent\",\"exists_at_exact_commit\":false,\"path\":\"errors/error-registry.jsonl\"},{\"creation_precondition\":\"must_remain_absent\",\"exists_at_exact_commit\":false,\"path\":\"tests/test_error_system_v2.py\"},{\"creation_precondition\":\"must_remain_absent\",\"exists_at_exact_commit\":false,\"path\":\"tools/pre_command_gate.py\"}],\"repository\":\"homelab-admin/homelab-ops\"}},\"mutation_outcome\":\"NO_MUTATION\",\"network_requests_made\":true,\"next_action\":\"RUN_ONE_IDEMPOTENT_GITEA_TRANSACTION_CREATE_CLUSTER_HANDBOOK_AND_ERROR_SYSTEM_V2\",\"output_truncated_in_json\":false,\"pre_command_known_error_gate\":{\"checked\":true,\"known_error_count\":28,\"known_error_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\"],\"previous_exact_identity_verified\":true},\"previous_exact_verification\":{\"bundle_bytes_ok\":true,\"bundle_sha256_ok\":true,\"capsule_member_match_count\":0,\"capsule_sha256_basis\":\"verified exact lane before command publication; optional bundle member count reported separately\",\"checks\":{\"changes_made_false\":true,\"command_id\":true,\"command_rc_zero\":true,\"contract_ok\":true,\"mutation_outcome_no_mutation\":true,\"projection_ok\":true,\"rollback_started_false\":true,\"runner_rc_zero\":true,\"runner_status_ok\":true},\"embedded_output_match_count\":1,\"exists\":true,\"identity_fully_verified\":true,\"member_count\":6,\"path_from_exact_result\":true,\"runner_json_match_count\":1,\"runner_text_match_count\":1,\"unsafe_member_rejected\":false},\"private_addresses_emitted\":false,\"raw_repository_contents_emitted\":false,\"rc\":0,\"read_only\":true,\"ready_for_idempotent_mutation\":true,\"regression_tests\":{\"endpoint_token_hides_host\":true,\"git_blob_oid_semantics\":true,\"known_error_gate_complete\":true,\"passed\":true,\"private_address_not_emitted\":true,\"safe_record_fingerprint_deterministic\":true,\"sanitize_bool_type_safe\":true,\"secret_value_redacted_before_record_hash\":true,\"strict_handbook_excludes_error_registry\":true},\"repository\":{\"archived\":false,\"default_branch\":\"main\",\"empty\":false,\"full_name\":\"homelab-admin/homelab-ops\",\"identity_safe\":true,\"mirror\":false,\"name\":\"homelab-ops\",\"owner\":\"homelab-admin\",\"private\":true,\"size\":3837},\"result_projection\":{\"budget_bytes\":24976,\"bytes\":24326,\"steps\":[\"source_summaries_24\",\"fact_records_32\",\"drop_json_shapes_and_limit_headings\",\"handbook_candidates_4\",\"omit_fact_records\"]},\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"GITEA_CLUSTER_FACTS_AND_DOCUMENT_GAPS_EXACTLY_ANALYZED_MUTATION_READY\",\"schema\":1,\"secret_hashes_emitted\":false,\"source_summaries\":[{\"blob_sha\":\"7a8cb9e2dd5bc1235937aa211293b47ed4e26263\",\"bytes\":29485,\"content_sha256\":\"8051e3e761493a1b7088a0f3ed7e0aa9218673f453ca88171178364d26701f64\",\"domains\":{\"access\":9,\"backup\":22,\"error_system\":38,\"freshness\":5,\"internal_external\":1,\"repair\":38,\"restore\":9,\"services\":8},\"headings\":[],\"json_parse_ok\":true,\"path\":\"errors/regression-cases.json\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":60},{\"blob_sha\":\"bad7037197f12ce9ce0b8be3b5723345699680b5\",\"bytes\":2289,\"content_sha256\":\"e07ccfac39f862c2bce2da0d31112e8e055ca9d3f23a01a8f33302863239203a\",\"domains\":{\"access\":1,\"backup\":0,\"error_system\":1,\"freshness\":1,\"internal_external\":2,\"repair\":0,\"restore\":0,\"services\":0},\"headings\":[],\"json_parse_ok\":true,\"path\":\"changes/CR-2026-0018/regression-cases-draft.json\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"d072c291ee6b99466be0f4897e9d1308ee02e2b2\",\"bytes\":1134,\"content_sha256\":\"df400edc01d8201665c92e7434f8b0663eac0d34aab35e918abfb9bb873877e8\",\"domains\":{\"access\":0,\"backup\":0,\"error_system\":0,\"freshness\":2,\"internal_external\":0,\"repair\":1,\"restore\":0,\"services\":4},\"headings\":[\"Caller inventory requirements\",\"Search surfaces\",\"Required record\",\"Gate\"],\"json_parse_ok\":false,\"path\":\"changes/CR-2026-0018/caller-inventory-requirements.md\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"823d591344d8b8f67e213e2b890acdbd7bfc9864\",\"bytes\":211,\"content_sha256\":\"d3347712264b62c8768c952575574140c388df6d4d045c824ed9a8722bad1454\",\"domains\":{\"access\":0,\"backup\":0,\"error_system\":0,\"freshness\":0,\"internal_external\":0,\"repair\":1,\"restore\":0,\"services\":0},\"headings\":[\"Changes\"],\"json_parse_ok\":false,\"path\":\"changes/README.md\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"c42de139cdf529611d50ad86291fb40df5bc0d09\",\"bytes\":1652,\"content_sha256\":\"ac5dc881dcd9fcb72644bc893e866f463c9c2b9b4544e32434e21b5d34168fb5\",\"domains\":{\"access\":9,\"backup\":0,\"error_system\":0,\"freshness\":0,\"internal_external\":0,\"repair\":0,\"restore\":0,\"services\":0},\"headings\":[],\"json_parse_ok\":true,\"path\":\"inventory/access-paths.json\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"5a1fb00b587a813cee2a7bd98be451bd22173f5e\",\"bytes\":4952,\"content_sha256\":\"6b732f5ce3af0e8066d020bf10ee81b764b6d93ee5f08a9c8f17d0075eeced32\",\"domains\":{\"access\":0,\"backup\":0,\"error_system\":0,\"freshness\":0,\"internal_external\":0,\"repair\":0,\"restore\":1,\"services\":22},\"headings\":[],\"json_parse_ok\":true,\"path\":\"observed/cluster-guests.json\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"3327f8b644b3f3e83774d5e7748a8dfa6b4f1ebf\",\"bytes\":958,\"content_sha256\":\"5e7236f3b8072ff6115ab5bc50ad448425882e86463e90d85df1a1c8eb502d65\",\"domains\":{\"access\":0,\"backup\":1,\"error_system\":0,\"freshness\":0,\"internal_external\":0,\"repair\":1,\"restore\":0,\"services\":2},\"headings\":[\"Архитектура управления\",\"Разделение ответственности\"],\"json_parse_ok\":false,\"path\":\"docs/ARCHITECTURE.md\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"3b034041ab628d15e74a7167b5545b366aeb4ad1\",\"bytes\":526,\"content_sha256\":\"87a6f9a0960ee7240261138ecea122fd8fbd727d87bb0b27b02c103c3bc2f122\",\"domains\":{\"access\":0,\"backup\":0,\"error_system\":0,\"freshness\":1,\"internal_external\":0,\"repair\":1,\"restore\":0,\"services\":0},\"headings\":[\"Change workflow\"],\"json_parse_ok\":false,\"path\":\"docs/WORKFLOW.md\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"f03826dcf6f8c6af4a8a78206c1b841ffaffd2ca\",\"bytes\":3020,\"content_sha256\":\"91c66d8ee6622d925174055599ad5ece6270c35f8d7d7967a26609f7e290c7e6\",\"domains\":{\"access\":0,\"backup\":1,\"error_system\":3,\"freshness\":4,\"internal_external\":0,\"repair\":1,\"restore\":1,\"services\":0},\"headings\":[\"Одна постоянная команда\",\"Что проверяется автоматически\",\"Правила безопасности\"],\"json_parse_ok\":false,\"path\":\"docs/skladchik-cookie-refresh.md\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":17},{\"blob_sha\":\"b4979003f9bb899f4a5de41ede47eacaeac48dee\",\"bytes\":2264,\"content_sha256\":\"e74454f528cdb5522e2c43d959472a04b7cc36e33da7aa5a5bd664fc79015344\",\"domains\":{\"access\":2,\"backup\":0,\"error_system\":0,\"freshness\":2,\"internal_external\":0,\"repair\":0,\"restore\":0,\"services\":1},\"headings\":[\"Skladchik Moderator Assistant\",\"Назначение\",\"Что планируется подготовить позднее\",\"Что сейчас не делать\"],\"json_parse_ok\":false,\"path\":\"docs/planned/skladchik-moderator-assistant.md\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"9586f62339cc657d18d033c104229458ebcadb58\",\"bytes\":1290,\"content_sha256\":\"cfb21fbf6ead4b3537b5f6f43e19602365b7b16adba5f317e48f8f19f5d40475\",\"domains\":{\"access\":0,\"backup\":0,\"error_system\":2,\"freshness\":0,\"internal_external\":1,\"repair\":1,\"restore\":0,\"services\":0},\"headings\":[],\"json_parse_ok\":true,\"path\":\"policies/operating-policy.json\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":1},{\"blob_sha\":\"2032d3ebab4794625854b8c80d23ab72aac9998b\",\"bytes\":1436,\"content_sha256\":\"e06b7e6285eda2885ef913aa954a70abc7c1d892199a8b7cea2ada98b8edba34\",\"domains\":{\"access\":0,\"backup\":2,\"error_system\":3,\"freshness\":0,\"internal_external\":0,\"repair\":3,\"restore\":2,\"services\":0},\"headings\":[],\"json_parse_ok\":true,\"path\":\"policies/cluster-cloud-quorum.json\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"8352f9a2024afea21049cd7700e460ee096c6c53\",\"bytes\":969,\"content_sha256\":\"57fbce7c6ca1f53c5ec2f8cd604d787f01019a2184b611e3b4406b467331d0af\",\"domains\":{\"access\":0,\"backup\":2,\"error_system\":0,\"freshness\":0,\"internal_external\":0,\"repair\":2,\"restore\":0,\"services\":0},\"headings\":[],\"json_parse_ok\":true,\"path\":\"schemas/change.schema.json\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"7dc9476a8ca0227b4d5bf0cbd2c706c60af21119\",\"bytes\":539,\"content_sha256\":\"84c3c29984402b25c102575b54bdb82544844e455d3d2e115fefc5f42021e043\",\"domains\":{\"access\":0,\"backup\":0,\"error_system\":0,\"freshness\":0,\"internal_external\":0,\"repair\":0,\"restore\":0,\"services\":0},\"headings\":[],\"json_parse_ok\":true,\"path\":\"schemas/context.schema.json\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"3d6801bd6e7faefd1fc4579c41dc387f3dd1a9f0\",\"bytes\":318,\"content_sha256\":\"b078ac1b57e0846a90fd6acb1f3cb0866dbed0fb3bbde0d7070d29a344907681\",\"domains\":{\"access\":0,\"backup\":0,\"error_system\":1,\"freshness\":0,\"internal_external\":0,\"repair\":0,\"restore\":0,\"services\":1},\"headings\":[],\"json_parse_ok\":false,\"path\":\".gitea/workflows/ci.yml\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"68ae87029a1660255df02ff192e5b9206e9a6c05\",\"bytes\":13579,\"content_sha256\":\"d3108777e5094468aa3e633740ce8a56c90ca957a9a62932be896bbe784680b0\",\"domains\":{\"access\":22,\"backup\":23,\"error_system\":16,\"freshness\":3,\"internal_external\":1,\"repair\":22,\"restore\":10,\"services\":13},\"headings\":[],\"json_parse_ok\":true,\"path\":\"tasks/skladchik-reports-monitor-controlled-reauth-v1/task.json\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":43},{\"blob_sha\":\"6e22f5ca60d95965765c03ac1d012631aaae68b0\",\"bytes\":6750,\"content_sha256\":\"3a8fdfb6b4b64880012fcc3bc6fee4be6f101377310325541f9776de6d1623f7\",\"domains\":{\"access\":0,\"backup\":4,\"error_system\":16,\"freshness\":4,\"internal_external\":2,\"repair\":18,\"restore\":1,\"services\":28},\"headings\":[],\"json_parse_ok\":true,\"path\":\"tasks/homelab-logrotate-namespace-latch-clearance-v1/task.json\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"a1528e7cbc2b1027bfd7faa220bf1f096cdde1f5\",\"bytes\":3665,\"content_sha256\":\"666072447ba11d346772f62f274dadc974c4463e20f67e67f82f228f1fcf2ce8\",\"domains\":{\"access\":20,\"backup\":17,\"error_system\":1,\"freshness\":1,\"internal_external\":0,\"repair\":4,\"restore\":10,\"services\":7},\"headings\":[],\"json_parse_ok\":false,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"d2adf1bf345063da2b02040697f4358ba4ca4ae1\",\"bytes\":4667,\"content_sha256\":\"a49bcb32ac7212d7fb9768db8a277cb5525c873c84dd6fb633edae35dc6de532\",\"domains\":{\"access\":8,\"backup\":14,\"error_system\":9,\"freshness\":1,\"internal_external\":0,\"repair\":1,\"restore\":6,\"services\":10},\"headings\":[],\"json_parse_ok\":false,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"c6f94aa845bc4cd8fc061e5e03e0fd7771a01bc6\",\"bytes\":7440,\"content_sha256\":\"636254d2526f0f62184d47cdb4c30c2831b11869c2000c557666f60b55d7691b\",\"domains\":{\"access\":13,\"backup\":24,\"error_system\":13,\"freshness\":0,\"internal_external\":0,\"repair\":12,\"restore\":4,\"services\":8},\"headings\":[],\"json_parse_ok\":true,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":2},{\"blob_sha\":\"9cc7d2fa3bc044d311500a5cf798273c79e39c35\",\"bytes\":4233,\"content_sha256\":\"ac0885c9762b99f360256ad3b3894f9cbcc4a8deab529a19ef264fe446bff029\",\"domains\":{\"access\":8,\"backup\":16,\"error_system\":8,\"freshness\":1,\"internal_external\":0,\"repair\":7,\"restore\":0,\"services\":11},\"headings\":[],\"json_parse_ok\":false,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/verify.sh\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":0},{\"blob_sha\":\"774e2b0e591c9ada9aac9700a1b8427645284f1e\",\"bytes\":4665,\"content_sha256\":\"34de7dd0cc60c90c1b74e7a91334cb737d33c761882d1483d5b39f15b439c6f1\",\"domains\":{\"access\":13,\"backup\":19,\"error_system\":1,\"freshness\":1,\"internal_external\":0,\"repair\":1,\"restore\":0,\"services\":7},\"headings\":[],\"json_parse_ok\":false,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":3},{\"blob_sha\":\"938db71d80350ac328ec90fe7bb5176a4d6d50ac\",\"bytes\":2867,\"content_sha256\":\"3b8687392163cf5b6f8b0874087320fe74ceaa5fee897dd0e7762d8c71476a1c\",\"domains\":{\"access\":4,\"backup\":4,\"error_system\":1,\"freshness\":0,\"internal_external\":0,\"repair\":8,\"restore\":11,\"services\":3},\"headings\":[],\"json_parse_ok\":false,\"path\":\"tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/rollback.sh\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":2},{\"blob_sha\":\"aefe7ac6860ec2107c281485b35c8cba1f1196ef\",\"bytes\":4846,\"content_sha256\":\"cfde805604d58d87d975584431aeb024bef21e863c4293d4726e5504415fe9bc\",\"domains\":{\"access\":0,\"backup\":6,\"error_system\":5,\"freshness\":2,\"internal_external\":1,\"repair\":3,\"restore\":9,\"services\":0},\"headings\":[],\"json_parse_ok\":false,\"path\":\"tests/test_cr_2026_0012_skladchik_cookie_refresh_runbook.py\",\"raw_content_emitted\":false,\"secret_key_name_occurrence_count\":21}],\"status\":\"OK\",\"strict_handbook\":{\"candidates\":[{\"canonical_phrase_hits\":0,\"content_sha256\":\"91c66d8ee6622d925174055599ad5ece6270c35f8d7d7967a26609f7e290c7e6\",\"covered_domains\":[\"backup\",\"error_system\",\"repair\",\"restore\"],\"headings\":[\"Одна постоянная команда\",\"Что проверяется автоматически\",\"Правила безопасности\"],\"path\":\"docs/skladchik-cookie-refresh.md\",\"score\":80,\"title_signal\":false},{\"canonical_phrase_hits\":1,\"content_sha256\":\"5e7236f3b8072ff6115ab5bc50ad448425882e86463e90d85df1a1c8eb502d65\",\"covered_domains\":[\"backup\",\"repair\",\"services\"],\"headings\":[\"Архитектура управления\",\"Разделение ответственности\"],\"path\":\"docs/ARCHITECTURE.md\",\"score\":75,\"title_signal\":false},{\"canonical_phrase_hits\":1,\"content_sha256\":\"d9cb129e009176a7dde2a07f59760acddd9e17237eef563e97a55b3e62838bd1\",\"covered_domains\":[\"repair\"],\"headings\":[\"homelab-ops\",\"Порядок работы\",\"Локальная проверка\"],\"path\":\"README.md\",\"score\":55,\"title_signal\":true},{\"canonical_phrase_hits\":0,\"content_sha256\":\"e74454f528cdb5522e2c43d959472a04b7cc36e33da7aa5a5bd664fc79015344\",\"covered_domains\":[\"access\",\"services\"],\"headings\":[\"Skladchik Moderator Assistant\",\"Назначение\",\"Что планируется подготовить позднее\",\"Что сейчас не делать\",\"Условие возобновления\"],\"path\":\"docs/planned/skladchik-moderator-assistant.md\",\"score\":40,\"title_signal\":false}],\"path\":null,\"previous_loose_candidate_rejected\":\"errors/regression-cases.json\",\"qualified_count\":0,\"rejection_reason\":\"error registry is not a cluster handbook under the strict source-class definition\",\"status\":\"NOT_FOUND\",\"strict_definition\":{\"allowed_source_classes\":[\"docs\",\"inventory\",\"root index\"],\"excluded_source_classes\":[\"errors\",\"changes\",\"tasks\",\"tests\",\"workflows\",\"schemas\"],\"minimum_domains\":6,\"requires_canonical_phrase\":true,\"requires_cluster_title\":true}},\"verified_gaps\":[{\"evidence\":{\"qualified_count\":0,\"strict_status\":\"NOT_FOUND\"},\"gap_id\":\"canonical_cluster_handbook_absent\",\"remediation\":\"create one canonical docs/CLUSTER-HANDBOOK.md and link every fact to an exact machine-readable source\",\"severity\":\"BLOCKING\"},{\"evidence\":{\"path_verified_absent\":true},\"gap_id\":\"machine_readable_cluster_reference_absent\",\"remediation\":\"create inventory/cluster-reference.json with source_sha256, verified_at and stale/unknown states\",\"severity\":\"BLOCKING\"},{\"evidence\":{\"record_count\":0},\"gap_id\":\"structured_backup_restore_facts_absent\",\"remediation\":\"materialize backup_restore facts into the machine-readable cluster reference\",\"severity\":\"HIGH\"},{\"evidence\":{\"record_count\":0},\"gap_id\":\"structured_repair_facts_absent\",\"remediation\":\"materialize repair facts into the machine-readable cluster reference\",\"severity\":\"HIGH\"},{\"evidence\":{\"record_count\":0},\"gap_id\":\"structured_scope_facts_absent\",\"remediation\":\"materialize scope facts into the machine-readable cluster reference\",\"severity\":\"HIGH\"},{\"evidence\":{\"error_record_count\":59,\"fingerprint_count\":0},\"gap_id\":\"error_registry_has_no_fingerprints\",\"remediation\":\"seed stable normalized fingerprints and block duplicate failed fingerprints before publication\",\"severity\":\"BLOCKING\"},{\"evidence\":{\"error_record_count\":59,\"prevention_evidence_count\":0},\"gap_id\":\"error_registry_has_no_prevention_evidence\",\"remediation\":\"require one positive and one negative prevention test for every active error record\",\"severity\":\"BLOCKING\"},{\"evidence\":{\"ci_mentions_fingerprint\":false,\"ci_mentions_pre_command_gate\":false},\"gap_id\":\"ci_does_not_enforce_error_fingerprint_gate\",\"remediation\":\"wire the pre-command gate and registry/schema tests into .gitea/workflows/ci.yml\",\"severity\":\"BLOCKING\"},{\"evidence\":{\"both_present\":true,\"content_sha256_equal\":false},\"gap_id\":\"parallel_draft_and_canonical_error_registries_diverge\",\"remediation\":\"declare canonical ownership and mark the draft superseded after migration\",\"severity\":\"MEDIUM\"},{\"evidence\":{\"matching_path_count\":0},\"gap_id\":\"superseded_command_registry_absent\",\"remediation\":\"record superseded command_id/capsule/result relationships during post-result ingestion\",\"severity\":\"HIGH\"}],\"workflow_gate_signals\":{\"ci_mentions_error_registry\":false,\"ci_mentions_fingerprint\":false,\"ci_mentions_pre_command_gate\":false,\"ci_present\":true,\"repository_mentions_duplicate_failed_command_blocked\":false,\"repository_mentions_error_register_checked\":false,\"repository_mentions_reference_register_checked\":false}}\n"
}