1
0
Files
homelab-public-context/runtime/history/HOMELAB-CLUSTER-KB-V1-READER-V3-UNRESOLVED-GLOBAL-BINDING-TRACE-READ-ONLY-20260805T102300Z.json

39 lines
20 KiB
JSON

{
"schema_version": 1,
"channel": "homelab-runtime",
"command_id": "HOMELAB-CLUSTER-KB-V1-READER-V3-UNRESOLVED-GLOBAL-BINDING-TRACE-READ-ONLY-20260805T102300Z",
"status": "OK",
"rc": 0,
"host": "pve01",
"mode": "verify",
"component": "cluster-knowledge-base-error-system",
"started_at_utc": "2026-08-05T10:30:33Z",
"finished_at_utc": "2026-08-05T10:30:33Z",
"reference_register_checked": true,
"reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
"error_register_checked": true,
"error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83",
"command_sha256": "3284acfea1c13e8ec59ea2eb99da410d8844a088612af6aef6d60526bffddcb0",
"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": "f64e9bbd9b05f8462d1484d5bf437d49efc42cc50a20a6d81ff7a7b46e293ef9",
"sanitized_output_sha256": "f64e9bbd9b05f8462d1484d5bf437d49efc42cc50a20a6d81ff7a7b46e293ef9",
"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-READER-V3-UNRESOLVED-GLOBAL-BINDING-TRACE-READ-ONLY-20260805T102300Z\",\"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{\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-KB-V1-READER-V3-UNRESOLVED-GLOBAL-BINDING-TRACE-READ-ONLY-20260805T102300Z\",\"command_rc\":0,\"correction_of_previous_logic_gap\":{\"exact_fix\":\"separate negative-control exceptions from production variants and derive one bounded filename from the exact compiled RESULT_RE in memory; verify fullmatch and emit only hashes and length\",\"proven_gap\":\"the prior result mixed the expected negative-control NameError into production exception classification, while successful variants read only the manifest and did not prove a filename accepted by the exact RESULT_RE\",\"regression_test\":\"a regex not covered by the old hard-coded candidates must yield a verified matching filename, trigger both manifest and result-file reads, return structured JSON, and keep the negative-control NameError classification-isolated\"},\"error_fingerprint\":\"1f7e91361842a64a5cf2549e37a5014cd149154bee51dbcd3b7ac635e0924047\",\"latest_exact_result_basis\":{\"capsule_sha256\":\"5ff4ff8183c11fb356da0ed1fd0199408ea8c6ddd2cd47858a2878da5d55f43b\",\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-KB-V1-READER-V3-SANDBOX-GLOBAL-BINDING-FIX-READ-ONLY-20260805T101800Z\",\"command_rc\":0,\"control_plane_error\":null,\"error_fingerprint\":\"710c2ff6ffab246cdeee319e83f650f33579824a72451450821eec3e98894a98\",\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"RUN_ONE_READ_ONLY_READER_V3_UNRESOLVED_GLOBAL_BINDING_TRACE\",\"output_complete\":true,\"output_sha256\":\"8da3c12ce5470a5e17ad5c50e548c57dc3f80d6483fadfe2fc0bd7d013d717e1\",\"output_truncated_in_json\":false,\"rc\":0,\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"READER_V3_FEED_CAUGHT_EXCEPTION_ORIGIN_PROVEN\",\"runner_document_rc\":0,\"runner_json_sha256\":\"2c7b112545cda004239a341608d7fea55da9d46c0792586c5020c8ad3d07a217\",\"runner_rc\":0,\"runner_text_sha256\":\"5f12c1d6b790e4724b0208d95505e4cb701476f8c0853b3906a259b5fa0e3045\",\"runner_wrapper_matches_document\":true,\"status\":\"OK\"},\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"RUN_ONE_READ_ONLY_READER_V3_FAKE_DEPENDENCY_CONTRACT_FIX\",\"output_truncated_in_json\":false,\"owned_listeners\":[{\"address_class\":\"private\",\"address_sha256\":\"fb345731d21c612ed2cb13088c10fd26bac959c79a7634cb55e23ee6bfb428d9\",\"family\":\"ipv4\",\"inode\":\"24795\",\"port\":18788}],\"pre_command_known_error_gate\":{\"checked\":true,\"items\":[{\"id\":\"candidate-scan-limit-20260805\",\"prevention\":\"exact files only; bounded AST, simulation, response and output limits\"},{\"id\":\"runner-wrapper-mismatch-20260805\",\"prevention\":\"single compact JSON below 42000 bytes; no raw source, secret or response body\"},{\"id\":\"gitea-owner-hardcoded-20260805\",\"prevention\":\"no repository owner, guest ID or repository URL is assumed\"},{\"id\":\"gitea-git-auth-unavailable-20260805\",\"prevention\":\"no Git or Gitea authentication attempt\"},{\"id\":\"pvesh-adapter-context-unreadable-20260805\",\"prevention\":\"the payload does not call pvesh or any real executor\"},{\"id\":\"gitea-process-self-match-20260805\",\"prevention\":\"Reader identity is bound to exact systemd ControlGroup\"},{\"id\":\"sanitize-non-string-attributeerror-20260805\",\"prevention\":\"sanitize converts Any to str; embedded bool test\"},{\"id\":\"reader-path-env-misclassified-as-route-20260805\",\"prevention\":\"PATH and filesystem-like values are excluded from request candidates\"},{\"id\":\"reader-loopback-only-probe-20260805\",\"prevention\":\"owned listeners are inspected but no network connection is made\"},{\"id\":\"reader-capability-not-secret-20260805\",\"prevention\":\"capability values are redacted before every output projection\"},{\"id\":\"reader-systemd-unit-parsed-as-python-20260805\",\"prevention\":\"only the exact Python server source is parsed or compiled\"},{\"id\":\"reader-helper-contract-coverage-gap-20260805\",\"prevention\":\"all handler methods reachable from do_GET/do_HEAD are traced\"},{\"id\":\"reader-capability-root-empty-suffix-404-20260805\",\"prevention\":\"never infer inventory from capability-only paths; trace the exact post-prefix suffix and response branch with fake executors first\"},{\"id\":\"reader-generic-suffix-missed-exact-operation-20260805\",\"prevention\":\"derive route operations from exact compiled branch constants and intersect them with AST path literals before sandbox execution\"},{\"id\":\"reader-feed-500-without-origin-20260805\",\"prevention\":\"before any live feed request, trace global helper reachability, exact executor/file argument origins and caught sandbox exceptions; health alone never proves inventory safety\"},{\"id\":\"reader-sandbox-global-binding-undefined-20260805\",\"prevention\":\"materialize reachable module globals only through a strict AST allowlist; Path joins and re.compile are allowed, arbitrary calls are blocked, and MANIFEST/RESULTS/RESULT_RE are regression-tested before any live request\"},{\"id\":\"reader-negative-control-exception-polluted-classification-20260805\",\"prevention\":\"negative-control exceptions are reported separately and can never determine the production readiness classification\"},{\"id\":\"reader-result-regex-candidate-not-proven-20260805\",\"prevention\":\"derive one bounded matching filename from the exact compiled RESULT_RE in memory, verify fullmatch, and emit only length and hashes\"}]},\"prevention_test\":{\"must_run_before_future_cluster_or_gitea_commands\":true,\"name\":\"reader_v3_unresolved_global_binding_and_regex_preflight\",\"requirements\":[\"verify exact Reader source SHA and systemd identity\",\"materialize reachable module globals only through the strict AST allowlist\",\"require MANIFEST, RESULTS and RESULT_RE to be bound when referenced by the feed path\",\"derive and fullmatch one bounded RESULT_RE filename without emitting regex text or candidate text\",\"keep negative-control exceptions separate from production readiness\",\"exercise at least two fake read-only file sources and require structured JSON before any live request\",\"block arbitrary assignment calls and every real network, executor or filesystem mutation\",\"never output capability values, private addresses, raw source, regex text or response bodies\"]},\"process_environment\":{\"capability_name_present\":true,\"names\":[\"HOME\",\"HOMELAB_READER_CAPABILITY\",\"HOMELAB_READER_PORT\",\"INVOCATION_ID\",\"JOURNAL_STREAM\",\"LANG\",\"LOGNAME\",\"MEMORY_PRESSURE_WATCH\",\"MEMORY_PRESSURE_WRITE\",\"PATH\",\"SHELL\",\"SYSTEMD_EXEC_PID\",\"USER\"],\"secret_name_count\":1},\"rc\":0,\"read_only\":true,\"ready_for_live_inventory_probe\":false,\"real_executor_calls_made\":false,\"real_file_mutations_made\":false,\"real_network_requests_made\":false,\"result_projection\":{\"bytes_before_projection\":23150,\"compacted\":false,\"max_bytes\":36000},\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"READER_V3_FEED_CAUGHT_EXCEPTION_ORIGIN_PROVEN\",\"sandbox_global_binding_trace\":{\"caught_exception_types\":[\"AttributeError\"],\"live_probe_contract_ready\":false,\"negative_control_exception_types\":[\"NameError\"],\"ready_variant_count\":0,\"regex_matching_variant_count\":3,\"variant_count\":4,\"variants\":[{\"all_effects_read_only\":false,\"body_bytes\":13,\"body_sha256\":\"326ce78e3deb6574ce072bbe8379c0e4deb1cb12c160a0f1a8161f8ddc6f4bd7\",\"caught_exception_count\":1,\"caught_exceptions\":[{\"line\":60,\"message\":\"name 'MANIFEST' is not defined\",\"message_sha256\":\"7ffaa9a9433abf55defe29684eca6160f703dc251b5b9ab47ccbd33b3dd3411c\",\"symbol\":\"handle_reader\",\"type\":\"NameError\"}],\"content_type\":\"text/plain; charset=utf-8\",\"data_source_call_count\":0,\"effect_call_count\":0,\"effects\":[],\"handler_error_count\":0,\"json\":null,\"live_probe_contract_ready\":false,\"module_projection\":{\"excluded_assignment_count\":6,\"excluded_assignment_names\":[\"CAPABILITY\",\"MANIFEST\",\"PORT\",\"RESULTS\",\"RESULT_RE\",\"ROOT\"],\"include_safe_assignments\":false,\"included_assignment_count\":0,\"included_assignment_names\":[]},\"regex_candidate_contract\":{\"candidate_fullmatch\":false,\"candidate_generated\":false,\"candidate_length\":null,\"candidate_sha256\":null,\"compiled_pattern_present\":false,\"pattern_sha256\":null,\"pattern_text_emitted\":false},\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"expires\",\"pragma\",\"surrogate-control\",\"x-robots-tag\"],\"route_template\":\"/<capability>/feed\",\"source_call_count\":3,\"source_calls\":[{\"line\":42,\"symbol\":\"do_GET\"},{\"line\":45,\"symbol\":\"handle_reader\"},{\"line\":23,\"symbol\":\"reply\"}],\"status\":500,\"variant\":\"definitions-plus-resolved-scope-control\"},{\"all_effects_read_only\":true,\"body_bytes\":369,\"body_sha256\":\"4049eba0d723152deaf89bb6262b7f9abbbc508a09cce98afd4de6fa123c37fe\",\"caught_exception_count\":0,\"caught_exceptions\":[],\"content_type\":\"application/json; charset=utf-8\",\"data_source_call_count\":1,\"effect_call_count\":1,\"effects\":[{\"kind\":\"path.read_bytes\",\"mode\":\"r\",\"origin_type\":\"file\",\"path_class\":\"/var\",\"path_sha256\":\"e3e86f7cca26be90bb29b569ebbc865b3b544ad6f47fb1e976afae301aa02aca\",\"read_only_basis\":\"file_read\",\"read_only_proven\":true}],\"handler_error_count\":0,\"json\":{\"top_key_count\":5,\"top_keys\":[\"entries\",\"files\",\"generation\",\"items\",\"results\"],\"type\":\"dict\"},\"live_probe_contract_ready\":false,\"module_projection\":{\"excluded_assignment_count\":0,\"excluded_assignment_names\":[],\"include_safe_assignments\":true,\"included_assignment_count\":6,\"included_assignment_names\":[\"CAPABILITY\",\"MANIFEST\",\"PORT\",\"RESULTS\",\"RESULT_RE\",\"ROOT\"]},\"regex_candidate_contract\":{\"candidate_fullmatch\":true,\"candidate_generated\":true,\"candidate_length\":70,\"candidate_sha256\":\"27a097a71de27938e5281eb61506b29a833e1cb65c0ec59f4d8eaff7108a1b20\",\"compiled_pattern_present\":true,\"pattern_sha256\":\"cc0d3d6eeabb57c6262c3e83d6561e587ad62b5f370dab9cbf080b67c533b47c\",\"pattern_text_emitted\":false},\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"etag\",\"expires\",\"pragma\",\"surrogate-control\",\"x-homelab-generation\",\"x-robots-tag\"],\"route_template\":\"/<capability>/feed\",\"source_call_count\":3,\"source_calls\":[{\"line\":42,\"symbol\":\"do_GET\"},{\"line\":45,\"symbol\":\"handle_reader\"},{\"line\":23,\"symbol\":\"reply\"}],\"status\":200,\"variant\":\"strict-global-bindings-filename-results\"},{\"all_effects_read_only\":true,\"body_bytes\":2013,\"body_sha256\":\"c82641747a4bca29d18b61a84aa424cedd00a785ed364b7c704c91d6d486dfd7\",\"caught_exception_count\":0,\"caught_exceptions\":[],\"content_type\":\"application/json; charset=utf-8\",\"data_source_call_count\":1,\"effect_call_count\":1,\"effects\":[{\"kind\":\"path.read_bytes\",\"mode\":\"r\",\"origin_type\":\"file\",\"path_class\":\"/var\",\"path_sha256\":\"e3e86f7cca26be90bb29b569ebbc865b3b544ad6f47fb1e976afae301aa02aca\",\"read_only_basis\":\"file_read\",\"read_only_proven\":true}],\"handler_error_count\":0,\"json\":{\"top_key_count\":5,\"top_keys\":[\"entries\",\"files\",\"generation\",\"items\",\"results\"],\"type\":\"dict\"},\"live_probe_contract_ready\":false,\"module_projection\":{\"excluded_assignment_count\":0,\"excluded_assignment_names\":[],\"include_safe_assignments\":true,\"included_assignment_count\":6,\"included_assignment_names\":[\"CAPABILITY\",\"MANIFEST\",\"PORT\",\"RESULTS\",\"RESULT_RE\",\"ROOT\"]},\"regex_candidate_contract\":{\"candidate_fullmatch\":true,\"candidate_generated\":true,\"candidate_length\":70,\"candidate_sha256\":\"27a097a71de27938e5281eb61506b29a833e1cb65c0ec59f4d8eaff7108a1b20\",\"compiled_pattern_present\":true,\"pattern_sha256\":\"cc0d3d6eeabb57c6262c3e83d6561e587ad62b5f370dab9cbf080b67c533b47c\",\"pattern_text_emitted\":false},\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"etag\",\"expires\",\"pragma\",\"surrogate-control\",\"x-homelab-generation\",\"x-robots-tag\"],\"route_template\":\"/<capability>/feed\",\"source_call_count\":3,\"source_calls\":[{\"line\":42,\"symbol\":\"do_GET\"},{\"line\":45,\"symbol\":\"handle_reader\"},{\"line\":23,\"symbol\":\"reply\"}],\"status\":200,\"variant\":\"manifest-object-results\"},{\"all_effects_read_only\":true,\"body_bytes\":13,\"body_sha256\":\"326ce78e3deb6574ce072bbe8379c0e4deb1cb12c160a0f1a8161f8ddc6f4bd7\",\"caught_exception_count\":1,\"caught_exceptions\":[{\"line\":62,\"message\":\"'list' object has no attribute 'get'\",\"message_sha256\":\"73c2dbfd4deaed7a7fafa1d233c6631ae8d7650f0d5f3bce5a9da6386d739734\",\"symbol\":\"handle_reader\",\"type\":\"AttributeError\"}],\"content_type\":\"text/plain; charset=utf-8\",\"data_source_call_count\":1,\"effect_call_count\":1,\"effects\":[{\"kind\":\"path.read_bytes\",\"mode\":\"r\",\"origin_type\":\"file\",\"path_class\":\"/var\",\"path_sha256\":\"e3e86f7cca26be90bb29b569ebbc865b3b544ad6f47fb1e976afae301aa02aca\",\"read_only_basis\":\"file_read\",\"read_only_proven\":true}],\"handler_error_count\":0,\"json\":null,\"live_probe_contract_ready\":false,\"module_projection\":{\"excluded_assignment_count\":0,\"excluded_assignment_names\":[],\"include_safe_assignments\":true,\"included_assignment_count\":6,\"included_assignment_names\":[\"CAPABILITY\",\"MANIFEST\",\"PORT\",\"RESULTS\",\"RESULT_RE\",\"ROOT\"]},\"regex_candidate_contract\":{\"candidate_fullmatch\":true,\"candidate_generated\":true,\"candidate_length\":70,\"candidate_sha256\":\"27a097a71de27938e5281eb61506b29a833e1cb65c0ec59f4d8eaff7108a1b20\",\"compiled_pattern_present\":true,\"pattern_sha256\":\"cc0d3d6eeabb57c6262c3e83d6561e587ad62b5f370dab9cbf080b67c533b47c\",\"pattern_text_emitted\":false},\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"expires\",\"pragma\",\"surrogate-control\",\"x-robots-tag\"],\"route_template\":\"/<capability>/feed\",\"source_call_count\":3,\"source_calls\":[{\"line\":42,\"symbol\":\"do_GET\"},{\"line\":45,\"symbol\":\"handle_reader\"},{\"line\":23,\"symbol\":\"reply\"}],\"status\":500,\"variant\":\"manifest-list\"}]},\"sanitized_bytecode_branch_trace\":{\"branch_instruction_count\":14,\"branch_literal_count\":7,\"branch_literal_templates\":[\"X-Homelab-Generation\",\"X-Robots-Tag\",\"feed\",\"health\",\"health-v3\",\"include_body\",\"results\"],\"bytecode_disassembly_emitted\":false,\"bytecode_literal_count\":28,\"call_instruction_count\":53,\"code_object_count\":8,\"compile_ok\":true,\"exact_branch_operation_count\":2,\"exact_compiled_operation_count\":2,\"operation_suffixes\":[\"feed\",\"health\"],\"operation_suffixes_sha256\":\"7b2583665af60a5f63c575c89ecaff1cd688710d29507b6d79238e5d9ca5e58b\",\"raw_source_emitted\":false,\"source_literal_count\":2},\"schema\":1,\"source_files\":[{\"actual_sha256\":\"d672b74b390efa787ffd5a090e8c8eea8fdf038075421231a9d9b3053ea926b1\",\"bytes\":580,\"expected_sha256\":\"d672b74b390efa787ffd5a090e8c8eea8fdf038075421231a9d9b3053ea926b1\",\"matches_expected\":true,\"path\":\"/etc/systemd/system/homelab-reader-v3.service\"},{\"actual_sha256\":\"092780e76ff18dfe2920c51f8b97dd09d194fd6cbdb59c3755c9fbf6530f3536\",\"bytes\":3539,\"expected_sha256\":\"092780e76ff18dfe2920c51f8b97dd09d194fd6cbdb59c3755c9fbf6530f3536\",\"matches_expected\":true,\"path\":\"/usr/local/sbin/homelab-reader-server-v3\"}],\"source_selection\":{\"raw_source_emitted\":false,\"selected_path\":\"/usr/local/sbin/homelab-reader-server-v3\",\"systemd_unit_excluded\":true},\"source_state\":\"MATCH\",\"static_executor_argument_origin_trace\":{\"all_resolved_origins_read_only\":true,\"call_edge_count\":3,\"call_edges\":[{\"from\":\"Handler.do_GET\",\"to\":\"Handler.handle_reader\"},{\"from\":\"Handler.do_HEAD\",\"to\":\"Handler.handle_reader\"},{\"from\":\"Handler.handle_reader\",\"to\":\"Handler.reply\"}],\"handler_roots\":[\"Handler.do_GET\",\"Handler.do_HEAD\"],\"raw_source_emitted\":false,\"reachable_data_origin_count\":2,\"reachable_data_origins\":[{\"argument_origin_names\":[],\"argument_resolved\":false,\"call\":\"MANIFEST.read_bytes\",\"evidence_sha256\":\"3b9f9140c901f027be26f124b8c983ccfddbb3a62b03a416b5e7bfbb19f9fe59\",\"kind\":\"file\",\"mode\":\"r\",\"origin_symbol\":\"Handler.handle_reader\",\"path_class\":null,\"path_sha256\":null,\"read_only_basis\":\"file_read\",\"read_only_proven\":true},{\"argument_origin_names\":[],\"argument_resolved\":false,\"call\":\"target.read_bytes\",\"evidence_sha256\":\"aa896c2be567c54cf2da0cf24792da33575188def3c5d95fda4745ed3de4fdaf\",\"kind\":\"file\",\"mode\":\"r\",\"origin_symbol\":\"Handler.handle_reader\",\"path_class\":null,\"path_sha256\":null,\"read_only_basis\":\"file_read\",\"read_only_proven\":true}],\"reachable_symbol_count\":4,\"reachable_symbols\":[\"Handler.do_GET\",\"Handler.do_HEAD\",\"Handler.handle_reader\",\"Handler.reply\"],\"unresolved_origin_count\":2},\"static_response_trace\":{\"ast_parse_ok\":true,\"capability_prefix_count\":1,\"capability_prefix_templates\":[\"/<capability>/\"],\"handler_count\":1,\"reachable_methods\":[\"do_GET\",\"do_HEAD\",\"handle_reader\",\"reply\"],\"resolved_scope_names\":[\"CAPABILITY\",\"PORT\"],\"source_suffix_literal_count\":2,\"source_suffix_literal_templates\":[\"feed\",\"health\"]},\"status\":\"OK\",\"systemd_identity\":{\"identity_valid\":true,\"pid_count\":1,\"probe\":{\"duration_seconds\":0.007,\"rc\":0,\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stderr_truncated\":false,\"stdout_bytes\":375,\"stdout_sha256\":\"49094d65d3787c1479e6408e1fefb7af3758d0fa55e1d37bf22907442aab35e9\",\"stdout_truncated\":false},\"properties\":{\"ActiveState\":\"active\",\"ControlGroup\":\"/system.slice/homelab-reader-v3.service\",\"ExecStart_present\":true,\"ExecStart_sha256\":\"2500fde09569176736b4f2f1dd29d6289b6a6ae6a59b52b6a3c31f797f567379\",\"FragmentPath\":\"/etc/systemd/system/homelab-reader-v3.service\",\"LoadState\":\"loaded\",\"MainPID\":\"1282\",\"SubState\":\"running\"}}}\n"
}