From 5993bba3aa2f28a6dbd6e2da5a602b6629a3641f Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Wed, 5 Aug 2026 10:15:20 +0000 Subject: [PATCH] runtime: publish HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z --- ...IGIN-TRACE-READ-ONLY-20260805T100500Z.json | 38 +++++++++++++++++++ ...RIGIN-TRACE-READ-ONLY-20260805T100500Z.txt | 34 +++++++++++++++++ runtime/latest.json | 16 ++++---- runtime/latest.txt | 14 +++---- 4 files changed, 87 insertions(+), 15 deletions(-) create mode 100644 runtime/history/HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z.json create mode 100644 runtime/history/HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z.txt diff --git a/runtime/history/HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z.json b/runtime/history/HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z.json new file mode 100644 index 0000000..ccd9824 --- /dev/null +++ b/runtime/history/HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "verify", + "component": "cluster-knowledge-base-error-system", + "started_at_utc": "2026-08-05T10:15:20Z", + "finished_at_utc": "2026-08-05T10:15:20Z", + "reference_register_checked": true, + "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", + "error_register_checked": true, + "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", + "command_sha256": "05e8e4433883efd21b258bc2f533b298e1e88a1216452b52cede4e3972e5e3dd", + "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": "b457b303ad6344a464f5a9b843525f8abbeb40cb0ad7cf879be3e75e39efef69", + "sanitized_output_sha256": "b457b303ad6344a464f5a9b843525f8abbeb40cb0ad7cf879be3e75e39efef69", + "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-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z\",\"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-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z\",\"command_rc\":0,\"correction_of_previous_logic_gap\":{\"exact_fix\":\"trace handler-to-global call edges, statically resolve executor/file arguments, run the exact feed route in two no-I/O sandbox variants, and capture source-file exception events even when the Reader catches them\",\"proven_gap\":\"the exact feed operation returned HTTP 500 in sandbox with zero recorded executor calls, while health alone was accepted; the previous projection did not capture global helper reachability, argument origins or caught exception events\",\"regression_test\":\"a global helper using pvesh get must be reachable from feed, classified read-only and produce JSON through the fake executor; an unresolved module binding must produce a redacted caught NameError rather than another unexplained 500\"},\"error_fingerprint\":\"5df9f11405f92e576f437d2dc0523af74b62ac27efe7de6a4a8a4f5c1bd8ce05\",\"latest_exact_result_basis\":{\"capsule_sha256\":\"67a018293eac4609c92494c56600f92f0b7161717182b1634e91b651960f98fb\",\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-KB-V1-READER-V3-SANITIZED-BYTECODE-BRANCH-TRACE-READ-ONLY-20260805T095300Z\",\"command_rc\":0,\"control_plane_error\":null,\"error_fingerprint\":\"f98fa5c6dec20928ee530acb4189a9ee8dceb9eeb1d09ace9b218f6762352eda\",\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"RUN_ONE_READ_ONLY_READER_V3_EXECUTOR_ARGUMENT_ORIGIN_TRACE\",\"output_complete\":true,\"output_sha256\":\"1c4ceb575201d7aa2a512efe92329d7faea09c277cbcc247c5fae4cea9b35780\",\"output_truncated_in_json\":false,\"rc\":0,\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"READER_V3_EXACT_OPERATION_ACCEPTED_BUT_READ_ONLY_INVENTORY_SCHEMA_NOT_PROVEN\",\"runner_document_rc\":0,\"runner_json_sha256\":\"2386a2a2786a249f45f7331e3b49fa057f9f930908c3844c56669229431cf8bc\",\"runner_rc\":0,\"runner_text_sha256\":\"6a15d08e977274340b4880f5fe2d64de803877676967ff4c207b54e878b9621e\",\"runner_wrapper_matches_document\":true,\"status\":\"OK\"},\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"RUN_ONE_READ_ONLY_READER_V3_SANDBOX_GLOBAL_BINDING_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\"}]},\"prevention_test\":{\"must_run_before_future_cluster_or_gitea_commands\":true,\"name\":\"reader_v3_executor_argument_origin_preflight\",\"requirements\":[\"verify exact Reader source SHA and systemd identity\",\"trace all handler-to-global helper edges\",\"resolve executor or file argument origins and classify read-only semantics\",\"capture caught source exceptions in a strict fake-import sandbox\",\"require a successful JSON feed with at least one proven read-only data source before any live request\",\"never output capability values, private addresses, raw source, disassembly 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\":11641,\"compacted\":false,\"max_bytes\":36000},\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"READER_V3_FEED_CAUGHT_EXCEPTION_ORIGIN_PROVEN\",\"sandbox_feed_origin_trace\":{\"caught_exception_types\":[\"NameError\"],\"live_probe_contract_ready\":false,\"ready_variant_count\":0,\"variant_count\":2,\"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\":[]},\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"expires\",\"pragma\",\"surrogate-control\",\"x-robots-tag\"],\"route_template\":\"//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\"},{\"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\":3,\"excluded_assignment_names\":[\"MANIFEST\",\"RESULTS\",\"RESULT_RE\"],\"include_safe_assignments\":true,\"included_assignment_count\":3,\"included_assignment_names\":[\"CAPABILITY\",\"PORT\",\"ROOT\"]},\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"expires\",\"pragma\",\"surrogate-control\",\"x-robots-tag\"],\"route_template\":\"//feed\",\"source_call_count\":3,\"source_calls\":[{\"line\":42,\"symbol\":\"do_GET\"},{\"line\":45,\"symbol\":\"handle_reader\"},{\"line\":23,\"symbol\":\"reply\"}],\"status\":500,\"variant\":\"safe-assignments\"}]},\"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\":[\"//\"],\"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.005,\"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" +} diff --git a/runtime/history/HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z.txt b/runtime/history/HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z.txt new file mode 100644 index 0000000..bdbc2bd --- /dev/null +++ b/runtime/history/HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z.txt @@ -0,0 +1,34 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z +STATUS=OK +RC=0 +HOST=pve01 +MODE=verify +COMPONENT=cluster-knowledge-base-error-system +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 +COMMAND_SHA256=05e8e4433883efd21b258bc2f533b298e1e88a1216452b52cede4e3972e5e3dd +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=b457b303ad6344a464f5a9b843525f8abbeb40cb0ad7cf879be3e75e39efef69 +SANITIZED_OUTPUT_SHA256=b457b303ad6344a464f5a9b843525f8abbeb40cb0ad7cf879be3e75e39efef69 +OUTPUT_BEGIN +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z","command_rc":0,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":0,"rollback_restored":null,"rollback_started":false,"status":"OK","version":1} +{"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z","command_rc":0,"correction_of_previous_logic_gap":{"exact_fix":"trace handler-to-global call edges, statically resolve executor/file arguments, run the exact feed route in two no-I/O sandbox variants, and capture source-file exception events even when the Reader catches them","proven_gap":"the exact feed operation returned HTTP 500 in sandbox with zero recorded executor calls, while health alone was accepted; the previous projection did not capture global helper reachability, argument origins or caught exception events","regression_test":"a global helper using pvesh get must be reachable from feed, classified read-only and produce JSON through the fake executor; an unresolved module binding must produce a redacted caught NameError rather than another unexplained 500"},"error_fingerprint":"5df9f11405f92e576f437d2dc0523af74b62ac27efe7de6a4a8a4f5c1bd8ce05","latest_exact_result_basis":{"capsule_sha256":"67a018293eac4609c92494c56600f92f0b7161717182b1634e91b651960f98fb","changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-READER-V3-SANITIZED-BYTECODE-BRANCH-TRACE-READ-ONLY-20260805T095300Z","command_rc":0,"control_plane_error":null,"error_fingerprint":"f98fa5c6dec20928ee530acb4189a9ee8dceb9eeb1d09ace9b218f6762352eda","mutation_outcome":"NO_MUTATION","next_action":"RUN_ONE_READ_ONLY_READER_V3_EXECUTOR_ARGUMENT_ORIGIN_TRACE","output_complete":true,"output_sha256":"1c4ceb575201d7aa2a512efe92329d7faea09c277cbcc247c5fae4cea9b35780","output_truncated_in_json":false,"rc":0,"rollback_restored":null,"rollback_started":false,"root_cause_classification":"READER_V3_EXACT_OPERATION_ACCEPTED_BUT_READ_ONLY_INVENTORY_SCHEMA_NOT_PROVEN","runner_document_rc":0,"runner_json_sha256":"2386a2a2786a249f45f7331e3b49fa057f9f930908c3844c56669229431cf8bc","runner_rc":0,"runner_text_sha256":"6a15d08e977274340b4880f5fe2d64de803877676967ff4c207b54e878b9621e","runner_wrapper_matches_document":true,"status":"OK"},"mutation_outcome":"NO_MUTATION","next_action":"RUN_ONE_READ_ONLY_READER_V3_SANDBOX_GLOBAL_BINDING_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"}]},"prevention_test":{"must_run_before_future_cluster_or_gitea_commands":true,"name":"reader_v3_executor_argument_origin_preflight","requirements":["verify exact Reader source SHA and systemd identity","trace all handler-to-global helper edges","resolve executor or file argument origins and classify read-only semantics","capture caught source exceptions in a strict fake-import sandbox","require a successful JSON feed with at least one proven read-only data source before any live request","never output capability values, private addresses, raw source, disassembly 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":11641,"compacted":false,"max_bytes":36000},"rollback_restored":null,"rollback_started":false,"root_cause_classification":"READER_V3_FEED_CAUGHT_EXCEPTION_ORIGIN_PROVEN","sandbox_feed_origin_trace":{"caught_exception_types":["NameError"],"live_probe_contract_ready":false,"ready_variant_count":0,"variant_count":2,"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":[]},"response_header_names":["cache-control","content-length","content-type","expires","pragma","surrogate-control","x-robots-tag"],"route_template":"//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"},{"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":3,"excluded_assignment_names":["MANIFEST","RESULTS","RESULT_RE"],"include_safe_assignments":true,"included_assignment_count":3,"included_assignment_names":["CAPABILITY","PORT","ROOT"]},"response_header_names":["cache-control","content-length","content-type","expires","pragma","surrogate-control","x-robots-tag"],"route_template":"//feed","source_call_count":3,"source_calls":[{"line":42,"symbol":"do_GET"},{"line":45,"symbol":"handle_reader"},{"line":23,"symbol":"reply"}],"status":500,"variant":"safe-assignments"}]},"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":["//"],"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.005,"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"}}} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 5fc561c..ccd9824 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "HOMELAB-CLUSTER-ADMIN-UPDATES-V2-EXACT-RESULT-READ-ONLY-20260805T100200Z", + "command_id": "HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z", "status": "OK", "rc": 0, "host": "pve01", "mode": "verify", - "component": "homelab-cluster-admin-update-visibility", - "started_at_utc": "2026-08-05T10:11:40Z", - "finished_at_utc": "2026-08-05T10:11:40Z", + "component": "cluster-knowledge-base-error-system", + "started_at_utc": "2026-08-05T10:15:20Z", + "finished_at_utc": "2026-08-05T10:15:20Z", "reference_register_checked": true, "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", "error_register_checked": true, "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", - "command_sha256": "ed7f97a93528e56100d8ff278925de903c30a9ca78072f84cd0ad4af1e9a2762", + "command_sha256": "05e8e4433883efd21b258bc2f533b298e1e88a1216452b52cede4e3972e5e3dd", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -30,9 +30,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "0ced512df144aee4c49ce5a1f90ced9ee7d90abe7e43d6a5b8161fa740ed672b", - "sanitized_output_sha256": "0ced512df144aee4c49ce5a1f90ced9ee7d90abe7e43d6a5b8161fa740ed672b", + "raw_evidence_sha256": "b457b303ad6344a464f5a9b843525f8abbeb40cb0ad7cf879be3e75e39efef69", + "sanitized_output_sha256": "b457b303ad6344a464f5a9b843525f8abbeb40cb0ad7cf879be3e75e39efef69", "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-ADMIN-UPDATES-V2-EXACT-RESULT-READ-ONLY-20260805T100200Z\",\"command_rc\":0,\"control_plane_error\":null,\"mutation_outcome\":\"NO_MUTATION\",\"previous_capsule_sha256\":\"046ab0b658e0039c6a4fe886da08ebd9879331bafe35fed469d25397ad371696\",\"previous_command_id\":\"HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z\",\"previous_exact_result_identity_confirmed\":true,\"previous_full_output_sha256\":\"1eb35f0774e26589f4ca703a49ca0b56a21e6cd3aad2e6f4cc351f117c506a5c\",\"previous_report_sha256\":\"081d73f33e1b20df8a607c5e877427f249e3792d12fd26ea0544d114b8b4a111\",\"previous_runner_json_sha256\":\"29884755d025c0e26b084dff1dec25738fa9eca5c2318481536aeaacc279fc0a\",\"previous_runner_text_sha256\":\"71e9e8c8552b73e8e1c88d294d79993116f30c5d50c8b52d4d459f845b961490\",\"rc\":0,\"rollback_restored\":false,\"rollback_started\":false,\"schema\":1,\"status\":\"OK\",\"summary_bytes\":4639,\"summary_sha256\":\"2f7e5f6857ce0492f823ff8b9a30fa7ec85855c1a0dbb8ea4e383b3ce41ad7ef\"}\n{\"changes_made\":false,\"cluster_admin_discovery\":{\"analysis\":null,\"context_summaries\":null,\"context_update_details\":[],\"gitea_captured_sources\":[],\"gitea_repository\":{\"branch\":null,\"default_ref\":null,\"head\":null,\"head_matches_ls_remote\":null,\"inventory\":null,\"log\":null,\"ls_remote_head\":null,\"repo_url\":null,\"status\":null,\"tree_sha256\":null,\"working_tree_clean\":null},\"identity\":null,\"live_captured_sources\":[],\"proxmox_summary\":{\"guests\":null,\"nodes\":null,\"pvecm_status\":null,\"pveversion\":null,\"resources\":null},\"service_catalog_count\":null},\"command_id\":\"HOMELAB-CLUSTER-ADMIN-UPDATES-V2-EXACT-RESULT-READ-ONLY-20260805T100200Z\",\"execution\":{\"changes_made\":false,\"command_rc\":1,\"control_plane_error\":null,\"full_output_bytes\":603,\"full_output_read_and_parsed\":true,\"full_output_sha256\":\"1eb35f0774e26589f4ca703a49ca0b56a21e6cd3aad2e6f4cc351f117c506a5c\",\"mutation_outcome\":\"NO_MUTATION\",\"output_source\":\"runner_json\",\"output_truncated_in_json\":false,\"rc\":1,\"rollback_restored\":null,\"rollback_started\":false,\"runner_document_rc\":1,\"runner_json_bytes\":2202,\"runner_json_sha256\":\"29884755d025c0e26b084dff1dec25738fa9eca5c2318481536aeaacc279fc0a\",\"runner_rc\":1,\"runner_text_bytes\":1655,\"runner_text_sha256\":\"71e9e8c8552b73e8e1c88d294d79993116f30c5d50c8b52d4d459f845b961490\",\"runner_wrapper_matches_document\":true,\"status\":\"FAIL\"},\"lookup_409_assessment\":{\"conclusion\":\"HTTP 409 относится к публичной lookup-валидации; точный локальный Adapter/runner результат проверен отдельно.\",\"exact_adapter_result_valid\":true,\"lookup_or_publication_repair_performed\":false,\"published_lane_lookup_was_409\":true},\"mutation_outcome\":\"NO_MUTATION\",\"portal_evidence\":{\"bytes\":3273,\"gateway_verified\":true,\"local_bundle\":\"/var/lib/homelab-command-adapter/runs/ARVLBNSY4A-evidence.tgz\",\"object_key\":\"portal/HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z/046ab0b658e0039c6a4fe886da08ebd9879331bafe35fed469d25397ad371696/evidence.tgz\",\"sha256\":\"ed669b4976ec2c4491ece5db3de3a1debc495abfa2ffd7db1c5f178b756631dd\"},\"previous_exact_result_identity_confirmed\":true,\"previous_identity\":{\"capsule_sha256\":\"046ab0b658e0039c6a4fe886da08ebd9879331bafe35fed469d25397ad371696\",\"command_id\":\"HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z\",\"finished_at_utc\":\"2026-08-05T10:01:46.852534+00:00\",\"runner_path\":\"/var/lib/homelab-chat-run/public/HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z-20260805T100141Z.json\",\"state_document_sha256\":\"73f2fd58388b13057a86833f107947911bdf39343661d78addf9bee58a9e4d0f\",\"state_documents_matching\":1,\"state_files_scanned\":319,\"state_path_sha256\":\"0410ec80c8641912fd7fd1074e50f37ff4e7713b708d2f90c56cd9bd49bee84e\",\"state_status\":\"FAIL\",\"unique_runner_paths\":1},\"previous_report_integrity\":{\"report_bytes\":310,\"report_sha256\":\"081d73f33e1b20df8a607c5e877427f249e3792d12fd26ea0544d114b8b4a111\",\"section_hashes\":{\"changes_made\":{\"bytes\":5,\"sha256\":\"fcbcf165908dd18a9e49f7ff27810176db8e9f63b4352213741664245224f8aa\",\"type\":\"bool\"},\"command_id\":{\"bytes\":71,\"sha256\":\"2a7c6803aec77529bb08d760d2cdc44af563ae3b9a2727beda74e2ee9f75f283\",\"type\":\"str\"},\"error\":{\"bytes\":38,\"sha256\":\"cfa68ffa1424d1f2f558188a11650fe8e15ad6417be3de952d6710a01cea6c84\",\"type\":\"str\"},\"error_type\":{\"bytes\":14,\"sha256\":\"5f262391dafaa8ce09e17b4004e0c2aa14a61532f97d7f7ee7605d018c244b7f\",\"type\":\"str\"},\"mutation_outcome\":{\"bytes\":13,\"sha256\":\"b7858cc4fdcdbebcfab4c8c7caa03b776ae839d7930797a5889ef120f55c04ff\",\"type\":\"str\"},\"read_only\":{\"bytes\":4,\"sha256\":\"b5bea41b6c623f7c09f1bf24dcae58ebab3c0cdd90ad966bc43a45b44867e12b\",\"type\":\"bool\"},\"rollback_restored\":{\"bytes\":5,\"sha256\":\"fcbcf165908dd18a9e49f7ff27810176db8e9f63b4352213741664245224f8aa\",\"type\":\"bool\"},\"rollback_started\":{\"bytes\":5,\"sha256\":\"fcbcf165908dd18a9e49f7ff27810176db8e9f63b4352213741664245224f8aa\",\"type\":\"bool\"},\"schema\":{\"bytes\":1,\"sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"type\":\"int\"},\"status\":{\"bytes\":6,\"sha256\":\"8dda96cc06ec8a54f6d789a9f4e5c22e8af9eb9c60a8f7046473c57163e079ff\",\"type\":\"str\"}},\"top_level_keys\":[\"changes_made\",\"command_id\",\"error\",\"error_type\",\"mutation_outcome\",\"read_only\",\"rollback_restored\",\"rollback_started\",\"schema\",\"status\"]},\"previous_result_contract\":{\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z\",\"command_rc\":1,\"control_plane_error\":null,\"mutation_outcome\":\"NO_MUTATION\",\"rc\":1,\"rollback_restored\":false,\"rollback_started\":false,\"schema\":1,\"status\":\"FAIL\"},\"read_only\":true,\"rollback_restored\":false,\"rollback_started\":false,\"schema\":2,\"status\":\"OK\"}\n" + "output": "HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z\",\"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-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z\",\"command_rc\":0,\"correction_of_previous_logic_gap\":{\"exact_fix\":\"trace handler-to-global call edges, statically resolve executor/file arguments, run the exact feed route in two no-I/O sandbox variants, and capture source-file exception events even when the Reader catches them\",\"proven_gap\":\"the exact feed operation returned HTTP 500 in sandbox with zero recorded executor calls, while health alone was accepted; the previous projection did not capture global helper reachability, argument origins or caught exception events\",\"regression_test\":\"a global helper using pvesh get must be reachable from feed, classified read-only and produce JSON through the fake executor; an unresolved module binding must produce a redacted caught NameError rather than another unexplained 500\"},\"error_fingerprint\":\"5df9f11405f92e576f437d2dc0523af74b62ac27efe7de6a4a8a4f5c1bd8ce05\",\"latest_exact_result_basis\":{\"capsule_sha256\":\"67a018293eac4609c92494c56600f92f0b7161717182b1634e91b651960f98fb\",\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-KB-V1-READER-V3-SANITIZED-BYTECODE-BRANCH-TRACE-READ-ONLY-20260805T095300Z\",\"command_rc\":0,\"control_plane_error\":null,\"error_fingerprint\":\"f98fa5c6dec20928ee530acb4189a9ee8dceb9eeb1d09ace9b218f6762352eda\",\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"RUN_ONE_READ_ONLY_READER_V3_EXECUTOR_ARGUMENT_ORIGIN_TRACE\",\"output_complete\":true,\"output_sha256\":\"1c4ceb575201d7aa2a512efe92329d7faea09c277cbcc247c5fae4cea9b35780\",\"output_truncated_in_json\":false,\"rc\":0,\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"READER_V3_EXACT_OPERATION_ACCEPTED_BUT_READ_ONLY_INVENTORY_SCHEMA_NOT_PROVEN\",\"runner_document_rc\":0,\"runner_json_sha256\":\"2386a2a2786a249f45f7331e3b49fa057f9f930908c3844c56669229431cf8bc\",\"runner_rc\":0,\"runner_text_sha256\":\"6a15d08e977274340b4880f5fe2d64de803877676967ff4c207b54e878b9621e\",\"runner_wrapper_matches_document\":true,\"status\":\"OK\"},\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"RUN_ONE_READ_ONLY_READER_V3_SANDBOX_GLOBAL_BINDING_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\"}]},\"prevention_test\":{\"must_run_before_future_cluster_or_gitea_commands\":true,\"name\":\"reader_v3_executor_argument_origin_preflight\",\"requirements\":[\"verify exact Reader source SHA and systemd identity\",\"trace all handler-to-global helper edges\",\"resolve executor or file argument origins and classify read-only semantics\",\"capture caught source exceptions in a strict fake-import sandbox\",\"require a successful JSON feed with at least one proven read-only data source before any live request\",\"never output capability values, private addresses, raw source, disassembly 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\":11641,\"compacted\":false,\"max_bytes\":36000},\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"READER_V3_FEED_CAUGHT_EXCEPTION_ORIGIN_PROVEN\",\"sandbox_feed_origin_trace\":{\"caught_exception_types\":[\"NameError\"],\"live_probe_contract_ready\":false,\"ready_variant_count\":0,\"variant_count\":2,\"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\":[]},\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"expires\",\"pragma\",\"surrogate-control\",\"x-robots-tag\"],\"route_template\":\"//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\"},{\"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\":3,\"excluded_assignment_names\":[\"MANIFEST\",\"RESULTS\",\"RESULT_RE\"],\"include_safe_assignments\":true,\"included_assignment_count\":3,\"included_assignment_names\":[\"CAPABILITY\",\"PORT\",\"ROOT\"]},\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"expires\",\"pragma\",\"surrogate-control\",\"x-robots-tag\"],\"route_template\":\"//feed\",\"source_call_count\":3,\"source_calls\":[{\"line\":42,\"symbol\":\"do_GET\"},{\"line\":45,\"symbol\":\"handle_reader\"},{\"line\":23,\"symbol\":\"reply\"}],\"status\":500,\"variant\":\"safe-assignments\"}]},\"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\":[\"//\"],\"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.005,\"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" } diff --git a/runtime/latest.txt b/runtime/latest.txt index b2be0d5..bdbc2bd 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,15 +1,15 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=HOMELAB-CLUSTER-ADMIN-UPDATES-V2-EXACT-RESULT-READ-ONLY-20260805T100200Z +COMMAND_ID=HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z STATUS=OK RC=0 HOST=pve01 MODE=verify -COMPONENT=homelab-cluster-admin-update-visibility +COMPONENT=cluster-knowledge-base-error-system REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 -COMMAND_SHA256=ed7f97a93528e56100d8ff278925de903c30a9ca78072f84cd0ad4af1e9a2762 +COMMAND_SHA256=05e8e4433883efd21b258bc2f533b298e1e88a1216452b52cede4e3972e5e3dd DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGE_DECLARED=false @@ -24,11 +24,11 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=0ced512df144aee4c49ce5a1f90ced9ee7d90abe7e43d6a5b8161fa740ed672b -SANITIZED_OUTPUT_SHA256=0ced512df144aee4c49ce5a1f90ced9ee7d90abe7e43d6a5b8161fa740ed672b +RAW_EVIDENCE_SHA256=b457b303ad6344a464f5a9b843525f8abbeb40cb0ad7cf879be3e75e39efef69 +SANITIZED_OUTPUT_SHA256=b457b303ad6344a464f5a9b843525f8abbeb40cb0ad7cf879be3e75e39efef69 OUTPUT_BEGIN -HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V2-EXACT-RESULT-READ-ONLY-20260805T100200Z","command_rc":0,"control_plane_error":null,"mutation_outcome":"NO_MUTATION","previous_capsule_sha256":"046ab0b658e0039c6a4fe886da08ebd9879331bafe35fed469d25397ad371696","previous_command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z","previous_exact_result_identity_confirmed":true,"previous_full_output_sha256":"1eb35f0774e26589f4ca703a49ca0b56a21e6cd3aad2e6f4cc351f117c506a5c","previous_report_sha256":"081d73f33e1b20df8a607c5e877427f249e3792d12fd26ea0544d114b8b4a111","previous_runner_json_sha256":"29884755d025c0e26b084dff1dec25738fa9eca5c2318481536aeaacc279fc0a","previous_runner_text_sha256":"71e9e8c8552b73e8e1c88d294d79993116f30c5d50c8b52d4d459f845b961490","rc":0,"rollback_restored":false,"rollback_started":false,"schema":1,"status":"OK","summary_bytes":4639,"summary_sha256":"2f7e5f6857ce0492f823ff8b9a30fa7ec85855c1a0dbb8ea4e383b3ce41ad7ef"} -{"changes_made":false,"cluster_admin_discovery":{"analysis":null,"context_summaries":null,"context_update_details":[],"gitea_captured_sources":[],"gitea_repository":{"branch":null,"default_ref":null,"head":null,"head_matches_ls_remote":null,"inventory":null,"log":null,"ls_remote_head":null,"repo_url":null,"status":null,"tree_sha256":null,"working_tree_clean":null},"identity":null,"live_captured_sources":[],"proxmox_summary":{"guests":null,"nodes":null,"pvecm_status":null,"pveversion":null,"resources":null},"service_catalog_count":null},"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V2-EXACT-RESULT-READ-ONLY-20260805T100200Z","execution":{"changes_made":false,"command_rc":1,"control_plane_error":null,"full_output_bytes":603,"full_output_read_and_parsed":true,"full_output_sha256":"1eb35f0774e26589f4ca703a49ca0b56a21e6cd3aad2e6f4cc351f117c506a5c","mutation_outcome":"NO_MUTATION","output_source":"runner_json","output_truncated_in_json":false,"rc":1,"rollback_restored":null,"rollback_started":false,"runner_document_rc":1,"runner_json_bytes":2202,"runner_json_sha256":"29884755d025c0e26b084dff1dec25738fa9eca5c2318481536aeaacc279fc0a","runner_rc":1,"runner_text_bytes":1655,"runner_text_sha256":"71e9e8c8552b73e8e1c88d294d79993116f30c5d50c8b52d4d459f845b961490","runner_wrapper_matches_document":true,"status":"FAIL"},"lookup_409_assessment":{"conclusion":"HTTP 409 относится к публичной lookup-валидации; точный локальный Adapter/runner результат проверен отдельно.","exact_adapter_result_valid":true,"lookup_or_publication_repair_performed":false,"published_lane_lookup_was_409":true},"mutation_outcome":"NO_MUTATION","portal_evidence":{"bytes":3273,"gateway_verified":true,"local_bundle":"/var/lib/homelab-command-adapter/runs/ARVLBNSY4A-evidence.tgz","object_key":"portal/HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z/046ab0b658e0039c6a4fe886da08ebd9879331bafe35fed469d25397ad371696/evidence.tgz","sha256":"ed669b4976ec2c4491ece5db3de3a1debc495abfa2ffd7db1c5f178b756631dd"},"previous_exact_result_identity_confirmed":true,"previous_identity":{"capsule_sha256":"046ab0b658e0039c6a4fe886da08ebd9879331bafe35fed469d25397ad371696","command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z","finished_at_utc":"2026-08-05T10:01:46.852534+00:00","runner_path":"/var/lib/homelab-chat-run/public/HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z-20260805T100141Z.json","state_document_sha256":"73f2fd58388b13057a86833f107947911bdf39343661d78addf9bee58a9e4d0f","state_documents_matching":1,"state_files_scanned":319,"state_path_sha256":"0410ec80c8641912fd7fd1074e50f37ff4e7713b708d2f90c56cd9bd49bee84e","state_status":"FAIL","unique_runner_paths":1},"previous_report_integrity":{"report_bytes":310,"report_sha256":"081d73f33e1b20df8a607c5e877427f249e3792d12fd26ea0544d114b8b4a111","section_hashes":{"changes_made":{"bytes":5,"sha256":"fcbcf165908dd18a9e49f7ff27810176db8e9f63b4352213741664245224f8aa","type":"bool"},"command_id":{"bytes":71,"sha256":"2a7c6803aec77529bb08d760d2cdc44af563ae3b9a2727beda74e2ee9f75f283","type":"str"},"error":{"bytes":38,"sha256":"cfa68ffa1424d1f2f558188a11650fe8e15ad6417be3de952d6710a01cea6c84","type":"str"},"error_type":{"bytes":14,"sha256":"5f262391dafaa8ce09e17b4004e0c2aa14a61532f97d7f7ee7605d018c244b7f","type":"str"},"mutation_outcome":{"bytes":13,"sha256":"b7858cc4fdcdbebcfab4c8c7caa03b776ae839d7930797a5889ef120f55c04ff","type":"str"},"read_only":{"bytes":4,"sha256":"b5bea41b6c623f7c09f1bf24dcae58ebab3c0cdd90ad966bc43a45b44867e12b","type":"bool"},"rollback_restored":{"bytes":5,"sha256":"fcbcf165908dd18a9e49f7ff27810176db8e9f63b4352213741664245224f8aa","type":"bool"},"rollback_started":{"bytes":5,"sha256":"fcbcf165908dd18a9e49f7ff27810176db8e9f63b4352213741664245224f8aa","type":"bool"},"schema":{"bytes":1,"sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","type":"int"},"status":{"bytes":6,"sha256":"8dda96cc06ec8a54f6d789a9f4e5c22e8af9eb9c60a8f7046473c57163e079ff","type":"str"}},"top_level_keys":["changes_made","command_id","error","error_type","mutation_outcome","read_only","rollback_restored","rollback_started","schema","status"]},"previous_result_contract":{"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-DISCOVERY-V1-READ-ONLY-20260805T094500Z","command_rc":1,"control_plane_error":null,"mutation_outcome":"NO_MUTATION","rc":1,"rollback_restored":false,"rollback_started":false,"schema":1,"status":"FAIL"},"read_only":true,"rollback_restored":false,"rollback_started":false,"schema":2,"status":"OK"} +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z","command_rc":0,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":0,"rollback_restored":null,"rollback_started":false,"status":"OK","version":1} +{"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-READER-V3-EXECUTOR-ARGUMENT-ORIGIN-TRACE-READ-ONLY-20260805T100500Z","command_rc":0,"correction_of_previous_logic_gap":{"exact_fix":"trace handler-to-global call edges, statically resolve executor/file arguments, run the exact feed route in two no-I/O sandbox variants, and capture source-file exception events even when the Reader catches them","proven_gap":"the exact feed operation returned HTTP 500 in sandbox with zero recorded executor calls, while health alone was accepted; the previous projection did not capture global helper reachability, argument origins or caught exception events","regression_test":"a global helper using pvesh get must be reachable from feed, classified read-only and produce JSON through the fake executor; an unresolved module binding must produce a redacted caught NameError rather than another unexplained 500"},"error_fingerprint":"5df9f11405f92e576f437d2dc0523af74b62ac27efe7de6a4a8a4f5c1bd8ce05","latest_exact_result_basis":{"capsule_sha256":"67a018293eac4609c92494c56600f92f0b7161717182b1634e91b651960f98fb","changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-READER-V3-SANITIZED-BYTECODE-BRANCH-TRACE-READ-ONLY-20260805T095300Z","command_rc":0,"control_plane_error":null,"error_fingerprint":"f98fa5c6dec20928ee530acb4189a9ee8dceb9eeb1d09ace9b218f6762352eda","mutation_outcome":"NO_MUTATION","next_action":"RUN_ONE_READ_ONLY_READER_V3_EXECUTOR_ARGUMENT_ORIGIN_TRACE","output_complete":true,"output_sha256":"1c4ceb575201d7aa2a512efe92329d7faea09c277cbcc247c5fae4cea9b35780","output_truncated_in_json":false,"rc":0,"rollback_restored":null,"rollback_started":false,"root_cause_classification":"READER_V3_EXACT_OPERATION_ACCEPTED_BUT_READ_ONLY_INVENTORY_SCHEMA_NOT_PROVEN","runner_document_rc":0,"runner_json_sha256":"2386a2a2786a249f45f7331e3b49fa057f9f930908c3844c56669229431cf8bc","runner_rc":0,"runner_text_sha256":"6a15d08e977274340b4880f5fe2d64de803877676967ff4c207b54e878b9621e","runner_wrapper_matches_document":true,"status":"OK"},"mutation_outcome":"NO_MUTATION","next_action":"RUN_ONE_READ_ONLY_READER_V3_SANDBOX_GLOBAL_BINDING_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"}]},"prevention_test":{"must_run_before_future_cluster_or_gitea_commands":true,"name":"reader_v3_executor_argument_origin_preflight","requirements":["verify exact Reader source SHA and systemd identity","trace all handler-to-global helper edges","resolve executor or file argument origins and classify read-only semantics","capture caught source exceptions in a strict fake-import sandbox","require a successful JSON feed with at least one proven read-only data source before any live request","never output capability values, private addresses, raw source, disassembly 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":11641,"compacted":false,"max_bytes":36000},"rollback_restored":null,"rollback_started":false,"root_cause_classification":"READER_V3_FEED_CAUGHT_EXCEPTION_ORIGIN_PROVEN","sandbox_feed_origin_trace":{"caught_exception_types":["NameError"],"live_probe_contract_ready":false,"ready_variant_count":0,"variant_count":2,"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":[]},"response_header_names":["cache-control","content-length","content-type","expires","pragma","surrogate-control","x-robots-tag"],"route_template":"//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"},{"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":3,"excluded_assignment_names":["MANIFEST","RESULTS","RESULT_RE"],"include_safe_assignments":true,"included_assignment_count":3,"included_assignment_names":["CAPABILITY","PORT","ROOT"]},"response_header_names":["cache-control","content-length","content-type","expires","pragma","surrogate-control","x-robots-tag"],"route_template":"//feed","source_call_count":3,"source_calls":[{"line":42,"symbol":"do_GET"},{"line":45,"symbol":"handle_reader"},{"line":23,"symbol":"reply"}],"status":500,"variant":"safe-assignments"}]},"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":["//"],"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.005,"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"}}} OUTPUT_END CHAT_OUTPUT_END