39 lines
9.4 KiB
JSON
39 lines
9.4 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"channel": "homelab-runtime",
|
|
"command_id": "HOMELAB-CLUSTER-KB-V1-READER-V3-PROTOCOL-SPECIFIC-READ-ONLY-20260805T082100Z",
|
|
"status": "OK",
|
|
"rc": 0,
|
|
"host": "pve01",
|
|
"mode": "verify",
|
|
"component": "cluster-knowledge-base-error-system",
|
|
"started_at_utc": "2026-08-05T08:32:12Z",
|
|
"finished_at_utc": "2026-08-05T08:32:12Z",
|
|
"reference_register_checked": true,
|
|
"reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
|
|
"error_register_checked": true,
|
|
"error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83",
|
|
"command_sha256": "5adfe75e793018f15e1799e207029a4a5159643047a5c99a07d18f56b088784d",
|
|
"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": "ae1cb3bb2f5fe11da04b061be5e8c386bbebdff5242cb20eb9bcdbc1fe2d7291",
|
|
"sanitized_output_sha256": "ae1cb3bb2f5fe11da04b061be5e8c386bbebdff5242cb20eb9bcdbc1fe2d7291",
|
|
"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-PROTOCOL-SPECIFIC-READ-ONLY-20260805T082100Z\",\"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-PROTOCOL-SPECIFIC-READ-ONLY-20260805T082100Z\",\"command_rc\":0,\"correction_of_previous_logic_gaps\":[{\"exact_fix\":\"PATH-like names and colon-separated filesystem values are rejected before route construction\",\"proven_gap\":\"PATH was accepted as an HTTP route because its environment name matched a broad path regex\",\"regression_test\":\"PATH cannot pass is_route_value or appear in route templates\"},{\"exact_fix\":\"connect to the exact listener address obtained from the Reader process network table\",\"proven_gap\":\"the previous probe assumed 127.0.0.1 although the owned listener was bound to a specific non-loopback address\",\"regression_test\":\"specific listeners are probed at their exact internal address; the address is never output\"},{\"exact_fix\":\"capability names and values are secret and are replaced by <capability> in all output\",\"proven_gap\":\"HOMELAB_READER_CAPABILITY was not classified as secret\",\"regression_test\":\"secret value cannot appear in route templates or output\"}],\"error_fingerprint\":\"820f5c9a664dd86192521678e7c5790c5c6adcb442b513f49dadf4f23286d5eb\",\"latest_exact_result_basis\":{\"capsule_sha256\":\"4d3ddb435f7ab3c7211374d080966c708764dccd4c1a8158e752348838f89e8a\",\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-KB-V1-READER-V3-EXACT-ROUTE-READ-ONLY-20260805T080500Z\",\"command_rc\":0,\"control_plane_error\":null,\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"RUN_ONE_READ_ONLY_READER_V3_PROTOCOL_SPECIFIC_PROBE\",\"output_complete\":true,\"output_sha256\":\"1c712519eb2e1171ae0066e849d3ca2c71c460342f5aa3f8733a75b3360d358b\",\"output_truncated_in_json\":false,\"rc\":0,\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"READER_V3_RUNTIME_AND_INTERFACE_PARTIALLY_DISCOVERED_BUT_NO_AUTHORITATIVE_INVENTORY_RESPONSE\",\"runner_document_rc\":0,\"runner_json_sha256\":\"778267e8222f26022de07e4364043f110da28905d238b6d91ce87407e8a5ccd5\",\"runner_rc\":0,\"runner_text_sha256\":\"52fb0b4883655abe8a39c62f94da8ce34fa0e6711dff5ef468fb0802557931f9\",\"runner_wrapper_matches_document\":true,\"status\":\"OK\"},\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"RUN_ONE_READ_ONLY_READER_V3_EXACT_AUTH_AND_ROUTE_CONTRACT_PROBE\",\"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; hard source, response, route, probe and output limits\"},{\"id\":\"runner-wrapper-mismatch-20260805\",\"prevention\":\"single compact JSON below 42000 bytes; no raw sources or response bodies\"},{\"id\":\"gitea-owner-hardcoded-20260805\",\"prevention\":\"no repository owner or repository URL is assumed\"},{\"id\":\"gitea-git-auth-unavailable-20260805\",\"prevention\":\"no Git or Gitea authentication retry in this command\"},{\"id\":\"pvesh-adapter-context-unreadable-20260805\",\"prevention\":\"pvesh is not called\"},{\"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 regression test\"},{\"id\":\"reader-v3-skipped-on-nonauthoritative-inventory-20260805\",\"prevention\":\"this command directly probes Reader V3\"},{\"id\":\"reader-path-env-misclassified-as-route-20260805\",\"prevention\":\"PATH/PYTHONPATH and colon-separated filesystem values are explicitly forbidden as HTTP routes\"},{\"id\":\"reader-loopback-only-probe-20260805\",\"prevention\":\"connections use the exact address of the socket owned by the Reader ControlGroup; 127.0.0.1 is not assumed\"},{\"id\":\"reader-capability-not-secret-20260805\",\"prevention\":\"all capability values are secret; values and concrete secret-bearing routes are never output\"}]},\"prevention_test\":{\"must_run_before_future_cluster_or_gitea_commands\":true,\"name\":\"reader_v3_protocol_specific_preflight\",\"requirements\":[\"verify exact Reader unit and server source SHA\",\"bind process and sockets to exact ControlGroup\",\"treat capability as secret\",\"reject PATH-like values as routes\",\"connect only to exact owned listener endpoints\",\"derive routes only from source, exact environment, or protocol-standard root\",\"accept inventory only from successful JSON with normalized guest rows\"]},\"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},\"protocol_probe\":{\"auth_candidate_count\":0,\"gitea_candidates\":[],\"guest_count\":0,\"header_names\":[],\"probes\":[{\"auth\":\"none\",\"body_bytes\":10,\"body_sha256\":\"709009e02c8e364113b28205aadde30cce270d709073f28153c85fdc5036c96d\",\"body_truncated\":false,\"content_type\":\"text/plain; charset=utf-8\",\"duration_seconds\":0.001,\"endpoint_index\":0,\"json\":null,\"method\":\"GET\",\"response_header_names\":[\"cache-control\",\"content-length\",\"content-type\",\"date\",\"expires\",\"pragma\",\"server\",\"surrogate-control\",\"x-robots-tag\"],\"route_source\":\"exact_source_literal\",\"route_template\":\"/\",\"status\":404}],\"successful_inventory_routes\":[]},\"rc\":0,\"read_only\":true,\"ready_for_guest_probe\":false,\"result_projection\":{\"bytes\":7162,\"compacted\":false,\"max_bytes\":42000},\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"READER_V3_HTTP_ENDPOINT_REACHED_BUT_NO_AUTHORITATIVE_JSON_RESPONSE\",\"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_semantics\":{\"http_detected\":true,\"protocol_markers\":[\"basehttprequesthandler\",\"content-type\",\"do_get\",\"http.server\"],\"route_template_count\":1,\"route_templates\":[{\"method\":\"GET\",\"secret_bearing\":false,\"source\":\"exact_source_literal\",\"source_file_sha256\":\"6222c97692545e54270df7e5b953d64a1764681ddb375f3c3855402285eae36b\",\"template\":\"/\"}],\"source_environment_references\":[\"HOMELAB_READER_CAPABILITY\",\"HOMELAB_READER_PORT\"]},\"source_state\":\"MATCH\",\"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"
|
|
}
|