CHAT_OUTPUT_BEGIN
COMMAND_ID=HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R6-RISK-SCHEMA-READ-ONLY-20260806T035200Z
STATUS=OK
RC=0
HOST=pve01
MODE=verify
COMPONENT=homelab-kb-v2-r3-rollback-artifacts-r6-risk-schema-read-only
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83
COMMAND_SHA256=ff45c88a0d1d4780d91752952c56fc75cfdcd21f555d75ebc4203c57b7b532f5
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=5b3b7e6398d26e93c0b286604a828b353e2e7aa222c732925faf93f91bb3c114
SANITIZED_OUTPUT_SHA256=5b3b7e6398d26e93c0b286604a828b353e2e7aa222c732925faf93f91bb3c114
OUTPUT_BEGIN
HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R6-RISK-SCHEMA-READ-ONLY-20260806T035200Z","rollback_restored":null,"rollback_started":false,"status":"OK","version":1}
{"backup_changed":false,"changes_made":false,"command_id":"HOMELAB-KB-V2-R3-ROLLBACK-ARTIFACTS-R6-RISK-SCHEMA-READ-ONLY-20260806T035200Z","exact_risk_values":["HIGH","READ_ONLY","REVERSIBLE"],"gitea_changed":false,"invalid_risk_literal_found":true,"mutation_outcome":"NO_MUTATION","private_addresses_included":false,"production_changed":false,"purpose":"READ_ONLY_EXACT_ADAPTER_RISK_ENUM","rollback_restored":null,"rollback_started":false,"sanitized":true,"schema":2,"secrets_included":false,"services_changed":false,"snippets":[{"basis":"risk_assignment","snippet":"ALLOWED_RISKS = {\n    \"READ_ONLY\",\n    \"REVERSIBLE\",\n    \"HIGH\",\n}","snippet_sha256":"3fb1a623c396c6f52340e3fd2a21dcb3bf8ef20853577b1f546ef06365ce93b1","values":["HIGH","READ_ONLY","REVERSIBLE"]},{"basis":"risk_not_in","snippet":"risk not in {\"REVERSIBLE\", \"HIGH\"}","snippet_sha256":"724ee6c7d954e249f31d377b059766cc67b75131513b547c93479821daff1665","values":["HIGH","REVERSIBLE"]},{"basis":"validator_error_context","line":385,"snippet":"        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\n    ):\n        raise AdapterError(\"invalid timeout_seconds\")\n\n    risk = document.get(\"risk\")\n    if risk not in ALLOWED_RISKS:\n        raise AdapterError(\"invalid risk\")\n    if mode == \"change\" and risk not in {\"REVERSIBLE\", \"HIGH\"}:\n        raise AdapterError(\"change capsule risk must be REVERSIBLE or HIGH\")\n    if mode != \"change\" and risk != \"READ_ONLY\":\n        raise AdapterError(\"non-change capsule risk must be READ_ONLY\")\n\n    flags = document.get(\"change_flags\")\n    if not isinstance(flags, dict):\n        raise AdapterError(\"change_flags must be object\")\n    if set(flags) != ALLOWED_CHANGE_FLAGS:\n        raise AdapterError(\"change_flags keys invalid\")\n    if any(type(value) is not bool for value in flags.values()):\n        raise AdapterError(\"change_flags values must be boolean\")\n\n    if mode != \"change\" and any(flags.values()):","snippet_sha256":"9e3fc0cf1111e8c480a659092819a244d1b0d701eaec4c5c544dd3aed65280b7"}],"source_bytes":86019,"source_path":"/usr/local/sbin/homelab-command-adapter","source_sha256":"a1a7a615c99568bf915d084cc476f0ebf54ab0eedf3ecd578c4b0e072f58c43d","status":"AUDIT_COMPLETE"}

OUTPUT_END
CHAT_OUTPUT_END
