CHAT_OUTPUT_BEGIN
COMMAND_ID=HOMELAB-SKLADCHIK-HANDOFF-MUTATION-CONTRACT-READ-ONLY-20260805T132500Z
STATUS=OK
RC=0
HOST=pve01
MODE=verify
COMPONENT=skladchik-handoff-mutation-contract-ro
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83
COMMAND_SHA256=a3b0c734b66148908c75cebaabbc4fd76c8102414584c20c6fdf04a6ef01f0b4
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=77fd1a6ce83e382a7d9873abbeaed83e449a67837978c2799713efdcb62dc8e5
SANITIZED_OUTPUT_SHA256=77fd1a6ce83e382a7d9873abbeaed83e449a67837978c2799713efdcb62dc8e5
OUTPUT_BEGIN
HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-HANDOFF-MUTATION-CONTRACT-READ-ONLY-20260805T132500Z","command_rc":0,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":0,"rollback_restored":null,"rollback_started":false,"status":"OK","version":1}
{"adapter":{"basename":"homelab-command-adapter","mode_risk_contract":{"candidate_values":["HIGH","READ_ONLY","REVERSIBLE","available","change","change capsule must declare production change","change capsule requires available rollback","change capsule risk must be REVERSIBLE or HIGH","invalid mode","invalid risk","non-change capsule cannot declare changes","non-change capsule risk must be READ_ONLY","production"],"comparisons":[{"line":370,"names":["mode"],"segment_sha256":"fb9813b54c11137bed7aedcae743fc0a0db019a66562c6f3380fce1a69f76370","text":"if mode not in ALLOWED_MODES:\n        raise AdapterError(\"invalid mode\")","values":["invalid mode"]},{"line":384,"names":["risk"],"segment_sha256":"e49cc412f4f63f1515bfc021820cb8d7f9640f950ea9b8a0f13dad14a60d5839","text":"if risk not in ALLOWED_RISKS:\n        raise AdapterError(\"invalid risk\")","values":["invalid risk"]},{"line":386,"names":["mode","risk"],"segment_sha256":"bb56e08695ce4980c221165b414b27f3afc246b8b5c1d3402c1c831292acef5a","text":"if mode == \"change\" and risk not in {\"REVERSIBLE\", \"HIGH\"}:\n        raise AdapterError(\"change capsule risk must be REVERSIBLE or HIGH\")","values":["HIGH","REVERSIBLE","change","change capsule risk must be REVERSIBLE or HIGH"]},{"line":386,"names":["mode","risk"],"segment_sha256":"1c673162449940fc60421bc5517f24f7a30580c824b6dfb0de885cd7b98650cb","text":"mode == \"change\" and risk not in {\"REVERSIBLE\", \"HIGH\"}","values":["HIGH","REVERSIBLE","change"]},{"line":386,"names":["mode"],"segment_sha256":"8917390eaf3d01fb76a51dfd8243748ec4bd46c94d93ae4d47382246b8e52a69","text":"mode == \"change\"","values":["change"]},{"line":386,"names":["risk"],"segment_sha256":"724ee6c7d954e249f31d377b059766cc67b75131513b547c93479821daff1665","text":"risk not in {\"REVERSIBLE\", \"HIGH\"}","values":["HIGH","REVERSIBLE"]},{"line":388,"names":["mode","risk"],"segment_sha256":"c7c3a84d312747700b4f14f46c2d4b5031e7cbcd8cf567c736a690d6d377ce84","text":"if mode != \"change\" and risk != \"READ_ONLY\":\n        raise AdapterError(\"non-change capsule risk must be READ_ONLY\")","values":["READ_ONLY","change","non-change capsule risk must be READ_ONLY"]},{"line":388,"names":["mode","risk"],"segment_sha256":"434a09e2c0c02c095361b91cc1e32ab1bb1ffe4dae45c65b541d010268040e03","text":"mode != \"change\" and risk != \"READ_ONLY\"","values":["READ_ONLY","change"]},{"line":388,"names":["mode"],"segment_sha256":"b11dada48a10d3dd45c37ed5841dfd90fe39169d56a8d87bb3db50de138540ce","text":"mode != \"change\"","values":["change"]},{"line":388,"names":["risk"],"segment_sha256":"79f7afe950f69ed28d3f9245007eb96ade840ed1e6b3dbe1b06c2ff5d55038e1","text":"risk != \"READ_ONLY\"","values":["READ_ONLY"]},{"line":399,"names":["mode"],"segment_sha256":"d640c7dc4427bd639bf28465290f4701b93d1fddd4adee8a03f1d80ce32eb387","text":"if mode != \"change\" and any(flags.values()):\n        raise AdapterError(\n            \"non-change capsule cannot declare changes\"\n        )","values":["change","non-change capsule cannot declare changes"]},{"line":399,"names":["mode"],"segment_sha256":"266d98ea980186e8471babd7f4c560a932d94a83be926a459beaed430da7dc84","text":"mode != \"change\" and any(flags.values())","values":["change"]},{"line":399,"names":["mode"],"segment_sha256":"b11dada48a10d3dd45c37ed5841dfd90fe39169d56a8d87bb3db50de138540ce","text":"mode != \"change\"","values":["change"]},{"line":403,"names":["mode"],"segment_sha256":"c24b94f6049271719b2ea5316cfc4d72d3cef3c615462c5648b24974163c497a","text":"if mode == \"change\" and not flags[\"production\"]:\n        raise AdapterError(\n            \"change capsule must declare production change\"\n        )","values":["change","change capsule must declare production change","production"]},{"line":403,"names":["mode"],"segment_sha256":"f0c2605aac2630fd54fda61abe05546ff3d3d977c4a6a50125e020869a49301a","text":"mode == \"change\" and not flags[\"production\"]","values":["change","production"]},{"line":403,"names":["mode"],"segment_sha256":"8917390eaf3d01fb76a51dfd8243748ec4bd46c94d93ae4d47382246b8e52a69","text":"mode == \"change\"","values":["change"]}],"raises":[{"line":371,"segment_sha256":"6d78e0909f5bb1c43cef5c9bc042720485fd0fbcb2762ccf45b7ecae433a904b","text":"raise AdapterError(\"invalid mode\")"},{"line":385,"segment_sha256":"87216e6143dce952e5941a434e807e0a5ed4f39b1e04aca99176a8aa6453e1ad","text":"raise AdapterError(\"invalid risk\")"},{"line":387,"segment_sha256":"43098cc02c674830f07b2d9438e5a31307585cf955039af501a23b8f05600037","text":"raise AdapterError(\"change capsule risk must be REVERSIBLE or HIGH\")"},{"line":389,"segment_sha256":"a00c40ee846c32cb3b5198553cb60d4967d4ea2b06f65174fd436ca696009f82","text":"raise AdapterError(\"non-change capsule risk must be READ_ONLY\")"},{"line":542,"segment_sha256":"e4509eefed0a60ced14742d43e40dd528988c46b11c81a162eaf1b97b5c4969c","text":"raise AdapterError(\"invalid payload mode\")"}]},"process_sites":[{"call":"subprocess.run","line":664,"names":[],"segment_sha256":"fbe36f5d1ed7b23d545f105135de2993138aa4a8dafc9f5419d7c37b36deebae","stderr":"subprocess.PIPE","stdin":"subprocess.DEVNULL","stdout":"subprocess.PIPE","text":"subprocess.run(\n        args,\n        stdin=subprocess.DEVNULL,\n        stdout=subprocess.PIPE,\n        stderr=subprocess.PIPE,\n        text=True,\n        check=False,\n        timeout=timeout,\n        env=(SAFE_ENV if env is None else env),\n    )"},{"call":"subprocess.Popen","line":1626,"names":[],"segment_sha256":"90bb736720d2877f6704459828dc5551619ba00834a4660e9ed9c7f86e05b8c6","stderr":"subprocess.STDOUT","stdin":"subprocess.DEVNULL","stdout":"handle","text":"subprocess.Popen(\n                    [\n                        sys.executable,\n                        \"-B\",\n                        str(Path(__file__).resolve()),\n                        \"--worker\",\n                        short_id,\n                    ],\n                    stdin=subprocess.DEVNULL,\n                    stdout=handle,\n                    stderr=subprocess.STDOUT,\n                    env=SAFE_ENV,\n                    start_new_session=True,\n                    close_fds=True,\n                )"},{"call":"subprocess.Popen","line":2056,"names":[],"segment_sha256":"4582da2d6b8e31108deedee5a5d6b877788db5da0f6d52120a605d76d0037d97","stderr":"subprocess.STDOUT","stdin":"subprocess.DEVNULL","stdout":"subprocess.PIPE","text":"subprocess.Popen(\n        args,\n        stdin=subprocess.DEVNULL,\n        stdout=subprocess.PIPE,\n        stderr=subprocess.STDOUT,\n        text=True,\n        env=environment,\n        start_new_session=True,\n        close_fds=True,\n    )"}],"sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d"},"analysis_ready":true,"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-HANDOFF-MUTATION-CONTRACT-READ-ONLY-20260805T132500Z","command_rc":0,"mutation_outcome":"NO_MUTATION","next_action":"BUILD_SHA_GUARDED_SECRET_HANDOFF_TRANSACTION","output_truncated_in_json":false,"rc":0,"read_only":true,"required_transaction_guards":{"atomic_replace":true,"automatic_exact_rollback":true,"byte_for_byte_backup":true,"candidate_compile_and_selftest":true,"candidate_in_temporary_directory":true,"expected_sha_preconditions":true,"read_exact_current_sources":true,"secret_never_in_capsule_argv_output_or_evidence":true,"service_health_verification":true},"rollback_restored":null,"rollback_started":false,"root_cause_classification":"MUTATION_CAPSULE_AND_STDIN_CONTRACT_CAPTURED","runner_candidates":[],"schema":1,"status":"OK"}

OUTPUT_END
CHAT_OUTPUT_END
