diff --git a/runtime/history/NEWFI-260907-PORTAL200-EXACTCONTRACT1.json b/runtime/history/NEWFI-260907-PORTAL200-EXACTCONTRACT1.json new file mode 100644 index 00000000..d6a85b6f --- /dev/null +++ b/runtime/history/NEWFI-260907-PORTAL200-EXACTCONTRACT1.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "NEWFI-260907-PORTAL200-EXACTCONTRACT1", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "newfi-portal200-exact-contract-rca", + "started_at_utc": "2026-09-07T11:46:11Z", + "finished_at_utc": "2026-09-07T11:46:11Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "5bd354cb6bb54016033f325052796b8170f2e6fc0a78d0efbc92afa6a3ef220e", + "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": "88fb0630df937b11e2e5f63a245a9d656a8ea26516cb5c24b633799687757174", + "sanitized_output_sha256": "88fb0630df937b11e2e5f63a245a9d656a8ea26516cb5c24b633799687757174", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "NEWFI58_BEGIN\nCOMMAND_ID=NEWFI-260907-PORTAL200-EXACTCONTRACT1\nMUTATION_SCOPE=NONE_READ_ONLY\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nRUNNER_LINES_50_85=[{\"line\":50,\"text\":\" raise ValueError(\\\"unsupported version\\\")\"},{\"line\":51,\"text\":\" if document.get(\\\"command_id\\\") != command_id:\"},{\"line\":52,\"text\":\" raise ValueError(\\\"command_id mismatch\\\")\"},{\"line\":53,\"text\":\" status = document.get(\\\"status\\\")\"},{\"line\":54,\"text\":\" if status not in {\\\"OK\\\", \\\"BLOCKED\\\", \\\"FAIL\\\"}:\"},{\"line\":55,\"text\":\" raise ValueError(\\\"invalid status\\\")\"},{\"line\":56,\"text\":\" changes = document.get(\\\"changes_made\\\")\"},{\"line\":57,\"text\":\" rollback_started = document.get(\\\"rollback_started\\\")\"},{\"line\":58,\"text\":\" rollback_restored = document.get(\\\"rollback_restored\\\")\"},{\"line\":59,\"text\":\" if not isinstance(changes, bool):\"},{\"line\":60,\"text\":\" raise ValueError(\\\"changes_made must be boolean\\\")\"},{\"line\":61,\"text\":\" if not isinstance(rollback_started, bool):\"},{\"line\":62,\"text\":\" raise ValueError(\\\"rollback_started must be boolean\\\")\"},{\"line\":63,\"text\":\" if rollback_restored is not None and not isinstance(\"},{\"line\":64,\"text\":\" rollback_restored,\"},{\"line\":65,\"text\":\" bool,\"},{\"line\":66,\"text\":\" ):\"},{\"line\":67,\"text\":\" raise ValueError(\"},{\"line\":68,\"text\":\" \\\"rollback_restored must be boolean or null\\\"\"},{\"line\":69,\"text\":\" )\"},{\"line\":70,\"text\":\" if rollback_restored is True and rollback_started is not True:\"},{\"line\":71,\"text\":\" raise ValueError(\"},{\"line\":72,\"text\":\" \\\"rollback_restored without rollback_started\\\"\"},{\"line\":73,\"text\":\" )\"},{\"line\":74,\"text\":\" if rollback_started is True and changes is not True:\"},{\"line\":75,\"text\":\" raise ValueError(\"},{\"line\":76,\"text\":\" \\\"rollback_started without changes\\\"\"},{\"line\":77,\"text\":\" )\"},{\"line\":78,\"text\":\" if status == \\\"BLOCKED\\\" and (\"},{\"line\":79,\"text\":\" changes\"},{\"line\":80,\"text\":\" or rollback_started\"},{\"line\":81,\"text\":\" or command_rc != 2\"},{\"line\":82,\"text\":\" ):\"},{\"line\":83,\"text\":\" raise ValueError(\"},{\"line\":84,\"text\":\" \\\"BLOCKED contract inconsistent with rc/mutation\\\"\"},{\"line\":85,\"text\":\" )\"}]\nGITEA_FETCH_RC=0\nAPPLY3_HISTORY_SHA256=f3ea3fcebd7b182e64db6e963a34f1b90baca0d08477e25e27bf88c48b33611c\nAPPLY3_SELECTED_LINES=[\"PORTAL200_GIT_PRESTATE={\\\"branch\\\":\\\"implementation/newfi-closed-mvp-20260906\\\",\\\"clean\\\":true,\\\"head\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\",\\\"remote\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\"}\",\"PORTAL200_PREFLIGHT=PASS\",\"PORTAL200_FAILURE=IMPORT_FAILED\",\"PORTAL200_FAILURE_STAGING_ROLLBACK=PASS\",\"HOMELAB_RESULT_CONTRACT={\\\"changes_made\\\":false,\\\"command_id\\\":\\\"NEWFI-260907-PORTAL200-APPLY3\\\",\\\"rollback_restored\\\":true,\\\"rollback_started\\\":true,\\\"status\\\":\\\"FAIL\\\",\\\"version\\\":1}\"]\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"NEWFI-260907-PORTAL200-EXACTCONTRACT1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\nNEWFI58_END\n" +} diff --git a/runtime/history/NEWFI-260907-PORTAL200-EXACTCONTRACT1.txt b/runtime/history/NEWFI-260907-PORTAL200-EXACTCONTRACT1.txt new file mode 100644 index 00000000..a4eb243c --- /dev/null +++ b/runtime/history/NEWFI-260907-PORTAL200-EXACTCONTRACT1.txt @@ -0,0 +1,42 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=NEWFI-260907-PORTAL200-EXACTCONTRACT1 +STATUS=OK +RC=0 +HOST=pve01 +MODE=read-only +COMPONENT=newfi-portal200-exact-contract-rca +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=5bd354cb6bb54016033f325052796b8170f2e6fc0a78d0efbc92afa6a3ef220e +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=88fb0630df937b11e2e5f63a245a9d656a8ea26516cb5c24b633799687757174 +SANITIZED_OUTPUT_SHA256=88fb0630df937b11e2e5f63a245a9d656a8ea26516cb5c24b633799687757174 +OUTPUT_BEGIN +NEWFI58_BEGIN +COMMAND_ID=NEWFI-260907-PORTAL200-EXACTCONTRACT1 +MUTATION_SCOPE=NONE_READ_ONLY +RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d +RUNNER_LINES_50_85=[{"line":50,"text":" raise ValueError(\"unsupported version\")"},{"line":51,"text":" if document.get(\"command_id\") != command_id:"},{"line":52,"text":" raise ValueError(\"command_id mismatch\")"},{"line":53,"text":" status = document.get(\"status\")"},{"line":54,"text":" if status not in {\"OK\", \"BLOCKED\", \"FAIL\"}:"},{"line":55,"text":" raise ValueError(\"invalid status\")"},{"line":56,"text":" changes = document.get(\"changes_made\")"},{"line":57,"text":" rollback_started = document.get(\"rollback_started\")"},{"line":58,"text":" rollback_restored = document.get(\"rollback_restored\")"},{"line":59,"text":" if not isinstance(changes, bool):"},{"line":60,"text":" raise ValueError(\"changes_made must be boolean\")"},{"line":61,"text":" if not isinstance(rollback_started, bool):"},{"line":62,"text":" raise ValueError(\"rollback_started must be boolean\")"},{"line":63,"text":" if rollback_restored is not None and not isinstance("},{"line":64,"text":" rollback_restored,"},{"line":65,"text":" bool,"},{"line":66,"text":" ):"},{"line":67,"text":" raise ValueError("},{"line":68,"text":" \"rollback_restored must be boolean or null\""},{"line":69,"text":" )"},{"line":70,"text":" if rollback_restored is True and rollback_started is not True:"},{"line":71,"text":" raise ValueError("},{"line":72,"text":" \"rollback_restored without rollback_started\""},{"line":73,"text":" )"},{"line":74,"text":" if rollback_started is True and changes is not True:"},{"line":75,"text":" raise ValueError("},{"line":76,"text":" \"rollback_started without changes\""},{"line":77,"text":" )"},{"line":78,"text":" if status == \"BLOCKED\" and ("},{"line":79,"text":" changes"},{"line":80,"text":" or rollback_started"},{"line":81,"text":" or command_rc != 2"},{"line":82,"text":" ):"},{"line":83,"text":" raise ValueError("},{"line":84,"text":" \"BLOCKED contract inconsistent with rc/mutation\""},{"line":85,"text":" )"}] +GITEA_FETCH_RC=0 +APPLY3_HISTORY_SHA256=f3ea3fcebd7b182e64db6e963a34f1b90baca0d08477e25e27bf88c48b33611c +APPLY3_SELECTED_LINES=["PORTAL200_GIT_PRESTATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote\":\"06bab5acd124e768f70305b3d7eca2f595871890\"}","PORTAL200_PREFLIGHT=PASS","PORTAL200_FAILURE=IMPORT_FAILED","PORTAL200_FAILURE_STAGING_ROLLBACK=PASS","HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260907-PORTAL200-APPLY3\",\"rollback_restored\":true,\"rollback_started\":true,\"status\":\"FAIL\",\"version\":1}"] +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"NEWFI-260907-PORTAL200-EXACTCONTRACT1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} +NEWFI58_END + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 1769370b..d6a85b6f 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "NEWFI-260907-PORTAL200-CONTRACTRULE1", + "command_id": "NEWFI-260907-PORTAL200-EXACTCONTRACT1", "status": "OK", "rc": 0, "host": "pve01", "mode": "read-only", - "component": "newfi-portal200-contract-rule-rca", - "started_at_utc": "2026-09-07T11:36:30Z", - "finished_at_utc": "2026-09-07T11:36:30Z", + "component": "newfi-portal200-exact-contract-rca", + "started_at_utc": "2026-09-07T11:46:11Z", + "finished_at_utc": "2026-09-07T11:46:11Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", - "command_sha256": "99c8bb9eac94ce1eada078fce55bc35c4edc8e3462cc495df345a313b0d5ae13", + "command_sha256": "5bd354cb6bb54016033f325052796b8170f2e6fc0a78d0efbc92afa6a3ef220e", "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": "73bd998618637ad3029540bf984bd03793bc3bfbec9d9cf1e51ca20c92287386", - "sanitized_output_sha256": "73bd998618637ad3029540bf984bd03793bc3bfbec9d9cf1e51ca20c92287386", + "raw_evidence_sha256": "88fb0630df937b11e2e5f63a245a9d656a8ea26516cb5c24b633799687757174", + "sanitized_output_sha256": "88fb0630df937b11e2e5f63a245a9d656a8ea26516cb5c24b633799687757174", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "NEWFI57_BEGIN\nCOMMAND_ID=NEWFI-260907-PORTAL200-CONTRACTRULE1\nMUTATION_SCOPE=NONE_READ_ONLY\nAPPLY3_FAILURE_LINES=[]\nAPPLY3_RESULT_CONTRACT_LINES=[]\nAPPLY3_PHASE_LINES=[]\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nRUNNER_CONTRACT_RULES=[{\"line\":54,\"text\":\"if status not in {\\\"OK\\\", \\\"BLOCKED\\\", \\\"FAIL\\\"}:\"},{\"line\":55,\"text\":\"raise ValueError(\\\"invalid status\\\")\"},{\"line\":60,\"text\":\"raise ValueError(\\\"changes_made must be boolean\\\")\"},{\"line\":61,\"text\":\"if not isinstance(rollback_started, bool):\"},{\"line\":62,\"text\":\"raise ValueError(\\\"rollback_started must be boolean\\\")\"},{\"line\":63,\"text\":\"if rollback_restored is not None and not isinstance(\"},{\"line\":70,\"text\":\"if rollback_restored is True and rollback_started is not True:\"},{\"line\":71,\"text\":\"raise ValueError(\"},{\"line\":74,\"text\":\"if rollback_started is True and changes is not True:\"},{\"line\":75,\"text\":\"raise ValueError(\"},{\"line\":78,\"text\":\"if status == \\\"BLOCKED\\\" and (\"},{\"line\":86,\"text\":\"if status == \\\"OK\\\" and command_rc != 0:\"},{\"line\":87,\"text\":\"raise ValueError(\\\"OK contract inconsistent with rc\\\")\"},{\"line\":88,\"text\":\"if status == \\\"FAIL\\\" and command_rc == 0:\"},{\"line\":89,\"text\":\"raise ValueError(\\\"FAIL contract inconsistent with rc\\\")\"},{\"line\":93,\"text\":\"elif not rollback_started:\"},{\"line\":95,\"text\":\"elif rollback_restored is True:\"},{\"line\":97,\"text\":\"elif rollback_restored is False:\"},{\"line\":111,\"text\":\"if rollback_restored is None\"},{\"line\":653,\"text\":\"if contract_status in {\\\"\\\", \\\"UNKNOWN\\\", \\\"NOT_APPLICABLE\\\"}\"}]\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"NEWFI-260907-PORTAL200-CONTRACTRULE1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\nNEWFI57_END\n" + "output": "NEWFI58_BEGIN\nCOMMAND_ID=NEWFI-260907-PORTAL200-EXACTCONTRACT1\nMUTATION_SCOPE=NONE_READ_ONLY\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nRUNNER_LINES_50_85=[{\"line\":50,\"text\":\" raise ValueError(\\\"unsupported version\\\")\"},{\"line\":51,\"text\":\" if document.get(\\\"command_id\\\") != command_id:\"},{\"line\":52,\"text\":\" raise ValueError(\\\"command_id mismatch\\\")\"},{\"line\":53,\"text\":\" status = document.get(\\\"status\\\")\"},{\"line\":54,\"text\":\" if status not in {\\\"OK\\\", \\\"BLOCKED\\\", \\\"FAIL\\\"}:\"},{\"line\":55,\"text\":\" raise ValueError(\\\"invalid status\\\")\"},{\"line\":56,\"text\":\" changes = document.get(\\\"changes_made\\\")\"},{\"line\":57,\"text\":\" rollback_started = document.get(\\\"rollback_started\\\")\"},{\"line\":58,\"text\":\" rollback_restored = document.get(\\\"rollback_restored\\\")\"},{\"line\":59,\"text\":\" if not isinstance(changes, bool):\"},{\"line\":60,\"text\":\" raise ValueError(\\\"changes_made must be boolean\\\")\"},{\"line\":61,\"text\":\" if not isinstance(rollback_started, bool):\"},{\"line\":62,\"text\":\" raise ValueError(\\\"rollback_started must be boolean\\\")\"},{\"line\":63,\"text\":\" if rollback_restored is not None and not isinstance(\"},{\"line\":64,\"text\":\" rollback_restored,\"},{\"line\":65,\"text\":\" bool,\"},{\"line\":66,\"text\":\" ):\"},{\"line\":67,\"text\":\" raise ValueError(\"},{\"line\":68,\"text\":\" \\\"rollback_restored must be boolean or null\\\"\"},{\"line\":69,\"text\":\" )\"},{\"line\":70,\"text\":\" if rollback_restored is True and rollback_started is not True:\"},{\"line\":71,\"text\":\" raise ValueError(\"},{\"line\":72,\"text\":\" \\\"rollback_restored without rollback_started\\\"\"},{\"line\":73,\"text\":\" )\"},{\"line\":74,\"text\":\" if rollback_started is True and changes is not True:\"},{\"line\":75,\"text\":\" raise ValueError(\"},{\"line\":76,\"text\":\" \\\"rollback_started without changes\\\"\"},{\"line\":77,\"text\":\" )\"},{\"line\":78,\"text\":\" if status == \\\"BLOCKED\\\" and (\"},{\"line\":79,\"text\":\" changes\"},{\"line\":80,\"text\":\" or rollback_started\"},{\"line\":81,\"text\":\" or command_rc != 2\"},{\"line\":82,\"text\":\" ):\"},{\"line\":83,\"text\":\" raise ValueError(\"},{\"line\":84,\"text\":\" \\\"BLOCKED contract inconsistent with rc/mutation\\\"\"},{\"line\":85,\"text\":\" )\"}]\nGITEA_FETCH_RC=0\nAPPLY3_HISTORY_SHA256=f3ea3fcebd7b182e64db6e963a34f1b90baca0d08477e25e27bf88c48b33611c\nAPPLY3_SELECTED_LINES=[\"PORTAL200_GIT_PRESTATE={\\\"branch\\\":\\\"implementation/newfi-closed-mvp-20260906\\\",\\\"clean\\\":true,\\\"head\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\",\\\"remote\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\"}\",\"PORTAL200_PREFLIGHT=PASS\",\"PORTAL200_FAILURE=IMPORT_FAILED\",\"PORTAL200_FAILURE_STAGING_ROLLBACK=PASS\",\"HOMELAB_RESULT_CONTRACT={\\\"changes_made\\\":false,\\\"command_id\\\":\\\"NEWFI-260907-PORTAL200-APPLY3\\\",\\\"rollback_restored\\\":true,\\\"rollback_started\\\":true,\\\"status\\\":\\\"FAIL\\\",\\\"version\\\":1}\"]\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"NEWFI-260907-PORTAL200-EXACTCONTRACT1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\nNEWFI58_END\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index ca485abf..a4eb243c 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,15 +1,15 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=NEWFI-260907-PORTAL200-CONTRACTRULE1 +COMMAND_ID=NEWFI-260907-PORTAL200-EXACTCONTRACT1 STATUS=OK RC=0 HOST=pve01 MODE=read-only -COMPONENT=newfi-portal200-contract-rule-rca +COMPONENT=newfi-portal200-exact-contract-rca REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=99c8bb9eac94ce1eada078fce55bc35c4edc8e3462cc495df345a313b0d5ae13 +COMMAND_SHA256=5bd354cb6bb54016033f325052796b8170f2e6fc0a78d0efbc92afa6a3ef220e DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGE_DECLARED=false @@ -24,19 +24,19 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=73bd998618637ad3029540bf984bd03793bc3bfbec9d9cf1e51ca20c92287386 -SANITIZED_OUTPUT_SHA256=73bd998618637ad3029540bf984bd03793bc3bfbec9d9cf1e51ca20c92287386 +RAW_EVIDENCE_SHA256=88fb0630df937b11e2e5f63a245a9d656a8ea26516cb5c24b633799687757174 +SANITIZED_OUTPUT_SHA256=88fb0630df937b11e2e5f63a245a9d656a8ea26516cb5c24b633799687757174 OUTPUT_BEGIN -NEWFI57_BEGIN -COMMAND_ID=NEWFI-260907-PORTAL200-CONTRACTRULE1 +NEWFI58_BEGIN +COMMAND_ID=NEWFI-260907-PORTAL200-EXACTCONTRACT1 MUTATION_SCOPE=NONE_READ_ONLY -APPLY3_FAILURE_LINES=[] -APPLY3_RESULT_CONTRACT_LINES=[] -APPLY3_PHASE_LINES=[] RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d -RUNNER_CONTRACT_RULES=[{"line":54,"text":"if status not in {\"OK\", \"BLOCKED\", \"FAIL\"}:"},{"line":55,"text":"raise ValueError(\"invalid status\")"},{"line":60,"text":"raise ValueError(\"changes_made must be boolean\")"},{"line":61,"text":"if not isinstance(rollback_started, bool):"},{"line":62,"text":"raise ValueError(\"rollback_started must be boolean\")"},{"line":63,"text":"if rollback_restored is not None and not isinstance("},{"line":70,"text":"if rollback_restored is True and rollback_started is not True:"},{"line":71,"text":"raise ValueError("},{"line":74,"text":"if rollback_started is True and changes is not True:"},{"line":75,"text":"raise ValueError("},{"line":78,"text":"if status == \"BLOCKED\" and ("},{"line":86,"text":"if status == \"OK\" and command_rc != 0:"},{"line":87,"text":"raise ValueError(\"OK contract inconsistent with rc\")"},{"line":88,"text":"if status == \"FAIL\" and command_rc == 0:"},{"line":89,"text":"raise ValueError(\"FAIL contract inconsistent with rc\")"},{"line":93,"text":"elif not rollback_started:"},{"line":95,"text":"elif rollback_restored is True:"},{"line":97,"text":"elif rollback_restored is False:"},{"line":111,"text":"if rollback_restored is None"},{"line":653,"text":"if contract_status in {\"\", \"UNKNOWN\", \"NOT_APPLICABLE\"}"}] -HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"NEWFI-260907-PORTAL200-CONTRACTRULE1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} -NEWFI57_END +RUNNER_LINES_50_85=[{"line":50,"text":" raise ValueError(\"unsupported version\")"},{"line":51,"text":" if document.get(\"command_id\") != command_id:"},{"line":52,"text":" raise ValueError(\"command_id mismatch\")"},{"line":53,"text":" status = document.get(\"status\")"},{"line":54,"text":" if status not in {\"OK\", \"BLOCKED\", \"FAIL\"}:"},{"line":55,"text":" raise ValueError(\"invalid status\")"},{"line":56,"text":" changes = document.get(\"changes_made\")"},{"line":57,"text":" rollback_started = document.get(\"rollback_started\")"},{"line":58,"text":" rollback_restored = document.get(\"rollback_restored\")"},{"line":59,"text":" if not isinstance(changes, bool):"},{"line":60,"text":" raise ValueError(\"changes_made must be boolean\")"},{"line":61,"text":" if not isinstance(rollback_started, bool):"},{"line":62,"text":" raise ValueError(\"rollback_started must be boolean\")"},{"line":63,"text":" if rollback_restored is not None and not isinstance("},{"line":64,"text":" rollback_restored,"},{"line":65,"text":" bool,"},{"line":66,"text":" ):"},{"line":67,"text":" raise ValueError("},{"line":68,"text":" \"rollback_restored must be boolean or null\""},{"line":69,"text":" )"},{"line":70,"text":" if rollback_restored is True and rollback_started is not True:"},{"line":71,"text":" raise ValueError("},{"line":72,"text":" \"rollback_restored without rollback_started\""},{"line":73,"text":" )"},{"line":74,"text":" if rollback_started is True and changes is not True:"},{"line":75,"text":" raise ValueError("},{"line":76,"text":" \"rollback_started without changes\""},{"line":77,"text":" )"},{"line":78,"text":" if status == \"BLOCKED\" and ("},{"line":79,"text":" changes"},{"line":80,"text":" or rollback_started"},{"line":81,"text":" or command_rc != 2"},{"line":82,"text":" ):"},{"line":83,"text":" raise ValueError("},{"line":84,"text":" \"BLOCKED contract inconsistent with rc/mutation\""},{"line":85,"text":" )"}] +GITEA_FETCH_RC=0 +APPLY3_HISTORY_SHA256=f3ea3fcebd7b182e64db6e963a34f1b90baca0d08477e25e27bf88c48b33611c +APPLY3_SELECTED_LINES=["PORTAL200_GIT_PRESTATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote\":\"06bab5acd124e768f70305b3d7eca2f595871890\"}","PORTAL200_PREFLIGHT=PASS","PORTAL200_FAILURE=IMPORT_FAILED","PORTAL200_FAILURE_STAGING_ROLLBACK=PASS","HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260907-PORTAL200-APPLY3\",\"rollback_restored\":true,\"rollback_started\":true,\"status\":\"FAIL\",\"version\":1}"] +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"NEWFI-260907-PORTAL200-EXACTCONTRACT1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} +NEWFI58_END OUTPUT_END CHAT_OUTPUT_END