diff --git a/runtime/history/HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z.json b/runtime/history/HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z.json new file mode 100644 index 0000000..a07519d --- /dev/null +++ b/runtime/history/HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "verify", + "component": "homelab-kb-v2-r3-rollback-artifacts-r5-adapter-source-read-only", + "started_at_utc": "2026-08-06T03:49:08Z", + "finished_at_utc": "2026-08-06T03:49:08Z", + "reference_register_checked": true, + "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", + "error_register_checked": true, + "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", + "command_sha256": "e9be2bfb64487a47128723e0db096ed14e33b4f5c33df81dc2afb584f812aa7d", + "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": "aece25617c5e5cd1a9ba9d4d8b045cd63234249ee327520354cd80f17f1c2756", + "sanitized_output_sha256": "aece25617c5e5cd1a9ba9d4d8b045cd63234249ee327520354cd80f17f1c2756", + "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-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"adapter_process_count\":2,\"adapter_processes\":[{\"argv_prefix\":[\"/usr/bin/python3\",\"-B\",\"/usr/local/sbin/homelab-command-adapter\",\"--worker\"],\"candidates\":[{\"basis\":\"process_root_absolute\",\"bytes\":86019,\"mode\":\"0o755\",\"path\":\"/proc/1487725/root/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"},{\"basis\":\"host_absolute\",\"bytes\":86019,\"mode\":\"0o755\",\"path\":\"/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"}],\"cmdline_sha256\":\"d889200aac33977ddb86bfaf646bc52b74137899de0d4d3f17c98c702a8964ed\",\"cwd\":\"/\",\"exe\":\"/usr/bin/python3.13\",\"pid_relation\":3,\"script_arg\":\"/usr/local/sbin/homelab-command-adapter\"},{\"argv_prefix\":[\"/usr/bin/python3\",\"-B\",\"/usr/local/sbin/homelab-command-adapter\",\"--serve\"],\"candidates\":[{\"basis\":\"process_root_absolute\",\"bytes\":86019,\"mode\":\"0o755\",\"path\":\"/proc/1131444/root/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"},{\"basis\":\"host_absolute\",\"bytes\":86019,\"mode\":\"0o755\",\"path\":\"/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"}],\"cmdline_sha256\":\"9d9189a1b62d8fb7a5f5713828ef28ef010f0f8109f9b3174f0ffbbc8b0f62a5\",\"cwd\":\"/\",\"exe\":\"/usr/bin/python3.13\",\"pid_relation\":4,\"script_arg\":\"/usr/local/sbin/homelab-command-adapter\"}],\"backup_changed\":false,\"changes_made\":false,\"command_id\":\"HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z\",\"discovery_status\":\"EXACT_ADAPTER_SOURCE_AND_MODE_ENUM_FOUND\",\"exact_mode_values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"],\"gitea_changed\":false,\"mutation_outcome\":\"NO_MUTATION\",\"private_addresses_included\":false,\"production_changed\":false,\"purpose\":\"READ_ONLY_RESOLVE_EXACT_ADAPTER_SOURCE_AND_MODE_ENUM\",\"rollback_restored\":null,\"rollback_started\":false,\"sanitized\":true,\"schema\":2,\"secrets_included\":false,\"services_changed\":false,\"source_results\":[{\"basis\":\"process_root_absolute\",\"bytes\":86019,\"evidence\":{\"component_string_literal_found\":false,\"exact_mode_values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"],\"invalid_mode_literal_found\":true,\"snippets\":[{\"basis\":\"mode_assignment\",\"snippet\":\"ALLOWED_MODES = {\\n \\\"read-only\\\",\\n \\\"verify\\\",\\n \\\"change\\\",\\n \\\"transport-test\\\",\\n}\",\"snippet_sha256\":\"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702\",\"values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"]},{\"basis\":\"validator_error_context\",\"line\":371,\"snippet\":\" document.get(\\\"summary\\\"),\\n \\\"summary\\\",\\n minimum=1,\\n maximum=2000,\\n )\\n\\n mode = document.get(\\\"mode\\\")\\n if mode not in ALLOWED_MODES:\\n raise AdapterError(\\\"invalid mode\\\")\\n if document.get(\\\"target\\\") != \\\"pve01\\\":\\n raise AdapterError(\\\"only pve01 target is supported\\\")\\n\\n timeout_seconds = document.get(\\\"timeout_seconds\\\")\\n if (\\n not isinstance(timeout_seconds, int)\\n or isinstance(timeout_seconds, bool)\\n or not 1 <= timeout_seconds <= 7200\",\"snippet_sha256\":\"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c\"}]},\"identity_basis\":\"process_argv_script\",\"mode\":\"0o755\",\"path\":\"/proc/1487725/root/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"},{\"basis\":\"host_absolute\",\"bytes\":86019,\"evidence\":{\"component_string_literal_found\":false,\"exact_mode_values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"],\"invalid_mode_literal_found\":true,\"snippets\":[{\"basis\":\"mode_assignment\",\"snippet\":\"ALLOWED_MODES = {\\n \\\"read-only\\\",\\n \\\"verify\\\",\\n \\\"change\\\",\\n \\\"transport-test\\\",\\n}\",\"snippet_sha256\":\"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702\",\"values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"]},{\"basis\":\"validator_error_context\",\"line\":371,\"snippet\":\" document.get(\\\"summary\\\"),\\n \\\"summary\\\",\\n minimum=1,\\n maximum=2000,\\n )\\n\\n mode = document.get(\\\"mode\\\")\\n if mode not in ALLOWED_MODES:\\n raise AdapterError(\\\"invalid mode\\\")\\n if document.get(\\\"target\\\") != \\\"pve01\\\":\\n raise AdapterError(\\\"only pve01 target is supported\\\")\\n\\n timeout_seconds = document.get(\\\"timeout_seconds\\\")\\n if (\\n not isinstance(timeout_seconds, int)\\n or isinstance(timeout_seconds, bool)\\n or not 1 <= timeout_seconds <= 7200\",\"snippet_sha256\":\"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c\"}]},\"identity_basis\":\"process_argv_script\",\"mode\":\"0o755\",\"path\":\"/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"},{\"basis\":\"process_root_absolute\",\"bytes\":86019,\"evidence\":{\"component_string_literal_found\":false,\"exact_mode_values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"],\"invalid_mode_literal_found\":true,\"snippets\":[{\"basis\":\"mode_assignment\",\"snippet\":\"ALLOWED_MODES = {\\n \\\"read-only\\\",\\n \\\"verify\\\",\\n \\\"change\\\",\\n \\\"transport-test\\\",\\n}\",\"snippet_sha256\":\"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702\",\"values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"]},{\"basis\":\"validator_error_context\",\"line\":371,\"snippet\":\" document.get(\\\"summary\\\"),\\n \\\"summary\\\",\\n minimum=1,\\n maximum=2000,\\n )\\n\\n mode = document.get(\\\"mode\\\")\\n if mode not in ALLOWED_MODES:\\n raise AdapterError(\\\"invalid mode\\\")\\n if document.get(\\\"target\\\") != \\\"pve01\\\":\\n raise AdapterError(\\\"only pve01 target is supported\\\")\\n\\n timeout_seconds = document.get(\\\"timeout_seconds\\\")\\n if (\\n not isinstance(timeout_seconds, int)\\n or isinstance(timeout_seconds, bool)\\n or not 1 <= timeout_seconds <= 7200\",\"snippet_sha256\":\"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c\"}]},\"identity_basis\":\"process_argv_script\",\"mode\":\"0o755\",\"path\":\"/proc/1131444/root/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"},{\"basis\":\"host_absolute\",\"bytes\":86019,\"evidence\":{\"component_string_literal_found\":false,\"exact_mode_values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"],\"invalid_mode_literal_found\":true,\"snippets\":[{\"basis\":\"mode_assignment\",\"snippet\":\"ALLOWED_MODES = {\\n \\\"read-only\\\",\\n \\\"verify\\\",\\n \\\"change\\\",\\n \\\"transport-test\\\",\\n}\",\"snippet_sha256\":\"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702\",\"values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"]},{\"basis\":\"validator_error_context\",\"line\":371,\"snippet\":\" document.get(\\\"summary\\\"),\\n \\\"summary\\\",\\n minimum=1,\\n maximum=2000,\\n )\\n\\n mode = document.get(\\\"mode\\\")\\n if mode not in ALLOWED_MODES:\\n raise AdapterError(\\\"invalid mode\\\")\\n if document.get(\\\"target\\\") != \\\"pve01\\\":\\n raise AdapterError(\\\"only pve01 target is supported\\\")\\n\\n timeout_seconds = document.get(\\\"timeout_seconds\\\")\\n if (\\n not isinstance(timeout_seconds, int)\\n or isinstance(timeout_seconds, bool)\\n or not 1 <= timeout_seconds <= 7200\",\"snippet_sha256\":\"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c\"}]},\"identity_basis\":\"process_argv_script\",\"mode\":\"0o755\",\"path\":\"/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"}],\"status\":\"AUDIT_COMPLETE\"}\n" +} diff --git a/runtime/history/HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z.txt b/runtime/history/HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z.txt new file mode 100644 index 0000000..c46bfa6 --- /dev/null +++ b/runtime/history/HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z.txt @@ -0,0 +1,34 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z +STATUS=OK +RC=0 +HOST=pve01 +MODE=verify +COMPONENT=homelab-kb-v2-r3-rollback-artifacts-r5-adapter-source-read-only +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 +COMMAND_SHA256=e9be2bfb64487a47128723e0db096ed14e33b4f5c33df81dc2afb584f812aa7d +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=aece25617c5e5cd1a9ba9d4d8b045cd63234249ee327520354cd80f17f1c2756 +SANITIZED_OUTPUT_SHA256=aece25617c5e5cd1a9ba9d4d8b045cd63234249ee327520354cd80f17f1c2756 +OUTPUT_BEGIN +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z","rollback_restored":null,"rollback_started":false,"status":"OK","version":1} +{"adapter_process_count":2,"adapter_processes":[{"argv_prefix":["/usr/bin/python3","-B","/usr/local/sbin/homelab-command-adapter","--worker"],"candidates":[{"basis":"process_root_absolute","bytes":86019,"mode":"0o755","path":"/proc/1487725/root/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"},{"basis":"host_absolute","bytes":86019,"mode":"0o755","path":"/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"}],"cmdline_sha256":"d889200aac33977ddb86bfaf646bc52b74137899de0d4d3f17c98c702a8964ed","cwd":"/","exe":"/usr/bin/python3.13","pid_relation":3,"script_arg":"/usr/local/sbin/homelab-command-adapter"},{"argv_prefix":["/usr/bin/python3","-B","/usr/local/sbin/homelab-command-adapter","--serve"],"candidates":[{"basis":"process_root_absolute","bytes":86019,"mode":"0o755","path":"/proc/1131444/root/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"},{"basis":"host_absolute","bytes":86019,"mode":"0o755","path":"/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"}],"cmdline_sha256":"9d9189a1b62d8fb7a5f5713828ef28ef010f0f8109f9b3174f0ffbbc8b0f62a5","cwd":"/","exe":"/usr/bin/python3.13","pid_relation":4,"script_arg":"/usr/local/sbin/homelab-command-adapter"}],"backup_changed":false,"changes_made":false,"command_id":"HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z","discovery_status":"EXACT_ADAPTER_SOURCE_AND_MODE_ENUM_FOUND","exact_mode_values":["change","read-only","transport-test","verify"],"gitea_changed":false,"mutation_outcome":"NO_MUTATION","private_addresses_included":false,"production_changed":false,"purpose":"READ_ONLY_RESOLVE_EXACT_ADAPTER_SOURCE_AND_MODE_ENUM","rollback_restored":null,"rollback_started":false,"sanitized":true,"schema":2,"secrets_included":false,"services_changed":false,"source_results":[{"basis":"process_root_absolute","bytes":86019,"evidence":{"component_string_literal_found":false,"exact_mode_values":["change","read-only","transport-test","verify"],"invalid_mode_literal_found":true,"snippets":[{"basis":"mode_assignment","snippet":"ALLOWED_MODES = {\n \"read-only\",\n \"verify\",\n \"change\",\n \"transport-test\",\n}","snippet_sha256":"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702","values":["change","read-only","transport-test","verify"]},{"basis":"validator_error_context","line":371,"snippet":" document.get(\"summary\"),\n \"summary\",\n minimum=1,\n maximum=2000,\n )\n\n mode = document.get(\"mode\")\n if mode not in ALLOWED_MODES:\n raise AdapterError(\"invalid mode\")\n if document.get(\"target\") != \"pve01\":\n raise AdapterError(\"only pve01 target is supported\")\n\n timeout_seconds = document.get(\"timeout_seconds\")\n if (\n not isinstance(timeout_seconds, int)\n or isinstance(timeout_seconds, bool)\n or not 1 <= timeout_seconds <= 7200","snippet_sha256":"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c"}]},"identity_basis":"process_argv_script","mode":"0o755","path":"/proc/1487725/root/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"},{"basis":"host_absolute","bytes":86019,"evidence":{"component_string_literal_found":false,"exact_mode_values":["change","read-only","transport-test","verify"],"invalid_mode_literal_found":true,"snippets":[{"basis":"mode_assignment","snippet":"ALLOWED_MODES = {\n \"read-only\",\n \"verify\",\n \"change\",\n \"transport-test\",\n}","snippet_sha256":"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702","values":["change","read-only","transport-test","verify"]},{"basis":"validator_error_context","line":371,"snippet":" document.get(\"summary\"),\n \"summary\",\n minimum=1,\n maximum=2000,\n )\n\n mode = document.get(\"mode\")\n if mode not in ALLOWED_MODES:\n raise AdapterError(\"invalid mode\")\n if document.get(\"target\") != \"pve01\":\n raise AdapterError(\"only pve01 target is supported\")\n\n timeout_seconds = document.get(\"timeout_seconds\")\n if (\n not isinstance(timeout_seconds, int)\n or isinstance(timeout_seconds, bool)\n or not 1 <= timeout_seconds <= 7200","snippet_sha256":"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c"}]},"identity_basis":"process_argv_script","mode":"0o755","path":"/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"},{"basis":"process_root_absolute","bytes":86019,"evidence":{"component_string_literal_found":false,"exact_mode_values":["change","read-only","transport-test","verify"],"invalid_mode_literal_found":true,"snippets":[{"basis":"mode_assignment","snippet":"ALLOWED_MODES = {\n \"read-only\",\n \"verify\",\n \"change\",\n \"transport-test\",\n}","snippet_sha256":"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702","values":["change","read-only","transport-test","verify"]},{"basis":"validator_error_context","line":371,"snippet":" document.get(\"summary\"),\n \"summary\",\n minimum=1,\n maximum=2000,\n )\n\n mode = document.get(\"mode\")\n if mode not in ALLOWED_MODES:\n raise AdapterError(\"invalid mode\")\n if document.get(\"target\") != \"pve01\":\n raise AdapterError(\"only pve01 target is supported\")\n\n timeout_seconds = document.get(\"timeout_seconds\")\n if (\n not isinstance(timeout_seconds, int)\n or isinstance(timeout_seconds, bool)\n or not 1 <= timeout_seconds <= 7200","snippet_sha256":"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c"}]},"identity_basis":"process_argv_script","mode":"0o755","path":"/proc/1131444/root/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"},{"basis":"host_absolute","bytes":86019,"evidence":{"component_string_literal_found":false,"exact_mode_values":["change","read-only","transport-test","verify"],"invalid_mode_literal_found":true,"snippets":[{"basis":"mode_assignment","snippet":"ALLOWED_MODES = {\n \"read-only\",\n \"verify\",\n \"change\",\n \"transport-test\",\n}","snippet_sha256":"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702","values":["change","read-only","transport-test","verify"]},{"basis":"validator_error_context","line":371,"snippet":" document.get(\"summary\"),\n \"summary\",\n minimum=1,\n maximum=2000,\n )\n\n mode = document.get(\"mode\")\n if mode not in ALLOWED_MODES:\n raise AdapterError(\"invalid mode\")\n if document.get(\"target\") != \"pve01\":\n raise AdapterError(\"only pve01 target is supported\")\n\n timeout_seconds = document.get(\"timeout_seconds\")\n if (\n not isinstance(timeout_seconds, int)\n or isinstance(timeout_seconds, bool)\n or not 1 <= timeout_seconds <= 7200","snippet_sha256":"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c"}]},"identity_basis":"process_argv_script","mode":"0o755","path":"/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"}],"status":"AUDIT_COMPLETE"} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index f777e61..a07519d 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R4-MODE-SCHEMA-READ-ONLY-20260806T034000Z", + "command_id": "HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z", "status": "OK", "rc": 0, "host": "pve01", "mode": "verify", - "component": "homelab-kb-v2-r3-rollback-artifacts-r4-mode-schema-read-only", - "started_at_utc": "2026-08-06T03:43:57Z", - "finished_at_utc": "2026-08-06T03:43:59Z", + "component": "homelab-kb-v2-r3-rollback-artifacts-r5-adapter-source-read-only", + "started_at_utc": "2026-08-06T03:49:08Z", + "finished_at_utc": "2026-08-06T03:49:08Z", "reference_register_checked": true, "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", "error_register_checked": true, "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", - "command_sha256": "4542ead22cf5a855ce314300f0489c3fd9481daf98b3771fbddaaf1e601efa87", + "command_sha256": "e9be2bfb64487a47128723e0db096ed14e33b4f5c33df81dc2afb584f812aa7d", "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": "dd472cfd260f99757efced65a4015ae206b72b50cbd07ab402f4aeefc0572bdb", - "sanitized_output_sha256": "dd472cfd260f99757efced65a4015ae206b72b50cbd07ab402f4aeefc0572bdb", + "raw_evidence_sha256": "aece25617c5e5cd1a9ba9d4d8b045cd63234249ee327520354cd80f17f1c2756", + "sanitized_output_sha256": "aece25617c5e5cd1a9ba9d4d8b045cd63234249ee327520354cd80f17f1c2756", "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-KB-V2-R3-ROLLBACK-ARTIFACTS-R4-MODE-SCHEMA-READ-ONLY-20260806T034000Z\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"backup_changed\":false,\"changes_made\":false,\"command_id\":\"HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R4-MODE-SCHEMA-READ-ONLY-20260806T034000Z\",\"evidence\":{\"explicit_mode_values\":[\"Can\",\"LZMACompressor\",\"LZMADecompressor\",\"LZMAError\",\"LZMAFile\",\"MODE_NORMAL\",\"PRESET_DEFAULT\",\"PRESET_EXTREME\",\"ab\",\"at\",\"cache_size\",\"can\",\"compress\",\"data\",\"decompress\",\"encoding\",\"errors\",\"execute\",\"fileobj\",\"homelab-command-capsule\",\"is_check_supported\",\"line\",\"locale\",\"mmap_mode\",\"newline\",\"open\",\"path\",\"process_ancestry\",\"rb\",\"read\",\"rt\",\"rw\",\"rwb\",\"searched_roots\",\"snippet\",\"snippet_sha256\",\"spawnl\",\"spawnle\",\"spawnlp\",\"spawnlpe\",\"spawnv\",\"spawnve\",\"spawnvp\",\"spawnvpe\",\"strict\",\"utf-8\",\"verify\",\"vxworks\",\"wb\",\"write\",\"wt\",\"xb\",\"xt\"],\"files_examined\":8075,\"limits\":{\"max_file_bytes\":2097152,\"max_files\":12000,\"max_match_files\":80,\"max_snippets\":160},\"matched_files\":[{\"bytes\":93693,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"sha256\":\"fe5f1eebe5d06333f03440392bb1851a6e7cfa3c7e074a3a65a3bf7c4fe5f4ba\"},{\"bytes\":11969,\"path\":\"/usr/lib/python3.13/bz2.py\",\"sha256\":\"b217459e4c74ccb3da3a44b51dd335cfddcbe9d3014b3279dda1c1a7ca448c08\"},{\"bytes\":24633,\"path\":\"/usr/lib/python3.13/gzip.py\",\"sha256\":\"dba33ac2497af37712ea23f5c3ce3ed56177262886868cbc6a6d43632c79afe9\"},{\"bytes\":4482,\"path\":\"/usr/lib/python3.13/importlib/resources/_adapters.py\",\"sha256\":\"be9ac919b51e1db6a35fa5c2b8c3fa27794caea0a2f8ffcc4e5ce225447b8df9\"},{\"bytes\":13399,\"path\":\"/usr/lib/python3.13/lzma.py\",\"sha256\":\"6a923ba49b33897152a9398d2a39d08670238290c90c050b8f4d838046339db5\"},{\"bytes\":41635,\"path\":\"/usr/lib/python3.13/os.py\",\"sha256\":\"b6b68783d438ff044c096fd0c3d1dfc9479a9b632e0a450a376be6c01655aafe\"},{\"bytes\":37759,\"path\":\"/usr/lib/python3.13/socket.py\",\"sha256\":\"6d5e10b5bcd75b7a6a883a1819e3b47dda3f00621e8e7db365b96782fcf59ac3\"},{\"bytes\":4482,\"path\":\"/usr/lib/python3/dist-packages/importlib_resources/_adapters.py\",\"sha256\":\"be9ac919b51e1db6a35fa5c2b8c3fa27794caea0a2f8ffcc4e5ce225447b8df9\"},{\"bytes\":19768,\"path\":\"/usr/lib/python3/dist-packages/joblib/compressor.py\",\"sha256\":\"5b0473b1085d429d256d0bef11b01c69ebc2382336fd0caffc72783d51eda1b4\"},{\"bytes\":42485,\"path\":\"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py\",\"sha256\":\"eab44cbe3fbd760055b9c3cb63b274a81208718d97392406875a30a8e88622b8\"},{\"bytes\":22729,\"path\":\"/usr/lib/python3/dist-packages/numpy/lib/_datasource.py\",\"sha256\":\"149ee4d4782144453bb9d87c66e3b96591779c725f3a48fb8968a3868545a884\"},{\"bytes\":8847,\"path\":\"/usr/lib/python3/dist-packages/urllib3/util/ssltransport.py\",\"sha256\":\"133e0ef2947fbd3f1d6a7fc5bea0584ba7600df05710c7d57ebcdc754a167e2e\"},{\"bytes\":10005,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"sha256\":\"40cf79898c94a8134fc5d07226664df39f9d682a19cf3ff125aa4e1e23473483\"}],\"search_errors\":[],\"snippets\":[{\"line\":26,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\" \\\".py\\\", \\\".ps1\\\", \\\".psm1\\\", \\\".js\\\", \\\".mjs\\\", \\\".cjs\\\", \\\".ts\\\", \\\".tsx\\\",\\n \\\".json\\\", \\\".yaml\\\", \\\".yml\\\", \\\".toml\\\", \\\".go\\\", \\\".rs\\\", \\\".sh\\\", \\\".service\\\",\\n}\\nNEEDLES = (\\n \\\"invalid mode\\\",\\n \\\"component must be string\\\",\\n \\\"homelab-command-capsule\\\",\\n)\\nSECRET_RE = re.compile(\",\"snippet_sha256\":\"ff4c6a4ce36379d3a9a1f3ac17db1e033f02c0d02b52b3770f45dcf1eefc7ddd\"},{\"line\":27,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\" \\\".json\\\", \\\".yaml\\\", \\\".yml\\\", \\\".toml\\\", \\\".go\\\", \\\".rs\\\", \\\".sh\\\", \\\".service\\\",\\n}\\nNEEDLES = (\\n \\\"invalid mode\\\",\\n \\\"component must be string\\\",\\n \\\"homelab-command-capsule\\\",\\n)\\nSECRET_RE = re.compile(\\n r\\\"(?i)(authorization|password|passwd|token|secret|cookie|credential)\\\\s*[:=]\\\\s*[^\\\\s,;]+\\\"\",\"snippet_sha256\":\"840a33a7083f1d42efe7c95bb938e333342ccdef466cfe199dec73a4682ba945\"},{\"line\":28,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\"}\\nNEEDLES = (\\n \\\"invalid mode\\\",\\n \\\"component must be string\\\",\\n \\\"homelab-command-capsule\\\",\\n)\\nSECRET_RE = re.compile(\\n r\\\"(?i)(authorization|password|passwd|token|secret|cookie|credential)\\\\s*[:=]\\\\s*[^\\\\s,;]+\\\"\\n)\",\"snippet_sha256\":\"4ab2814177fe64cc2467e8f543ea28f41097d54351aa095818483b92ace9e436\"},{\"line\":253,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\" }\\n\\n\\ndef self_test() -> int:\\n sample = 'if mode not in {\\\"verify\\\", \\\"execute\\\"}: raise AdapterError(\\\"invalid mode\\\")'\\n matches = MODE_ENUM_RE.findall(sample)\\n assert matches\\n values = set(QUOTED_RE.findall(matches[0]))\\n assert {\\\"verify\\\", \\\"execute\\\"}.issubset(values)\",\"snippet_sha256\":\"9a045100a3f69e8b027b11c19e889469af060d6c88d13036544d663045f60797\"},{\"line\":null,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\"mode\\\",\\n \\\"component must be string\\\",\\n \\\"homelab-command-capsule\\\",\\n)\\nSECRET_RE = re.compile(\\n r\\\"(?i)\",\"snippet_sha256\":\"31e924670da75c70b560affed59d891974adfd12c247f36743626a5ac49d1be8\"},{\"line\":null,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\"mode\\\" in fragment.lower() and values:\\n for value in values:\\n if value.lower() not in {\\n \\\"mode\\\", \\\"invalid\\\", \\\"allowed\\\", \\\"valid\\\", \\\"enum\\\", \\\"oneof\\\",\\n \\\"component\\\", \\\"string\\\", \\\"error\\\", \\\"adaptererror\\\",\\n }\",\"snippet_sha256\":\"af73fb34d8cd0a95956ffbd22fc1b6325588a3c4c6a2cfbdfc61bc1d65a659df\"},{\"line\":null,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\"modes.add(value)\\n snippets.append({\\n \\\"path\\\": path_key,\\n \\\"line\\\": None,\\n \\\"snippet\\\": fragment,\\n \\\"snippet_sha256\\\": sha256_bytes(fragment.encode(\\\"utf-8\\\")\",\"snippet_sha256\":\"cd9756239fb2ab48600e8981813f273c6371eb179f2bbe1bb06d3f95657db540\"},{\"line\":null,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\"mode not in {\\\"verify\\\", \\\"execute\\\"}\",\"snippet_sha256\":\"448cc0f0e2fde2c264be669e74c3c7a60356a672b391dffc4d9b70d375895fc2\"},{\"line\":null,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\"MODE_ENUM\\\",\\n \\\"process_ancestry\\\": rows,\\n \\\"searched_roots\\\": [str(p) for p in roots]\",\"snippet_sha256\":\"ec82255fff3582886b5f038d4b9d4df53a80f5da71e88f5c2b52897639737ab2\"},{\"line\":26,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\" \\\".py\\\", \\\".ps1\\\", \\\".psm1\\\", \\\".js\\\", \\\".mjs\\\", \\\".cjs\\\", \\\".ts\\\", \\\".tsx\\\",\\n \\\".json\\\", \\\".yaml\\\", \\\".yml\\\", \\\".toml\\\", \\\".go\\\", \\\".rs\\\", \\\".sh\\\", \\\".service\\\",\\n}\\nNEEDLES = (\\n \\\"invalid mode\\\",\\n \\\"component must be string\\\",\\n \\\"homelab-command-capsule\\\",\\n)\\nSECRET_RE = re.compile(\",\"snippet_sha256\":\"ff4c6a4ce36379d3a9a1f3ac17db1e033f02c0d02b52b3770f45dcf1eefc7ddd\"},{\"line\":27,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\" \\\".json\\\", \\\".yaml\\\", \\\".yml\\\", \\\".toml\\\", \\\".go\\\", \\\".rs\\\", \\\".sh\\\", \\\".service\\\",\\n}\\nNEEDLES = (\\n \\\"invalid mode\\\",\\n \\\"component must be string\\\",\\n \\\"homelab-command-capsule\\\",\\n)\\nSECRET_RE = re.compile(\\n r\\\"(?i)(authorization|password|passwd|token|secret|cookie|credential)\\\\s*[:=]\\\\s*[^\\\\s,;]+\\\"\",\"snippet_sha256\":\"840a33a7083f1d42efe7c95bb938e333342ccdef466cfe199dec73a4682ba945\"},{\"line\":28,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\"}\\nNEEDLES = (\\n \\\"invalid mode\\\",\\n \\\"component must be string\\\",\\n \\\"homelab-command-capsule\\\",\\n)\\nSECRET_RE = re.compile(\\n r\\\"(?i)(authorization|password|passwd|token|secret|cookie|credential)\\\\s*[:=]\\\\s*[^\\\\s,;]+\\\"\\n)\",\"snippet_sha256\":\"4ab2814177fe64cc2467e8f543ea28f41097d54351aa095818483b92ace9e436\"},{\"line\":253,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\" }\\n\\n\\ndef self_test() -> int:\\n sample = 'if mode not in {\\\"verify\\\", \\\"execute\\\"}: raise AdapterError(\\\"invalid mode\\\")'\\n matches = MODE_ENUM_RE.findall(sample)\\n assert matches\\n values = set(QUOTED_RE.findall(matches[0]))\\n assert {\\\"verify\\\", \\\"execute\\\"}.issubset(values)\",\"snippet_sha256\":\"9a045100a3f69e8b027b11c19e889469af060d6c88d13036544d663045f60797\"},{\"line\":null,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\"mode\\\",\\n \\\"component must be string\\\",\\n \\\"homelab-command-capsule\\\",\\n)\\nSECRET_RE = re.compile(\\n r\\\"(?i)\",\"snippet_sha256\":\"31e924670da75c70b560affed59d891974adfd12c247f36743626a5ac49d1be8\"},{\"line\":null,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\"mode\\\" in fragment.lower() and values:\\n for value in values:\\n if value.lower() not in {\\n \\\"mode\\\", \\\"invalid\\\", \\\"allowed\\\", \\\"valid\\\", \\\"enum\\\", \\\"oneof\\\",\\n \\\"component\\\", \\\"string\\\", \\\"error\\\", \\\"adaptererror\\\",\\n }\",\"snippet_sha256\":\"af73fb34d8cd0a95956ffbd22fc1b6325588a3c4c6a2cfbdfc61bc1d65a659df\"},{\"line\":null,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\"modes.add(value)\\n snippets.append({\\n \\\"path\\\": path_key,\\n \\\"line\\\": None,\\n \\\"snippet\\\": fragment,\\n \\\"snippet_sha256\\\": sha256_bytes(fragment.encode(\\\"utf-8\\\")\",\"snippet_sha256\":\"cd9756239fb2ab48600e8981813f273c6371eb179f2bbe1bb06d3f95657db540\"},{\"line\":null,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\"mode not in {\\\"verify\\\", \\\"execute\\\"}\",\"snippet_sha256\":\"448cc0f0e2fde2c264be669e74c3c7a60356a672b391dffc4d9b70d375895fc2\"},{\"line\":null,\"path\":\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py\",\"snippet\":\"MODE_ENUM\\\",\\n \\\"process_ancestry\\\": rows,\\n \\\"searched_roots\\\": [str(p) for p in roots]\",\"snippet_sha256\":\"ec82255fff3582886b5f038d4b9d4df53a80f5da71e88f5c2b52897639737ab2\"},{\"line\":55,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"\\n \\\"\\\"\\\"\\n if \\\"t\\\" in mode:\\n if \\\"b\\\" in mode:\\n raise ValueError(\\\"Invalid mode: %r\\\" % (mode,))\\n else:\\n if encoding is not None:\\n raise ValueError(\\\"Argument 'encoding' not supported in binary mode\\\")\\n if errors is not None:\",\"snippet_sha256\":\"d84e0e791af6af27a653c47c6ed06fdee3472705e1fee8ced9f3f2d277b2f86a\"},{\"line\":197,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"\\n \\\"\\\"\\\"\\n\\n if mode and ('t' in mode or 'U' in mode):\\n raise ValueError(\\\"Invalid mode: {!r}\\\".format(mode))\\n if mode and 'b' not in mode:\\n mode += 'b'\\n\\n try:\",\"snippet_sha256\":\"0bea4953969f9c22633a43d4d1f63e7106f44855ae9d191faf52570c4c398a28\"},{\"line\":241,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\" self._buffer_size = _WRITE_BUFFER_SIZE\\n self._buffer = io.BufferedWriter(_WriteBufferStream(self),\\n buffer_size=self._buffer_size)\\n else:\\n raise ValueError(\\\"Invalid mode: {!r}\\\".format(mode))\\n\\n self.fileobj = fileobj\\n\\n if self.mode == WRITE:\",\"snippet_sha256\":\"1d152437f47d79e596c8b946443b4ba34a5d5640862d275eefe388ba3c26fd2e\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode=\\\"rb\\\", compresslevel=_COMPRESS_LEVEL_BEST,\\n encoding=None, errors=None, newline=None):\\n \\\"\\\"\\\"Open a gzip-compressed file in binary or text mode.\\n\\n The filename argument can be an actual filename (a str or bytes object)\",\"snippet_sha256\":\"544418d5b99328e0ab4aaf9c549898a7d925a35159b993609b330617f6557b07\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode argument can be \\\"r\\\", \\\"rb\\\", \\\"w\\\", \\\"wb\\\", \\\"x\\\", \\\"xb\\\", \\\"a\\\" or \\\"ab\\\" for\\n binary mode, or \\\"rt\\\", \\\"wt\\\", \\\"xt\\\" or \\\"at\\\" for text mode. The default mode is\\n \\\"rb\\\", and the default compresslevel is 9.\\n\\n For binary mode, this function is equivalent to the GzipFile constructor:\\n GzipFile(filename, mode, compresslevel)\",\"snippet_sha256\":\"b9ac62374bf3e2b5488bf9e2e94ce6b2d71a7160c14b27e9663aa175d033616c\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode\\\")\\n if errors is not None:\\n raise ValueError(\\\"Argument 'errors' not supported in binary mode\\\")\\n if newline is not None:\\n raise ValueError(\\\"Argument 'newline' not supported in binary mode\\\")\",\"snippet_sha256\":\"babc0d84bca71e099b297240c4acf7600a34e27828e97fceadd5217a4cfa0b3d\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode, compresslevel)\\n elif hasattr(filename, \\\"read\\\") or hasattr(filename, \\\"write\\\"):\\n binary_file = GzipFile(None, gz_mode, compresslevel, filename)\",\"snippet_sha256\":\"ad1ab24f59d90ee68567b28efdc12550ca67becaccda724a35bda14afbb955a8\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode and 'b' not in mode:\\n mode += 'b'\\n\\n try:\\n if fileobj is None:\\n fileobj = self.myfileobj = builtins.open(filename, mode or 'rb')\",\"snippet_sha256\":\"b8c049bfe3ad54c32f6271dd930dd8ddda89b6236090d204aba5ca8c69993b13\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode != READ:\\n raise OSError(\\\"Can't rewind in write mode\\\")\\n self._buffer.seek(0)\",\"snippet_sha256\":\"c70a817166520d6f230d47e9f4c11aa8ed64fbc3a3acf579d05c3e86485f98bb\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode=\\\"rb\\\", fileobj=sys.stdin.buffer)\\n g = sys.stdout.buffer\\n else:\\n if arg[-3:]\",\"snippet_sha256\":\"95153bbc01305c041ae710e99bd0b3bbdfc54271d2fab6a86afddba42fa998bc\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode=\\\"wb\\\", fileobj=sys.stdout.buffer,\\n compresslevel=compresslevel)\\n else:\\n f = builtins.open(arg, \\\"rb\\\")\",\"snippet_sha256\":\"92397a0f0b29dde52921a4533559d77e6db26a07806d369cfa152d35f66cec9e\"},{\"line\":115,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\" self._compressor = LZMACompressor(format=format, check=check,\\n preset=preset, filters=filters)\\n self._pos = 0\\n else:\\n raise ValueError(\\\"Invalid mode: {!r}\\\".format(mode))\\n\\n if isinstance(filename, (str, bytes, os.PathLike)):\\n if \\\"b\\\" not in mode:\\n mode += \\\"b\\\"\",\"snippet_sha256\":\"2ad5d669d6519f539ac9cec7d4d510c542db00e858d0e5dca950029486ea6921\"},{\"line\":307,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"\\n \\\"\\\"\\\"\\n if \\\"t\\\" in mode:\\n if \\\"b\\\" in mode:\\n raise ValueError(\\\"Invalid mode: %r\\\" % (mode,))\\n else:\\n if encoding is not None:\\n raise ValueError(\\\"Argument 'encoding' not supported in binary mode\\\")\\n if errors is not None:\",\"snippet_sha256\":\"d84e0e791af6af27a653c47c6ed06fdee3472705e1fee8ced9f3f2d277b2f86a\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"MODE_FAST\\\", \\\"MODE_NORMAL\\\", \\\"PRESET_DEFAULT\\\", \\\"PRESET_EXTREME\\\",\\n\\n \\\"LZMACompressor\\\", \\\"LZMADecompressor\\\", \\\"LZMAFile\\\", \\\"LZMAError\\\",\\n \\\"open\\\", \\\"compress\\\", \\\"decompress\\\", \\\"is_check_supported\\\",\\n]\\n\\nimport builtins\\nimport io\\nimport os\\nfrom _lzma import *\\nfrom _lzma import _encode_filter_properties, _decode_filter_properties\\nimport _compression\\n\\n\\n# Value 0 no longer used\\n_MODE_READ = 1\\n# Value 2 no longer used\\n_MODE_WRITE = 3\\n\\n\\nclass LZMAFile(_compression.BaseStream)\",\"snippet_sha256\":\"7433e8e10f7a810f6c1bc926e2bc2c981a8b8b6061a5f0671bb0ea63782bee54\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"mode = None\\n\\n if mode in (\\\"r\\\", \\\"rb\\\")\",\"snippet_sha256\":\"4006058611632be94488e0a0b85e1489ae1a02d921622982ae91ef52678f4398\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"mode_code = _MODE_READ\\n elif mode in (\\\"w\\\", \\\"wb\\\", \\\"a\\\", \\\"ab\\\", \\\"x\\\", \\\"xb\\\")\",\"snippet_sha256\":\"38a726527e0715a966b20b74a04c86e6509e89a0dd4a32363e22b36cd248a78c\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"mode(self):\\n return 'wb' if self._mode == _MODE_WRITE else 'rb'\\n\\n def fileno(self):\\n \\\"\\\"\\\"Return the file descriptor for the underlying file.\\\"\\\"\\\"\\n self._check_not_closed()\\n return self._fp.fileno()\\n\\n def seekable(self)\",\"snippet_sha256\":\"cf2ecb6795ddf7d5143fc2d1cae3613098f43900fde109ad51ac63e96669db4a\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"mode == _MODE_READ:\\n return self._buffer.tell()\\n return self._pos\\n\\n\\ndef open(filename, mode=\\\"rb\\\", *,\\n format=None, check=-1, preset=None, filters=None,\\n encoding=None, errors=None, newline=None):\\n \\\"\\\"\\\"Open an LZMA-compressed file in binary or text mode.\\n\\n filename can be either an actual file name (given as a str, bytes,\\n or PathLike object)\",\"snippet_sha256\":\"f32eaf2d693c0506703fb687db48b5f58555643cd768109556c23ddb3e6361c9\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"mode argument can be \\\"r\\\", \\\"rb\\\" (default), \\\"w\\\", \\\"wb\\\", \\\"x\\\", \\\"xb\\\",\\n \\\"a\\\", or \\\"ab\\\" for binary mode, or \\\"rt\\\", \\\"wt\\\", \\\"xt\\\", or \\\"at\\\" for text\\n mode.\\n\\n The format, check, preset and filters arguments specify the\\n compression settings, as for LZMACompressor, LZMADecompressor and\\n LZMAFile.\\n\\n For binary mode, this function is equivalent to the LZMAFile\\n constructor: LZMAFile(filename, mode, ...)\",\"snippet_sha256\":\"23e3d5e1c60278f2bc2e6a559804ad80afdea4e084be91e836a70773d33b6cd6\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"mode\\\")\\n if errors is not None:\\n raise ValueError(\\\"Argument 'errors' not supported in binary mode\\\")\\n if newline is not None:\\n raise ValueError(\\\"Argument 'newline' not supported in binary mode\\\")\",\"snippet_sha256\":\"babc0d84bca71e099b297240c4acf7600a34e27828e97fceadd5217a4cfa0b3d\"},{\"line\":197,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\" file = os.fspath(file)\\n if not isinstance(file, (str, bytes, int)):\\n raise TypeError(\\\"invalid file: %r\\\" % file)\\n if not isinstance(mode, str):\\n raise TypeError(\\\"invalid mode: %r\\\" % mode)\\n if not isinstance(buffering, int):\\n raise TypeError(\\\"invalid buffering: %r\\\" % buffering)\\n if encoding is not None and not isinstance(encoding, str):\\n raise TypeError(\\\"invalid encoding: %r\\\" % encoding)\",\"snippet_sha256\":\"aefc6f21afe0c9c907cd88fd6520889ed6d1928301979add322a34ae6f77f506\"},{\"line\":206,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\" if errors is not None and not isinstance(errors, str):\\n raise TypeError(\\\"invalid errors: %r\\\" % errors)\\n modes = set(mode)\\n if modes - set(\\\"axrwb+t\\\") or len(mode) > len(modes):\\n raise ValueError(\\\"invalid mode: %r\\\" % mode)\\n creating = \\\"x\\\" in modes\\n reading = \\\"r\\\" in modes\\n writing = \\\"w\\\" in modes\\n appending = \\\"a\\\" in modes\",\"snippet_sha256\":\"d3617fbeb773e5aef9d55baae7e948795a4b0de6c54466c649cc1ef5c0e5e193\"},{\"line\":1516,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\" else:\\n fd = -1\\n\\n if not isinstance(mode, str):\\n raise TypeError('invalid mode: %s' % (mode,))\\n if not set(mode) <= set('xrwab+'):\\n raise ValueError('invalid mode: %s' % (mode,))\\n if sum(c in 'rwax' for c in mode) != 1 or mode.count('+') > 1:\\n raise ValueError('Must have exactly one of create/read/write/append '\",\"snippet_sha256\":\"395d5bf3705616f1dea6922901eb442705c7cf5fd0c67d76ae50e3f282e77873\"},{\"line\":1518,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\"\\n if not isinstance(mode, str):\\n raise TypeError('invalid mode: %s' % (mode,))\\n if not set(mode) <= set('xrwab+'):\\n raise ValueError('invalid mode: %s' % (mode,))\\n if sum(c in 'rwax' for c in mode) != 1 or mode.count('+') > 1:\\n raise ValueError('Must have exactly one of create/read/write/append '\\n 'mode and at most one plus')\\n\",\"snippet_sha256\":\"a7c28d0db09cba4bef285e18f0462dfd977998433d9b5b7537739085a475801b\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\"mode:\\n encoding = \\\"utf-8\\\"\\n else:\\n encoding = \\\"locale\\\"\\n if sys.flags.warn_default_encoding:\\n import warnings\\n warnings.warn(\\\"'encoding' argument not specified.\\\",\\n EncodingWarning, stacklevel + 1)\",\"snippet_sha256\":\"426ab5aabe1cef6fa29477cea3abf525c2cf2cff8c674dc9ff2f88a88ec41b9b\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\"mode. The default encoding is\\n platform dependent, but any encoding supported by Python can be\\n passed. See the codecs module for the list of supported encodings.\\n\\n errors is an optional string that specifies how encoding errors are to\\n be handled---this argument should not be used in binary mode. Pass\\n 'strict' to raise a ValueError exception if there is an encoding error\\n (the default of None has the same effect)\",\"snippet_sha256\":\"0088cc38f5419732582b689e476145e1654d7d0ad7038b2adb3bd47170e39301\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\"mode, and\\n through which the standard file operations such as reading and writing\\n are performed. When open() is used to open a file in a text mode ('w',\\n 'r', 'wt', 'rt', etc.)\",\"snippet_sha256\":\"a590cb01b6e0211f8c87978e09ce6b0121d02f42a326dba415deba7f42680a44\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\"modes = set(mode)\\n if modes - set(\\\"axrwb+t\\\") or len(mode) > len(modes):\\n raise ValueError(\\\"invalid mode: %r\\\" % mode)\\n creating = \\\"x\\\" in modes\\n reading = \\\"r\\\" in modes\\n writing = \\\"w\\\" in modes\\n appending = \\\"a\\\" in modes\\n updating = \\\"+\\\" in modes\\n text = \\\"t\\\" in modes\\n binary = \\\"b\\\" in modes\\n if text and binary:\\n raise ValueError(\\\"can't have text and binary mode at once\\\")\",\"snippet_sha256\":\"1323f1b2e020ad19b9fff7c73b71e0280d771ffd34cf5b1ae17432c81eab4c2f\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\"mode ``'rb'``. This function\\n should be used when the intent is to treat the contents as\\n executable code.\\n\\n ``path`` should be an absolute path.\\n\\n When supported by the runtime, this function can be hooked\\n in order to allow embedders more control over code files.\\n This functionality is not supported on the current runtime.\\n \\\"\\\"\\\"\\n import warnings\\n warnings.warn(\\\"_pyio.open_code()\",\"snippet_sha256\":\"881fa03dbdb5c050c75e78f43246643236829179361d67fdd92603661b1885d1\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\"mode. It wraps\\n another incremental decoder, translating \\\\r\\\\n and \\\\r into \\\\n. It also\\n records the types of newlines encountered. When used with\\n translate=False, it ensures that the newline sequence is returned in\\n one piece.\\n \\\"\\\"\\\"\\n def __init__(self, decoder, translate, errors='strict')\",\"snippet_sha256\":\"75c16c8d25859296d1dc265fbd27856666ce5467fcbb63c026dd18c254505523\"},{\"line\":1020,\"path\":\"/usr/lib/python3.13/os.py\",\"snippet\":\" def popen(cmd, mode=\\\"r\\\", buffering=-1):\\n if not isinstance(cmd, str):\\n raise TypeError(\\\"invalid cmd type (%s, expected string)\\\" % type(cmd))\\n if mode not in (\\\"r\\\", \\\"w\\\"):\\n raise ValueError(\\\"invalid mode %r\\\" % mode)\\n if buffering == 0 or buffering is None:\\n raise ValueError(\\\"popen() does not support unbuffered streams\\\")\\n import subprocess\\n if mode == \\\"r\\\":\",\"snippet_sha256\":\"1088a8909cb90ba4f63535f7ad4cfa8e2cb054c4f995abc15c6645258d1ae661\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/os.py\",\"snippet\":\"mode, file, args, env, execvpe)\\n\\n\\n __all__.extend([\\\"spawnv\\\", \\\"spawnve\\\", \\\"spawnvp\\\", \\\"spawnvpe\\\"])\\n\\n\\nif _exists(\\\"spawnv\\\"):\\n # These aren't supplied by the basic Windows code\\n # but can be easily implemented in Python\\n\\n def spawnl(mode, file, *args)\",\"snippet_sha256\":\"67f41eb3649e5832c937dec6623195ca0438c242679dcca9195d8093bdc86141\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/os.py\",\"snippet\":\"mode, file, args[:-1], env)\\n\\n\\n __all__.extend([\\\"spawnl\\\", \\\"spawnle\\\"])\\n\\n\\nif _exists(\\\"spawnvp\\\"):\\n # At the moment, Windows doesn't implement spawnvp[e]\",\"snippet_sha256\":\"8a642e450e56aa2919444827aecfeddcebedfec1563868dac46a0aab6a212192\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/os.py\",\"snippet\":\"mode, file, args[:-1], env)\\n\\n\\n __all__.extend([\\\"spawnlp\\\", \\\"spawnlpe\\\"])\\n\\n# VxWorks has no user space shell provided. As a result, running\\n# command in a shell can't be supported.\\nif sys.platform != 'vxworks':\\n # Supply os.popen()\\n def popen(cmd, mode=\\\"r\\\", buffering=-1)\",\"snippet_sha256\":\"2033895c3c390ce67453343c5fff4a9b09d7010003de83d74697c81958268207\"},{\"line\":78,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\" mode = \\\"ab\\\"\\n mode_code = _MODE_WRITE\\n self._compressor = BZ2Compressor(compresslevel)\\n else:\\n raise ValueError(\\\"Invalid mode: %r\\\" % (mode,))\\n\\n if isinstance(filename, (str, bytes, os.PathLike)):\\n self._fp = _builtin_open(filename, mode)\\n self._closefp = True\",\"snippet_sha256\":\"97ef89f2759b61822cc7143eaa68229446baf8adbe581eccc1c22e3ef6ef5993\"},{\"line\":302,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"\\n \\\"\\\"\\\"\\n if \\\"t\\\" in mode:\\n if \\\"b\\\" in mode:\\n raise ValueError(\\\"Invalid mode: %r\\\" % (mode,))\\n else:\\n if encoding is not None:\\n raise ValueError(\\\"Argument 'encoding' not supported in binary mode\\\")\\n if errors is not None:\",\"snippet_sha256\":\"d84e0e791af6af27a653c47c6ed06fdee3472705e1fee8ced9f3f2d277b2f86a\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode in (\\\"\\\", \\\"r\\\", \\\"rb\\\")\",\"snippet_sha256\":\"1a3d5955d8f557681a7d89176509de24b13c33fc91e6610cc31f5e8d88703dfa\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode = \\\"rb\\\"\\n mode_code = _MODE_READ\\n elif mode in (\\\"w\\\", \\\"wb\\\")\",\"snippet_sha256\":\"f299436013f799f6878732c61353b4f2323a53c8f84d202a233604fbe7d697eb\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode = \\\"wb\\\"\\n mode_code = _MODE_WRITE\\n self._compressor = BZ2Compressor(compresslevel)\\n elif mode in (\\\"x\\\", \\\"xb\\\")\",\"snippet_sha256\":\"7ac00832247ea0c6353fe98e63eb487c0da407322cb63f790b19608754550615\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode = \\\"xb\\\"\\n mode_code = _MODE_WRITE\\n self._compressor = BZ2Compressor(compresslevel)\\n elif mode in (\\\"a\\\", \\\"ab\\\")\",\"snippet_sha256\":\"6d2cda121f12c67983790195fa75f2c8ddc5314af8b63ef9b8d918ad3a39e80e\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode = \\\"ab\\\"\\n mode_code = _MODE_WRITE\\n self._compressor = BZ2Compressor(compresslevel)\\n else:\\n raise ValueError(\\\"Invalid mode: %r\\\" % (mode,)\",\"snippet_sha256\":\"0bbc3b3f19616231094c5591be7c8638416b6a85d8ae0b3b5ae52afa6574d1fd\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode(self):\\n return 'wb' if self._mode == _MODE_WRITE else 'rb'\\n\\n def fileno(self):\\n \\\"\\\"\\\"Return the file descriptor for the underlying file.\\\"\\\"\\\"\\n self._check_not_closed()\\n return self._fp.fileno()\\n\\n def seekable(self)\",\"snippet_sha256\":\"cf2ecb6795ddf7d5143fc2d1cae3613098f43900fde109ad51ac63e96669db4a\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode == _MODE_READ:\\n return self._buffer.tell()\\n return self._pos\\n\\n\\ndef open(filename, mode=\\\"rb\\\", compresslevel=9,\\n encoding=None, errors=None, newline=None):\\n \\\"\\\"\\\"Open a bzip2-compressed file in binary or text mode.\\n\\n The filename argument can be an actual filename (a str, bytes, or\\n PathLike object)\",\"snippet_sha256\":\"8dacf6d760468d066f2ba57941d783af74542dd70da3db6aea3a766b2381fd0b\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode argument can be \\\"r\\\", \\\"rb\\\", \\\"w\\\", \\\"wb\\\", \\\"x\\\", \\\"xb\\\", \\\"a\\\" or\\n \\\"ab\\\" for binary mode, or \\\"rt\\\", \\\"wt\\\", \\\"xt\\\" or \\\"at\\\" for text mode.\\n The default mode is \\\"rb\\\", and the default compresslevel is 9.\\n\\n For binary mode, this function is equivalent to the BZ2File\\n constructor: BZ2File(filename, mode, compresslevel)\",\"snippet_sha256\":\"63c57ccf065d653b0f5bc4dd3b783a320226511864f76f8bc651b931c608bf48\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode\\\")\\n if errors is not None:\\n raise ValueError(\\\"Argument 'errors' not supported in binary mode\\\")\\n if newline is not None:\\n raise ValueError(\\\"Argument 'newline' not supported in binary mode\\\")\",\"snippet_sha256\":\"babc0d84bca71e099b297240c4acf7600a34e27828e97fceadd5217a4cfa0b3d\"},{\"line\":314,\"path\":\"/usr/lib/python3.13/socket.py\",\"snippet\":\" those.\\n \\\"\\\"\\\"\\n # XXX refactor to share code?\\n if not set(mode) <= {\\\"r\\\", \\\"w\\\", \\\"b\\\"}:\\n raise ValueError(\\\"invalid mode %r (only r, w, b allowed)\\\" % (mode,))\\n writing = \\\"w\\\" in mode\\n reading = \\\"r\\\" in mode or not writing\\n assert reading or writing\\n binary = \\\"b\\\" in mode\",\"snippet_sha256\":\"f2e244fbbab55ac4f62cfe753cba3e5bb119168c70c1510e92321bac2f686e8d\"},{\"line\":696,\"path\":\"/usr/lib/python3.13/socket.py\",\"snippet\":\" # XXX More docs\\n\\n def __init__(self, sock, mode):\\n if mode not in (\\\"r\\\", \\\"w\\\", \\\"rw\\\", \\\"rb\\\", \\\"wb\\\", \\\"rwb\\\"):\\n raise ValueError(\\\"invalid mode: %r\\\" % mode)\\n io.RawIOBase.__init__(self)\\n self._sock = sock\\n if \\\"b\\\" not in mode:\\n mode += \\\"b\\\"\",\"snippet_sha256\":\"da4ec7a671e6780f37c659016e048d3233610c355761483d8d2a24ef49cd75ce\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/socket.py\",\"snippet\":\"mode):\\n if mode not in (\\\"r\\\", \\\"w\\\", \\\"rw\\\", \\\"rb\\\", \\\"wb\\\", \\\"rwb\\\")\",\"snippet_sha256\":\"d71aca4244bbdcf869445b4e1d28463c2de3d2a642d0a2ab2531f032fc92c7c4\"},{\"line\":37,\"path\":\"/usr/lib/python3.13/importlib/resources/_adapters.py\",\"snippet\":\" if mode == 'r':\\n return TextIOWrapper(file, *args, **kwargs)\\n elif mode == 'rb':\\n return file\\n raise ValueError(f\\\"Invalid mode value '{mode}', only 'r' and 'rb' are supported\\\")\\n\\n\\nclass CompatibilityFiles:\\n \\\"\\\"\\\"\",\"snippet_sha256\":\"4c2178a588be6f0cf22d26ae5bf65e12cf84897eb0992c6a250a3a6569633454\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/importlib/resources/_adapters.py\",\"snippet\":\"mode='r', *args, **kwargs):\\n if mode == 'r':\\n return TextIOWrapper(file, *args, **kwargs)\\n elif mode == 'rb':\\n return file\\n raise ValueError(f\\\"Invalid mode value '{mode}\",\"snippet_sha256\":\"eebdd5ddbc6441c8b37815480a47db144c31218dcb46cf54203104e4c6313a98\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/importlib/resources/_adapters.py\",\"snippet\":\"mode='r', *args, **kwargs):\\n raise FileNotFoundError(\\\"Can't open orphan path\\\")\\n\\n def __init__(self, spec)\",\"snippet_sha256\":\"f0104b36c28d13f2d904f6d6032815642e4753599b0f9f752af9c63e0bf2a311\"},{\"line\":37,\"path\":\"/usr/lib/python3/dist-packages/importlib_resources/_adapters.py\",\"snippet\":\" if mode == 'r':\\n return TextIOWrapper(file, *args, **kwargs)\\n elif mode == 'rb':\\n return file\\n raise ValueError(f\\\"Invalid mode value '{mode}', only 'r' and 'rb' are supported\\\")\\n\\n\\nclass CompatibilityFiles:\\n \\\"\\\"\\\"\",\"snippet_sha256\":\"4c2178a588be6f0cf22d26ae5bf65e12cf84897eb0992c6a250a3a6569633454\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/importlib_resources/_adapters.py\",\"snippet\":\"mode='r', *args, **kwargs):\\n if mode == 'r':\\n return TextIOWrapper(file, *args, **kwargs)\\n elif mode == 'rb':\\n return file\\n raise ValueError(f\\\"Invalid mode value '{mode}\",\"snippet_sha256\":\"eebdd5ddbc6441c8b37815480a47db144c31218dcb46cf54203104e4c6313a98\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/importlib_resources/_adapters.py\",\"snippet\":\"mode='r', *args, **kwargs):\\n raise FileNotFoundError(\\\"Can't open orphan path\\\")\\n\\n def __init__(self, spec)\",\"snippet_sha256\":\"f0104b36c28d13f2d904f6d6032815642e4753599b0f9f752af9c63e0bf2a311\"},{\"line\":284,\"path\":\"/usr/lib/python3/dist-packages/joblib/compressor.py\",\"snippet\":\" self._compressor = zlib.compressobj(self.compresslevel,\\n zlib.DEFLATED, self.wbits,\\n zlib.DEF_MEM_LEVEL, 0)\\n else:\\n raise ValueError(\\\"Invalid mode: %r\\\" % (mode,))\\n\\n if isinstance(filename, str):\\n self._fp = io.open(filename, mode)\\n self._closefp = True\",\"snippet_sha256\":\"b83feaa15018841fe212750c85059ddb30368e74d70ca398fd27e5acd8ea2a8b\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/joblib/compressor.py\",\"snippet\":\"mode can be 'rb' for reading (default)\",\"snippet_sha256\":\"aae85679c492bb6beefcf7a8d5d6d3d74700d6b8804c5b4807079487ac99706a\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/joblib/compressor.py\",\"snippet\":\"mode is 'wb', compresslevel can be a number between 1\\n and 9 specifying the level of compression: 1 produces the least\\n compression, and 9 produces the most compression. 3 is the default.\\n \\\"\\\"\\\"\\n\\n wbits = zlib.MAX_WBITS\\n\\n def __init__(self, filename, mode=\\\"rb\\\", compresslevel=3)\",\"snippet_sha256\":\"003809d184c47f7f437a08cce3ecbae33dbdbff67965247170f31ec4cede9af3\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/joblib/compressor.py\",\"snippet\":\"mode can be 'rb' for reading (default)\",\"snippet_sha256\":\"aae85679c492bb6beefcf7a8d5d6d3d74700d6b8804c5b4807079487ac99706a\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/joblib/compressor.py\",\"snippet\":\"mode is 'wb', compresslevel can be a number between 1\\n and 9 specifying the level of compression: 1 produces the least\\n compression, and 9 produces the most compression. 3 is the default.\\n \\\"\\\"\\\"\\n\\n wbits = 31 # zlib compressor/decompressor wbits value for gzip format.\\n\\n\\nclass GzipCompressorWrapper(CompressorWrapper)\",\"snippet_sha256\":\"118d491264bce123e46439bc5141f8121cd22b84c14bf85738a4ef5729cbf049\"},{\"line\":843,\"path\":\"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py\",\"snippet\":\"def test_binary_zlibfile_invalid_modes(tmpdir, bad_mode):\\n filename = tmpdir.join('test.pkl').strpath\\n with raises(ValueError) as excinfo:\\n BinaryZlibFile(filename, bad_mode)\\n excinfo.match(\\\"Invalid mode\\\")\\n\\n\\n@parametrize('bad_file', [1, (), {}])\\ndef test_binary_zlibfile_invalid_filename_type(bad_file):\",\"snippet_sha256\":\"16f572d0c67740d65c68a488e846c36a11c27ad741e696f3a2a9898a2f5250a9\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py\",\"snippet\":\"mode \\\"r+\\\" is not compatible with compressed '\\n f'file {this_filename}. \\\"r+\\\" flag will be ignored.'\\n )\\n\\n\\n@with_numpy\\n@parametrize('cache_size', [None, 0, 10])\\ndef test_cache_size_warning(tmpdir, cache_size)\",\"snippet_sha256\":\"787f7e417e8999f967e211d01933ffd362c877949bae26d83b7f24ddef2f11bd\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py\",\"snippet\":\"mode \\\"%(mmap_mode)s\\\" '\\n 'flag will be ignored.' % {'fileobj': f, 'mmap_mode': 'r+'})\\n\\n\\n@with_numpy\\ndef test_file_handle_persistence_in_memory_mmap():\\n obj = np.random.random((10, 10)\",\"snippet_sha256\":\"3d5faddc1c48f4f9d57657d85727285857ddf6bd26f72fc50d68d9be6369e739\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py\",\"snippet\":\"mode option will be '\\n 'ignored.' % {'mmap_mode': 'r+'})\\n\\n\\n@parametrize('data', [b'a little data as bytes.',\\n # More bytes\\n 10000 * \\\"{}\\\".format(\\n random.randint(0, 1000)\",\"snippet_sha256\":\"a38063fa1d44034c0126a467e54f70a21e660057bfc81995d5bf2dd3da06dc9c\"},{\"line\":60,\"path\":\"/usr/lib/python3/dist-packages/numpy/lib/_datasource.py\",\"snippet\":\"\\n \\\"\\\"\\\"\\n if \\\"t\\\" in mode:\\n if \\\"b\\\" in mode:\\n raise ValueError(\\\"Invalid mode: %r\\\" % (mode,))\\n else:\\n if encoding is not None:\\n raise ValueError(\\\"Argument 'encoding' not supported in binary mode\\\")\\n if newline is not None:\",\"snippet_sha256\":\"b615b2f7481d5a11ca3f793098591a6d9f0a168075e709c78e1afbbb459f8bce\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/numpy/lib/_datasource.py\",\"snippet\":\"mode\\\")\\n if newline is not None:\\n raise ValueError(\\\"Argument 'newline' not supported in binary mode\\\")\",\"snippet_sha256\":\"c2fd905ff8b8dd7dd5ddd8a5cbe10d6cc78377d1b6a083ef496b121e1b8025dd\"},{\"line\":133,\"path\":\"/usr/lib/python3/dist-packages/urllib3/util/ssltransport.py\",\"snippet\":\" This is unfortunately a copy and paste of socket.py makefile with small\\n changes to point to the socket directly.\\n \\\"\\\"\\\"\\n if not set(mode) <= {\\\"r\\\", \\\"w\\\", \\\"b\\\"}:\\n raise ValueError(f\\\"invalid mode {mode!r} (only r, w, b allowed)\\\")\\n\\n writing = \\\"w\\\" in mode\\n reading = \\\"r\\\" in mode or not writing\\n assert reading or writing\",\"snippet_sha256\":\"5b95cf8c9b43239217bff19d22be21906a3913bf281ca238ec10ff2f92ae4631\"},{\"line\":55,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"\\n \\\"\\\"\\\"\\n if \\\"t\\\" in mode:\\n if \\\"b\\\" in mode:\\n raise ValueError(\\\"Invalid mode: %r\\\" % (mode,))\\n else:\\n if encoding is not None:\\n raise ValueError(\\\"Argument 'encoding' not supported in binary mode\\\")\\n if errors is not None:\",\"snippet_sha256\":\"d84e0e791af6af27a653c47c6ed06fdee3472705e1fee8ced9f3f2d277b2f86a\"},{\"line\":197,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"\\n \\\"\\\"\\\"\\n\\n if mode and ('t' in mode or 'U' in mode):\\n raise ValueError(\\\"Invalid mode: {!r}\\\".format(mode))\\n if mode and 'b' not in mode:\\n mode += 'b'\\n\\n try:\",\"snippet_sha256\":\"0bea4953969f9c22633a43d4d1f63e7106f44855ae9d191faf52570c4c398a28\"},{\"line\":241,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\" self._buffer_size = _WRITE_BUFFER_SIZE\\n self._buffer = io.BufferedWriter(_WriteBufferStream(self),\\n buffer_size=self._buffer_size)\\n else:\\n raise ValueError(\\\"Invalid mode: {!r}\\\".format(mode))\\n\\n self.fileobj = fileobj\\n\\n if self.mode == WRITE:\",\"snippet_sha256\":\"1d152437f47d79e596c8b946443b4ba34a5d5640862d275eefe388ba3c26fd2e\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode=\\\"rb\\\", compresslevel=_COMPRESS_LEVEL_BEST,\\n encoding=None, errors=None, newline=None):\\n \\\"\\\"\\\"Open a gzip-compressed file in binary or text mode.\\n\\n The filename argument can be an actual filename (a str or bytes object)\",\"snippet_sha256\":\"544418d5b99328e0ab4aaf9c549898a7d925a35159b993609b330617f6557b07\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode argument can be \\\"r\\\", \\\"rb\\\", \\\"w\\\", \\\"wb\\\", \\\"x\\\", \\\"xb\\\", \\\"a\\\" or \\\"ab\\\" for\\n binary mode, or \\\"rt\\\", \\\"wt\\\", \\\"xt\\\" or \\\"at\\\" for text mode. The default mode is\\n \\\"rb\\\", and the default compresslevel is 9.\\n\\n For binary mode, this function is equivalent to the GzipFile constructor:\\n GzipFile(filename, mode, compresslevel)\",\"snippet_sha256\":\"b9ac62374bf3e2b5488bf9e2e94ce6b2d71a7160c14b27e9663aa175d033616c\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode\\\")\\n if errors is not None:\\n raise ValueError(\\\"Argument 'errors' not supported in binary mode\\\")\\n if newline is not None:\\n raise ValueError(\\\"Argument 'newline' not supported in binary mode\\\")\",\"snippet_sha256\":\"babc0d84bca71e099b297240c4acf7600a34e27828e97fceadd5217a4cfa0b3d\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode, compresslevel)\\n elif hasattr(filename, \\\"read\\\") or hasattr(filename, \\\"write\\\"):\\n binary_file = GzipFile(None, gz_mode, compresslevel, filename)\",\"snippet_sha256\":\"ad1ab24f59d90ee68567b28efdc12550ca67becaccda724a35bda14afbb955a8\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode and 'b' not in mode:\\n mode += 'b'\\n\\n try:\\n if fileobj is None:\\n fileobj = self.myfileobj = builtins.open(filename, mode or 'rb')\",\"snippet_sha256\":\"b8c049bfe3ad54c32f6271dd930dd8ddda89b6236090d204aba5ca8c69993b13\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode != READ:\\n raise OSError(\\\"Can't rewind in write mode\\\")\\n self._buffer.seek(0)\",\"snippet_sha256\":\"c70a817166520d6f230d47e9f4c11aa8ed64fbc3a3acf579d05c3e86485f98bb\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode=\\\"rb\\\", fileobj=sys.stdin.buffer)\\n g = sys.stdout.buffer\\n else:\\n if arg[-3:]\",\"snippet_sha256\":\"95153bbc01305c041ae710e99bd0b3bbdfc54271d2fab6a86afddba42fa998bc\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/gzip.py\",\"snippet\":\"mode=\\\"wb\\\", fileobj=sys.stdout.buffer,\\n compresslevel=compresslevel)\\n else:\\n f = builtins.open(arg, \\\"rb\\\")\",\"snippet_sha256\":\"92397a0f0b29dde52921a4533559d77e6db26a07806d369cfa152d35f66cec9e\"},{\"line\":115,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\" self._compressor = LZMACompressor(format=format, check=check,\\n preset=preset, filters=filters)\\n self._pos = 0\\n else:\\n raise ValueError(\\\"Invalid mode: {!r}\\\".format(mode))\\n\\n if isinstance(filename, (str, bytes, os.PathLike)):\\n if \\\"b\\\" not in mode:\\n mode += \\\"b\\\"\",\"snippet_sha256\":\"2ad5d669d6519f539ac9cec7d4d510c542db00e858d0e5dca950029486ea6921\"},{\"line\":307,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"\\n \\\"\\\"\\\"\\n if \\\"t\\\" in mode:\\n if \\\"b\\\" in mode:\\n raise ValueError(\\\"Invalid mode: %r\\\" % (mode,))\\n else:\\n if encoding is not None:\\n raise ValueError(\\\"Argument 'encoding' not supported in binary mode\\\")\\n if errors is not None:\",\"snippet_sha256\":\"d84e0e791af6af27a653c47c6ed06fdee3472705e1fee8ced9f3f2d277b2f86a\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"MODE_FAST\\\", \\\"MODE_NORMAL\\\", \\\"PRESET_DEFAULT\\\", \\\"PRESET_EXTREME\\\",\\n\\n \\\"LZMACompressor\\\", \\\"LZMADecompressor\\\", \\\"LZMAFile\\\", \\\"LZMAError\\\",\\n \\\"open\\\", \\\"compress\\\", \\\"decompress\\\", \\\"is_check_supported\\\",\\n]\\n\\nimport builtins\\nimport io\\nimport os\\nfrom _lzma import *\\nfrom _lzma import _encode_filter_properties, _decode_filter_properties\\nimport _compression\\n\\n\\n# Value 0 no longer used\\n_MODE_READ = 1\\n# Value 2 no longer used\\n_MODE_WRITE = 3\\n\\n\\nclass LZMAFile(_compression.BaseStream)\",\"snippet_sha256\":\"7433e8e10f7a810f6c1bc926e2bc2c981a8b8b6061a5f0671bb0ea63782bee54\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"mode = None\\n\\n if mode in (\\\"r\\\", \\\"rb\\\")\",\"snippet_sha256\":\"4006058611632be94488e0a0b85e1489ae1a02d921622982ae91ef52678f4398\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"mode_code = _MODE_READ\\n elif mode in (\\\"w\\\", \\\"wb\\\", \\\"a\\\", \\\"ab\\\", \\\"x\\\", \\\"xb\\\")\",\"snippet_sha256\":\"38a726527e0715a966b20b74a04c86e6509e89a0dd4a32363e22b36cd248a78c\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"mode(self):\\n return 'wb' if self._mode == _MODE_WRITE else 'rb'\\n\\n def fileno(self):\\n \\\"\\\"\\\"Return the file descriptor for the underlying file.\\\"\\\"\\\"\\n self._check_not_closed()\\n return self._fp.fileno()\\n\\n def seekable(self)\",\"snippet_sha256\":\"cf2ecb6795ddf7d5143fc2d1cae3613098f43900fde109ad51ac63e96669db4a\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"mode == _MODE_READ:\\n return self._buffer.tell()\\n return self._pos\\n\\n\\ndef open(filename, mode=\\\"rb\\\", *,\\n format=None, check=-1, preset=None, filters=None,\\n encoding=None, errors=None, newline=None):\\n \\\"\\\"\\\"Open an LZMA-compressed file in binary or text mode.\\n\\n filename can be either an actual file name (given as a str, bytes,\\n or PathLike object)\",\"snippet_sha256\":\"f32eaf2d693c0506703fb687db48b5f58555643cd768109556c23ddb3e6361c9\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"mode argument can be \\\"r\\\", \\\"rb\\\" (default), \\\"w\\\", \\\"wb\\\", \\\"x\\\", \\\"xb\\\",\\n \\\"a\\\", or \\\"ab\\\" for binary mode, or \\\"rt\\\", \\\"wt\\\", \\\"xt\\\", or \\\"at\\\" for text\\n mode.\\n\\n The format, check, preset and filters arguments specify the\\n compression settings, as for LZMACompressor, LZMADecompressor and\\n LZMAFile.\\n\\n For binary mode, this function is equivalent to the LZMAFile\\n constructor: LZMAFile(filename, mode, ...)\",\"snippet_sha256\":\"23e3d5e1c60278f2bc2e6a559804ad80afdea4e084be91e836a70773d33b6cd6\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/lzma.py\",\"snippet\":\"mode\\\")\\n if errors is not None:\\n raise ValueError(\\\"Argument 'errors' not supported in binary mode\\\")\\n if newline is not None:\\n raise ValueError(\\\"Argument 'newline' not supported in binary mode\\\")\",\"snippet_sha256\":\"babc0d84bca71e099b297240c4acf7600a34e27828e97fceadd5217a4cfa0b3d\"},{\"line\":197,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\" file = os.fspath(file)\\n if not isinstance(file, (str, bytes, int)):\\n raise TypeError(\\\"invalid file: %r\\\" % file)\\n if not isinstance(mode, str):\\n raise TypeError(\\\"invalid mode: %r\\\" % mode)\\n if not isinstance(buffering, int):\\n raise TypeError(\\\"invalid buffering: %r\\\" % buffering)\\n if encoding is not None and not isinstance(encoding, str):\\n raise TypeError(\\\"invalid encoding: %r\\\" % encoding)\",\"snippet_sha256\":\"aefc6f21afe0c9c907cd88fd6520889ed6d1928301979add322a34ae6f77f506\"},{\"line\":206,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\" if errors is not None and not isinstance(errors, str):\\n raise TypeError(\\\"invalid errors: %r\\\" % errors)\\n modes = set(mode)\\n if modes - set(\\\"axrwb+t\\\") or len(mode) > len(modes):\\n raise ValueError(\\\"invalid mode: %r\\\" % mode)\\n creating = \\\"x\\\" in modes\\n reading = \\\"r\\\" in modes\\n writing = \\\"w\\\" in modes\\n appending = \\\"a\\\" in modes\",\"snippet_sha256\":\"d3617fbeb773e5aef9d55baae7e948795a4b0de6c54466c649cc1ef5c0e5e193\"},{\"line\":1516,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\" else:\\n fd = -1\\n\\n if not isinstance(mode, str):\\n raise TypeError('invalid mode: %s' % (mode,))\\n if not set(mode) <= set('xrwab+'):\\n raise ValueError('invalid mode: %s' % (mode,))\\n if sum(c in 'rwax' for c in mode) != 1 or mode.count('+') > 1:\\n raise ValueError('Must have exactly one of create/read/write/append '\",\"snippet_sha256\":\"395d5bf3705616f1dea6922901eb442705c7cf5fd0c67d76ae50e3f282e77873\"},{\"line\":1518,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\"\\n if not isinstance(mode, str):\\n raise TypeError('invalid mode: %s' % (mode,))\\n if not set(mode) <= set('xrwab+'):\\n raise ValueError('invalid mode: %s' % (mode,))\\n if sum(c in 'rwax' for c in mode) != 1 or mode.count('+') > 1:\\n raise ValueError('Must have exactly one of create/read/write/append '\\n 'mode and at most one plus')\\n\",\"snippet_sha256\":\"a7c28d0db09cba4bef285e18f0462dfd977998433d9b5b7537739085a475801b\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\"mode:\\n encoding = \\\"utf-8\\\"\\n else:\\n encoding = \\\"locale\\\"\\n if sys.flags.warn_default_encoding:\\n import warnings\\n warnings.warn(\\\"'encoding' argument not specified.\\\",\\n EncodingWarning, stacklevel + 1)\",\"snippet_sha256\":\"426ab5aabe1cef6fa29477cea3abf525c2cf2cff8c674dc9ff2f88a88ec41b9b\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\"mode. The default encoding is\\n platform dependent, but any encoding supported by Python can be\\n passed. See the codecs module for the list of supported encodings.\\n\\n errors is an optional string that specifies how encoding errors are to\\n be handled---this argument should not be used in binary mode. Pass\\n 'strict' to raise a ValueError exception if there is an encoding error\\n (the default of None has the same effect)\",\"snippet_sha256\":\"0088cc38f5419732582b689e476145e1654d7d0ad7038b2adb3bd47170e39301\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\"mode, and\\n through which the standard file operations such as reading and writing\\n are performed. When open() is used to open a file in a text mode ('w',\\n 'r', 'wt', 'rt', etc.)\",\"snippet_sha256\":\"a590cb01b6e0211f8c87978e09ce6b0121d02f42a326dba415deba7f42680a44\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\"modes = set(mode)\\n if modes - set(\\\"axrwb+t\\\") or len(mode) > len(modes):\\n raise ValueError(\\\"invalid mode: %r\\\" % mode)\\n creating = \\\"x\\\" in modes\\n reading = \\\"r\\\" in modes\\n writing = \\\"w\\\" in modes\\n appending = \\\"a\\\" in modes\\n updating = \\\"+\\\" in modes\\n text = \\\"t\\\" in modes\\n binary = \\\"b\\\" in modes\\n if text and binary:\\n raise ValueError(\\\"can't have text and binary mode at once\\\")\",\"snippet_sha256\":\"1323f1b2e020ad19b9fff7c73b71e0280d771ffd34cf5b1ae17432c81eab4c2f\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\"mode ``'rb'``. This function\\n should be used when the intent is to treat the contents as\\n executable code.\\n\\n ``path`` should be an absolute path.\\n\\n When supported by the runtime, this function can be hooked\\n in order to allow embedders more control over code files.\\n This functionality is not supported on the current runtime.\\n \\\"\\\"\\\"\\n import warnings\\n warnings.warn(\\\"_pyio.open_code()\",\"snippet_sha256\":\"881fa03dbdb5c050c75e78f43246643236829179361d67fdd92603661b1885d1\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/_pyio.py\",\"snippet\":\"mode. It wraps\\n another incremental decoder, translating \\\\r\\\\n and \\\\r into \\\\n. It also\\n records the types of newlines encountered. When used with\\n translate=False, it ensures that the newline sequence is returned in\\n one piece.\\n \\\"\\\"\\\"\\n def __init__(self, decoder, translate, errors='strict')\",\"snippet_sha256\":\"75c16c8d25859296d1dc265fbd27856666ce5467fcbb63c026dd18c254505523\"},{\"line\":1020,\"path\":\"/usr/lib/python3.13/os.py\",\"snippet\":\" def popen(cmd, mode=\\\"r\\\", buffering=-1):\\n if not isinstance(cmd, str):\\n raise TypeError(\\\"invalid cmd type (%s, expected string)\\\" % type(cmd))\\n if mode not in (\\\"r\\\", \\\"w\\\"):\\n raise ValueError(\\\"invalid mode %r\\\" % mode)\\n if buffering == 0 or buffering is None:\\n raise ValueError(\\\"popen() does not support unbuffered streams\\\")\\n import subprocess\\n if mode == \\\"r\\\":\",\"snippet_sha256\":\"1088a8909cb90ba4f63535f7ad4cfa8e2cb054c4f995abc15c6645258d1ae661\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/os.py\",\"snippet\":\"mode, file, args, env, execvpe)\\n\\n\\n __all__.extend([\\\"spawnv\\\", \\\"spawnve\\\", \\\"spawnvp\\\", \\\"spawnvpe\\\"])\\n\\n\\nif _exists(\\\"spawnv\\\"):\\n # These aren't supplied by the basic Windows code\\n # but can be easily implemented in Python\\n\\n def spawnl(mode, file, *args)\",\"snippet_sha256\":\"67f41eb3649e5832c937dec6623195ca0438c242679dcca9195d8093bdc86141\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/os.py\",\"snippet\":\"mode, file, args[:-1], env)\\n\\n\\n __all__.extend([\\\"spawnl\\\", \\\"spawnle\\\"])\\n\\n\\nif _exists(\\\"spawnvp\\\"):\\n # At the moment, Windows doesn't implement spawnvp[e]\",\"snippet_sha256\":\"8a642e450e56aa2919444827aecfeddcebedfec1563868dac46a0aab6a212192\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/os.py\",\"snippet\":\"mode, file, args[:-1], env)\\n\\n\\n __all__.extend([\\\"spawnlp\\\", \\\"spawnlpe\\\"])\\n\\n# VxWorks has no user space shell provided. As a result, running\\n# command in a shell can't be supported.\\nif sys.platform != 'vxworks':\\n # Supply os.popen()\\n def popen(cmd, mode=\\\"r\\\", buffering=-1)\",\"snippet_sha256\":\"2033895c3c390ce67453343c5fff4a9b09d7010003de83d74697c81958268207\"},{\"line\":78,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\" mode = \\\"ab\\\"\\n mode_code = _MODE_WRITE\\n self._compressor = BZ2Compressor(compresslevel)\\n else:\\n raise ValueError(\\\"Invalid mode: %r\\\" % (mode,))\\n\\n if isinstance(filename, (str, bytes, os.PathLike)):\\n self._fp = _builtin_open(filename, mode)\\n self._closefp = True\",\"snippet_sha256\":\"97ef89f2759b61822cc7143eaa68229446baf8adbe581eccc1c22e3ef6ef5993\"},{\"line\":302,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"\\n \\\"\\\"\\\"\\n if \\\"t\\\" in mode:\\n if \\\"b\\\" in mode:\\n raise ValueError(\\\"Invalid mode: %r\\\" % (mode,))\\n else:\\n if encoding is not None:\\n raise ValueError(\\\"Argument 'encoding' not supported in binary mode\\\")\\n if errors is not None:\",\"snippet_sha256\":\"d84e0e791af6af27a653c47c6ed06fdee3472705e1fee8ced9f3f2d277b2f86a\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode in (\\\"\\\", \\\"r\\\", \\\"rb\\\")\",\"snippet_sha256\":\"1a3d5955d8f557681a7d89176509de24b13c33fc91e6610cc31f5e8d88703dfa\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode = \\\"rb\\\"\\n mode_code = _MODE_READ\\n elif mode in (\\\"w\\\", \\\"wb\\\")\",\"snippet_sha256\":\"f299436013f799f6878732c61353b4f2323a53c8f84d202a233604fbe7d697eb\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode = \\\"wb\\\"\\n mode_code = _MODE_WRITE\\n self._compressor = BZ2Compressor(compresslevel)\\n elif mode in (\\\"x\\\", \\\"xb\\\")\",\"snippet_sha256\":\"7ac00832247ea0c6353fe98e63eb487c0da407322cb63f790b19608754550615\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode = \\\"xb\\\"\\n mode_code = _MODE_WRITE\\n self._compressor = BZ2Compressor(compresslevel)\\n elif mode in (\\\"a\\\", \\\"ab\\\")\",\"snippet_sha256\":\"6d2cda121f12c67983790195fa75f2c8ddc5314af8b63ef9b8d918ad3a39e80e\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode = \\\"ab\\\"\\n mode_code = _MODE_WRITE\\n self._compressor = BZ2Compressor(compresslevel)\\n else:\\n raise ValueError(\\\"Invalid mode: %r\\\" % (mode,)\",\"snippet_sha256\":\"0bbc3b3f19616231094c5591be7c8638416b6a85d8ae0b3b5ae52afa6574d1fd\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode(self):\\n return 'wb' if self._mode == _MODE_WRITE else 'rb'\\n\\n def fileno(self):\\n \\\"\\\"\\\"Return the file descriptor for the underlying file.\\\"\\\"\\\"\\n self._check_not_closed()\\n return self._fp.fileno()\\n\\n def seekable(self)\",\"snippet_sha256\":\"cf2ecb6795ddf7d5143fc2d1cae3613098f43900fde109ad51ac63e96669db4a\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode == _MODE_READ:\\n return self._buffer.tell()\\n return self._pos\\n\\n\\ndef open(filename, mode=\\\"rb\\\", compresslevel=9,\\n encoding=None, errors=None, newline=None):\\n \\\"\\\"\\\"Open a bzip2-compressed file in binary or text mode.\\n\\n The filename argument can be an actual filename (a str, bytes, or\\n PathLike object)\",\"snippet_sha256\":\"8dacf6d760468d066f2ba57941d783af74542dd70da3db6aea3a766b2381fd0b\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode argument can be \\\"r\\\", \\\"rb\\\", \\\"w\\\", \\\"wb\\\", \\\"x\\\", \\\"xb\\\", \\\"a\\\" or\\n \\\"ab\\\" for binary mode, or \\\"rt\\\", \\\"wt\\\", \\\"xt\\\" or \\\"at\\\" for text mode.\\n The default mode is \\\"rb\\\", and the default compresslevel is 9.\\n\\n For binary mode, this function is equivalent to the BZ2File\\n constructor: BZ2File(filename, mode, compresslevel)\",\"snippet_sha256\":\"63c57ccf065d653b0f5bc4dd3b783a320226511864f76f8bc651b931c608bf48\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/bz2.py\",\"snippet\":\"mode\\\")\\n if errors is not None:\\n raise ValueError(\\\"Argument 'errors' not supported in binary mode\\\")\\n if newline is not None:\\n raise ValueError(\\\"Argument 'newline' not supported in binary mode\\\")\",\"snippet_sha256\":\"babc0d84bca71e099b297240c4acf7600a34e27828e97fceadd5217a4cfa0b3d\"},{\"line\":314,\"path\":\"/usr/lib/python3.13/socket.py\",\"snippet\":\" those.\\n \\\"\\\"\\\"\\n # XXX refactor to share code?\\n if not set(mode) <= {\\\"r\\\", \\\"w\\\", \\\"b\\\"}:\\n raise ValueError(\\\"invalid mode %r (only r, w, b allowed)\\\" % (mode,))\\n writing = \\\"w\\\" in mode\\n reading = \\\"r\\\" in mode or not writing\\n assert reading or writing\\n binary = \\\"b\\\" in mode\",\"snippet_sha256\":\"f2e244fbbab55ac4f62cfe753cba3e5bb119168c70c1510e92321bac2f686e8d\"},{\"line\":696,\"path\":\"/usr/lib/python3.13/socket.py\",\"snippet\":\" # XXX More docs\\n\\n def __init__(self, sock, mode):\\n if mode not in (\\\"r\\\", \\\"w\\\", \\\"rw\\\", \\\"rb\\\", \\\"wb\\\", \\\"rwb\\\"):\\n raise ValueError(\\\"invalid mode: %r\\\" % mode)\\n io.RawIOBase.__init__(self)\\n self._sock = sock\\n if \\\"b\\\" not in mode:\\n mode += \\\"b\\\"\",\"snippet_sha256\":\"da4ec7a671e6780f37c659016e048d3233610c355761483d8d2a24ef49cd75ce\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/socket.py\",\"snippet\":\"mode):\\n if mode not in (\\\"r\\\", \\\"w\\\", \\\"rw\\\", \\\"rb\\\", \\\"wb\\\", \\\"rwb\\\")\",\"snippet_sha256\":\"d71aca4244bbdcf869445b4e1d28463c2de3d2a642d0a2ab2531f032fc92c7c4\"},{\"line\":37,\"path\":\"/usr/lib/python3.13/importlib/resources/_adapters.py\",\"snippet\":\" if mode == 'r':\\n return TextIOWrapper(file, *args, **kwargs)\\n elif mode == 'rb':\\n return file\\n raise ValueError(f\\\"Invalid mode value '{mode}', only 'r' and 'rb' are supported\\\")\\n\\n\\nclass CompatibilityFiles:\\n \\\"\\\"\\\"\",\"snippet_sha256\":\"4c2178a588be6f0cf22d26ae5bf65e12cf84897eb0992c6a250a3a6569633454\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/importlib/resources/_adapters.py\",\"snippet\":\"mode='r', *args, **kwargs):\\n if mode == 'r':\\n return TextIOWrapper(file, *args, **kwargs)\\n elif mode == 'rb':\\n return file\\n raise ValueError(f\\\"Invalid mode value '{mode}\",\"snippet_sha256\":\"eebdd5ddbc6441c8b37815480a47db144c31218dcb46cf54203104e4c6313a98\"},{\"line\":null,\"path\":\"/usr/lib/python3.13/importlib/resources/_adapters.py\",\"snippet\":\"mode='r', *args, **kwargs):\\n raise FileNotFoundError(\\\"Can't open orphan path\\\")\\n\\n def __init__(self, spec)\",\"snippet_sha256\":\"f0104b36c28d13f2d904f6d6032815642e4753599b0f9f752af9c63e0bf2a311\"},{\"line\":37,\"path\":\"/usr/lib/python3/dist-packages/importlib_resources/_adapters.py\",\"snippet\":\" if mode == 'r':\\n return TextIOWrapper(file, *args, **kwargs)\\n elif mode == 'rb':\\n return file\\n raise ValueError(f\\\"Invalid mode value '{mode}', only 'r' and 'rb' are supported\\\")\\n\\n\\nclass CompatibilityFiles:\\n \\\"\\\"\\\"\",\"snippet_sha256\":\"4c2178a588be6f0cf22d26ae5bf65e12cf84897eb0992c6a250a3a6569633454\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/importlib_resources/_adapters.py\",\"snippet\":\"mode='r', *args, **kwargs):\\n if mode == 'r':\\n return TextIOWrapper(file, *args, **kwargs)\\n elif mode == 'rb':\\n return file\\n raise ValueError(f\\\"Invalid mode value '{mode}\",\"snippet_sha256\":\"eebdd5ddbc6441c8b37815480a47db144c31218dcb46cf54203104e4c6313a98\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/importlib_resources/_adapters.py\",\"snippet\":\"mode='r', *args, **kwargs):\\n raise FileNotFoundError(\\\"Can't open orphan path\\\")\\n\\n def __init__(self, spec)\",\"snippet_sha256\":\"f0104b36c28d13f2d904f6d6032815642e4753599b0f9f752af9c63e0bf2a311\"},{\"line\":284,\"path\":\"/usr/lib/python3/dist-packages/joblib/compressor.py\",\"snippet\":\" self._compressor = zlib.compressobj(self.compresslevel,\\n zlib.DEFLATED, self.wbits,\\n zlib.DEF_MEM_LEVEL, 0)\\n else:\\n raise ValueError(\\\"Invalid mode: %r\\\" % (mode,))\\n\\n if isinstance(filename, str):\\n self._fp = io.open(filename, mode)\\n self._closefp = True\",\"snippet_sha256\":\"b83feaa15018841fe212750c85059ddb30368e74d70ca398fd27e5acd8ea2a8b\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/joblib/compressor.py\",\"snippet\":\"mode can be 'rb' for reading (default)\",\"snippet_sha256\":\"aae85679c492bb6beefcf7a8d5d6d3d74700d6b8804c5b4807079487ac99706a\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/joblib/compressor.py\",\"snippet\":\"mode is 'wb', compresslevel can be a number between 1\\n and 9 specifying the level of compression: 1 produces the least\\n compression, and 9 produces the most compression. 3 is the default.\\n \\\"\\\"\\\"\\n\\n wbits = zlib.MAX_WBITS\\n\\n def __init__(self, filename, mode=\\\"rb\\\", compresslevel=3)\",\"snippet_sha256\":\"003809d184c47f7f437a08cce3ecbae33dbdbff67965247170f31ec4cede9af3\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/joblib/compressor.py\",\"snippet\":\"mode can be 'rb' for reading (default)\",\"snippet_sha256\":\"aae85679c492bb6beefcf7a8d5d6d3d74700d6b8804c5b4807079487ac99706a\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/joblib/compressor.py\",\"snippet\":\"mode is 'wb', compresslevel can be a number between 1\\n and 9 specifying the level of compression: 1 produces the least\\n compression, and 9 produces the most compression. 3 is the default.\\n \\\"\\\"\\\"\\n\\n wbits = 31 # zlib compressor/decompressor wbits value for gzip format.\\n\\n\\nclass GzipCompressorWrapper(CompressorWrapper)\",\"snippet_sha256\":\"118d491264bce123e46439bc5141f8121cd22b84c14bf85738a4ef5729cbf049\"},{\"line\":843,\"path\":\"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py\",\"snippet\":\"def test_binary_zlibfile_invalid_modes(tmpdir, bad_mode):\\n filename = tmpdir.join('test.pkl').strpath\\n with raises(ValueError) as excinfo:\\n BinaryZlibFile(filename, bad_mode)\\n excinfo.match(\\\"Invalid mode\\\")\\n\\n\\n@parametrize('bad_file', [1, (), {}])\\ndef test_binary_zlibfile_invalid_filename_type(bad_file):\",\"snippet_sha256\":\"16f572d0c67740d65c68a488e846c36a11c27ad741e696f3a2a9898a2f5250a9\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py\",\"snippet\":\"mode \\\"r+\\\" is not compatible with compressed '\\n f'file {this_filename}. \\\"r+\\\" flag will be ignored.'\\n )\\n\\n\\n@with_numpy\\n@parametrize('cache_size', [None, 0, 10])\\ndef test_cache_size_warning(tmpdir, cache_size)\",\"snippet_sha256\":\"787f7e417e8999f967e211d01933ffd362c877949bae26d83b7f24ddef2f11bd\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py\",\"snippet\":\"mode \\\"%(mmap_mode)s\\\" '\\n 'flag will be ignored.' % {'fileobj': f, 'mmap_mode': 'r+'})\\n\\n\\n@with_numpy\\ndef test_file_handle_persistence_in_memory_mmap():\\n obj = np.random.random((10, 10)\",\"snippet_sha256\":\"3d5faddc1c48f4f9d57657d85727285857ddf6bd26f72fc50d68d9be6369e739\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py\",\"snippet\":\"mode option will be '\\n 'ignored.' % {'mmap_mode': 'r+'})\\n\\n\\n@parametrize('data', [b'a little data as bytes.',\\n # More bytes\\n 10000 * \\\"{}\\\".format(\\n random.randint(0, 1000)\",\"snippet_sha256\":\"a38063fa1d44034c0126a467e54f70a21e660057bfc81995d5bf2dd3da06dc9c\"},{\"line\":60,\"path\":\"/usr/lib/python3/dist-packages/numpy/lib/_datasource.py\",\"snippet\":\"\\n \\\"\\\"\\\"\\n if \\\"t\\\" in mode:\\n if \\\"b\\\" in mode:\\n raise ValueError(\\\"Invalid mode: %r\\\" % (mode,))\\n else:\\n if encoding is not None:\\n raise ValueError(\\\"Argument 'encoding' not supported in binary mode\\\")\\n if newline is not None:\",\"snippet_sha256\":\"b615b2f7481d5a11ca3f793098591a6d9f0a168075e709c78e1afbbb459f8bce\"},{\"line\":null,\"path\":\"/usr/lib/python3/dist-packages/numpy/lib/_datasource.py\",\"snippet\":\"mode\\\")\\n if newline is not None:\\n raise ValueError(\\\"Argument 'newline' not supported in binary mode\\\")\",\"snippet_sha256\":\"c2fd905ff8b8dd7dd5ddd8a5cbe10d6cc78377d1b6a083ef496b121e1b8025dd\"},{\"line\":133,\"path\":\"/usr/lib/python3/dist-packages/urllib3/util/ssltransport.py\",\"snippet\":\" This is unfortunately a copy and paste of socket.py makefile with small\\n changes to point to the socket directly.\\n \\\"\\\"\\\"\\n if not set(mode) <= {\\\"r\\\", \\\"w\\\", \\\"b\\\"}:\\n raise ValueError(f\\\"invalid mode {mode!r} (only r, w, b allowed)\\\")\\n\\n writing = \\\"w\\\" in mode\\n reading = \\\"r\\\" in mode or not writing\\n assert reading or writing\",\"snippet_sha256\":\"5b95cf8c9b43239217bff19d22be21906a3913bf281ca238ec10ff2f92ae4631\"}]},\"gitea_changed\":false,\"mode_evidence_found\":true,\"mutation_outcome\":\"NO_MUTATION\",\"private_addresses_included\":false,\"process_ancestry\":[{\"cmdline\":{\"argc\":3,\"argv_basenames\":[\"python3\",\"-B\",\"probe_adapter_mode.py\"],\"cmdline_sha256\":\"8fede899b744730572dda2f805483c43d019f1cf4cce1d070f6dc70140112931\"},\"cwd\":\"/\",\"exe\":\"/usr/bin/python3.13\",\"pid_relation\":0},{\"cmdline\":{\"argc\":7,\"argv_basenames\":[\"timeout\",\"--foreground\",\"--preserve-status\",\"300\",\"python3\",\"-B\",\"probe_adapter_mode.py\"],\"cmdline_sha256\":\"6848db4d8a3fa589d0fa4df84013fd90e59548cb18de2d937ad966cc8f849cf6\"},\"cwd\":\"/\",\"exe\":\"/usr/bin/timeout\",\"pid_relation\":1},{\"cmdline\":{\"argc\":9,\"argv_basenames\":[\"bash\",\"homelab-chat-run\",\"HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R4-MODE-SCHEMA-READ-ONLY-20260806T034000Z\",\"verify\",\"homelab-kb-v2-r3-rollback-artifacts-r4-mode-schema-read-only\",\"--\",\"python3\",\"-B\",\"probe_adapter_mode.py\"],\"cmdline_sha256\":\"1ddc9e0e4b3d8a7402f5a9ce2aff17220c36122a7840cad3ffad52f28c8ea6ec\"},\"cwd\":\"/\",\"exe\":\"/usr/bin/bash\",\"pid_relation\":2},{\"cmdline\":{\"argc\":5,\"argv_basenames\":[\"python3\",\"-B\",\"homelab-command-adapter\",\"--worker\",\"FKLAQD62AI\"],\"cmdline_sha256\":\"1f27f7c4adcf322d93b9170e88bb743792d2c3a5ff0d0d0dcc438b4247ed951f\"},\"cwd\":\"/\",\"exe\":\"/usr/bin/python3.13\",\"pid_relation\":3},{\"cmdline\":{\"argc\":4,\"argv_basenames\":[\"python3\",\"-B\",\"homelab-command-adapter\",\"--serve\"],\"cmdline_sha256\":\"9d9189a1b62d8fb7a5f5713828ef28ef010f0f8109f9b3174f0ffbbc8b0f62a5\"},\"cwd\":\"/\",\"exe\":\"/usr/bin/python3.13\",\"pid_relation\":4},{\"cmdline\":{\"argc\":1,\"argv_basenames\":[\"init\"],\"cmdline_sha256\":\"6628c1ade33319fc12730a87856ccdb1e4eaed9a0aa2b0bce0535a97a232f272\"},\"cwd\":\"/\",\"exe\":\"/usr/lib/systemd/systemd\",\"pid_relation\":5}],\"production_changed\":false,\"purpose\":\"READ_ONLY_DISCOVER_ADAPTER_MODE_ENUM\",\"rollback_restored\":null,\"rollback_started\":false,\"sanitized\":true,\"schema\":2,\"searched_roots\":[\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload\",\"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e\",\"/usr/bin\",\"/usr\",\"/usr/lib/systemd\",\"/usr/lib\"],\"secrets_included\":false,\"services_changed\":false,\"status\":\"AUDIT_COMPLETE\"}\n" + "output": "HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"adapter_process_count\":2,\"adapter_processes\":[{\"argv_prefix\":[\"/usr/bin/python3\",\"-B\",\"/usr/local/sbin/homelab-command-adapter\",\"--worker\"],\"candidates\":[{\"basis\":\"process_root_absolute\",\"bytes\":86019,\"mode\":\"0o755\",\"path\":\"/proc/1487725/root/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"},{\"basis\":\"host_absolute\",\"bytes\":86019,\"mode\":\"0o755\",\"path\":\"/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"}],\"cmdline_sha256\":\"d889200aac33977ddb86bfaf646bc52b74137899de0d4d3f17c98c702a8964ed\",\"cwd\":\"/\",\"exe\":\"/usr/bin/python3.13\",\"pid_relation\":3,\"script_arg\":\"/usr/local/sbin/homelab-command-adapter\"},{\"argv_prefix\":[\"/usr/bin/python3\",\"-B\",\"/usr/local/sbin/homelab-command-adapter\",\"--serve\"],\"candidates\":[{\"basis\":\"process_root_absolute\",\"bytes\":86019,\"mode\":\"0o755\",\"path\":\"/proc/1131444/root/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"},{\"basis\":\"host_absolute\",\"bytes\":86019,\"mode\":\"0o755\",\"path\":\"/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"}],\"cmdline_sha256\":\"9d9189a1b62d8fb7a5f5713828ef28ef010f0f8109f9b3174f0ffbbc8b0f62a5\",\"cwd\":\"/\",\"exe\":\"/usr/bin/python3.13\",\"pid_relation\":4,\"script_arg\":\"/usr/local/sbin/homelab-command-adapter\"}],\"backup_changed\":false,\"changes_made\":false,\"command_id\":\"HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z\",\"discovery_status\":\"EXACT_ADAPTER_SOURCE_AND_MODE_ENUM_FOUND\",\"exact_mode_values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"],\"gitea_changed\":false,\"mutation_outcome\":\"NO_MUTATION\",\"private_addresses_included\":false,\"production_changed\":false,\"purpose\":\"READ_ONLY_RESOLVE_EXACT_ADAPTER_SOURCE_AND_MODE_ENUM\",\"rollback_restored\":null,\"rollback_started\":false,\"sanitized\":true,\"schema\":2,\"secrets_included\":false,\"services_changed\":false,\"source_results\":[{\"basis\":\"process_root_absolute\",\"bytes\":86019,\"evidence\":{\"component_string_literal_found\":false,\"exact_mode_values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"],\"invalid_mode_literal_found\":true,\"snippets\":[{\"basis\":\"mode_assignment\",\"snippet\":\"ALLOWED_MODES = {\\n \\\"read-only\\\",\\n \\\"verify\\\",\\n \\\"change\\\",\\n \\\"transport-test\\\",\\n}\",\"snippet_sha256\":\"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702\",\"values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"]},{\"basis\":\"validator_error_context\",\"line\":371,\"snippet\":\" document.get(\\\"summary\\\"),\\n \\\"summary\\\",\\n minimum=1,\\n maximum=2000,\\n )\\n\\n mode = document.get(\\\"mode\\\")\\n if mode not in ALLOWED_MODES:\\n raise AdapterError(\\\"invalid mode\\\")\\n if document.get(\\\"target\\\") != \\\"pve01\\\":\\n raise AdapterError(\\\"only pve01 target is supported\\\")\\n\\n timeout_seconds = document.get(\\\"timeout_seconds\\\")\\n if (\\n not isinstance(timeout_seconds, int)\\n or isinstance(timeout_seconds, bool)\\n or not 1 <= timeout_seconds <= 7200\",\"snippet_sha256\":\"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c\"}]},\"identity_basis\":\"process_argv_script\",\"mode\":\"0o755\",\"path\":\"/proc/1487725/root/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"},{\"basis\":\"host_absolute\",\"bytes\":86019,\"evidence\":{\"component_string_literal_found\":false,\"exact_mode_values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"],\"invalid_mode_literal_found\":true,\"snippets\":[{\"basis\":\"mode_assignment\",\"snippet\":\"ALLOWED_MODES = {\\n \\\"read-only\\\",\\n \\\"verify\\\",\\n \\\"change\\\",\\n \\\"transport-test\\\",\\n}\",\"snippet_sha256\":\"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702\",\"values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"]},{\"basis\":\"validator_error_context\",\"line\":371,\"snippet\":\" document.get(\\\"summary\\\"),\\n \\\"summary\\\",\\n minimum=1,\\n maximum=2000,\\n )\\n\\n mode = document.get(\\\"mode\\\")\\n if mode not in ALLOWED_MODES:\\n raise AdapterError(\\\"invalid mode\\\")\\n if document.get(\\\"target\\\") != \\\"pve01\\\":\\n raise AdapterError(\\\"only pve01 target is supported\\\")\\n\\n timeout_seconds = document.get(\\\"timeout_seconds\\\")\\n if (\\n not isinstance(timeout_seconds, int)\\n or isinstance(timeout_seconds, bool)\\n or not 1 <= timeout_seconds <= 7200\",\"snippet_sha256\":\"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c\"}]},\"identity_basis\":\"process_argv_script\",\"mode\":\"0o755\",\"path\":\"/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"},{\"basis\":\"process_root_absolute\",\"bytes\":86019,\"evidence\":{\"component_string_literal_found\":false,\"exact_mode_values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"],\"invalid_mode_literal_found\":true,\"snippets\":[{\"basis\":\"mode_assignment\",\"snippet\":\"ALLOWED_MODES = {\\n \\\"read-only\\\",\\n \\\"verify\\\",\\n \\\"change\\\",\\n \\\"transport-test\\\",\\n}\",\"snippet_sha256\":\"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702\",\"values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"]},{\"basis\":\"validator_error_context\",\"line\":371,\"snippet\":\" document.get(\\\"summary\\\"),\\n \\\"summary\\\",\\n minimum=1,\\n maximum=2000,\\n )\\n\\n mode = document.get(\\\"mode\\\")\\n if mode not in ALLOWED_MODES:\\n raise AdapterError(\\\"invalid mode\\\")\\n if document.get(\\\"target\\\") != \\\"pve01\\\":\\n raise AdapterError(\\\"only pve01 target is supported\\\")\\n\\n timeout_seconds = document.get(\\\"timeout_seconds\\\")\\n if (\\n not isinstance(timeout_seconds, int)\\n or isinstance(timeout_seconds, bool)\\n or not 1 <= timeout_seconds <= 7200\",\"snippet_sha256\":\"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c\"}]},\"identity_basis\":\"process_argv_script\",\"mode\":\"0o755\",\"path\":\"/proc/1131444/root/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"},{\"basis\":\"host_absolute\",\"bytes\":86019,\"evidence\":{\"component_string_literal_found\":false,\"exact_mode_values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"],\"invalid_mode_literal_found\":true,\"snippets\":[{\"basis\":\"mode_assignment\",\"snippet\":\"ALLOWED_MODES = {\\n \\\"read-only\\\",\\n \\\"verify\\\",\\n \\\"change\\\",\\n \\\"transport-test\\\",\\n}\",\"snippet_sha256\":\"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702\",\"values\":[\"change\",\"read-only\",\"transport-test\",\"verify\"]},{\"basis\":\"validator_error_context\",\"line\":371,\"snippet\":\" document.get(\\\"summary\\\"),\\n \\\"summary\\\",\\n minimum=1,\\n maximum=2000,\\n )\\n\\n mode = document.get(\\\"mode\\\")\\n if mode not in ALLOWED_MODES:\\n raise AdapterError(\\\"invalid mode\\\")\\n if document.get(\\\"target\\\") != \\\"pve01\\\":\\n raise AdapterError(\\\"only pve01 target is supported\\\")\\n\\n timeout_seconds = document.get(\\\"timeout_seconds\\\")\\n if (\\n not isinstance(timeout_seconds, int)\\n or isinstance(timeout_seconds, bool)\\n or not 1 <= timeout_seconds <= 7200\",\"snippet_sha256\":\"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c\"}]},\"identity_basis\":\"process_argv_script\",\"mode\":\"0o755\",\"path\":\"/usr/local/sbin/homelab-command-adapter\",\"regular_file\":true,\"sha256\":\"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d\"}],\"status\":\"AUDIT_COMPLETE\"}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 1fc757b..c46bfa6 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,15 +1,15 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R4-MODE-SCHEMA-READ-ONLY-20260806T034000Z +COMMAND_ID=HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z STATUS=OK RC=0 HOST=pve01 MODE=verify -COMPONENT=homelab-kb-v2-r3-rollback-artifacts-r4-mode-schema-read-only +COMPONENT=homelab-kb-v2-r3-rollback-artifacts-r5-adapter-source-read-only REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 -COMMAND_SHA256=4542ead22cf5a855ce314300f0489c3fd9481daf98b3771fbddaaf1e601efa87 +COMMAND_SHA256=e9be2bfb64487a47128723e0db096ed14e33b4f5c33df81dc2afb584f812aa7d 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=dd472cfd260f99757efced65a4015ae206b72b50cbd07ab402f4aeefc0572bdb -SANITIZED_OUTPUT_SHA256=dd472cfd260f99757efced65a4015ae206b72b50cbd07ab402f4aeefc0572bdb +RAW_EVIDENCE_SHA256=aece25617c5e5cd1a9ba9d4d8b045cd63234249ee327520354cd80f17f1c2756 +SANITIZED_OUTPUT_SHA256=aece25617c5e5cd1a9ba9d4d8b045cd63234249ee327520354cd80f17f1c2756 OUTPUT_BEGIN -HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R4-MODE-SCHEMA-READ-ONLY-20260806T034000Z","rollback_restored":null,"rollback_started":false,"status":"OK","version":1} -{"backup_changed":false,"changes_made":false,"command_id":"HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R4-MODE-SCHEMA-READ-ONLY-20260806T034000Z","evidence":{"explicit_mode_values":["Can","LZMACompressor","LZMADecompressor","LZMAError","LZMAFile","MODE_NORMAL","PRESET_DEFAULT","PRESET_EXTREME","ab","at","cache_size","can","compress","data","decompress","encoding","errors","execute","fileobj","homelab-command-capsule","is_check_supported","line","locale","mmap_mode","newline","open","path","process_ancestry","rb","read","rt","rw","rwb","searched_roots","snippet","snippet_sha256","spawnl","spawnle","spawnlp","spawnlpe","spawnv","spawnve","spawnvp","spawnvpe","strict","utf-8","verify","vxworks","wb","write","wt","xb","xt"],"files_examined":8075,"limits":{"max_file_bytes":2097152,"max_files":12000,"max_match_files":80,"max_snippets":160},"matched_files":[{"bytes":93693,"path":"/usr/lib/python3.13/_pyio.py","sha256":"fe5f1eebe5d06333f03440392bb1851a6e7cfa3c7e074a3a65a3bf7c4fe5f4ba"},{"bytes":11969,"path":"/usr/lib/python3.13/bz2.py","sha256":"b217459e4c74ccb3da3a44b51dd335cfddcbe9d3014b3279dda1c1a7ca448c08"},{"bytes":24633,"path":"/usr/lib/python3.13/gzip.py","sha256":"dba33ac2497af37712ea23f5c3ce3ed56177262886868cbc6a6d43632c79afe9"},{"bytes":4482,"path":"/usr/lib/python3.13/importlib/resources/_adapters.py","sha256":"be9ac919b51e1db6a35fa5c2b8c3fa27794caea0a2f8ffcc4e5ce225447b8df9"},{"bytes":13399,"path":"/usr/lib/python3.13/lzma.py","sha256":"6a923ba49b33897152a9398d2a39d08670238290c90c050b8f4d838046339db5"},{"bytes":41635,"path":"/usr/lib/python3.13/os.py","sha256":"b6b68783d438ff044c096fd0c3d1dfc9479a9b632e0a450a376be6c01655aafe"},{"bytes":37759,"path":"/usr/lib/python3.13/socket.py","sha256":"6d5e10b5bcd75b7a6a883a1819e3b47dda3f00621e8e7db365b96782fcf59ac3"},{"bytes":4482,"path":"/usr/lib/python3/dist-packages/importlib_resources/_adapters.py","sha256":"be9ac919b51e1db6a35fa5c2b8c3fa27794caea0a2f8ffcc4e5ce225447b8df9"},{"bytes":19768,"path":"/usr/lib/python3/dist-packages/joblib/compressor.py","sha256":"5b0473b1085d429d256d0bef11b01c69ebc2382336fd0caffc72783d51eda1b4"},{"bytes":42485,"path":"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py","sha256":"eab44cbe3fbd760055b9c3cb63b274a81208718d97392406875a30a8e88622b8"},{"bytes":22729,"path":"/usr/lib/python3/dist-packages/numpy/lib/_datasource.py","sha256":"149ee4d4782144453bb9d87c66e3b96591779c725f3a48fb8968a3868545a884"},{"bytes":8847,"path":"/usr/lib/python3/dist-packages/urllib3/util/ssltransport.py","sha256":"133e0ef2947fbd3f1d6a7fc5bea0584ba7600df05710c7d57ebcdc754a167e2e"},{"bytes":10005,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","sha256":"40cf79898c94a8134fc5d07226664df39f9d682a19cf3ff125aa4e1e23473483"}],"search_errors":[],"snippets":[{"line":26,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":" \".py\", \".ps1\", \".psm1\", \".js\", \".mjs\", \".cjs\", \".ts\", \".tsx\",\n \".json\", \".yaml\", \".yml\", \".toml\", \".go\", \".rs\", \".sh\", \".service\",\n}\nNEEDLES = (\n \"invalid mode\",\n \"component must be string\",\n \"homelab-command-capsule\",\n)\nSECRET_RE = re.compile(","snippet_sha256":"ff4c6a4ce36379d3a9a1f3ac17db1e033f02c0d02b52b3770f45dcf1eefc7ddd"},{"line":27,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":" \".json\", \".yaml\", \".yml\", \".toml\", \".go\", \".rs\", \".sh\", \".service\",\n}\nNEEDLES = (\n \"invalid mode\",\n \"component must be string\",\n \"homelab-command-capsule\",\n)\nSECRET_RE = re.compile(\n r\"(?i)(authorization|password|passwd|token|secret|cookie|credential)\\s*[:=]\\s*[^\\s,;]+\"","snippet_sha256":"840a33a7083f1d42efe7c95bb938e333342ccdef466cfe199dec73a4682ba945"},{"line":28,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":"}\nNEEDLES = (\n \"invalid mode\",\n \"component must be string\",\n \"homelab-command-capsule\",\n)\nSECRET_RE = re.compile(\n r\"(?i)(authorization|password|passwd|token|secret|cookie|credential)\\s*[:=]\\s*[^\\s,;]+\"\n)","snippet_sha256":"4ab2814177fe64cc2467e8f543ea28f41097d54351aa095818483b92ace9e436"},{"line":253,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":" }\n\n\ndef self_test() -> int:\n sample = 'if mode not in {\"verify\", \"execute\"}: raise AdapterError(\"invalid mode\")'\n matches = MODE_ENUM_RE.findall(sample)\n assert matches\n values = set(QUOTED_RE.findall(matches[0]))\n assert {\"verify\", \"execute\"}.issubset(values)","snippet_sha256":"9a045100a3f69e8b027b11c19e889469af060d6c88d13036544d663045f60797"},{"line":null,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":"mode\",\n \"component must be string\",\n \"homelab-command-capsule\",\n)\nSECRET_RE = re.compile(\n r\"(?i)","snippet_sha256":"31e924670da75c70b560affed59d891974adfd12c247f36743626a5ac49d1be8"},{"line":null,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":"mode\" in fragment.lower() and values:\n for value in values:\n if value.lower() not in {\n \"mode\", \"invalid\", \"allowed\", \"valid\", \"enum\", \"oneof\",\n \"component\", \"string\", \"error\", \"adaptererror\",\n }","snippet_sha256":"af73fb34d8cd0a95956ffbd22fc1b6325588a3c4c6a2cfbdfc61bc1d65a659df"},{"line":null,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":"modes.add(value)\n snippets.append({\n \"path\": path_key,\n \"line\": None,\n \"snippet\": fragment,\n \"snippet_sha256\": sha256_bytes(fragment.encode(\"utf-8\")","snippet_sha256":"cd9756239fb2ab48600e8981813f273c6371eb179f2bbe1bb06d3f95657db540"},{"line":null,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":"mode not in {\"verify\", \"execute\"}","snippet_sha256":"448cc0f0e2fde2c264be669e74c3c7a60356a672b391dffc4d9b70d375895fc2"},{"line":null,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":"MODE_ENUM\",\n \"process_ancestry\": rows,\n \"searched_roots\": [str(p) for p in roots]","snippet_sha256":"ec82255fff3582886b5f038d4b9d4df53a80f5da71e88f5c2b52897639737ab2"},{"line":26,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":" \".py\", \".ps1\", \".psm1\", \".js\", \".mjs\", \".cjs\", \".ts\", \".tsx\",\n \".json\", \".yaml\", \".yml\", \".toml\", \".go\", \".rs\", \".sh\", \".service\",\n}\nNEEDLES = (\n \"invalid mode\",\n \"component must be string\",\n \"homelab-command-capsule\",\n)\nSECRET_RE = re.compile(","snippet_sha256":"ff4c6a4ce36379d3a9a1f3ac17db1e033f02c0d02b52b3770f45dcf1eefc7ddd"},{"line":27,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":" \".json\", \".yaml\", \".yml\", \".toml\", \".go\", \".rs\", \".sh\", \".service\",\n}\nNEEDLES = (\n \"invalid mode\",\n \"component must be string\",\n \"homelab-command-capsule\",\n)\nSECRET_RE = re.compile(\n r\"(?i)(authorization|password|passwd|token|secret|cookie|credential)\\s*[:=]\\s*[^\\s,;]+\"","snippet_sha256":"840a33a7083f1d42efe7c95bb938e333342ccdef466cfe199dec73a4682ba945"},{"line":28,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":"}\nNEEDLES = (\n \"invalid mode\",\n \"component must be string\",\n \"homelab-command-capsule\",\n)\nSECRET_RE = re.compile(\n r\"(?i)(authorization|password|passwd|token|secret|cookie|credential)\\s*[:=]\\s*[^\\s,;]+\"\n)","snippet_sha256":"4ab2814177fe64cc2467e8f543ea28f41097d54351aa095818483b92ace9e436"},{"line":253,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":" }\n\n\ndef self_test() -> int:\n sample = 'if mode not in {\"verify\", \"execute\"}: raise AdapterError(\"invalid mode\")'\n matches = MODE_ENUM_RE.findall(sample)\n assert matches\n values = set(QUOTED_RE.findall(matches[0]))\n assert {\"verify\", \"execute\"}.issubset(values)","snippet_sha256":"9a045100a3f69e8b027b11c19e889469af060d6c88d13036544d663045f60797"},{"line":null,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":"mode\",\n \"component must be string\",\n \"homelab-command-capsule\",\n)\nSECRET_RE = re.compile(\n r\"(?i)","snippet_sha256":"31e924670da75c70b560affed59d891974adfd12c247f36743626a5ac49d1be8"},{"line":null,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":"mode\" in fragment.lower() and values:\n for value in values:\n if value.lower() not in {\n \"mode\", \"invalid\", \"allowed\", \"valid\", \"enum\", \"oneof\",\n \"component\", \"string\", \"error\", \"adaptererror\",\n }","snippet_sha256":"af73fb34d8cd0a95956ffbd22fc1b6325588a3c4c6a2cfbdfc61bc1d65a659df"},{"line":null,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":"modes.add(value)\n snippets.append({\n \"path\": path_key,\n \"line\": None,\n \"snippet\": fragment,\n \"snippet_sha256\": sha256_bytes(fragment.encode(\"utf-8\")","snippet_sha256":"cd9756239fb2ab48600e8981813f273c6371eb179f2bbe1bb06d3f95657db540"},{"line":null,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":"mode not in {\"verify\", \"execute\"}","snippet_sha256":"448cc0f0e2fde2c264be669e74c3c7a60356a672b391dffc4d9b70d375895fc2"},{"line":null,"path":"/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload/probe_adapter_mode.py","snippet":"MODE_ENUM\",\n \"process_ancestry\": rows,\n \"searched_roots\": [str(p) for p in roots]","snippet_sha256":"ec82255fff3582886b5f038d4b9d4df53a80f5da71e88f5c2b52897639737ab2"},{"line":55,"path":"/usr/lib/python3.13/gzip.py","snippet":"\n \"\"\"\n if \"t\" in mode:\n if \"b\" in mode:\n raise ValueError(\"Invalid mode: %r\" % (mode,))\n else:\n if encoding is not None:\n raise ValueError(\"Argument 'encoding' not supported in binary mode\")\n if errors is not None:","snippet_sha256":"d84e0e791af6af27a653c47c6ed06fdee3472705e1fee8ced9f3f2d277b2f86a"},{"line":197,"path":"/usr/lib/python3.13/gzip.py","snippet":"\n \"\"\"\n\n if mode and ('t' in mode or 'U' in mode):\n raise ValueError(\"Invalid mode: {!r}\".format(mode))\n if mode and 'b' not in mode:\n mode += 'b'\n\n try:","snippet_sha256":"0bea4953969f9c22633a43d4d1f63e7106f44855ae9d191faf52570c4c398a28"},{"line":241,"path":"/usr/lib/python3.13/gzip.py","snippet":" self._buffer_size = _WRITE_BUFFER_SIZE\n self._buffer = io.BufferedWriter(_WriteBufferStream(self),\n buffer_size=self._buffer_size)\n else:\n raise ValueError(\"Invalid mode: {!r}\".format(mode))\n\n self.fileobj = fileobj\n\n if self.mode == WRITE:","snippet_sha256":"1d152437f47d79e596c8b946443b4ba34a5d5640862d275eefe388ba3c26fd2e"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode=\"rb\", compresslevel=_COMPRESS_LEVEL_BEST,\n encoding=None, errors=None, newline=None):\n \"\"\"Open a gzip-compressed file in binary or text mode.\n\n The filename argument can be an actual filename (a str or bytes object)","snippet_sha256":"544418d5b99328e0ab4aaf9c549898a7d925a35159b993609b330617f6557b07"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode argument can be \"r\", \"rb\", \"w\", \"wb\", \"x\", \"xb\", \"a\" or \"ab\" for\n binary mode, or \"rt\", \"wt\", \"xt\" or \"at\" for text mode. The default mode is\n \"rb\", and the default compresslevel is 9.\n\n For binary mode, this function is equivalent to the GzipFile constructor:\n GzipFile(filename, mode, compresslevel)","snippet_sha256":"b9ac62374bf3e2b5488bf9e2e94ce6b2d71a7160c14b27e9663aa175d033616c"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode\")\n if errors is not None:\n raise ValueError(\"Argument 'errors' not supported in binary mode\")\n if newline is not None:\n raise ValueError(\"Argument 'newline' not supported in binary mode\")","snippet_sha256":"babc0d84bca71e099b297240c4acf7600a34e27828e97fceadd5217a4cfa0b3d"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode, compresslevel)\n elif hasattr(filename, \"read\") or hasattr(filename, \"write\"):\n binary_file = GzipFile(None, gz_mode, compresslevel, filename)","snippet_sha256":"ad1ab24f59d90ee68567b28efdc12550ca67becaccda724a35bda14afbb955a8"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode and 'b' not in mode:\n mode += 'b'\n\n try:\n if fileobj is None:\n fileobj = self.myfileobj = builtins.open(filename, mode or 'rb')","snippet_sha256":"b8c049bfe3ad54c32f6271dd930dd8ddda89b6236090d204aba5ca8c69993b13"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode != READ:\n raise OSError(\"Can't rewind in write mode\")\n self._buffer.seek(0)","snippet_sha256":"c70a817166520d6f230d47e9f4c11aa8ed64fbc3a3acf579d05c3e86485f98bb"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode=\"rb\", fileobj=sys.stdin.buffer)\n g = sys.stdout.buffer\n else:\n if arg[-3:]","snippet_sha256":"95153bbc01305c041ae710e99bd0b3bbdfc54271d2fab6a86afddba42fa998bc"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode=\"wb\", fileobj=sys.stdout.buffer,\n compresslevel=compresslevel)\n else:\n f = builtins.open(arg, \"rb\")","snippet_sha256":"92397a0f0b29dde52921a4533559d77e6db26a07806d369cfa152d35f66cec9e"},{"line":115,"path":"/usr/lib/python3.13/lzma.py","snippet":" self._compressor = LZMACompressor(format=format, check=check,\n preset=preset, filters=filters)\n self._pos = 0\n else:\n raise ValueError(\"Invalid mode: {!r}\".format(mode))\n\n if isinstance(filename, (str, bytes, os.PathLike)):\n if \"b\" not in mode:\n mode += \"b\"","snippet_sha256":"2ad5d669d6519f539ac9cec7d4d510c542db00e858d0e5dca950029486ea6921"},{"line":307,"path":"/usr/lib/python3.13/lzma.py","snippet":"\n \"\"\"\n if \"t\" in mode:\n if \"b\" in mode:\n raise ValueError(\"Invalid mode: %r\" % (mode,))\n else:\n if encoding is not None:\n raise ValueError(\"Argument 'encoding' not supported in binary mode\")\n if errors is not None:","snippet_sha256":"d84e0e791af6af27a653c47c6ed06fdee3472705e1fee8ced9f3f2d277b2f86a"},{"line":null,"path":"/usr/lib/python3.13/lzma.py","snippet":"MODE_FAST\", \"MODE_NORMAL\", \"PRESET_DEFAULT\", \"PRESET_EXTREME\",\n\n \"LZMACompressor\", \"LZMADecompressor\", \"LZMAFile\", \"LZMAError\",\n \"open\", \"compress\", \"decompress\", \"is_check_supported\",\n]\n\nimport builtins\nimport io\nimport os\nfrom _lzma import *\nfrom _lzma import _encode_filter_properties, _decode_filter_properties\nimport _compression\n\n\n# Value 0 no longer used\n_MODE_READ = 1\n# Value 2 no longer used\n_MODE_WRITE = 3\n\n\nclass LZMAFile(_compression.BaseStream)","snippet_sha256":"7433e8e10f7a810f6c1bc926e2bc2c981a8b8b6061a5f0671bb0ea63782bee54"},{"line":null,"path":"/usr/lib/python3.13/lzma.py","snippet":"mode = None\n\n if mode in (\"r\", \"rb\")","snippet_sha256":"4006058611632be94488e0a0b85e1489ae1a02d921622982ae91ef52678f4398"},{"line":null,"path":"/usr/lib/python3.13/lzma.py","snippet":"mode_code = _MODE_READ\n elif mode in (\"w\", \"wb\", \"a\", \"ab\", \"x\", \"xb\")","snippet_sha256":"38a726527e0715a966b20b74a04c86e6509e89a0dd4a32363e22b36cd248a78c"},{"line":null,"path":"/usr/lib/python3.13/lzma.py","snippet":"mode(self):\n return 'wb' if self._mode == _MODE_WRITE else 'rb'\n\n def fileno(self):\n \"\"\"Return the file descriptor for the underlying file.\"\"\"\n self._check_not_closed()\n return self._fp.fileno()\n\n def seekable(self)","snippet_sha256":"cf2ecb6795ddf7d5143fc2d1cae3613098f43900fde109ad51ac63e96669db4a"},{"line":null,"path":"/usr/lib/python3.13/lzma.py","snippet":"mode == _MODE_READ:\n return self._buffer.tell()\n return self._pos\n\n\ndef open(filename, mode=\"rb\", *,\n format=None, check=-1, preset=None, filters=None,\n encoding=None, errors=None, newline=None):\n \"\"\"Open an LZMA-compressed file in binary or text mode.\n\n filename can be either an actual file name (given as a str, bytes,\n or PathLike object)","snippet_sha256":"f32eaf2d693c0506703fb687db48b5f58555643cd768109556c23ddb3e6361c9"},{"line":null,"path":"/usr/lib/python3.13/lzma.py","snippet":"mode argument can be \"r\", \"rb\" (default), \"w\", \"wb\", \"x\", \"xb\",\n \"a\", or \"ab\" for binary mode, or \"rt\", \"wt\", \"xt\", or \"at\" for text\n mode.\n\n The format, check, preset and filters arguments specify the\n compression settings, as for LZMACompressor, LZMADecompressor and\n LZMAFile.\n\n For binary mode, this function is equivalent to the LZMAFile\n constructor: LZMAFile(filename, mode, ...)","snippet_sha256":"23e3d5e1c60278f2bc2e6a559804ad80afdea4e084be91e836a70773d33b6cd6"},{"line":null,"path":"/usr/lib/python3.13/lzma.py","snippet":"mode\")\n if errors is not None:\n raise ValueError(\"Argument 'errors' not supported in binary mode\")\n if newline is not None:\n raise ValueError(\"Argument 'newline' not supported in binary mode\")","snippet_sha256":"babc0d84bca71e099b297240c4acf7600a34e27828e97fceadd5217a4cfa0b3d"},{"line":197,"path":"/usr/lib/python3.13/_pyio.py","snippet":" file = os.fspath(file)\n if not isinstance(file, (str, bytes, int)):\n raise TypeError(\"invalid file: %r\" % file)\n if not isinstance(mode, str):\n raise TypeError(\"invalid mode: %r\" % mode)\n if not isinstance(buffering, int):\n raise TypeError(\"invalid buffering: %r\" % buffering)\n if encoding is not None and not isinstance(encoding, str):\n raise TypeError(\"invalid encoding: %r\" % encoding)","snippet_sha256":"aefc6f21afe0c9c907cd88fd6520889ed6d1928301979add322a34ae6f77f506"},{"line":206,"path":"/usr/lib/python3.13/_pyio.py","snippet":" if errors is not None and not isinstance(errors, str):\n raise TypeError(\"invalid errors: %r\" % errors)\n modes = set(mode)\n if modes - set(\"axrwb+t\") or len(mode) > len(modes):\n raise ValueError(\"invalid mode: %r\" % mode)\n creating = \"x\" in modes\n reading = \"r\" in modes\n writing = \"w\" in modes\n appending = \"a\" in modes","snippet_sha256":"d3617fbeb773e5aef9d55baae7e948795a4b0de6c54466c649cc1ef5c0e5e193"},{"line":1516,"path":"/usr/lib/python3.13/_pyio.py","snippet":" else:\n fd = -1\n\n if not isinstance(mode, str):\n raise TypeError('invalid mode: %s' % (mode,))\n if not set(mode) <= set('xrwab+'):\n raise ValueError('invalid mode: %s' % (mode,))\n if sum(c in 'rwax' for c in mode) != 1 or mode.count('+') > 1:\n raise ValueError('Must have exactly one of create/read/write/append '","snippet_sha256":"395d5bf3705616f1dea6922901eb442705c7cf5fd0c67d76ae50e3f282e77873"},{"line":1518,"path":"/usr/lib/python3.13/_pyio.py","snippet":"\n if not isinstance(mode, str):\n raise TypeError('invalid mode: %s' % (mode,))\n if not set(mode) <= set('xrwab+'):\n raise ValueError('invalid mode: %s' % (mode,))\n if sum(c in 'rwax' for c in mode) != 1 or mode.count('+') > 1:\n raise ValueError('Must have exactly one of create/read/write/append '\n 'mode and at most one plus')\n","snippet_sha256":"a7c28d0db09cba4bef285e18f0462dfd977998433d9b5b7537739085a475801b"},{"line":null,"path":"/usr/lib/python3.13/_pyio.py","snippet":"mode:\n encoding = \"utf-8\"\n else:\n encoding = \"locale\"\n if sys.flags.warn_default_encoding:\n import warnings\n warnings.warn(\"'encoding' argument not specified.\",\n EncodingWarning, stacklevel + 1)","snippet_sha256":"426ab5aabe1cef6fa29477cea3abf525c2cf2cff8c674dc9ff2f88a88ec41b9b"},{"line":null,"path":"/usr/lib/python3.13/_pyio.py","snippet":"mode. The default encoding is\n platform dependent, but any encoding supported by Python can be\n passed. See the codecs module for the list of supported encodings.\n\n errors is an optional string that specifies how encoding errors are to\n be handled---this argument should not be used in binary mode. Pass\n 'strict' to raise a ValueError exception if there is an encoding error\n (the default of None has the same effect)","snippet_sha256":"0088cc38f5419732582b689e476145e1654d7d0ad7038b2adb3bd47170e39301"},{"line":null,"path":"/usr/lib/python3.13/_pyio.py","snippet":"mode, and\n through which the standard file operations such as reading and writing\n are performed. When open() is used to open a file in a text mode ('w',\n 'r', 'wt', 'rt', etc.)","snippet_sha256":"a590cb01b6e0211f8c87978e09ce6b0121d02f42a326dba415deba7f42680a44"},{"line":null,"path":"/usr/lib/python3.13/_pyio.py","snippet":"modes = set(mode)\n if modes - set(\"axrwb+t\") or len(mode) > len(modes):\n raise ValueError(\"invalid mode: %r\" % mode)\n creating = \"x\" in modes\n reading = \"r\" in modes\n writing = \"w\" in modes\n appending = \"a\" in modes\n updating = \"+\" in modes\n text = \"t\" in modes\n binary = \"b\" in modes\n if text and binary:\n raise ValueError(\"can't have text and binary mode at once\")","snippet_sha256":"1323f1b2e020ad19b9fff7c73b71e0280d771ffd34cf5b1ae17432c81eab4c2f"},{"line":null,"path":"/usr/lib/python3.13/_pyio.py","snippet":"mode ``'rb'``. This function\n should be used when the intent is to treat the contents as\n executable code.\n\n ``path`` should be an absolute path.\n\n When supported by the runtime, this function can be hooked\n in order to allow embedders more control over code files.\n This functionality is not supported on the current runtime.\n \"\"\"\n import warnings\n warnings.warn(\"_pyio.open_code()","snippet_sha256":"881fa03dbdb5c050c75e78f43246643236829179361d67fdd92603661b1885d1"},{"line":null,"path":"/usr/lib/python3.13/_pyio.py","snippet":"mode. It wraps\n another incremental decoder, translating \\r\\n and \\r into \\n. It also\n records the types of newlines encountered. When used with\n translate=False, it ensures that the newline sequence is returned in\n one piece.\n \"\"\"\n def __init__(self, decoder, translate, errors='strict')","snippet_sha256":"75c16c8d25859296d1dc265fbd27856666ce5467fcbb63c026dd18c254505523"},{"line":1020,"path":"/usr/lib/python3.13/os.py","snippet":" def popen(cmd, mode=\"r\", buffering=-1):\n if not isinstance(cmd, str):\n raise TypeError(\"invalid cmd type (%s, expected string)\" % type(cmd))\n if mode not in (\"r\", \"w\"):\n raise ValueError(\"invalid mode %r\" % mode)\n if buffering == 0 or buffering is None:\n raise ValueError(\"popen() does not support unbuffered streams\")\n import subprocess\n if mode == \"r\":","snippet_sha256":"1088a8909cb90ba4f63535f7ad4cfa8e2cb054c4f995abc15c6645258d1ae661"},{"line":null,"path":"/usr/lib/python3.13/os.py","snippet":"mode, file, args, env, execvpe)\n\n\n __all__.extend([\"spawnv\", \"spawnve\", \"spawnvp\", \"spawnvpe\"])\n\n\nif _exists(\"spawnv\"):\n # These aren't supplied by the basic Windows code\n # but can be easily implemented in Python\n\n def spawnl(mode, file, *args)","snippet_sha256":"67f41eb3649e5832c937dec6623195ca0438c242679dcca9195d8093bdc86141"},{"line":null,"path":"/usr/lib/python3.13/os.py","snippet":"mode, file, args[:-1], env)\n\n\n __all__.extend([\"spawnl\", \"spawnle\"])\n\n\nif _exists(\"spawnvp\"):\n # At the moment, Windows doesn't implement spawnvp[e]","snippet_sha256":"8a642e450e56aa2919444827aecfeddcebedfec1563868dac46a0aab6a212192"},{"line":null,"path":"/usr/lib/python3.13/os.py","snippet":"mode, file, args[:-1], env)\n\n\n __all__.extend([\"spawnlp\", \"spawnlpe\"])\n\n# VxWorks has no user space shell provided. As a result, running\n# command in a shell can't be supported.\nif sys.platform != 'vxworks':\n # Supply os.popen()\n def popen(cmd, mode=\"r\", buffering=-1)","snippet_sha256":"2033895c3c390ce67453343c5fff4a9b09d7010003de83d74697c81958268207"},{"line":78,"path":"/usr/lib/python3.13/bz2.py","snippet":" mode = \"ab\"\n mode_code = _MODE_WRITE\n self._compressor = BZ2Compressor(compresslevel)\n else:\n raise ValueError(\"Invalid mode: %r\" % (mode,))\n\n if isinstance(filename, (str, bytes, os.PathLike)):\n self._fp = _builtin_open(filename, mode)\n self._closefp = True","snippet_sha256":"97ef89f2759b61822cc7143eaa68229446baf8adbe581eccc1c22e3ef6ef5993"},{"line":302,"path":"/usr/lib/python3.13/bz2.py","snippet":"\n \"\"\"\n if \"t\" in mode:\n if \"b\" in mode:\n raise ValueError(\"Invalid mode: %r\" % (mode,))\n else:\n if encoding is not None:\n raise ValueError(\"Argument 'encoding' not supported in binary mode\")\n if errors is not None:","snippet_sha256":"d84e0e791af6af27a653c47c6ed06fdee3472705e1fee8ced9f3f2d277b2f86a"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode in (\"\", \"r\", \"rb\")","snippet_sha256":"1a3d5955d8f557681a7d89176509de24b13c33fc91e6610cc31f5e8d88703dfa"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode = \"rb\"\n mode_code = _MODE_READ\n elif mode in (\"w\", \"wb\")","snippet_sha256":"f299436013f799f6878732c61353b4f2323a53c8f84d202a233604fbe7d697eb"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode = \"wb\"\n mode_code = _MODE_WRITE\n self._compressor = BZ2Compressor(compresslevel)\n elif mode in (\"x\", \"xb\")","snippet_sha256":"7ac00832247ea0c6353fe98e63eb487c0da407322cb63f790b19608754550615"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode = \"xb\"\n mode_code = _MODE_WRITE\n self._compressor = BZ2Compressor(compresslevel)\n elif mode in (\"a\", \"ab\")","snippet_sha256":"6d2cda121f12c67983790195fa75f2c8ddc5314af8b63ef9b8d918ad3a39e80e"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode = \"ab\"\n mode_code = _MODE_WRITE\n self._compressor = BZ2Compressor(compresslevel)\n else:\n raise ValueError(\"Invalid mode: %r\" % (mode,)","snippet_sha256":"0bbc3b3f19616231094c5591be7c8638416b6a85d8ae0b3b5ae52afa6574d1fd"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode(self):\n return 'wb' if self._mode == _MODE_WRITE else 'rb'\n\n def fileno(self):\n \"\"\"Return the file descriptor for the underlying file.\"\"\"\n self._check_not_closed()\n return self._fp.fileno()\n\n def seekable(self)","snippet_sha256":"cf2ecb6795ddf7d5143fc2d1cae3613098f43900fde109ad51ac63e96669db4a"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode == _MODE_READ:\n return self._buffer.tell()\n return self._pos\n\n\ndef open(filename, mode=\"rb\", compresslevel=9,\n encoding=None, errors=None, newline=None):\n \"\"\"Open a bzip2-compressed file in binary or text mode.\n\n The filename argument can be an actual filename (a str, bytes, or\n PathLike object)","snippet_sha256":"8dacf6d760468d066f2ba57941d783af74542dd70da3db6aea3a766b2381fd0b"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode argument can be \"r\", \"rb\", \"w\", \"wb\", \"x\", \"xb\", \"a\" or\n \"ab\" for binary mode, or \"rt\", \"wt\", \"xt\" or \"at\" for text mode.\n The default mode is \"rb\", and the default compresslevel is 9.\n\n For binary mode, this function is equivalent to the BZ2File\n constructor: BZ2File(filename, mode, compresslevel)","snippet_sha256":"63c57ccf065d653b0f5bc4dd3b783a320226511864f76f8bc651b931c608bf48"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode\")\n if errors is not None:\n raise ValueError(\"Argument 'errors' not supported in binary mode\")\n if newline is not None:\n raise ValueError(\"Argument 'newline' not supported in binary mode\")","snippet_sha256":"babc0d84bca71e099b297240c4acf7600a34e27828e97fceadd5217a4cfa0b3d"},{"line":314,"path":"/usr/lib/python3.13/socket.py","snippet":" those.\n \"\"\"\n # XXX refactor to share code?\n if not set(mode) <= {\"r\", \"w\", \"b\"}:\n raise ValueError(\"invalid mode %r (only r, w, b allowed)\" % (mode,))\n writing = \"w\" in mode\n reading = \"r\" in mode or not writing\n assert reading or writing\n binary = \"b\" in mode","snippet_sha256":"f2e244fbbab55ac4f62cfe753cba3e5bb119168c70c1510e92321bac2f686e8d"},{"line":696,"path":"/usr/lib/python3.13/socket.py","snippet":" # XXX More docs\n\n def __init__(self, sock, mode):\n if mode not in (\"r\", \"w\", \"rw\", \"rb\", \"wb\", \"rwb\"):\n raise ValueError(\"invalid mode: %r\" % mode)\n io.RawIOBase.__init__(self)\n self._sock = sock\n if \"b\" not in mode:\n mode += \"b\"","snippet_sha256":"da4ec7a671e6780f37c659016e048d3233610c355761483d8d2a24ef49cd75ce"},{"line":null,"path":"/usr/lib/python3.13/socket.py","snippet":"mode):\n if mode not in (\"r\", \"w\", \"rw\", \"rb\", \"wb\", \"rwb\")","snippet_sha256":"d71aca4244bbdcf869445b4e1d28463c2de3d2a642d0a2ab2531f032fc92c7c4"},{"line":37,"path":"/usr/lib/python3.13/importlib/resources/_adapters.py","snippet":" if mode == 'r':\n return TextIOWrapper(file, *args, **kwargs)\n elif mode == 'rb':\n return file\n raise ValueError(f\"Invalid mode value '{mode}', only 'r' and 'rb' are supported\")\n\n\nclass CompatibilityFiles:\n \"\"\"","snippet_sha256":"4c2178a588be6f0cf22d26ae5bf65e12cf84897eb0992c6a250a3a6569633454"},{"line":null,"path":"/usr/lib/python3.13/importlib/resources/_adapters.py","snippet":"mode='r', *args, **kwargs):\n if mode == 'r':\n return TextIOWrapper(file, *args, **kwargs)\n elif mode == 'rb':\n return file\n raise ValueError(f\"Invalid mode value '{mode}","snippet_sha256":"eebdd5ddbc6441c8b37815480a47db144c31218dcb46cf54203104e4c6313a98"},{"line":null,"path":"/usr/lib/python3.13/importlib/resources/_adapters.py","snippet":"mode='r', *args, **kwargs):\n raise FileNotFoundError(\"Can't open orphan path\")\n\n def __init__(self, spec)","snippet_sha256":"f0104b36c28d13f2d904f6d6032815642e4753599b0f9f752af9c63e0bf2a311"},{"line":37,"path":"/usr/lib/python3/dist-packages/importlib_resources/_adapters.py","snippet":" if mode == 'r':\n return TextIOWrapper(file, *args, **kwargs)\n elif mode == 'rb':\n return file\n raise ValueError(f\"Invalid mode value '{mode}', only 'r' and 'rb' are supported\")\n\n\nclass CompatibilityFiles:\n \"\"\"","snippet_sha256":"4c2178a588be6f0cf22d26ae5bf65e12cf84897eb0992c6a250a3a6569633454"},{"line":null,"path":"/usr/lib/python3/dist-packages/importlib_resources/_adapters.py","snippet":"mode='r', *args, **kwargs):\n if mode == 'r':\n return TextIOWrapper(file, *args, **kwargs)\n elif mode == 'rb':\n return file\n raise ValueError(f\"Invalid mode value '{mode}","snippet_sha256":"eebdd5ddbc6441c8b37815480a47db144c31218dcb46cf54203104e4c6313a98"},{"line":null,"path":"/usr/lib/python3/dist-packages/importlib_resources/_adapters.py","snippet":"mode='r', *args, **kwargs):\n raise FileNotFoundError(\"Can't open orphan path\")\n\n def __init__(self, spec)","snippet_sha256":"f0104b36c28d13f2d904f6d6032815642e4753599b0f9f752af9c63e0bf2a311"},{"line":284,"path":"/usr/lib/python3/dist-packages/joblib/compressor.py","snippet":" self._compressor = zlib.compressobj(self.compresslevel,\n zlib.DEFLATED, self.wbits,\n zlib.DEF_MEM_LEVEL, 0)\n else:\n raise ValueError(\"Invalid mode: %r\" % (mode,))\n\n if isinstance(filename, str):\n self._fp = io.open(filename, mode)\n self._closefp = True","snippet_sha256":"b83feaa15018841fe212750c85059ddb30368e74d70ca398fd27e5acd8ea2a8b"},{"line":null,"path":"/usr/lib/python3/dist-packages/joblib/compressor.py","snippet":"mode can be 'rb' for reading (default)","snippet_sha256":"aae85679c492bb6beefcf7a8d5d6d3d74700d6b8804c5b4807079487ac99706a"},{"line":null,"path":"/usr/lib/python3/dist-packages/joblib/compressor.py","snippet":"mode is 'wb', compresslevel can be a number between 1\n and 9 specifying the level of compression: 1 produces the least\n compression, and 9 produces the most compression. 3 is the default.\n \"\"\"\n\n wbits = zlib.MAX_WBITS\n\n def __init__(self, filename, mode=\"rb\", compresslevel=3)","snippet_sha256":"003809d184c47f7f437a08cce3ecbae33dbdbff67965247170f31ec4cede9af3"},{"line":null,"path":"/usr/lib/python3/dist-packages/joblib/compressor.py","snippet":"mode can be 'rb' for reading (default)","snippet_sha256":"aae85679c492bb6beefcf7a8d5d6d3d74700d6b8804c5b4807079487ac99706a"},{"line":null,"path":"/usr/lib/python3/dist-packages/joblib/compressor.py","snippet":"mode is 'wb', compresslevel can be a number between 1\n and 9 specifying the level of compression: 1 produces the least\n compression, and 9 produces the most compression. 3 is the default.\n \"\"\"\n\n wbits = 31 # zlib compressor/decompressor wbits value for gzip format.\n\n\nclass GzipCompressorWrapper(CompressorWrapper)","snippet_sha256":"118d491264bce123e46439bc5141f8121cd22b84c14bf85738a4ef5729cbf049"},{"line":843,"path":"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py","snippet":"def test_binary_zlibfile_invalid_modes(tmpdir, bad_mode):\n filename = tmpdir.join('test.pkl').strpath\n with raises(ValueError) as excinfo:\n BinaryZlibFile(filename, bad_mode)\n excinfo.match(\"Invalid mode\")\n\n\n@parametrize('bad_file', [1, (), {}])\ndef test_binary_zlibfile_invalid_filename_type(bad_file):","snippet_sha256":"16f572d0c67740d65c68a488e846c36a11c27ad741e696f3a2a9898a2f5250a9"},{"line":null,"path":"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py","snippet":"mode \"r+\" is not compatible with compressed '\n f'file {this_filename}. \"r+\" flag will be ignored.'\n )\n\n\n@with_numpy\n@parametrize('cache_size', [None, 0, 10])\ndef test_cache_size_warning(tmpdir, cache_size)","snippet_sha256":"787f7e417e8999f967e211d01933ffd362c877949bae26d83b7f24ddef2f11bd"},{"line":null,"path":"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py","snippet":"mode \"%(mmap_mode)s\" '\n 'flag will be ignored.' % {'fileobj': f, 'mmap_mode': 'r+'})\n\n\n@with_numpy\ndef test_file_handle_persistence_in_memory_mmap():\n obj = np.random.random((10, 10)","snippet_sha256":"3d5faddc1c48f4f9d57657d85727285857ddf6bd26f72fc50d68d9be6369e739"},{"line":null,"path":"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py","snippet":"mode option will be '\n 'ignored.' % {'mmap_mode': 'r+'})\n\n\n@parametrize('data', [b'a little data as bytes.',\n # More bytes\n 10000 * \"{}\".format(\n random.randint(0, 1000)","snippet_sha256":"a38063fa1d44034c0126a467e54f70a21e660057bfc81995d5bf2dd3da06dc9c"},{"line":60,"path":"/usr/lib/python3/dist-packages/numpy/lib/_datasource.py","snippet":"\n \"\"\"\n if \"t\" in mode:\n if \"b\" in mode:\n raise ValueError(\"Invalid mode: %r\" % (mode,))\n else:\n if encoding is not None:\n raise ValueError(\"Argument 'encoding' not supported in binary mode\")\n if newline is not None:","snippet_sha256":"b615b2f7481d5a11ca3f793098591a6d9f0a168075e709c78e1afbbb459f8bce"},{"line":null,"path":"/usr/lib/python3/dist-packages/numpy/lib/_datasource.py","snippet":"mode\")\n if newline is not None:\n raise ValueError(\"Argument 'newline' not supported in binary mode\")","snippet_sha256":"c2fd905ff8b8dd7dd5ddd8a5cbe10d6cc78377d1b6a083ef496b121e1b8025dd"},{"line":133,"path":"/usr/lib/python3/dist-packages/urllib3/util/ssltransport.py","snippet":" This is unfortunately a copy and paste of socket.py makefile with small\n changes to point to the socket directly.\n \"\"\"\n if not set(mode) <= {\"r\", \"w\", \"b\"}:\n raise ValueError(f\"invalid mode {mode!r} (only r, w, b allowed)\")\n\n writing = \"w\" in mode\n reading = \"r\" in mode or not writing\n assert reading or writing","snippet_sha256":"5b95cf8c9b43239217bff19d22be21906a3913bf281ca238ec10ff2f92ae4631"},{"line":55,"path":"/usr/lib/python3.13/gzip.py","snippet":"\n \"\"\"\n if \"t\" in mode:\n if \"b\" in mode:\n raise ValueError(\"Invalid mode: %r\" % (mode,))\n else:\n if encoding is not None:\n raise ValueError(\"Argument 'encoding' not supported in binary mode\")\n if errors is not None:","snippet_sha256":"d84e0e791af6af27a653c47c6ed06fdee3472705e1fee8ced9f3f2d277b2f86a"},{"line":197,"path":"/usr/lib/python3.13/gzip.py","snippet":"\n \"\"\"\n\n if mode and ('t' in mode or 'U' in mode):\n raise ValueError(\"Invalid mode: {!r}\".format(mode))\n if mode and 'b' not in mode:\n mode += 'b'\n\n try:","snippet_sha256":"0bea4953969f9c22633a43d4d1f63e7106f44855ae9d191faf52570c4c398a28"},{"line":241,"path":"/usr/lib/python3.13/gzip.py","snippet":" self._buffer_size = _WRITE_BUFFER_SIZE\n self._buffer = io.BufferedWriter(_WriteBufferStream(self),\n buffer_size=self._buffer_size)\n else:\n raise ValueError(\"Invalid mode: {!r}\".format(mode))\n\n self.fileobj = fileobj\n\n if self.mode == WRITE:","snippet_sha256":"1d152437f47d79e596c8b946443b4ba34a5d5640862d275eefe388ba3c26fd2e"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode=\"rb\", compresslevel=_COMPRESS_LEVEL_BEST,\n encoding=None, errors=None, newline=None):\n \"\"\"Open a gzip-compressed file in binary or text mode.\n\n The filename argument can be an actual filename (a str or bytes object)","snippet_sha256":"544418d5b99328e0ab4aaf9c549898a7d925a35159b993609b330617f6557b07"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode argument can be \"r\", \"rb\", \"w\", \"wb\", \"x\", \"xb\", \"a\" or \"ab\" for\n binary mode, or \"rt\", \"wt\", \"xt\" or \"at\" for text mode. The default mode is\n \"rb\", and the default compresslevel is 9.\n\n For binary mode, this function is equivalent to the GzipFile constructor:\n GzipFile(filename, mode, compresslevel)","snippet_sha256":"b9ac62374bf3e2b5488bf9e2e94ce6b2d71a7160c14b27e9663aa175d033616c"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode\")\n if errors is not None:\n raise ValueError(\"Argument 'errors' not supported in binary mode\")\n if newline is not None:\n raise ValueError(\"Argument 'newline' not supported in binary mode\")","snippet_sha256":"babc0d84bca71e099b297240c4acf7600a34e27828e97fceadd5217a4cfa0b3d"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode, compresslevel)\n elif hasattr(filename, \"read\") or hasattr(filename, \"write\"):\n binary_file = GzipFile(None, gz_mode, compresslevel, filename)","snippet_sha256":"ad1ab24f59d90ee68567b28efdc12550ca67becaccda724a35bda14afbb955a8"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode and 'b' not in mode:\n mode += 'b'\n\n try:\n if fileobj is None:\n fileobj = self.myfileobj = builtins.open(filename, mode or 'rb')","snippet_sha256":"b8c049bfe3ad54c32f6271dd930dd8ddda89b6236090d204aba5ca8c69993b13"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode != READ:\n raise OSError(\"Can't rewind in write mode\")\n self._buffer.seek(0)","snippet_sha256":"c70a817166520d6f230d47e9f4c11aa8ed64fbc3a3acf579d05c3e86485f98bb"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode=\"rb\", fileobj=sys.stdin.buffer)\n g = sys.stdout.buffer\n else:\n if arg[-3:]","snippet_sha256":"95153bbc01305c041ae710e99bd0b3bbdfc54271d2fab6a86afddba42fa998bc"},{"line":null,"path":"/usr/lib/python3.13/gzip.py","snippet":"mode=\"wb\", fileobj=sys.stdout.buffer,\n compresslevel=compresslevel)\n else:\n f = builtins.open(arg, \"rb\")","snippet_sha256":"92397a0f0b29dde52921a4533559d77e6db26a07806d369cfa152d35f66cec9e"},{"line":115,"path":"/usr/lib/python3.13/lzma.py","snippet":" self._compressor = LZMACompressor(format=format, check=check,\n preset=preset, filters=filters)\n self._pos = 0\n else:\n raise ValueError(\"Invalid mode: {!r}\".format(mode))\n\n if isinstance(filename, (str, bytes, os.PathLike)):\n if \"b\" not in mode:\n mode += \"b\"","snippet_sha256":"2ad5d669d6519f539ac9cec7d4d510c542db00e858d0e5dca950029486ea6921"},{"line":307,"path":"/usr/lib/python3.13/lzma.py","snippet":"\n \"\"\"\n if \"t\" in mode:\n if \"b\" in mode:\n raise ValueError(\"Invalid mode: %r\" % (mode,))\n else:\n if encoding is not None:\n raise ValueError(\"Argument 'encoding' not supported in binary mode\")\n if errors is not None:","snippet_sha256":"d84e0e791af6af27a653c47c6ed06fdee3472705e1fee8ced9f3f2d277b2f86a"},{"line":null,"path":"/usr/lib/python3.13/lzma.py","snippet":"MODE_FAST\", \"MODE_NORMAL\", \"PRESET_DEFAULT\", \"PRESET_EXTREME\",\n\n \"LZMACompressor\", \"LZMADecompressor\", \"LZMAFile\", \"LZMAError\",\n \"open\", \"compress\", \"decompress\", \"is_check_supported\",\n]\n\nimport builtins\nimport io\nimport os\nfrom _lzma import *\nfrom _lzma import _encode_filter_properties, _decode_filter_properties\nimport _compression\n\n\n# Value 0 no longer used\n_MODE_READ = 1\n# Value 2 no longer used\n_MODE_WRITE = 3\n\n\nclass LZMAFile(_compression.BaseStream)","snippet_sha256":"7433e8e10f7a810f6c1bc926e2bc2c981a8b8b6061a5f0671bb0ea63782bee54"},{"line":null,"path":"/usr/lib/python3.13/lzma.py","snippet":"mode = None\n\n if mode in (\"r\", \"rb\")","snippet_sha256":"4006058611632be94488e0a0b85e1489ae1a02d921622982ae91ef52678f4398"},{"line":null,"path":"/usr/lib/python3.13/lzma.py","snippet":"mode_code = _MODE_READ\n elif mode in (\"w\", \"wb\", \"a\", \"ab\", \"x\", \"xb\")","snippet_sha256":"38a726527e0715a966b20b74a04c86e6509e89a0dd4a32363e22b36cd248a78c"},{"line":null,"path":"/usr/lib/python3.13/lzma.py","snippet":"mode(self):\n return 'wb' if self._mode == _MODE_WRITE else 'rb'\n\n def fileno(self):\n \"\"\"Return the file descriptor for the underlying file.\"\"\"\n self._check_not_closed()\n return self._fp.fileno()\n\n def seekable(self)","snippet_sha256":"cf2ecb6795ddf7d5143fc2d1cae3613098f43900fde109ad51ac63e96669db4a"},{"line":null,"path":"/usr/lib/python3.13/lzma.py","snippet":"mode == _MODE_READ:\n return self._buffer.tell()\n return self._pos\n\n\ndef open(filename, mode=\"rb\", *,\n format=None, check=-1, preset=None, filters=None,\n encoding=None, errors=None, newline=None):\n \"\"\"Open an LZMA-compressed file in binary or text mode.\n\n filename can be either an actual file name (given as a str, bytes,\n or PathLike object)","snippet_sha256":"f32eaf2d693c0506703fb687db48b5f58555643cd768109556c23ddb3e6361c9"},{"line":null,"path":"/usr/lib/python3.13/lzma.py","snippet":"mode argument can be \"r\", \"rb\" (default), \"w\", \"wb\", \"x\", \"xb\",\n \"a\", or \"ab\" for binary mode, or \"rt\", \"wt\", \"xt\", or \"at\" for text\n mode.\n\n The format, check, preset and filters arguments specify the\n compression settings, as for LZMACompressor, LZMADecompressor and\n LZMAFile.\n\n For binary mode, this function is equivalent to the LZMAFile\n constructor: LZMAFile(filename, mode, ...)","snippet_sha256":"23e3d5e1c60278f2bc2e6a559804ad80afdea4e084be91e836a70773d33b6cd6"},{"line":null,"path":"/usr/lib/python3.13/lzma.py","snippet":"mode\")\n if errors is not None:\n raise ValueError(\"Argument 'errors' not supported in binary mode\")\n if newline is not None:\n raise ValueError(\"Argument 'newline' not supported in binary mode\")","snippet_sha256":"babc0d84bca71e099b297240c4acf7600a34e27828e97fceadd5217a4cfa0b3d"},{"line":197,"path":"/usr/lib/python3.13/_pyio.py","snippet":" file = os.fspath(file)\n if not isinstance(file, (str, bytes, int)):\n raise TypeError(\"invalid file: %r\" % file)\n if not isinstance(mode, str):\n raise TypeError(\"invalid mode: %r\" % mode)\n if not isinstance(buffering, int):\n raise TypeError(\"invalid buffering: %r\" % buffering)\n if encoding is not None and not isinstance(encoding, str):\n raise TypeError(\"invalid encoding: %r\" % encoding)","snippet_sha256":"aefc6f21afe0c9c907cd88fd6520889ed6d1928301979add322a34ae6f77f506"},{"line":206,"path":"/usr/lib/python3.13/_pyio.py","snippet":" if errors is not None and not isinstance(errors, str):\n raise TypeError(\"invalid errors: %r\" % errors)\n modes = set(mode)\n if modes - set(\"axrwb+t\") or len(mode) > len(modes):\n raise ValueError(\"invalid mode: %r\" % mode)\n creating = \"x\" in modes\n reading = \"r\" in modes\n writing = \"w\" in modes\n appending = \"a\" in modes","snippet_sha256":"d3617fbeb773e5aef9d55baae7e948795a4b0de6c54466c649cc1ef5c0e5e193"},{"line":1516,"path":"/usr/lib/python3.13/_pyio.py","snippet":" else:\n fd = -1\n\n if not isinstance(mode, str):\n raise TypeError('invalid mode: %s' % (mode,))\n if not set(mode) <= set('xrwab+'):\n raise ValueError('invalid mode: %s' % (mode,))\n if sum(c in 'rwax' for c in mode) != 1 or mode.count('+') > 1:\n raise ValueError('Must have exactly one of create/read/write/append '","snippet_sha256":"395d5bf3705616f1dea6922901eb442705c7cf5fd0c67d76ae50e3f282e77873"},{"line":1518,"path":"/usr/lib/python3.13/_pyio.py","snippet":"\n if not isinstance(mode, str):\n raise TypeError('invalid mode: %s' % (mode,))\n if not set(mode) <= set('xrwab+'):\n raise ValueError('invalid mode: %s' % (mode,))\n if sum(c in 'rwax' for c in mode) != 1 or mode.count('+') > 1:\n raise ValueError('Must have exactly one of create/read/write/append '\n 'mode and at most one plus')\n","snippet_sha256":"a7c28d0db09cba4bef285e18f0462dfd977998433d9b5b7537739085a475801b"},{"line":null,"path":"/usr/lib/python3.13/_pyio.py","snippet":"mode:\n encoding = \"utf-8\"\n else:\n encoding = \"locale\"\n if sys.flags.warn_default_encoding:\n import warnings\n warnings.warn(\"'encoding' argument not specified.\",\n EncodingWarning, stacklevel + 1)","snippet_sha256":"426ab5aabe1cef6fa29477cea3abf525c2cf2cff8c674dc9ff2f88a88ec41b9b"},{"line":null,"path":"/usr/lib/python3.13/_pyio.py","snippet":"mode. The default encoding is\n platform dependent, but any encoding supported by Python can be\n passed. See the codecs module for the list of supported encodings.\n\n errors is an optional string that specifies how encoding errors are to\n be handled---this argument should not be used in binary mode. Pass\n 'strict' to raise a ValueError exception if there is an encoding error\n (the default of None has the same effect)","snippet_sha256":"0088cc38f5419732582b689e476145e1654d7d0ad7038b2adb3bd47170e39301"},{"line":null,"path":"/usr/lib/python3.13/_pyio.py","snippet":"mode, and\n through which the standard file operations such as reading and writing\n are performed. When open() is used to open a file in a text mode ('w',\n 'r', 'wt', 'rt', etc.)","snippet_sha256":"a590cb01b6e0211f8c87978e09ce6b0121d02f42a326dba415deba7f42680a44"},{"line":null,"path":"/usr/lib/python3.13/_pyio.py","snippet":"modes = set(mode)\n if modes - set(\"axrwb+t\") or len(mode) > len(modes):\n raise ValueError(\"invalid mode: %r\" % mode)\n creating = \"x\" in modes\n reading = \"r\" in modes\n writing = \"w\" in modes\n appending = \"a\" in modes\n updating = \"+\" in modes\n text = \"t\" in modes\n binary = \"b\" in modes\n if text and binary:\n raise ValueError(\"can't have text and binary mode at once\")","snippet_sha256":"1323f1b2e020ad19b9fff7c73b71e0280d771ffd34cf5b1ae17432c81eab4c2f"},{"line":null,"path":"/usr/lib/python3.13/_pyio.py","snippet":"mode ``'rb'``. This function\n should be used when the intent is to treat the contents as\n executable code.\n\n ``path`` should be an absolute path.\n\n When supported by the runtime, this function can be hooked\n in order to allow embedders more control over code files.\n This functionality is not supported on the current runtime.\n \"\"\"\n import warnings\n warnings.warn(\"_pyio.open_code()","snippet_sha256":"881fa03dbdb5c050c75e78f43246643236829179361d67fdd92603661b1885d1"},{"line":null,"path":"/usr/lib/python3.13/_pyio.py","snippet":"mode. It wraps\n another incremental decoder, translating \\r\\n and \\r into \\n. It also\n records the types of newlines encountered. When used with\n translate=False, it ensures that the newline sequence is returned in\n one piece.\n \"\"\"\n def __init__(self, decoder, translate, errors='strict')","snippet_sha256":"75c16c8d25859296d1dc265fbd27856666ce5467fcbb63c026dd18c254505523"},{"line":1020,"path":"/usr/lib/python3.13/os.py","snippet":" def popen(cmd, mode=\"r\", buffering=-1):\n if not isinstance(cmd, str):\n raise TypeError(\"invalid cmd type (%s, expected string)\" % type(cmd))\n if mode not in (\"r\", \"w\"):\n raise ValueError(\"invalid mode %r\" % mode)\n if buffering == 0 or buffering is None:\n raise ValueError(\"popen() does not support unbuffered streams\")\n import subprocess\n if mode == \"r\":","snippet_sha256":"1088a8909cb90ba4f63535f7ad4cfa8e2cb054c4f995abc15c6645258d1ae661"},{"line":null,"path":"/usr/lib/python3.13/os.py","snippet":"mode, file, args, env, execvpe)\n\n\n __all__.extend([\"spawnv\", \"spawnve\", \"spawnvp\", \"spawnvpe\"])\n\n\nif _exists(\"spawnv\"):\n # These aren't supplied by the basic Windows code\n # but can be easily implemented in Python\n\n def spawnl(mode, file, *args)","snippet_sha256":"67f41eb3649e5832c937dec6623195ca0438c242679dcca9195d8093bdc86141"},{"line":null,"path":"/usr/lib/python3.13/os.py","snippet":"mode, file, args[:-1], env)\n\n\n __all__.extend([\"spawnl\", \"spawnle\"])\n\n\nif _exists(\"spawnvp\"):\n # At the moment, Windows doesn't implement spawnvp[e]","snippet_sha256":"8a642e450e56aa2919444827aecfeddcebedfec1563868dac46a0aab6a212192"},{"line":null,"path":"/usr/lib/python3.13/os.py","snippet":"mode, file, args[:-1], env)\n\n\n __all__.extend([\"spawnlp\", \"spawnlpe\"])\n\n# VxWorks has no user space shell provided. As a result, running\n# command in a shell can't be supported.\nif sys.platform != 'vxworks':\n # Supply os.popen()\n def popen(cmd, mode=\"r\", buffering=-1)","snippet_sha256":"2033895c3c390ce67453343c5fff4a9b09d7010003de83d74697c81958268207"},{"line":78,"path":"/usr/lib/python3.13/bz2.py","snippet":" mode = \"ab\"\n mode_code = _MODE_WRITE\n self._compressor = BZ2Compressor(compresslevel)\n else:\n raise ValueError(\"Invalid mode: %r\" % (mode,))\n\n if isinstance(filename, (str, bytes, os.PathLike)):\n self._fp = _builtin_open(filename, mode)\n self._closefp = True","snippet_sha256":"97ef89f2759b61822cc7143eaa68229446baf8adbe581eccc1c22e3ef6ef5993"},{"line":302,"path":"/usr/lib/python3.13/bz2.py","snippet":"\n \"\"\"\n if \"t\" in mode:\n if \"b\" in mode:\n raise ValueError(\"Invalid mode: %r\" % (mode,))\n else:\n if encoding is not None:\n raise ValueError(\"Argument 'encoding' not supported in binary mode\")\n if errors is not None:","snippet_sha256":"d84e0e791af6af27a653c47c6ed06fdee3472705e1fee8ced9f3f2d277b2f86a"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode in (\"\", \"r\", \"rb\")","snippet_sha256":"1a3d5955d8f557681a7d89176509de24b13c33fc91e6610cc31f5e8d88703dfa"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode = \"rb\"\n mode_code = _MODE_READ\n elif mode in (\"w\", \"wb\")","snippet_sha256":"f299436013f799f6878732c61353b4f2323a53c8f84d202a233604fbe7d697eb"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode = \"wb\"\n mode_code = _MODE_WRITE\n self._compressor = BZ2Compressor(compresslevel)\n elif mode in (\"x\", \"xb\")","snippet_sha256":"7ac00832247ea0c6353fe98e63eb487c0da407322cb63f790b19608754550615"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode = \"xb\"\n mode_code = _MODE_WRITE\n self._compressor = BZ2Compressor(compresslevel)\n elif mode in (\"a\", \"ab\")","snippet_sha256":"6d2cda121f12c67983790195fa75f2c8ddc5314af8b63ef9b8d918ad3a39e80e"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode = \"ab\"\n mode_code = _MODE_WRITE\n self._compressor = BZ2Compressor(compresslevel)\n else:\n raise ValueError(\"Invalid mode: %r\" % (mode,)","snippet_sha256":"0bbc3b3f19616231094c5591be7c8638416b6a85d8ae0b3b5ae52afa6574d1fd"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode(self):\n return 'wb' if self._mode == _MODE_WRITE else 'rb'\n\n def fileno(self):\n \"\"\"Return the file descriptor for the underlying file.\"\"\"\n self._check_not_closed()\n return self._fp.fileno()\n\n def seekable(self)","snippet_sha256":"cf2ecb6795ddf7d5143fc2d1cae3613098f43900fde109ad51ac63e96669db4a"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode == _MODE_READ:\n return self._buffer.tell()\n return self._pos\n\n\ndef open(filename, mode=\"rb\", compresslevel=9,\n encoding=None, errors=None, newline=None):\n \"\"\"Open a bzip2-compressed file in binary or text mode.\n\n The filename argument can be an actual filename (a str, bytes, or\n PathLike object)","snippet_sha256":"8dacf6d760468d066f2ba57941d783af74542dd70da3db6aea3a766b2381fd0b"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode argument can be \"r\", \"rb\", \"w\", \"wb\", \"x\", \"xb\", \"a\" or\n \"ab\" for binary mode, or \"rt\", \"wt\", \"xt\" or \"at\" for text mode.\n The default mode is \"rb\", and the default compresslevel is 9.\n\n For binary mode, this function is equivalent to the BZ2File\n constructor: BZ2File(filename, mode, compresslevel)","snippet_sha256":"63c57ccf065d653b0f5bc4dd3b783a320226511864f76f8bc651b931c608bf48"},{"line":null,"path":"/usr/lib/python3.13/bz2.py","snippet":"mode\")\n if errors is not None:\n raise ValueError(\"Argument 'errors' not supported in binary mode\")\n if newline is not None:\n raise ValueError(\"Argument 'newline' not supported in binary mode\")","snippet_sha256":"babc0d84bca71e099b297240c4acf7600a34e27828e97fceadd5217a4cfa0b3d"},{"line":314,"path":"/usr/lib/python3.13/socket.py","snippet":" those.\n \"\"\"\n # XXX refactor to share code?\n if not set(mode) <= {\"r\", \"w\", \"b\"}:\n raise ValueError(\"invalid mode %r (only r, w, b allowed)\" % (mode,))\n writing = \"w\" in mode\n reading = \"r\" in mode or not writing\n assert reading or writing\n binary = \"b\" in mode","snippet_sha256":"f2e244fbbab55ac4f62cfe753cba3e5bb119168c70c1510e92321bac2f686e8d"},{"line":696,"path":"/usr/lib/python3.13/socket.py","snippet":" # XXX More docs\n\n def __init__(self, sock, mode):\n if mode not in (\"r\", \"w\", \"rw\", \"rb\", \"wb\", \"rwb\"):\n raise ValueError(\"invalid mode: %r\" % mode)\n io.RawIOBase.__init__(self)\n self._sock = sock\n if \"b\" not in mode:\n mode += \"b\"","snippet_sha256":"da4ec7a671e6780f37c659016e048d3233610c355761483d8d2a24ef49cd75ce"},{"line":null,"path":"/usr/lib/python3.13/socket.py","snippet":"mode):\n if mode not in (\"r\", \"w\", \"rw\", \"rb\", \"wb\", \"rwb\")","snippet_sha256":"d71aca4244bbdcf869445b4e1d28463c2de3d2a642d0a2ab2531f032fc92c7c4"},{"line":37,"path":"/usr/lib/python3.13/importlib/resources/_adapters.py","snippet":" if mode == 'r':\n return TextIOWrapper(file, *args, **kwargs)\n elif mode == 'rb':\n return file\n raise ValueError(f\"Invalid mode value '{mode}', only 'r' and 'rb' are supported\")\n\n\nclass CompatibilityFiles:\n \"\"\"","snippet_sha256":"4c2178a588be6f0cf22d26ae5bf65e12cf84897eb0992c6a250a3a6569633454"},{"line":null,"path":"/usr/lib/python3.13/importlib/resources/_adapters.py","snippet":"mode='r', *args, **kwargs):\n if mode == 'r':\n return TextIOWrapper(file, *args, **kwargs)\n elif mode == 'rb':\n return file\n raise ValueError(f\"Invalid mode value '{mode}","snippet_sha256":"eebdd5ddbc6441c8b37815480a47db144c31218dcb46cf54203104e4c6313a98"},{"line":null,"path":"/usr/lib/python3.13/importlib/resources/_adapters.py","snippet":"mode='r', *args, **kwargs):\n raise FileNotFoundError(\"Can't open orphan path\")\n\n def __init__(self, spec)","snippet_sha256":"f0104b36c28d13f2d904f6d6032815642e4753599b0f9f752af9c63e0bf2a311"},{"line":37,"path":"/usr/lib/python3/dist-packages/importlib_resources/_adapters.py","snippet":" if mode == 'r':\n return TextIOWrapper(file, *args, **kwargs)\n elif mode == 'rb':\n return file\n raise ValueError(f\"Invalid mode value '{mode}', only 'r' and 'rb' are supported\")\n\n\nclass CompatibilityFiles:\n \"\"\"","snippet_sha256":"4c2178a588be6f0cf22d26ae5bf65e12cf84897eb0992c6a250a3a6569633454"},{"line":null,"path":"/usr/lib/python3/dist-packages/importlib_resources/_adapters.py","snippet":"mode='r', *args, **kwargs):\n if mode == 'r':\n return TextIOWrapper(file, *args, **kwargs)\n elif mode == 'rb':\n return file\n raise ValueError(f\"Invalid mode value '{mode}","snippet_sha256":"eebdd5ddbc6441c8b37815480a47db144c31218dcb46cf54203104e4c6313a98"},{"line":null,"path":"/usr/lib/python3/dist-packages/importlib_resources/_adapters.py","snippet":"mode='r', *args, **kwargs):\n raise FileNotFoundError(\"Can't open orphan path\")\n\n def __init__(self, spec)","snippet_sha256":"f0104b36c28d13f2d904f6d6032815642e4753599b0f9f752af9c63e0bf2a311"},{"line":284,"path":"/usr/lib/python3/dist-packages/joblib/compressor.py","snippet":" self._compressor = zlib.compressobj(self.compresslevel,\n zlib.DEFLATED, self.wbits,\n zlib.DEF_MEM_LEVEL, 0)\n else:\n raise ValueError(\"Invalid mode: %r\" % (mode,))\n\n if isinstance(filename, str):\n self._fp = io.open(filename, mode)\n self._closefp = True","snippet_sha256":"b83feaa15018841fe212750c85059ddb30368e74d70ca398fd27e5acd8ea2a8b"},{"line":null,"path":"/usr/lib/python3/dist-packages/joblib/compressor.py","snippet":"mode can be 'rb' for reading (default)","snippet_sha256":"aae85679c492bb6beefcf7a8d5d6d3d74700d6b8804c5b4807079487ac99706a"},{"line":null,"path":"/usr/lib/python3/dist-packages/joblib/compressor.py","snippet":"mode is 'wb', compresslevel can be a number between 1\n and 9 specifying the level of compression: 1 produces the least\n compression, and 9 produces the most compression. 3 is the default.\n \"\"\"\n\n wbits = zlib.MAX_WBITS\n\n def __init__(self, filename, mode=\"rb\", compresslevel=3)","snippet_sha256":"003809d184c47f7f437a08cce3ecbae33dbdbff67965247170f31ec4cede9af3"},{"line":null,"path":"/usr/lib/python3/dist-packages/joblib/compressor.py","snippet":"mode can be 'rb' for reading (default)","snippet_sha256":"aae85679c492bb6beefcf7a8d5d6d3d74700d6b8804c5b4807079487ac99706a"},{"line":null,"path":"/usr/lib/python3/dist-packages/joblib/compressor.py","snippet":"mode is 'wb', compresslevel can be a number between 1\n and 9 specifying the level of compression: 1 produces the least\n compression, and 9 produces the most compression. 3 is the default.\n \"\"\"\n\n wbits = 31 # zlib compressor/decompressor wbits value for gzip format.\n\n\nclass GzipCompressorWrapper(CompressorWrapper)","snippet_sha256":"118d491264bce123e46439bc5141f8121cd22b84c14bf85738a4ef5729cbf049"},{"line":843,"path":"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py","snippet":"def test_binary_zlibfile_invalid_modes(tmpdir, bad_mode):\n filename = tmpdir.join('test.pkl').strpath\n with raises(ValueError) as excinfo:\n BinaryZlibFile(filename, bad_mode)\n excinfo.match(\"Invalid mode\")\n\n\n@parametrize('bad_file', [1, (), {}])\ndef test_binary_zlibfile_invalid_filename_type(bad_file):","snippet_sha256":"16f572d0c67740d65c68a488e846c36a11c27ad741e696f3a2a9898a2f5250a9"},{"line":null,"path":"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py","snippet":"mode \"r+\" is not compatible with compressed '\n f'file {this_filename}. \"r+\" flag will be ignored.'\n )\n\n\n@with_numpy\n@parametrize('cache_size', [None, 0, 10])\ndef test_cache_size_warning(tmpdir, cache_size)","snippet_sha256":"787f7e417e8999f967e211d01933ffd362c877949bae26d83b7f24ddef2f11bd"},{"line":null,"path":"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py","snippet":"mode \"%(mmap_mode)s\" '\n 'flag will be ignored.' % {'fileobj': f, 'mmap_mode': 'r+'})\n\n\n@with_numpy\ndef test_file_handle_persistence_in_memory_mmap():\n obj = np.random.random((10, 10)","snippet_sha256":"3d5faddc1c48f4f9d57657d85727285857ddf6bd26f72fc50d68d9be6369e739"},{"line":null,"path":"/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py","snippet":"mode option will be '\n 'ignored.' % {'mmap_mode': 'r+'})\n\n\n@parametrize('data', [b'a little data as bytes.',\n # More bytes\n 10000 * \"{}\".format(\n random.randint(0, 1000)","snippet_sha256":"a38063fa1d44034c0126a467e54f70a21e660057bfc81995d5bf2dd3da06dc9c"},{"line":60,"path":"/usr/lib/python3/dist-packages/numpy/lib/_datasource.py","snippet":"\n \"\"\"\n if \"t\" in mode:\n if \"b\" in mode:\n raise ValueError(\"Invalid mode: %r\" % (mode,))\n else:\n if encoding is not None:\n raise ValueError(\"Argument 'encoding' not supported in binary mode\")\n if newline is not None:","snippet_sha256":"b615b2f7481d5a11ca3f793098591a6d9f0a168075e709c78e1afbbb459f8bce"},{"line":null,"path":"/usr/lib/python3/dist-packages/numpy/lib/_datasource.py","snippet":"mode\")\n if newline is not None:\n raise ValueError(\"Argument 'newline' not supported in binary mode\")","snippet_sha256":"c2fd905ff8b8dd7dd5ddd8a5cbe10d6cc78377d1b6a083ef496b121e1b8025dd"},{"line":133,"path":"/usr/lib/python3/dist-packages/urllib3/util/ssltransport.py","snippet":" This is unfortunately a copy and paste of socket.py makefile with small\n changes to point to the socket directly.\n \"\"\"\n if not set(mode) <= {\"r\", \"w\", \"b\"}:\n raise ValueError(f\"invalid mode {mode!r} (only r, w, b allowed)\")\n\n writing = \"w\" in mode\n reading = \"r\" in mode or not writing\n assert reading or writing","snippet_sha256":"5b95cf8c9b43239217bff19d22be21906a3913bf281ca238ec10ff2f92ae4631"}]},"gitea_changed":false,"mode_evidence_found":true,"mutation_outcome":"NO_MUTATION","private_addresses_included":false,"process_ancestry":[{"cmdline":{"argc":3,"argv_basenames":["python3","-B","probe_adapter_mode.py"],"cmdline_sha256":"8fede899b744730572dda2f805483c43d019f1cf4cce1d070f6dc70140112931"},"cwd":"/","exe":"/usr/bin/python3.13","pid_relation":0},{"cmdline":{"argc":7,"argv_basenames":["timeout","--foreground","--preserve-status","300","python3","-B","probe_adapter_mode.py"],"cmdline_sha256":"6848db4d8a3fa589d0fa4df84013fd90e59548cb18de2d937ad966cc8f849cf6"},"cwd":"/","exe":"/usr/bin/timeout","pid_relation":1},{"cmdline":{"argc":9,"argv_basenames":["bash","homelab-chat-run","HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R4-MODE-SCHEMA-READ-ONLY-20260806T034000Z","verify","homelab-kb-v2-r3-rollback-artifacts-r4-mode-schema-read-only","--","python3","-B","probe_adapter_mode.py"],"cmdline_sha256":"1ddc9e0e4b3d8a7402f5a9ce2aff17220c36122a7840cad3ffad52f28c8ea6ec"},"cwd":"/","exe":"/usr/bin/bash","pid_relation":2},{"cmdline":{"argc":5,"argv_basenames":["python3","-B","homelab-command-adapter","--worker","FKLAQD62AI"],"cmdline_sha256":"1f27f7c4adcf322d93b9170e88bb743792d2c3a5ff0d0d0dcc438b4247ed951f"},"cwd":"/","exe":"/usr/bin/python3.13","pid_relation":3},{"cmdline":{"argc":4,"argv_basenames":["python3","-B","homelab-command-adapter","--serve"],"cmdline_sha256":"9d9189a1b62d8fb7a5f5713828ef28ef010f0f8109f9b3174f0ffbbc8b0f62a5"},"cwd":"/","exe":"/usr/bin/python3.13","pid_relation":4},{"cmdline":{"argc":1,"argv_basenames":["init"],"cmdline_sha256":"6628c1ade33319fc12730a87856ccdb1e4eaed9a0aa2b0bce0535a97a232f272"},"cwd":"/","exe":"/usr/lib/systemd/systemd","pid_relation":5}],"production_changed":false,"purpose":"READ_ONLY_DISCOVER_ADAPTER_MODE_ENUM","rollback_restored":null,"rollback_started":false,"sanitized":true,"schema":2,"searched_roots":["/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e/payload","/var/lib/homelab-command-adapter/capsules/2a96080fda0203db3c59f7d11dc70319d314bd12313d217d94905ff14eeb929e","/usr/bin","/usr","/usr/lib/systemd","/usr/lib"],"secrets_included":false,"services_changed":false,"status":"AUDIT_COMPLETE"} +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z","rollback_restored":null,"rollback_started":false,"status":"OK","version":1} +{"adapter_process_count":2,"adapter_processes":[{"argv_prefix":["/usr/bin/python3","-B","/usr/local/sbin/homelab-command-adapter","--worker"],"candidates":[{"basis":"process_root_absolute","bytes":86019,"mode":"0o755","path":"/proc/1487725/root/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"},{"basis":"host_absolute","bytes":86019,"mode":"0o755","path":"/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"}],"cmdline_sha256":"d889200aac33977ddb86bfaf646bc52b74137899de0d4d3f17c98c702a8964ed","cwd":"/","exe":"/usr/bin/python3.13","pid_relation":3,"script_arg":"/usr/local/sbin/homelab-command-adapter"},{"argv_prefix":["/usr/bin/python3","-B","/usr/local/sbin/homelab-command-adapter","--serve"],"candidates":[{"basis":"process_root_absolute","bytes":86019,"mode":"0o755","path":"/proc/1131444/root/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"},{"basis":"host_absolute","bytes":86019,"mode":"0o755","path":"/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"}],"cmdline_sha256":"9d9189a1b62d8fb7a5f5713828ef28ef010f0f8109f9b3174f0ffbbc8b0f62a5","cwd":"/","exe":"/usr/bin/python3.13","pid_relation":4,"script_arg":"/usr/local/sbin/homelab-command-adapter"}],"backup_changed":false,"changes_made":false,"command_id":"HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R5-ADAPTER-SOURCE-READ-ONLY-20260806T034500Z","discovery_status":"EXACT_ADAPTER_SOURCE_AND_MODE_ENUM_FOUND","exact_mode_values":["change","read-only","transport-test","verify"],"gitea_changed":false,"mutation_outcome":"NO_MUTATION","private_addresses_included":false,"production_changed":false,"purpose":"READ_ONLY_RESOLVE_EXACT_ADAPTER_SOURCE_AND_MODE_ENUM","rollback_restored":null,"rollback_started":false,"sanitized":true,"schema":2,"secrets_included":false,"services_changed":false,"source_results":[{"basis":"process_root_absolute","bytes":86019,"evidence":{"component_string_literal_found":false,"exact_mode_values":["change","read-only","transport-test","verify"],"invalid_mode_literal_found":true,"snippets":[{"basis":"mode_assignment","snippet":"ALLOWED_MODES = {\n \"read-only\",\n \"verify\",\n \"change\",\n \"transport-test\",\n}","snippet_sha256":"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702","values":["change","read-only","transport-test","verify"]},{"basis":"validator_error_context","line":371,"snippet":" document.get(\"summary\"),\n \"summary\",\n minimum=1,\n maximum=2000,\n )\n\n mode = document.get(\"mode\")\n if mode not in ALLOWED_MODES:\n raise AdapterError(\"invalid mode\")\n if document.get(\"target\") != \"pve01\":\n raise AdapterError(\"only pve01 target is supported\")\n\n timeout_seconds = document.get(\"timeout_seconds\")\n if (\n not isinstance(timeout_seconds, int)\n or isinstance(timeout_seconds, bool)\n or not 1 <= timeout_seconds <= 7200","snippet_sha256":"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c"}]},"identity_basis":"process_argv_script","mode":"0o755","path":"/proc/1487725/root/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"},{"basis":"host_absolute","bytes":86019,"evidence":{"component_string_literal_found":false,"exact_mode_values":["change","read-only","transport-test","verify"],"invalid_mode_literal_found":true,"snippets":[{"basis":"mode_assignment","snippet":"ALLOWED_MODES = {\n \"read-only\",\n \"verify\",\n \"change\",\n \"transport-test\",\n}","snippet_sha256":"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702","values":["change","read-only","transport-test","verify"]},{"basis":"validator_error_context","line":371,"snippet":" document.get(\"summary\"),\n \"summary\",\n minimum=1,\n maximum=2000,\n )\n\n mode = document.get(\"mode\")\n if mode not in ALLOWED_MODES:\n raise AdapterError(\"invalid mode\")\n if document.get(\"target\") != \"pve01\":\n raise AdapterError(\"only pve01 target is supported\")\n\n timeout_seconds = document.get(\"timeout_seconds\")\n if (\n not isinstance(timeout_seconds, int)\n or isinstance(timeout_seconds, bool)\n or not 1 <= timeout_seconds <= 7200","snippet_sha256":"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c"}]},"identity_basis":"process_argv_script","mode":"0o755","path":"/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"},{"basis":"process_root_absolute","bytes":86019,"evidence":{"component_string_literal_found":false,"exact_mode_values":["change","read-only","transport-test","verify"],"invalid_mode_literal_found":true,"snippets":[{"basis":"mode_assignment","snippet":"ALLOWED_MODES = {\n \"read-only\",\n \"verify\",\n \"change\",\n \"transport-test\",\n}","snippet_sha256":"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702","values":["change","read-only","transport-test","verify"]},{"basis":"validator_error_context","line":371,"snippet":" document.get(\"summary\"),\n \"summary\",\n minimum=1,\n maximum=2000,\n )\n\n mode = document.get(\"mode\")\n if mode not in ALLOWED_MODES:\n raise AdapterError(\"invalid mode\")\n if document.get(\"target\") != \"pve01\":\n raise AdapterError(\"only pve01 target is supported\")\n\n timeout_seconds = document.get(\"timeout_seconds\")\n if (\n not isinstance(timeout_seconds, int)\n or isinstance(timeout_seconds, bool)\n or not 1 <= timeout_seconds <= 7200","snippet_sha256":"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c"}]},"identity_basis":"process_argv_script","mode":"0o755","path":"/proc/1131444/root/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"},{"basis":"host_absolute","bytes":86019,"evidence":{"component_string_literal_found":false,"exact_mode_values":["change","read-only","transport-test","verify"],"invalid_mode_literal_found":true,"snippets":[{"basis":"mode_assignment","snippet":"ALLOWED_MODES = {\n \"read-only\",\n \"verify\",\n \"change\",\n \"transport-test\",\n}","snippet_sha256":"991d590d09132346741471b688f55caa08151949f8c60719950ea547df9e8702","values":["change","read-only","transport-test","verify"]},{"basis":"validator_error_context","line":371,"snippet":" document.get(\"summary\"),\n \"summary\",\n minimum=1,\n maximum=2000,\n )\n\n mode = document.get(\"mode\")\n if mode not in ALLOWED_MODES:\n raise AdapterError(\"invalid mode\")\n if document.get(\"target\") != \"pve01\":\n raise AdapterError(\"only pve01 target is supported\")\n\n timeout_seconds = document.get(\"timeout_seconds\")\n if (\n not isinstance(timeout_seconds, int)\n or isinstance(timeout_seconds, bool)\n or not 1 <= timeout_seconds <= 7200","snippet_sha256":"b33f621240ebc8356f9c52430facf2bffb61cc560a8f38b9d2c8fe1e5774b04c"}]},"identity_basis":"process_argv_script","mode":"0o755","path":"/usr/local/sbin/homelab-command-adapter","regular_file":true,"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"}],"status":"AUDIT_COMPLETE"} OUTPUT_END CHAT_OUTPUT_END