diff --git a/runtime/history/NEWFI-260907-A-PORTAL200-APPLY4DESIGN2.json b/runtime/history/NEWFI-260907-A-PORTAL200-APPLY4DESIGN2.json
new file mode 100644
index 00000000..0fd150ff
--- /dev/null
+++ b/runtime/history/NEWFI-260907-A-PORTAL200-APPLY4DESIGN2.json
@@ -0,0 +1,38 @@
+{
+ "schema_version": 1,
+ "channel": "homelab-runtime",
+ "command_id": "NEWFI-260907-A-PORTAL200-APPLY4DESIGN2",
+ "status": "OK",
+ "rc": 0,
+ "host": "pve01",
+ "mode": "read-only",
+ "component": "newfi-portal200-apply4-candidate-exact-recovery",
+ "started_at_utc": "2026-09-07T20:15:19Z",
+ "finished_at_utc": "2026-09-07T20:15:32Z",
+ "reference_register_checked": true,
+ "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
+ "error_register_checked": true,
+ "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
+ "command_sha256": "d9ecc50604b452f7f25f062a6d5c744609c344a965cb5a785f7c8eb28a1b74e3",
+ "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": "eb768ba37e84529ac30bac9faff315d6be84c63c2590d855fabd0f9231ba5bb0",
+ "sanitized_output_sha256": "eb768ba37e84529ac30bac9faff315d6be84c63c2590d855fabd0f9231ba5bb0",
+ "output_truncated_in_json": false,
+ "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
+ "output": "APPLY4_DESIGN2_BEGIN=true\nCOMMAND_ID=NEWFI-260907-A-PORTAL200-APPLY4DESIGN2\nMUTATION_SCOPE=NONE_READ_ONLY\nMUTATIONS_PERFORMED=NO\nERROR_REGISTER_CHECK=OK\nERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\nREFERENCE_CHECK=OK\nREFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nHISTORY_NEWFI_260907_PORTAL200_APPLY1_SHA256=e352a1ee17b6588b878c02a7ca5096e99b5bfd20391cfadaf9cd2a67f7043f17\nHISTORY_NEWFI_260907_PORTAL200_APPLY1_STATUS=FAIL\nHISTORY_NEWFI_260907_PORTAL200_APPLY1_RC=76\nHISTORY_NEWFI_260907_PORTAL200_APPLY1_CHANGES_MADE=unknown\nHISTORY_NEWFI_260907_PORTAL200_APPLY1_MUTATION_OUTCOME=UNKNOWN\nHISTORY_NEWFI_260907_PORTAL200_APPLY2_SHA256=5e043e4f2429583487a791569aeca832f744bb71a5eee1617bb6706f6657051b\nHISTORY_NEWFI_260907_PORTAL200_APPLY2_STATUS=FAIL\nHISTORY_NEWFI_260907_PORTAL200_APPLY2_RC=1\nHISTORY_NEWFI_260907_PORTAL200_APPLY2_CHANGES_MADE=false\nHISTORY_NEWFI_260907_PORTAL200_APPLY2_MUTATION_OUTCOME=NO_MUTATION\nHISTORY_NEWFI_260907_PORTAL200_APPLY3_SHA256=f3ea3fcebd7b182e64db6e963a34f1b90baca0d08477e25e27bf88c48b33611c\nHISTORY_NEWFI_260907_PORTAL200_APPLY3_STATUS=FAIL\nHISTORY_NEWFI_260907_PORTAL200_APPLY3_RC=76\nHISTORY_NEWFI_260907_PORTAL200_APPLY3_CHANGES_MADE=unknown\nHISTORY_NEWFI_260907_PORTAL200_APPLY3_MUTATION_OUTCOME=UNKNOWN\nHISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_SHA256=00c4dc5e100be0cb26a80262a8af96555457b5dc4fa924c6a9458089cd01474e\nHISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_STATUS=OK\nHISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_RC=0\nHISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_CHANGES_MADE=false\nHISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_MUTATION_OUTCOME=NO_MUTATION\nHISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_SHA256=805954f73608dbd343da33d387c59a6ad258a7f6a51965db4e78c3fd0f588fd4\nHISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_STATUS=OK\nHISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_RC=0\nHISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_CHANGES_MADE=false\nHISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_MUTATION_OUTCOME=NO_MUTATION\nHISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_SHA256=30370cad3d4d7e73c6612a5df702abe1fac6ae559bf142b5e489a19a1258cfb7\nHISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_STATUS=OK\nHISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_RC=0\nHISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_CHANGES_MADE=false\nHISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_MUTATION_OUTCOME=NO_MUTATION\nHISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_SHA256=08c00e675ffa960eca55102a114d305fb1a15291ff7e401dc43c09d087c32ece\nHISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_STATUS=OK\nHISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_RC=0\nHISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_CHANGES_MADE=false\nHISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_MUTATION_OUTCOME=NO_MUTATION\nHISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_SHA256=37d9ad10d0d9abb7fede76a4716cde8abe70866cb6ce8024243f399e39082ad7\nHISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_STATUS=OK\nHISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_RC=0\nHISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_CHANGES_MADE=false\nHISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_MUTATION_OUTCOME=NO_MUTATION\nNEWFI_260907_PORTAL200_APPLY1_CANDIDATE_RELEVANT_LINES=[\"CHAT_OUTPUT_BEGIN\",\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\",\"STATUS=FAIL\",\"RC=76\",\"HOST=pve01\",\"MODE=change\",\"COMPONENT=newfi-portal200-deploy\",\"REFERENCE_REGISTER_CHECK=OK\",\"REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\",\"COMMAND_RC=1\",\"CHANGES_MADE=unknown\",\"ROLLBACK_STARTED=unknown\",\"ROLLBACK_RESTORED=null\",\"MUTATION_OUTCOME=UNKNOWN\",\"SANITIZED=yes\",\"SANITIZED_OUTPUT_SHA256=50310a6619ab35d100c11d8842e044852dc3f5589b3d100948bd7fd05bdd5f0b\",\"OUTPUT_BEGIN\",\"NEWFI200_BEGIN\",\"PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\",\"PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\",\"PORTAL200_CANDIDATE_IDENTITY=PASS\",\"PORTAL200_GIT_PRESTATE={\\\"branch\\\":\\\"implementation/newfi-closed-mvp-20260906\\\",\\\"clean\\\":true,\\\"head\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\",\\\"remote\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\"}\",\"PORTAL200_CLUSTER=PASS\",\"PORTAL200_RUNTIME_HELPER_LINT=PASS\",\"PORTAL200_ERROR_BASELINE={\\\"prod\\\":0,\\\"staging\\\":40}\",\"PORTAL200_FAILURE=QGA_GUEST_RC\",\"HOMELAB_RESULT_CONTRACT={\\\"changes_made\\\":false,\\\"command_id\\\":\\\"NEWFI-260907-PORTAL200-APPLY1\\\",\\\"rollback_restored\\\":null,\\\"rollback_started\\\":false,\\\"status\\\":\\\"ERROR\\\",\\\"version\\\":1}\",\"PORTAL200_ROADMAP_REMAINS=22\",\"NEWFI200_END\",\"\",\"OUTPUT_END\"]\nNEWFI_260907_PORTAL200_APPLY2_CANDIDATE_RELEVANT_LINES=[\"CHAT_OUTPUT_BEGIN\",\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\",\"STATUS=FAIL\",\"RC=1\",\"HOST=pve01\",\"MODE=change\",\"COMPONENT=newfi-portal200-deploy\",\"REFERENCE_REGISTER_CHECK=OK\",\"REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\",\"COMMAND_RC=1\",\"CHANGES_MADE=false\",\"ROLLBACK_STARTED=false\",\"ROLLBACK_RESTORED=null\",\"MUTATION_OUTCOME=NO_MUTATION\",\"SANITIZED=yes\",\"SANITIZED_OUTPUT_SHA256=c86dd3bbfbc94ff56e5cb678b0d8dd999af220229e3aea248a99e3d1f51d007a\",\"OUTPUT_BEGIN\",\"NEWFI200_BEGIN\",\"PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\",\"PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\",\"PORTAL200_CANDIDATE_IDENTITY=PASS\",\"PORTAL200_ORCHESTRATION_FIXES={\\\"failure_status\\\":\\\"FAIL\\\",\\\"staging_503_without_css_links\\\":true}\",\"PORTAL200_GIT_PRESTATE={\\\"branch\\\":\\\"implementation/newfi-closed-mvp-20260906\\\",\\\"clean\\\":true,\\\"head\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\",\\\"remote\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\"}\",\"PORTAL200_CLUSTER=PASS\",\"PORTAL200_RUNTIME_HELPER_LINT=PASS\",\"PORTAL200_ERROR_BASELINE={\\\"prod\\\":0,\\\"staging\\\":40}\",\"PORTAL200_HTTP={\\\"bytes\\\":23800,\\\"css_count\\\":0,\\\"css_marker\\\":false,\\\"css_status\\\":[],\\\"forced_css_marker\\\":null,\\\"forced_css_status\\\":null,\\\"html_marker\\\":false,\\\"old_copy\\\":false,\\\"state\\\":\\\"old\\\",\\\"status\\\":503,\\\"target\\\":\\\"staging\\\"}\",\"PORTAL200_RUNTIME={\\\"html_bytes\\\":1116,\\\"html_marker\\\":false,\\\"old_copy\\\":true,\\\"state\\\":\\\"old\\\",\\\"target\\\":\\\"prod\\\"}\",\"PORTAL200_FAILURE=QGA_GUEST_RC\",\"HOMELAB_RESULT_CONTRACT={\\\"changes_made\\\":false,\\\"command_id\\\":\\\"NEWFI-260907-PORTAL200-APPLY2\\\",\\\"rollback_restored\\\":null,\\\"rollback_started\\\":false,\\\"status\\\":\\\"FAIL\\\",\\\"version\\\":1}\",\"PORTAL200_ROADMAP_REMAINS=22\",\"NEWFI200_END\",\"\",\"OUTPUT_END\"]\nNEWFI_260907_PORTAL200_APPLY3_CANDIDATE_RELEVANT_LINES=[\"CHAT_OUTPUT_BEGIN\",\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"STATUS=FAIL\",\"RC=76\",\"HOST=pve01\",\"MODE=change\",\"COMPONENT=newfi-portal200-deploy\",\"REFERENCE_REGISTER_CHECK=OK\",\"REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\",\"COMMAND_RC=1\",\"CHANGES_MADE=unknown\",\"ROLLBACK_STARTED=unknown\",\"ROLLBACK_RESTORED=null\",\"MUTATION_OUTCOME=UNKNOWN\",\"SANITIZED=yes\",\"SANITIZED_OUTPUT_SHA256=312b61dd11c589bcf59b0425107fe3673b1b8e6e64af31a9954ca43541faaa98\",\"OUTPUT_BEGIN\",\"NEWFI200_BEGIN\",\"PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\",\"PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\",\"PORTAL200_CANDIDATE_IDENTITY=PASS\",\"PORTAL200_ORCHESTRATION_FIXES={\\\"css_href_regex_fixed\\\":true,\\\"failure_status\\\":\\\"FAIL\\\",\\\"prod_http_via_pve01_public_route\\\":true,\\\"staging_503_without_css_links\\\":true}\",\"PORTAL200_GIT_PRESTATE={\\\"branch\\\":\\\"implementation/newfi-closed-mvp-20260906\\\",\\\"clean\\\":true,\\\"head\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\",\\\"remote\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\"}\",\"PORTAL200_CLUSTER=PASS\",\"PORTAL200_RUNTIME_HELPER_LINT=PASS\",\"PORTAL200_ERROR_BASELINE={\\\"prod\\\":0,\\\"staging\\\":40}\",\"PORTAL200_HTTP={\\\"bytes\\\":23800,\\\"css_count\\\":2,\\\"css_marker\\\":false,\\\"css_status\\\":[200,200],\\\"forced_css_marker\\\":null,\\\"forced_css_status\\\":null,\\\"html_marker\\\":false,\\\"old_copy\\\":false,\\\"state\\\":\\\"old\\\",\\\"status\\\":503,\\\"target\\\":\\\"staging\\\"}\",\"PORTAL200_RUNTIME={\\\"html_bytes\\\":1116,\\\"html_marker\\\":false,\\\"old_copy\\\":true,\\\"state\\\":\\\"old\\\",\\\"target\\\":\\\"prod\\\"}\",\"PORTAL200_HTTP={\\\"bytes\\\":25939,\\\"css_count\\\":2,\\\"css_marker\\\":false,\\\"css_status\\\":[200,200],\\\"forced_css_marker\\\":null,\\\"forced_css_status\\\":null,\\\"html_marker\\\":false,\\\"old_copy\\\":true,\\\"state\\\":\\\"old\\\",\\\"status\\\":200,\\\"target\\\":\\\"prod\\\"}\",\"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}\",\"PORTAL200_ROADMAP_REMAINS=22\",\"NEWFI200_END\",\"\",\"OUTPUT_END\"]\nNEWFI_260907_PORTAL200_APPLY2_OUTPUT_BLOCK_SHA256=c86dd3bbfbc94ff56e5cb678b0d8dd999af220229e3aea248a99e3d1f51d007a\nNEWFI_260907_PORTAL200_APPLY2_OUTPUT_BLOCK=NEWFI200_BEGIN\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\\nPORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\\nPORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\\nPORTAL200_CANDIDATE_IDENTITY=PASS\\nPORTAL200_ORCHESTRATION_FIXES={\"failure_status\":\"FAIL\",\"staging_503_without_css_links\":true}\\nPORTAL200_GIT_PRESTATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote\":\"06bab5acd124e768f70305b3d7eca2f595871890\"}\\nPORTAL200_CLUSTER=PASS\\nPORTAL200_RUNTIME_HELPER_LINT=PASS\\nPORTAL200_ERROR_BASELINE={\"prod\":0,\"staging\":40}\\nPORTAL200_HTTP={\"bytes\":23800,\"css_count\":0,\"css_marker\":false,\"css_status\":[],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":false,\"state\":\"old\",\"status\":503,\"target\":\"staging\"}\\nPORTAL200_RUNTIME={\"html_bytes\":1116,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"target\":\"prod\"}\\nPORTAL200_FAILURE=QGA_GUEST_RC\\nHOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260907-PORTAL200-APPLY2\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"FAIL\",\"version\":1}\\nPORTAL200_ROADMAP_REMAINS=22\\nNEWFI200_END\\n\nNEWFI_260907_PORTAL200_APPLY3_OUTPUT_BLOCK_SHA256=312b61dd11c589bcf59b0425107fe3673b1b8e6e64af31a9954ca43541faaa98\nNEWFI_260907_PORTAL200_APPLY3_OUTPUT_BLOCK=NEWFI200_BEGIN\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\\nPORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\\nPORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\\nPORTAL200_CANDIDATE_IDENTITY=PASS\\nPORTAL200_ORCHESTRATION_FIXES={\"css_href_regex_fixed\":true,\"failure_status\":\"FAIL\",\"prod_http_via_pve01_public_route\":true,\"staging_503_without_css_links\":true}\\nPORTAL200_GIT_PRESTATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote\":\"06bab5acd124e768f70305b3d7eca2f595871890\"}\\nPORTAL200_CLUSTER=PASS\\nPORTAL200_RUNTIME_HELPER_LINT=PASS\\nPORTAL200_ERROR_BASELINE={\"prod\":0,\"staging\":40}\\nPORTAL200_HTTP={\"bytes\":23800,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":false,\"state\":\"old\",\"status\":503,\"target\":\"staging\"}\\nPORTAL200_RUNTIME={\"html_bytes\":1116,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"target\":\"prod\"}\\nPORTAL200_HTTP={\"bytes\":25939,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"status\":200,\"target\":\"prod\"}\\nPORTAL200_PREFLIGHT=PASS\\nPORTAL200_FAILURE=IMPORT_FAILED\\nPORTAL200_HTTP={\"bytes\":23800,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":false,\"state\":\"old\",\"status\":503,\"target\":\"staging\"}\\nPORTAL200_FAILURE_STAGING_ROLLBACK=PASS\\nHOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260907-PORTAL200-APPLY3\",\"rollback_restored\":true,\"rollback_started\":true,\"status\":\"FAIL\",\"version\":1}\\nPORTAL200_ROADMAP_REMAINS=22\\nNEWFI200_END\\n\nNEWFI_260907_PORTAL200_APPLY1_ATTEMPT_INVENTORY=[{\"bytes\":73,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/attempt.txt\",\"sha256\":\"e499da1ae348df5f86b560c4655d92d4ad6bccd24925c9cc8e818e0ad2e45e47\",\"text\":\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\\nSTATE=RESERVED_BEFORE_EXECUTION\\n\"},{\"bytes\":94,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/receipt.txt\",\"sha256\":\"dc440de62a30fa2480b0b3d83c8eaa5b9692a90afc2cea28012c757f0b410c78\",\"text\":\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\\nWRAPPER_RC=76\\nPUBLICATION=NOT_INDEPENDENTLY_VERIFIED\\n\"},{\"bytes\":669,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/wrapper.log\",\"sha256\":\"9685a3719da39ed64273e57bad5cd9a52bb637863d267750792bde1d82295f0e\",\"text\":\"PAYLOAD_VALIDATION=OK\\nremote: . Processing 1 references \\nremote: Processed 1 references in total \\nRESULT=OK\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\\nCOMMIT_SHA=55aa9f336df6f3b8a7976899b2a1d58d878431c7\\nSTATIC_PUBLICATION=OK\\nRAW_BRANCH_PUBLICATION=OK\\n\\n===== HOMELAB CHAT RUN COMPLETE =====\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\\nSTATUS=FAIL\\nRC=76\\nREFERENCE_REGISTER_CHECK=OK\\nERROR_REGISTER_CHECK=OK\\nDUPLICATE_FAILED_COMMAND_BLOCKED=false\\nGITEA_PUBLICATION=OK\\nPUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\\nLOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY1-20260907T095034Z.log\\nSHELL_SESSION_PRESERVED=yes\\n\"}]\nNEWFI_260907_PORTAL200_APPLY2_ATTEMPT_INVENTORY=[{\"bytes\":73,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/attempt.txt\",\"sha256\":\"83643d80ccdc44fddd2837ef415cac4b96431e3af3b0db7d9f13364f75442f33\",\"text\":\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\\nSTATE=RESERVED_BEFORE_EXECUTION\\n\"},{\"bytes\":89,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/receipt.txt\",\"sha256\":\"07b965c02187f78a8aa6836ec8267fc8ef01270717114e4c5ff39efa31121929\",\"text\":\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\\nWRAPPER_RC=1\\nPUBLICATION=GITEA_RUNTIME_EXPECTED\\n\"},{\"bytes\":668,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/wrapper.log\",\"sha256\":\"4c72462531ac8b9200007c954a1f9a90cebbfe346031bb71a07cb2ef67ac329d\",\"text\":\"PAYLOAD_VALIDATION=OK\\nremote: . Processing 1 references \\nremote: Processed 1 references in total \\nRESULT=OK\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\\nCOMMIT_SHA=fe5f3ed2f5c68fc46fcbab828685c0a872b1ce59\\nSTATIC_PUBLICATION=OK\\nRAW_BRANCH_PUBLICATION=OK\\n\\n===== HOMELAB CHAT RUN COMPLETE =====\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\\nSTATUS=FAIL\\nRC=1\\nREFERENCE_REGISTER_CHECK=OK\\nERROR_REGISTER_CHECK=OK\\nDUPLICATE_FAILED_COMMAND_BLOCKED=false\\nGITEA_PUBLICATION=OK\\nPUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\\nLOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY2-20260907T105610Z.log\\nSHELL_SESSION_PRESERVED=yes\\n\"}]\nNEWFI_260907_PORTAL200_APPLY3_ATTEMPT_INVENTORY=[{\"bytes\":73,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/attempt.txt\",\"sha256\":\"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14\",\"text\":\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\\nSTATE=RESERVED_BEFORE_EXECUTION\\n\"},{\"bytes\":90,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/receipt.txt\",\"sha256\":\"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b\",\"text\":\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\\nWRAPPER_RC=76\\nPUBLICATION=GITEA_RUNTIME_EXPECTED\\n\"},{\"bytes\":669,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/wrapper.log\",\"sha256\":\"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30\",\"text\":\"PAYLOAD_VALIDATION=OK\\nremote: . Processing 1 references \\nremote: Processed 1 references in total \\nRESULT=OK\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\\nCOMMIT_SHA=bb707af34d2a2b6a6b23c3d4d03f6b701150a653\\nSTATIC_PUBLICATION=OK\\nRAW_BRANCH_PUBLICATION=OK\\n\\n===== HOMELAB CHAT RUN COMPLETE =====\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\\nSTATUS=FAIL\\nRC=76\\nREFERENCE_REGISTER_CHECK=OK\\nERROR_REGISTER_CHECK=OK\\nDUPLICATE_FAILED_COMMAND_BLOCKED=false\\nGITEA_PUBLICATION=OK\\nPUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\\nLOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY3-20260907T112033Z.log\\nSHELL_SESSION_PRESERVED=yes\\n\"}]\nFILESYSTEM_PORTAL200_EVIDENCE=[{\"bytes\":14898,\"path\":\"/root/.bash_history\",\"relevant_lines\":[\"]]>\",\"\",\" &1\",\" )\\\"; SSH_RC=$?; printf 'PORTAL200_CANDIDATE_%s_QGA_BEGIN\\\\n' \\\"$LABEL\\\"; printf '%s\\\\n' \\\"$OUT\\\"; printf 'PORTAL200_CANDIDATE_%s_QGA_END\\\\n' \\\"$LABEL\\\"; printf 'PORTAL200_CANDIDATE_%s_SSH_RC=%s\\\\n' \\\"$LABEL\\\" \\\"$SSH_RC\\\"; if [ \\\"$SSH_RC\\\" -ne 0 ]; then return 1; fi; printf '%s' \\\"$OUT\\\" | python3 -c '\",\"import json\",\"import sys\",\"assert \\\"No syntax errors detected\\\" in out\",\"' || return 1; return 0; }; if [ \\\"$RC\\\" -eq 0 ]; then lint_php \\\"$CAND/src/addons/Newfi/Portal/Pub/Controller/Portal.php\\\" CONTROLLER; L1=$?; lint_php \\\"$CAND/src/addons/Newfi/Portal/Service/PortalData.php\\\" SERVICE; L2=$?; printf 'PORTAL200_CANDIDATE_CONTROLLER_LINT_RC=%s\\\\n' \\\"$L1\\\"; printf 'PORTAL200_CANDIDATE_SERVICE_LINT_RC=%s\\\\n' \\\"$L2\\\"; if [ \\\"$L1\\\" -ne 0 ] || [ \\\"$L2\\\" -ne 0 ]; then RC=1; fi; fi; END_HEAD=\\\"$(git -C \\\"$WT\\\" rev-parse HEAD 2>/dev/null)\\\"; END_STATUS=\\\"$(\",\" git -C \\\"$WT\\\" status --porcelain=v1 --untracked-files=all 2>/dev/null\",\")\\\"; printf 'PORTAL200_CANDIDATE_END_GIT_HEAD=%s\\\\n' \\\"$END_HEAD\\\"; printf 'PORTAL200_CANDIDATE_END_GIT_CLEAN=%s\\\\n' \\\"$(\",\" if [ -z \\\"$END_STATUS\\\" ]; then printf true; else printf false; fi\",\")\\\"; if [ \\\"$END_HEAD\\\" != \\\"$EXPECTED_HEAD\\\" ] || [ -n \\\"$END_STATUS\\\" ]; then RC=1; fi; if [ \\\"$RC\\\" -eq 0 ]; then printf 'PORTAL200_CANDIDATE_RESULT=PASS\\\\n'; printf 'PORTAL200_CANDIDATE_PATH=%s\\\\n' \\\"$CAND\\\"; printf 'PORTAL200_EXECUTED=NO\\\\n'; else printf 'PORTAL200_CANDIDATE_RESULT=FAIL\\\\n'; rm -rf \\\"$CAND\\\" 2>/dev/null || true; fi; printf 'PORTAL200_ROADMAP_REMAINS=22\\\\n'; printf 'PORTAL200_CANDIDATE_END=%s\\\\n' \\\"$CID\\\"; printf 'WRAPPER_RC=%s\\\\n' \\\"$RC\\\"; printf 'TERMINAL=KEEP_OPEN\\\\n'; printf 'NEWFI_COMMAND_SHELL_EXIT=DISABLED\\\\n'; true; ) || true\",\"printf 'WRAPPER_SHELL_RC=0\\\\n'\",\"printf 'TERMINAL=KEEP_OPEN\\\\n'\"],\"sha256\":\"0d1e6f73b9c6f8ffe1b3a3849bb0f787ed523b1e46a34960ad9ba422e4a3b91f\"},{\"bytes\":73,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/attempt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"STATE=RESERVED_BEFORE_EXECUTION\"],\"sha256\":\"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14\"},{\"bytes\":90,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/receipt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"WRAPPER_RC=76\",\"PUBLICATION=GITEA_RUNTIME_EXPECTED\"],\"sha256\":\"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b\"},{\"bytes\":669,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/wrapper.log\",\"relevant_lines\":[\"remote: Processed 1 references in total \",\"RESULT=OK\",\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"COMMIT_SHA=bb707af34d2a2b6a6b23c3d4d03f6b701150a653\",\"STATIC_PUBLICATION=OK\",\"\",\"===== HOMELAB CHAT RUN COMPLETE =====\",\"STATUS=FAIL\",\"RC=76\",\"GITEA_PUBLICATION=OK\",\"PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\",\"LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY3-20260907T112033Z.log\",\"SHELL_SESSION_PRESERVED=yes\"],\"sha256\":\"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30\"},{\"bytes\":73,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/attempt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\",\"STATE=RESERVED_BEFORE_EXECUTION\"],\"sha256\":\"e499da1ae348df5f86b560c4655d92d4ad6bccd24925c9cc8e818e0ad2e45e47\"},{\"bytes\":94,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/receipt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\",\"WRAPPER_RC=76\",\"PUBLICATION=NOT_INDEPENDENTLY_VERIFIED\"],\"sha256\":\"dc440de62a30fa2480b0b3d83c8eaa5b9692a90afc2cea28012c757f0b410c78\"},{\"bytes\":669,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/wrapper.log\",\"relevant_lines\":[\"remote: Processed 1 references in total \",\"RESULT=OK\",\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\",\"COMMIT_SHA=55aa9f336df6f3b8a7976899b2a1d58d878431c7\",\"STATIC_PUBLICATION=OK\",\"\",\"===== HOMELAB CHAT RUN COMPLETE =====\",\"STATUS=FAIL\",\"RC=76\",\"GITEA_PUBLICATION=OK\",\"PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\",\"LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY1-20260907T095034Z.log\",\"SHELL_SESSION_PRESERVED=yes\"],\"sha256\":\"9685a3719da39ed64273e57bad5cd9a52bb637863d267750792bde1d82295f0e\"},{\"bytes\":73,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/attempt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\",\"STATE=RESERVED_BEFORE_EXECUTION\"],\"sha256\":\"83643d80ccdc44fddd2837ef415cac4b96431e3af3b0db7d9f13364f75442f33\"},{\"bytes\":89,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/receipt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\",\"WRAPPER_RC=1\",\"PUBLICATION=GITEA_RUNTIME_EXPECTED\"],\"sha256\":\"07b965c02187f78a8aa6836ec8267fc8ef01270717114e4c5ff39efa31121929\"},{\"bytes\":668,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/wrapper.log\",\"relevant_lines\":[\"remote: Processed 1 references in total \",\"RESULT=OK\",\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\",\"COMMIT_SHA=fe5f3ed2f5c68fc46fcbab828685c0a872b1ce59\",\"STATIC_PUBLICATION=OK\",\"\",\"===== HOMELAB CHAT RUN COMPLETE =====\",\"STATUS=FAIL\",\"RC=1\",\"GITEA_PUBLICATION=OK\",\"PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\",\"LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY2-20260907T105610Z.log\",\"SHELL_SESSION_PRESERVED=yes\"],\"sha256\":\"4c72462531ac8b9200007c954a1f9a90cebbfe346031bb71a07cb2ef67ac329d\"},{\"bytes\":71,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-RCA4/attempt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-RCA4\",\"STATE=RESERVED_BEFORE_EXECUTION\"],\"sha256\":\"6f5f48b114a59b391450532fdf2c73a2627105ffe91942054e272931af0af62b\"},{\"bytes\":91,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-RCA4/receipt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-RCA4\",\"WRAPPER_RC=0\",\"PUBLICATION=NOT_INDEPENDENTLY_VERIFIED\"],\"sha256\":\"6406f6bc528bf48bd88eabccc9dd88a9fa25d6415f5121ed55b8aa8f357d0c84\"},{\"bytes\":660,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-RCA4/wrapper.log\",\"relevant_lines\":[\"remote: Processed 1 references in total \",\"RESULT=OK\",\"COMMAND_ID=NEWFI-260907-PORTAL200-RCA4\",\"COMMIT_SHA=74bee60e6746db6bf0eba73b3c66c184bf148680\",\"STATIC_PUBLICATION=OK\",\"\",\"===== HOMELAB CHAT RUN COMPLETE =====\",\"STATUS=OK\",\"RC=0\",\"GITEA_PUBLICATION=OK\",\"PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\",\"LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-RCA4-20260907T103455Z.log\",\"SHELL_SESSION_PRESERVED=yes\"],\"sha256\":\"b7f1ea0cdee90fe027b3302bf1e932c15fbb80a73764b948269d3025307c7672\"}]\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nRUNNER_CONTRACT_EXACT_RELEVANT_LINES=[\"import json\",\"import sys\",\"from pathlib import Path\",\"\",\"raw_path, command_id, mode, command_rc = sys.argv[1:]\",\"command_rc = int(command_rc)\",\"result = {\",\" \\\"valid\\\": True,\",\" \\\"status\\\": \\\"NOT_APPLICABLE\\\",\",\" \\\"changes_made\\\": \\\"false\\\",\",\" \\\"rollback_started\\\": \\\"false\\\",\",\" \\\"rollback_restored\\\": \\\"null\\\",\",\" \\\"mutation_outcome\\\": \\\"NO_MUTATION\\\",\",\" \\\"error\\\": \\\"NONE\\\",\",\"}\",\"if mode == \\\"change\\\":\",\" result = {\",\" \\\"valid\\\": False,\",\" \\\"status\\\": \\\"UNKNOWN\\\",\",\" \\\"changes_made\\\": \\\"unknown\\\",\",\" \\\"rollback_started\\\": \\\"unknown\\\",\",\" \\\"rollback_restored\\\": \\\"null\\\",\",\" \\\"mutation_outcome\\\": \\\"UNKNOWN\\\",\",\" \\\"error\\\": \\\"MISSING_CONTRACT\\\",\",\" }\",\" marker = \\\"HOMELAB_RESULT_CONTRACT=\\\"\",\" lines = Path(raw_path).read_bytes().decode(\",\" \\\"utf-8\\\",\",\" errors=\\\"replace\\\",\",\" ).splitlines()\",\" document = json.loads(payloads[0])\",\" if not isinstance(document, dict):\",\" raise ValueError(\\\"contract root is not object\\\")\",\" if document.get(\\\"version\\\") != 1:\",\" raise ValueError(\\\"unsupported version\\\")\",\" if document.get(\\\"command_id\\\") != command_id:\",\" raise ValueError(\\\"command_id mismatch\\\")\",\" status = document.get(\\\"status\\\")\",\" if status not in {\\\"OK\\\", \\\"BLOCKED\\\", \\\"FAIL\\\"}:\",\" raise ValueError(\\\"invalid status\\\")\",\" changes = document.get(\\\"changes_made\\\")\",\" rollback_started = document.get(\\\"rollback_started\\\")\",\" rollback_restored = document.get(\\\"rollback_restored\\\")\",\" if not isinstance(changes, bool):\",\" raise ValueError(\\\"changes_made must be boolean\\\")\",\" if not isinstance(rollback_started, bool):\",\" raise ValueError(\\\"rollback_started must be boolean\\\")\",\" if rollback_restored is not None and not isinstance(\",\" rollback_restored,\",\" bool,\",\" ):\",\" raise ValueError(\",\" \\\"rollback_restored must be boolean or null\\\"\",\" )\",\" if rollback_restored is True and rollback_started is not True:\",\" \\\"rollback_restored without rollback_started\\\"\",\" if rollback_started is True and changes is not True:\",\" \\\"rollback_started without changes\\\"\",\" if status == \\\"BLOCKED\\\" and (\",\" changes\",\" or rollback_started\",\" or command_rc != 2\",\" \\\"BLOCKED contract inconsistent with rc/mutation\\\"\",\" raise ValueError(\\\"FAIL contract inconsistent with rc\\\")\",\" if not changes:\",\" outcome = \\\"NO_MUTATION\\\"\",\" elif not rollback_started:\",\" outcome = \\\"MUTATED\\\"\",\" elif rollback_restored is True:\",\" outcome = \\\"ROLLED_BACK\\\"\",\" elif rollback_restored is False:\",\" outcome = \\\"ROLLBACK_FAILED\\\"\",\" else:\",\" outcome = \\\"ROLLBACK_UNKNOWN\\\"\",\" result = {\",\" \\\"valid\\\": True,\",\" \\\"status\\\": status,\",\" \\\"changes_made\\\": str(changes).lower(),\",\" \\\"rollback_started\\\": str(\",\" rollback_started\",\" ).lower(),\",\" \\\"rollback_restored\\\": (\",\" \\\"null\\\"\",\" if rollback_restored is None\",\" else str(rollback_restored).lower()\",\" ),\",\" \\\"mutation_outcome\\\": outcome,\",\" \\\"error\\\": \\\"NONE\\\",\",\" }\",\" except Exception as exc:\",\" result[\\\"error\\\"] = (\",\" \\\"INVALID_CONTRACT:\\\" + type(exc).__name__\",\" )\",\" elif len(payloads) > 1:\",\" result[\\\"error\\\"] = \\\"MULTIPLE_CONTRACTS\\\"\",\"print(\\\"\\\\t\\\".join([\",\" str(result[\\\"valid\\\"]).lower(),\",\" result[\\\"status\\\"],\",\" result[\\\"changes_made\\\"],\",\" result[\\\"rollback_started\\\"],\",\" result[\\\"rollback_restored\\\"],\",\" result[\\\"mutation_outcome\\\"],\",\" result[\\\"error\\\"],\",\"]))\",\"PY_CONTRACT\",\" tmp=\\\"$(mktemp)\\\"\",\" trap 'rm -f \\\"$tmp\\\"' RETURN\",\" printf '%s\\\\n' \\\\\",\" 'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T1\\\",\\\"status\\\":\\\"BLOCKED\\\",\\\"changes_made\\\":false,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\" >\\\"$tmp\\\"\",\" [ \\\"$(read_mutation_contract \\\"$tmp\\\" T1 change 2)\\\" = \\\\\",\" $'true\\\\tBLOCKED\\\\tfalse\\\\tfalse\\\\tnull\\\\tNO_MUTATION\\\\tNONE' ]\",\" 'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T2\\\",\\\"status\\\":\\\"OK\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\" [ \\\"$(read_mutation_contract \\\"$tmp\\\" T2 change 0)\\\" = \\\\\",\" $'true\\\\tOK\\\\ttrue\\\\tfalse\\\\tnull\\\\tMUTATED\\\\tNONE' ]\",\" 'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T3\\\",\\\"status\\\":\\\"FAIL\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":true,\\\"rollback_restored\\\":true}' \\\\\",\" [ \\\"$(read_mutation_contract \\\"$tmp\\\" T3 change 1)\\\" = \\\\\",\" $'true\\\\tFAIL\\\\ttrue\\\\ttrue\\\\ttrue\\\\tROLLED_BACK\\\\tNONE' ]\",\" [ \\\"$(read_mutation_contract \\\"$tmp\\\" T5 verify 0)\\\" = \\\\\",\" $'true\\\\tNOT_APPLICABLE\\\\tfalse\\\\tfalse\\\\tnull\\\\tNO_MUTATION\\\\tNONE' ]\",\" 'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"OTHER\\\",\\\"status\\\":\\\"OK\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\" [ \\\"$(read_mutation_contract \\\"$tmp\\\" T6 change 0)\\\" = \\\\\",\" $'false\\\\tUNKNOWN\\\\tunknown\\\\tunknown\\\\tnull\\\\tUNKNOWN\\\\tINVALID_CONTRACT:ValueError' ]\",\" 'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T7\\\",\\\"status\\\":\\\"OK\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\" [ \\\"$(read_mutation_contract \\\"$tmp\\\" T7 change 0)\\\" = \\\\\",\" $'false\\\\tUNKNOWN\\\\tunknown\\\\tunknown\\\\tnull\\\\tUNKNOWN\\\\tMULTIPLE_CONTRACTS' ]\",\"usage() {\",\" cat >&2 <<'USAGE'\",\"Usage:\",\" homelab-chat-run COMMAND_ID MODE COMPONENT -- command [arguments...]\",\"MODE:\",\" read-only\",\" verify\",\"[ \\\"$#\\\" -ge 5 ] || usage\",\"COMMAND_ID=\\\"$1\\\"\",\"MODE=\\\"$2\\\"\",\"COMPONENT=\\\"$3\\\"\",\"shift 3\",\"[ \\\"${1:-}\\\" = '--' ] || usage\",\"shift\",\"[ \\\"$#\\\" -ge 1 ] || usage\",\"case \\\"$COMMAND_ID\\\" in\",\" ''|*[!A-Za-z0-9._-]*)\",\" echo 'RESULT=FAIL'\",\" echo 'REASON=INVALID_COMMAND_ID'\",\" exit 65\",\" ;;\",\"esac\",\"STARTED_AT=\\\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\\\"\",\"STAMP=\\\"$(date -u +%Y%m%dT%H%M%SZ)\\\"\",\"HOST_SHORT=\\\"$(hostname -s 2>/dev/null || hostname)\\\"\",\"RAW_FILE=\\\"$RAW_DIR/${COMMAND_ID}-${STAMP}.log\\\"\",\"SANITIZED_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.txt\\\"\",\"JSON_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.json\\\"\",\"TXT_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}-latest.txt\\\"\",\"REFERENCE_SHA256=\\\"$(sha256sum \\\"$REFERENCE\\\" | awk '{print $1}')\\\"\",\"ERROR_REGISTER_SHA256=\\\"$(sha256sum \\\"$ERROR_REGISTER\\\" | awk '{print $1}')\\\"\",\"BLOCK_REASON=''\",\"CHANGE_DECLARED=false\",\"RESULT_CONTRACT_VALID=true\",\"CONTRACT_STATUS='NOT_APPLICABLE'\",\"CHANGES_MADE=false\",\"ROLLBACK_STARTED=false\",\"ROLLBACK_RESTORED=null\",\"MUTATION_OUTCOME='NO_MUTATION'\",\"RESULT_CONTRACT_ERROR='NONE'\",\"COMMAND_RC=''\",\"if [ \\\"$MODE\\\" = change ]; then\",\" CHANGE_DECLARED=true\",\" RESULT_CONTRACT_VALID=false\",\" CONTRACT_STATUS='UNKNOWN'\",\" CHANGES_MADE=unknown\",\" ROLLBACK_STARTED=unknown\",\" ROLLBACK_RESTORED=null\",\" MUTATION_OUTCOME='UNKNOWN'\",\" RESULT_CONTRACT_ERROR='MISSING_CONTRACT'\",\"fi\",\" RC=73\",\" STATUS='BLOCKED'\",\" RESULT_CONTRACT_VALID=true\",\" CONTRACT_STATUS='BLOCKED'\",\" CHANGES_MADE=false\",\" ROLLBACK_STARTED=false\",\" MUTATION_OUTCOME='NO_MUTATION'\",\" RESULT_CONTRACT_ERROR='RUNNER_PREEXECUTION_BLOCK'\",\" {\",\" IFS=$'\\\\t' read -r \\\\\",\" RESULT_CONTRACT_VALID \\\\\",\" CONTRACT_STATUS \\\\\",\" CHANGES_MADE \\\\\",\" ROLLBACK_STARTED \\\\\",\" ROLLBACK_RESTORED \\\\\",\" MUTATION_OUTCOME \\\\\",\" RESULT_CONTRACT_ERROR < <(\",\" read_mutation_contract \\\\\",\" \\\"$RAW_FILE\\\" \\\\\",\" \\\"$COMMAND_ID\\\" \\\\\",\" \\\"$MODE\\\" \\\\\",\" \\\"$COMMAND_RC\\\"\",\" )\",\"python3 - \\\\\",\" \\\"$JSON_FILE\\\" \\\\\",\" \\\"$SANITIZED_FILE\\\" \\\\\",\" \\\"$COMMAND_ID\\\" \\\\\",\" \\\"$STATUS\\\" \\\\\",\" \\\"$RC\\\" \\\\\",\" \\\"$HOST_SHORT\\\" \\\\\",\" \\\"$MODE\\\" \\\\\",\" \\\"$BLOCK_REASON\\\" \\\\\",\" \\\"$CHANGE_DECLARED\\\" \\\\\",\" \\\"$RESULT_CONTRACT_VALID\\\" \\\\\",\" \\\"$CONTRACT_STATUS\\\" \\\\\",\" \\\"$CHANGES_MADE\\\" \\\\\",\" \\\"$ROLLBACK_STARTED\\\" \\\\\",\" \\\"$ROLLBACK_RESTORED\\\" \\\\\",\" \\\"$MUTATION_OUTCOME\\\" \\\\\",\" \\\"$RESULT_CONTRACT_ERROR\\\" \\\\\",\" \\\"$COMMAND_RC\\\" <<'PY'\",\"(\",\" json_path,\",\" output_path,\",\" command_id,\",\" status,\",\" rc,\",\" host,\",\" mode,\",\" block_reason,\",\" change_declared,\",\" result_contract_valid,\",\" contract_status,\",\" changes_made,\",\" rollback_started,\",\" rollback_restored,\",\" mutation_outcome,\",\" result_contract_error,\",\" command_rc,\",\") = sys.argv[1:]\",\"document = {\",\" \\\"schema_version\\\": 1,\",\" \\\"channel\\\": \\\"homelab-runtime\\\",\",\" \\\"command_id\\\": command_id,\",\" \\\"status\\\": status,\",\" \\\"rc\\\": int(rc),\",\" \\\"host\\\": host,\",\" \\\"mode\\\": mode,\",\" \\\"change_declared\\\": change_declared == \\\"true\\\",\",\" \\\"result_contract_valid\\\": result_contract_valid == \\\"true\\\",\",\" \\\"result_contract_status\\\": (\",\" None\",\" if contract_status in {\\\"\\\", \\\"UNKNOWN\\\", \\\"NOT_APPLICABLE\\\"}\",\" else contract_status\",\" ),\",\" \\\"result_contract_error\\\": (\",\" if result_contract_error == \\\"NONE\\\"\",\" else result_contract_error\",\" \\\"command_rc\\\": int(command_rc) if command_rc else None,\",\" \\\"changes_made\\\": optional_bool(changes_made),\",\" \\\"rollback_started\\\": optional_bool(rollback_started),\",\" \\\"rollback_restored\\\": optional_bool(rollback_restored),\",\" \\\"mutation_outcome\\\": mutation_outcome,\"]\nCANDIDATE_EXACTNESS_SIGNALS={\"source_or_hash\":true,\"version_id\":true,\"version_string\":true}\nHOLD_REASONS=[]\nFINAL_DECISION=ELIGIBLE_FOR_PORTAL200_APPLY4_CHANGE_CARRIER_BUILD\nAPPLY4_DESIGN2_END=true\n"
+}
diff --git a/runtime/history/NEWFI-260907-A-PORTAL200-APPLY4DESIGN2.txt b/runtime/history/NEWFI-260907-A-PORTAL200-APPLY4DESIGN2.txt
new file mode 100644
index 00000000..9841a639
--- /dev/null
+++ b/runtime/history/NEWFI-260907-A-PORTAL200-APPLY4DESIGN2.txt
@@ -0,0 +1,98 @@
+CHAT_OUTPUT_BEGIN
+COMMAND_ID=NEWFI-260907-A-PORTAL200-APPLY4DESIGN2
+STATUS=OK
+RC=0
+HOST=pve01
+MODE=read-only
+COMPONENT=newfi-portal200-apply4-candidate-exact-recovery
+REFERENCE_REGISTER_CHECK=OK
+REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
+ERROR_REGISTER_CHECK=OK
+ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
+COMMAND_SHA256=d9ecc50604b452f7f25f062a6d5c744609c344a965cb5a785f7c8eb28a1b74e3
+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=eb768ba37e84529ac30bac9faff315d6be84c63c2590d855fabd0f9231ba5bb0
+SANITIZED_OUTPUT_SHA256=eb768ba37e84529ac30bac9faff315d6be84c63c2590d855fabd0f9231ba5bb0
+OUTPUT_BEGIN
+APPLY4_DESIGN2_BEGIN=true
+COMMAND_ID=NEWFI-260907-A-PORTAL200-APPLY4DESIGN2
+MUTATION_SCOPE=NONE_READ_ONLY
+MUTATIONS_PERFORMED=NO
+ERROR_REGISTER_CHECK=OK
+ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
+REFERENCE_CHECK=OK
+REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
+AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED
+HISTORY_NEWFI_260907_PORTAL200_APPLY1_SHA256=e352a1ee17b6588b878c02a7ca5096e99b5bfd20391cfadaf9cd2a67f7043f17
+HISTORY_NEWFI_260907_PORTAL200_APPLY1_STATUS=FAIL
+HISTORY_NEWFI_260907_PORTAL200_APPLY1_RC=76
+HISTORY_NEWFI_260907_PORTAL200_APPLY1_CHANGES_MADE=unknown
+HISTORY_NEWFI_260907_PORTAL200_APPLY1_MUTATION_OUTCOME=UNKNOWN
+HISTORY_NEWFI_260907_PORTAL200_APPLY2_SHA256=5e043e4f2429583487a791569aeca832f744bb71a5eee1617bb6706f6657051b
+HISTORY_NEWFI_260907_PORTAL200_APPLY2_STATUS=FAIL
+HISTORY_NEWFI_260907_PORTAL200_APPLY2_RC=1
+HISTORY_NEWFI_260907_PORTAL200_APPLY2_CHANGES_MADE=false
+HISTORY_NEWFI_260907_PORTAL200_APPLY2_MUTATION_OUTCOME=NO_MUTATION
+HISTORY_NEWFI_260907_PORTAL200_APPLY3_SHA256=f3ea3fcebd7b182e64db6e963a34f1b90baca0d08477e25e27bf88c48b33611c
+HISTORY_NEWFI_260907_PORTAL200_APPLY3_STATUS=FAIL
+HISTORY_NEWFI_260907_PORTAL200_APPLY3_RC=76
+HISTORY_NEWFI_260907_PORTAL200_APPLY3_CHANGES_MADE=unknown
+HISTORY_NEWFI_260907_PORTAL200_APPLY3_MUTATION_OUTCOME=UNKNOWN
+HISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_SHA256=00c4dc5e100be0cb26a80262a8af96555457b5dc4fa924c6a9458089cd01474e
+HISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_STATUS=OK
+HISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_RC=0
+HISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_CHANGES_MADE=false
+HISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_MUTATION_OUTCOME=NO_MUTATION
+HISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_SHA256=805954f73608dbd343da33d387c59a6ad258a7f6a51965db4e78c3fd0f588fd4
+HISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_STATUS=OK
+HISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_RC=0
+HISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_CHANGES_MADE=false
+HISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_MUTATION_OUTCOME=NO_MUTATION
+HISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_SHA256=30370cad3d4d7e73c6612a5df702abe1fac6ae559bf142b5e489a19a1258cfb7
+HISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_STATUS=OK
+HISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_RC=0
+HISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_CHANGES_MADE=false
+HISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_MUTATION_OUTCOME=NO_MUTATION
+HISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_SHA256=08c00e675ffa960eca55102a114d305fb1a15291ff7e401dc43c09d087c32ece
+HISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_STATUS=OK
+HISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_RC=0
+HISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_CHANGES_MADE=false
+HISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_MUTATION_OUTCOME=NO_MUTATION
+HISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_SHA256=37d9ad10d0d9abb7fede76a4716cde8abe70866cb6ce8024243f399e39082ad7
+HISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_STATUS=OK
+HISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_RC=0
+HISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_CHANGES_MADE=false
+HISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_MUTATION_OUTCOME=NO_MUTATION
+NEWFI_260907_PORTAL200_APPLY1_CANDIDATE_RELEVANT_LINES=["CHAT_OUTPUT_BEGIN","COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1","STATUS=FAIL","RC=76","HOST=pve01","MODE=change","COMPONENT=newfi-portal200-deploy","REFERENCE_REGISTER_CHECK=OK","REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66","COMMAND_RC=1","CHANGES_MADE=unknown","ROLLBACK_STARTED=unknown","ROLLBACK_RESTORED=null","MUTATION_OUTCOME=UNKNOWN","SANITIZED=yes","SANITIZED_OUTPUT_SHA256=50310a6619ab35d100c11d8842e044852dc3f5589b3d100948bd7fd05bdd5f0b","OUTPUT_BEGIN","NEWFI200_BEGIN","PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22","PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production","PORTAL200_CANDIDATE_IDENTITY=PASS","PORTAL200_GIT_PRESTATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote\":\"06bab5acd124e768f70305b3d7eca2f595871890\"}","PORTAL200_CLUSTER=PASS","PORTAL200_RUNTIME_HELPER_LINT=PASS","PORTAL200_ERROR_BASELINE={\"prod\":0,\"staging\":40}","PORTAL200_FAILURE=QGA_GUEST_RC","HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260907-PORTAL200-APPLY1\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"ERROR\",\"version\":1}","PORTAL200_ROADMAP_REMAINS=22","NEWFI200_END","","OUTPUT_END"]
+NEWFI_260907_PORTAL200_APPLY2_CANDIDATE_RELEVANT_LINES=["CHAT_OUTPUT_BEGIN","COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2","STATUS=FAIL","RC=1","HOST=pve01","MODE=change","COMPONENT=newfi-portal200-deploy","REFERENCE_REGISTER_CHECK=OK","REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66","COMMAND_RC=1","CHANGES_MADE=false","ROLLBACK_STARTED=false","ROLLBACK_RESTORED=null","MUTATION_OUTCOME=NO_MUTATION","SANITIZED=yes","SANITIZED_OUTPUT_SHA256=c86dd3bbfbc94ff56e5cb678b0d8dd999af220229e3aea248a99e3d1f51d007a","OUTPUT_BEGIN","NEWFI200_BEGIN","PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22","PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production","PORTAL200_CANDIDATE_IDENTITY=PASS","PORTAL200_ORCHESTRATION_FIXES={\"failure_status\":\"FAIL\",\"staging_503_without_css_links\":true}","PORTAL200_GIT_PRESTATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote\":\"06bab5acd124e768f70305b3d7eca2f595871890\"}","PORTAL200_CLUSTER=PASS","PORTAL200_RUNTIME_HELPER_LINT=PASS","PORTAL200_ERROR_BASELINE={\"prod\":0,\"staging\":40}","PORTAL200_HTTP={\"bytes\":23800,\"css_count\":0,\"css_marker\":false,\"css_status\":[],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":false,\"state\":\"old\",\"status\":503,\"target\":\"staging\"}","PORTAL200_RUNTIME={\"html_bytes\":1116,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"target\":\"prod\"}","PORTAL200_FAILURE=QGA_GUEST_RC","HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260907-PORTAL200-APPLY2\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"FAIL\",\"version\":1}","PORTAL200_ROADMAP_REMAINS=22","NEWFI200_END","","OUTPUT_END"]
+NEWFI_260907_PORTAL200_APPLY3_CANDIDATE_RELEVANT_LINES=["CHAT_OUTPUT_BEGIN","COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","STATUS=FAIL","RC=76","HOST=pve01","MODE=change","COMPONENT=newfi-portal200-deploy","REFERENCE_REGISTER_CHECK=OK","REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66","COMMAND_RC=1","CHANGES_MADE=unknown","ROLLBACK_STARTED=unknown","ROLLBACK_RESTORED=null","MUTATION_OUTCOME=UNKNOWN","SANITIZED=yes","SANITIZED_OUTPUT_SHA256=312b61dd11c589bcf59b0425107fe3673b1b8e6e64af31a9954ca43541faaa98","OUTPUT_BEGIN","NEWFI200_BEGIN","PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22","PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production","PORTAL200_CANDIDATE_IDENTITY=PASS","PORTAL200_ORCHESTRATION_FIXES={\"css_href_regex_fixed\":true,\"failure_status\":\"FAIL\",\"prod_http_via_pve01_public_route\":true,\"staging_503_without_css_links\":true}","PORTAL200_GIT_PRESTATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote\":\"06bab5acd124e768f70305b3d7eca2f595871890\"}","PORTAL200_CLUSTER=PASS","PORTAL200_RUNTIME_HELPER_LINT=PASS","PORTAL200_ERROR_BASELINE={\"prod\":0,\"staging\":40}","PORTAL200_HTTP={\"bytes\":23800,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":false,\"state\":\"old\",\"status\":503,\"target\":\"staging\"}","PORTAL200_RUNTIME={\"html_bytes\":1116,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"target\":\"prod\"}","PORTAL200_HTTP={\"bytes\":25939,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"status\":200,\"target\":\"prod\"}","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}","PORTAL200_ROADMAP_REMAINS=22","NEWFI200_END","","OUTPUT_END"]
+NEWFI_260907_PORTAL200_APPLY2_OUTPUT_BLOCK_SHA256=c86dd3bbfbc94ff56e5cb678b0d8dd999af220229e3aea248a99e3d1f51d007a
+NEWFI_260907_PORTAL200_APPLY2_OUTPUT_BLOCK=NEWFI200_BEGIN\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\nPORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\nPORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\nPORTAL200_CANDIDATE_IDENTITY=PASS\nPORTAL200_ORCHESTRATION_FIXES={"failure_status":"FAIL","staging_503_without_css_links":true}\nPORTAL200_GIT_PRESTATE={"branch":"implementation/newfi-closed-mvp-20260906","clean":true,"head":"06bab5acd124e768f70305b3d7eca2f595871890","remote":"06bab5acd124e768f70305b3d7eca2f595871890"}\nPORTAL200_CLUSTER=PASS\nPORTAL200_RUNTIME_HELPER_LINT=PASS\nPORTAL200_ERROR_BASELINE={"prod":0,"staging":40}\nPORTAL200_HTTP={"bytes":23800,"css_count":0,"css_marker":false,"css_status":[],"forced_css_marker":null,"forced_css_status":null,"html_marker":false,"old_copy":false,"state":"old","status":503,"target":"staging"}\nPORTAL200_RUNTIME={"html_bytes":1116,"html_marker":false,"old_copy":true,"state":"old","target":"prod"}\nPORTAL200_FAILURE=QGA_GUEST_RC\nHOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"NEWFI-260907-PORTAL200-APPLY2","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}\nPORTAL200_ROADMAP_REMAINS=22\nNEWFI200_END\n
+NEWFI_260907_PORTAL200_APPLY3_OUTPUT_BLOCK_SHA256=312b61dd11c589bcf59b0425107fe3673b1b8e6e64af31a9954ca43541faaa98
+NEWFI_260907_PORTAL200_APPLY3_OUTPUT_BLOCK=NEWFI200_BEGIN\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\nPORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\nPORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\nPORTAL200_CANDIDATE_IDENTITY=PASS\nPORTAL200_ORCHESTRATION_FIXES={"css_href_regex_fixed":true,"failure_status":"FAIL","prod_http_via_pve01_public_route":true,"staging_503_without_css_links":true}\nPORTAL200_GIT_PRESTATE={"branch":"implementation/newfi-closed-mvp-20260906","clean":true,"head":"06bab5acd124e768f70305b3d7eca2f595871890","remote":"06bab5acd124e768f70305b3d7eca2f595871890"}\nPORTAL200_CLUSTER=PASS\nPORTAL200_RUNTIME_HELPER_LINT=PASS\nPORTAL200_ERROR_BASELINE={"prod":0,"staging":40}\nPORTAL200_HTTP={"bytes":23800,"css_count":2,"css_marker":false,"css_status":[200,200],"forced_css_marker":null,"forced_css_status":null,"html_marker":false,"old_copy":false,"state":"old","status":503,"target":"staging"}\nPORTAL200_RUNTIME={"html_bytes":1116,"html_marker":false,"old_copy":true,"state":"old","target":"prod"}\nPORTAL200_HTTP={"bytes":25939,"css_count":2,"css_marker":false,"css_status":[200,200],"forced_css_marker":null,"forced_css_status":null,"html_marker":false,"old_copy":true,"state":"old","status":200,"target":"prod"}\nPORTAL200_PREFLIGHT=PASS\nPORTAL200_FAILURE=IMPORT_FAILED\nPORTAL200_HTTP={"bytes":23800,"css_count":2,"css_marker":false,"css_status":[200,200],"forced_css_marker":null,"forced_css_status":null,"html_marker":false,"old_copy":false,"state":"old","status":503,"target":"staging"}\nPORTAL200_FAILURE_STAGING_ROLLBACK=PASS\nHOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"NEWFI-260907-PORTAL200-APPLY3","rollback_restored":true,"rollback_started":true,"status":"FAIL","version":1}\nPORTAL200_ROADMAP_REMAINS=22\nNEWFI200_END\n
+NEWFI_260907_PORTAL200_APPLY1_ATTEMPT_INVENTORY=[{"bytes":73,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/attempt.txt","sha256":"e499da1ae348df5f86b560c4655d92d4ad6bccd24925c9cc8e818e0ad2e45e47","text":"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\nSTATE=RESERVED_BEFORE_EXECUTION\n"},{"bytes":94,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/receipt.txt","sha256":"dc440de62a30fa2480b0b3d83c8eaa5b9692a90afc2cea28012c757f0b410c78","text":"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\nWRAPPER_RC=76\nPUBLICATION=NOT_INDEPENDENTLY_VERIFIED\n"},{"bytes":669,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/wrapper.log","sha256":"9685a3719da39ed64273e57bad5cd9a52bb637863d267750792bde1d82295f0e","text":"PAYLOAD_VALIDATION=OK\nremote: . Processing 1 references \nremote: Processed 1 references in total \nRESULT=OK\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\nCOMMIT_SHA=55aa9f336df6f3b8a7976899b2a1d58d878431c7\nSTATIC_PUBLICATION=OK\nRAW_BRANCH_PUBLICATION=OK\n\n===== HOMELAB CHAT RUN COMPLETE =====\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\nSTATUS=FAIL\nRC=76\nREFERENCE_REGISTER_CHECK=OK\nERROR_REGISTER_CHECK=OK\nDUPLICATE_FAILED_COMMAND_BLOCKED=false\nGITEA_PUBLICATION=OK\nPUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\nLOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY1-20260907T095034Z.log\nSHELL_SESSION_PRESERVED=yes\n"}]
+NEWFI_260907_PORTAL200_APPLY2_ATTEMPT_INVENTORY=[{"bytes":73,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/attempt.txt","sha256":"83643d80ccdc44fddd2837ef415cac4b96431e3af3b0db7d9f13364f75442f33","text":"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\nSTATE=RESERVED_BEFORE_EXECUTION\n"},{"bytes":89,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/receipt.txt","sha256":"07b965c02187f78a8aa6836ec8267fc8ef01270717114e4c5ff39efa31121929","text":"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\nWRAPPER_RC=1\nPUBLICATION=GITEA_RUNTIME_EXPECTED\n"},{"bytes":668,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/wrapper.log","sha256":"4c72462531ac8b9200007c954a1f9a90cebbfe346031bb71a07cb2ef67ac329d","text":"PAYLOAD_VALIDATION=OK\nremote: . Processing 1 references \nremote: Processed 1 references in total \nRESULT=OK\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\nCOMMIT_SHA=fe5f3ed2f5c68fc46fcbab828685c0a872b1ce59\nSTATIC_PUBLICATION=OK\nRAW_BRANCH_PUBLICATION=OK\n\n===== HOMELAB CHAT RUN COMPLETE =====\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\nSTATUS=FAIL\nRC=1\nREFERENCE_REGISTER_CHECK=OK\nERROR_REGISTER_CHECK=OK\nDUPLICATE_FAILED_COMMAND_BLOCKED=false\nGITEA_PUBLICATION=OK\nPUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\nLOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY2-20260907T105610Z.log\nSHELL_SESSION_PRESERVED=yes\n"}]
+NEWFI_260907_PORTAL200_APPLY3_ATTEMPT_INVENTORY=[{"bytes":73,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/attempt.txt","sha256":"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14","text":"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\nSTATE=RESERVED_BEFORE_EXECUTION\n"},{"bytes":90,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/receipt.txt","sha256":"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b","text":"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\nWRAPPER_RC=76\nPUBLICATION=GITEA_RUNTIME_EXPECTED\n"},{"bytes":669,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/wrapper.log","sha256":"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30","text":"PAYLOAD_VALIDATION=OK\nremote: . Processing 1 references \nremote: Processed 1 references in total \nRESULT=OK\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\nCOMMIT_SHA=bb707af34d2a2b6a6b23c3d4d03f6b701150a653\nSTATIC_PUBLICATION=OK\nRAW_BRANCH_PUBLICATION=OK\n\n===== HOMELAB CHAT RUN COMPLETE =====\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\nSTATUS=FAIL\nRC=76\nREFERENCE_REGISTER_CHECK=OK\nERROR_REGISTER_CHECK=OK\nDUPLICATE_FAILED_COMMAND_BLOCKED=false\nGITEA_PUBLICATION=OK\nPUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\nLOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY3-20260907T112033Z.log\nSHELL_SESSION_PRESERVED=yes\n"}]
+FILESYSTEM_PORTAL200_EVIDENCE=[{"bytes":14898,"path":"/root/.bash_history","relevant_lines":["]]>",""," &1"," )\"; SSH_RC=$?; printf 'PORTAL200_CANDIDATE_%s_QGA_BEGIN\\n' \"$LABEL\"; printf '%s\\n' \"$OUT\"; printf 'PORTAL200_CANDIDATE_%s_QGA_END\\n' \"$LABEL\"; printf 'PORTAL200_CANDIDATE_%s_SSH_RC=%s\\n' \"$LABEL\" \"$SSH_RC\"; if [ \"$SSH_RC\" -ne 0 ]; then return 1; fi; printf '%s' \"$OUT\" | python3 -c '","import json","import sys","assert \"No syntax errors detected\" in out","' || return 1; return 0; }; if [ \"$RC\" -eq 0 ]; then lint_php \"$CAND/src/addons/Newfi/Portal/Pub/Controller/Portal.php\" CONTROLLER; L1=$?; lint_php \"$CAND/src/addons/Newfi/Portal/Service/PortalData.php\" SERVICE; L2=$?; printf 'PORTAL200_CANDIDATE_CONTROLLER_LINT_RC=%s\\n' \"$L1\"; printf 'PORTAL200_CANDIDATE_SERVICE_LINT_RC=%s\\n' \"$L2\"; if [ \"$L1\" -ne 0 ] || [ \"$L2\" -ne 0 ]; then RC=1; fi; fi; END_HEAD=\"$(git -C \"$WT\" rev-parse HEAD 2>/dev/null)\"; END_STATUS=\"$("," git -C \"$WT\" status --porcelain=v1 --untracked-files=all 2>/dev/null",")\"; printf 'PORTAL200_CANDIDATE_END_GIT_HEAD=%s\\n' \"$END_HEAD\"; printf 'PORTAL200_CANDIDATE_END_GIT_CLEAN=%s\\n' \"$("," if [ -z \"$END_STATUS\" ]; then printf true; else printf false; fi",")\"; if [ \"$END_HEAD\" != \"$EXPECTED_HEAD\" ] || [ -n \"$END_STATUS\" ]; then RC=1; fi; if [ \"$RC\" -eq 0 ]; then printf 'PORTAL200_CANDIDATE_RESULT=PASS\\n'; printf 'PORTAL200_CANDIDATE_PATH=%s\\n' \"$CAND\"; printf 'PORTAL200_EXECUTED=NO\\n'; else printf 'PORTAL200_CANDIDATE_RESULT=FAIL\\n'; rm -rf \"$CAND\" 2>/dev/null || true; fi; printf 'PORTAL200_ROADMAP_REMAINS=22\\n'; printf 'PORTAL200_CANDIDATE_END=%s\\n' \"$CID\"; printf 'WRAPPER_RC=%s\\n' \"$RC\"; printf 'TERMINAL=KEEP_OPEN\\n'; printf 'NEWFI_COMMAND_SHELL_EXIT=DISABLED\\n'; true; ) || true","printf 'WRAPPER_SHELL_RC=0\\n'","printf 'TERMINAL=KEEP_OPEN\\n'"],"sha256":"0d1e6f73b9c6f8ffe1b3a3849bb0f787ed523b1e46a34960ad9ba422e4a3b91f"},{"bytes":73,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/attempt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","STATE=RESERVED_BEFORE_EXECUTION"],"sha256":"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14"},{"bytes":90,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/receipt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","WRAPPER_RC=76","PUBLICATION=GITEA_RUNTIME_EXPECTED"],"sha256":"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b"},{"bytes":669,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/wrapper.log","relevant_lines":["remote: Processed 1 references in total ","RESULT=OK","COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","COMMIT_SHA=bb707af34d2a2b6a6b23c3d4d03f6b701150a653","STATIC_PUBLICATION=OK","","===== HOMELAB CHAT RUN COMPLETE =====","STATUS=FAIL","RC=76","GITEA_PUBLICATION=OK","PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json","LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY3-20260907T112033Z.log","SHELL_SESSION_PRESERVED=yes"],"sha256":"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30"},{"bytes":73,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/attempt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1","STATE=RESERVED_BEFORE_EXECUTION"],"sha256":"e499da1ae348df5f86b560c4655d92d4ad6bccd24925c9cc8e818e0ad2e45e47"},{"bytes":94,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/receipt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1","WRAPPER_RC=76","PUBLICATION=NOT_INDEPENDENTLY_VERIFIED"],"sha256":"dc440de62a30fa2480b0b3d83c8eaa5b9692a90afc2cea28012c757f0b410c78"},{"bytes":669,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/wrapper.log","relevant_lines":["remote: Processed 1 references in total ","RESULT=OK","COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1","COMMIT_SHA=55aa9f336df6f3b8a7976899b2a1d58d878431c7","STATIC_PUBLICATION=OK","","===== HOMELAB CHAT RUN COMPLETE =====","STATUS=FAIL","RC=76","GITEA_PUBLICATION=OK","PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json","LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY1-20260907T095034Z.log","SHELL_SESSION_PRESERVED=yes"],"sha256":"9685a3719da39ed64273e57bad5cd9a52bb637863d267750792bde1d82295f0e"},{"bytes":73,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/attempt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2","STATE=RESERVED_BEFORE_EXECUTION"],"sha256":"83643d80ccdc44fddd2837ef415cac4b96431e3af3b0db7d9f13364f75442f33"},{"bytes":89,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/receipt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2","WRAPPER_RC=1","PUBLICATION=GITEA_RUNTIME_EXPECTED"],"sha256":"07b965c02187f78a8aa6836ec8267fc8ef01270717114e4c5ff39efa31121929"},{"bytes":668,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/wrapper.log","relevant_lines":["remote: Processed 1 references in total ","RESULT=OK","COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2","COMMIT_SHA=fe5f3ed2f5c68fc46fcbab828685c0a872b1ce59","STATIC_PUBLICATION=OK","","===== HOMELAB CHAT RUN COMPLETE =====","STATUS=FAIL","RC=1","GITEA_PUBLICATION=OK","PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json","LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY2-20260907T105610Z.log","SHELL_SESSION_PRESERVED=yes"],"sha256":"4c72462531ac8b9200007c954a1f9a90cebbfe346031bb71a07cb2ef67ac329d"},{"bytes":71,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-RCA4/attempt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-RCA4","STATE=RESERVED_BEFORE_EXECUTION"],"sha256":"6f5f48b114a59b391450532fdf2c73a2627105ffe91942054e272931af0af62b"},{"bytes":91,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-RCA4/receipt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-RCA4","WRAPPER_RC=0","PUBLICATION=NOT_INDEPENDENTLY_VERIFIED"],"sha256":"6406f6bc528bf48bd88eabccc9dd88a9fa25d6415f5121ed55b8aa8f357d0c84"},{"bytes":660,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-RCA4/wrapper.log","relevant_lines":["remote: Processed 1 references in total ","RESULT=OK","COMMAND_ID=NEWFI-260907-PORTAL200-RCA4","COMMIT_SHA=74bee60e6746db6bf0eba73b3c66c184bf148680","STATIC_PUBLICATION=OK","","===== HOMELAB CHAT RUN COMPLETE =====","STATUS=OK","RC=0","GITEA_PUBLICATION=OK","PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json","LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-RCA4-20260907T103455Z.log","SHELL_SESSION_PRESERVED=yes"],"sha256":"b7f1ea0cdee90fe027b3302bf1e932c15fbb80a73764b948269d3025307c7672"}]
+RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d
+RUNNER_CONTRACT_EXACT_RELEVANT_LINES=["import json","import sys","from pathlib import Path","","raw_path, command_id, mode, command_rc = sys.argv[1:]","command_rc = int(command_rc)","result = {"," \"valid\": True,"," \"status\": \"NOT_APPLICABLE\","," \"changes_made\": \"false\","," \"rollback_started\": \"false\","," \"rollback_restored\": \"null\","," \"mutation_outcome\": \"NO_MUTATION\","," \"error\": \"NONE\",","}","if mode == \"change\":"," result = {"," \"valid\": False,"," \"status\": \"UNKNOWN\","," \"changes_made\": \"unknown\","," \"rollback_started\": \"unknown\","," \"rollback_restored\": \"null\","," \"mutation_outcome\": \"UNKNOWN\","," \"error\": \"MISSING_CONTRACT\","," }"," marker = \"HOMELAB_RESULT_CONTRACT=\""," lines = Path(raw_path).read_bytes().decode("," \"utf-8\","," errors=\"replace\","," ).splitlines()"," document = json.loads(payloads[0])"," if not isinstance(document, dict):"," raise ValueError(\"contract root is not object\")"," if document.get(\"version\") != 1:"," raise ValueError(\"unsupported version\")"," if document.get(\"command_id\") != command_id:"," raise ValueError(\"command_id mismatch\")"," status = document.get(\"status\")"," if status not in {\"OK\", \"BLOCKED\", \"FAIL\"}:"," raise ValueError(\"invalid status\")"," changes = document.get(\"changes_made\")"," rollback_started = document.get(\"rollback_started\")"," rollback_restored = document.get(\"rollback_restored\")"," if not isinstance(changes, bool):"," raise ValueError(\"changes_made must be boolean\")"," if not isinstance(rollback_started, bool):"," raise ValueError(\"rollback_started must be boolean\")"," if rollback_restored is not None and not isinstance("," rollback_restored,"," bool,"," ):"," raise ValueError("," \"rollback_restored must be boolean or null\""," )"," if rollback_restored is True and rollback_started is not True:"," \"rollback_restored without rollback_started\""," if rollback_started is True and changes is not True:"," \"rollback_started without changes\""," if status == \"BLOCKED\" and ("," changes"," or rollback_started"," or command_rc != 2"," \"BLOCKED contract inconsistent with rc/mutation\""," raise ValueError(\"FAIL contract inconsistent with rc\")"," if not changes:"," outcome = \"NO_MUTATION\""," elif not rollback_started:"," outcome = \"MUTATED\""," elif rollback_restored is True:"," outcome = \"ROLLED_BACK\""," elif rollback_restored is False:"," outcome = \"ROLLBACK_FAILED\""," else:"," outcome = \"ROLLBACK_UNKNOWN\""," result = {"," \"valid\": True,"," \"status\": status,"," \"changes_made\": str(changes).lower(),"," \"rollback_started\": str("," rollback_started"," ).lower(),"," \"rollback_restored\": ("," \"null\""," if rollback_restored is None"," else str(rollback_restored).lower()"," ),"," \"mutation_outcome\": outcome,"," \"error\": \"NONE\","," }"," except Exception as exc:"," result[\"error\"] = ("," \"INVALID_CONTRACT:\" + type(exc).__name__"," )"," elif len(payloads) > 1:"," result[\"error\"] = \"MULTIPLE_CONTRACTS\"","print(\"\\t\".join(["," str(result[\"valid\"]).lower(),"," result[\"status\"],"," result[\"changes_made\"],"," result[\"rollback_started\"],"," result[\"rollback_restored\"],"," result[\"mutation_outcome\"],"," result[\"error\"],","]))","PY_CONTRACT"," tmp=\"$(mktemp)\""," trap 'rm -f \"$tmp\"' RETURN"," printf '%s\\n' \\"," 'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T1\",\"status\":\"BLOCKED\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}' \\"," >\"$tmp\""," [ \"$(read_mutation_contract \"$tmp\" T1 change 2)\" = \\"," $'true\\tBLOCKED\\tfalse\\tfalse\\tnull\\tNO_MUTATION\\tNONE' ]"," 'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T2\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\"," [ \"$(read_mutation_contract \"$tmp\" T2 change 0)\" = \\"," $'true\\tOK\\ttrue\\tfalse\\tnull\\tMUTATED\\tNONE' ]"," 'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T3\",\"status\":\"FAIL\",\"changes_made\":true,\"rollback_started\":true,\"rollback_restored\":true}' \\"," [ \"$(read_mutation_contract \"$tmp\" T3 change 1)\" = \\"," $'true\\tFAIL\\ttrue\\ttrue\\ttrue\\tROLLED_BACK\\tNONE' ]"," [ \"$(read_mutation_contract \"$tmp\" T5 verify 0)\" = \\"," $'true\\tNOT_APPLICABLE\\tfalse\\tfalse\\tnull\\tNO_MUTATION\\tNONE' ]"," 'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"OTHER\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\"," [ \"$(read_mutation_contract \"$tmp\" T6 change 0)\" = \\"," $'false\\tUNKNOWN\\tunknown\\tunknown\\tnull\\tUNKNOWN\\tINVALID_CONTRACT:ValueError' ]"," 'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T7\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\"," [ \"$(read_mutation_contract \"$tmp\" T7 change 0)\" = \\"," $'false\\tUNKNOWN\\tunknown\\tunknown\\tnull\\tUNKNOWN\\tMULTIPLE_CONTRACTS' ]","usage() {"," cat >&2 <<'USAGE'","Usage:"," homelab-chat-run COMMAND_ID MODE COMPONENT -- command [arguments...]","MODE:"," read-only"," verify","[ \"$#\" -ge 5 ] || usage","COMMAND_ID=\"$1\"","MODE=\"$2\"","COMPONENT=\"$3\"","shift 3","[ \"${1:-}\" = '--' ] || usage","shift","[ \"$#\" -ge 1 ] || usage","case \"$COMMAND_ID\" in"," ''|*[!A-Za-z0-9._-]*)"," echo 'RESULT=FAIL'"," echo 'REASON=INVALID_COMMAND_ID'"," exit 65"," ;;","esac","STARTED_AT=\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"","STAMP=\"$(date -u +%Y%m%dT%H%M%SZ)\"","HOST_SHORT=\"$(hostname -s 2>/dev/null || hostname)\"","RAW_FILE=\"$RAW_DIR/${COMMAND_ID}-${STAMP}.log\"","SANITIZED_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.txt\"","JSON_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.json\"","TXT_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}-latest.txt\"","REFERENCE_SHA256=\"$(sha256sum \"$REFERENCE\" | awk '{print $1}')\"","ERROR_REGISTER_SHA256=\"$(sha256sum \"$ERROR_REGISTER\" | awk '{print $1}')\"","BLOCK_REASON=''","CHANGE_DECLARED=false","RESULT_CONTRACT_VALID=true","CONTRACT_STATUS='NOT_APPLICABLE'","CHANGES_MADE=false","ROLLBACK_STARTED=false","ROLLBACK_RESTORED=null","MUTATION_OUTCOME='NO_MUTATION'","RESULT_CONTRACT_ERROR='NONE'","COMMAND_RC=''","if [ \"$MODE\" = change ]; then"," CHANGE_DECLARED=true"," RESULT_CONTRACT_VALID=false"," CONTRACT_STATUS='UNKNOWN'"," CHANGES_MADE=unknown"," ROLLBACK_STARTED=unknown"," ROLLBACK_RESTORED=null"," MUTATION_OUTCOME='UNKNOWN'"," RESULT_CONTRACT_ERROR='MISSING_CONTRACT'","fi"," RC=73"," STATUS='BLOCKED'"," RESULT_CONTRACT_VALID=true"," CONTRACT_STATUS='BLOCKED'"," CHANGES_MADE=false"," ROLLBACK_STARTED=false"," MUTATION_OUTCOME='NO_MUTATION'"," RESULT_CONTRACT_ERROR='RUNNER_PREEXECUTION_BLOCK'"," {"," IFS=$'\\t' read -r \\"," RESULT_CONTRACT_VALID \\"," CONTRACT_STATUS \\"," CHANGES_MADE \\"," ROLLBACK_STARTED \\"," ROLLBACK_RESTORED \\"," MUTATION_OUTCOME \\"," RESULT_CONTRACT_ERROR < <("," read_mutation_contract \\"," \"$RAW_FILE\" \\"," \"$COMMAND_ID\" \\"," \"$MODE\" \\"," \"$COMMAND_RC\""," )","python3 - \\"," \"$JSON_FILE\" \\"," \"$SANITIZED_FILE\" \\"," \"$COMMAND_ID\" \\"," \"$STATUS\" \\"," \"$RC\" \\"," \"$HOST_SHORT\" \\"," \"$MODE\" \\"," \"$BLOCK_REASON\" \\"," \"$CHANGE_DECLARED\" \\"," \"$RESULT_CONTRACT_VALID\" \\"," \"$CONTRACT_STATUS\" \\"," \"$CHANGES_MADE\" \\"," \"$ROLLBACK_STARTED\" \\"," \"$ROLLBACK_RESTORED\" \\"," \"$MUTATION_OUTCOME\" \\"," \"$RESULT_CONTRACT_ERROR\" \\"," \"$COMMAND_RC\" <<'PY'","("," json_path,"," output_path,"," command_id,"," status,"," rc,"," host,"," mode,"," block_reason,"," change_declared,"," result_contract_valid,"," contract_status,"," changes_made,"," rollback_started,"," rollback_restored,"," mutation_outcome,"," result_contract_error,"," command_rc,",") = sys.argv[1:]","document = {"," \"schema_version\": 1,"," \"channel\": \"homelab-runtime\","," \"command_id\": command_id,"," \"status\": status,"," \"rc\": int(rc),"," \"host\": host,"," \"mode\": mode,"," \"change_declared\": change_declared == \"true\","," \"result_contract_valid\": result_contract_valid == \"true\","," \"result_contract_status\": ("," None"," if contract_status in {\"\", \"UNKNOWN\", \"NOT_APPLICABLE\"}"," else contract_status"," ),"," \"result_contract_error\": ("," if result_contract_error == \"NONE\""," else result_contract_error"," \"command_rc\": int(command_rc) if command_rc else None,"," \"changes_made\": optional_bool(changes_made),"," \"rollback_started\": optional_bool(rollback_started),"," \"rollback_restored\": optional_bool(rollback_restored),"," \"mutation_outcome\": mutation_outcome,"]
+CANDIDATE_EXACTNESS_SIGNALS={"source_or_hash":true,"version_id":true,"version_string":true}
+HOLD_REASONS=[]
+FINAL_DECISION=ELIGIBLE_FOR_PORTAL200_APPLY4_CHANGE_CARRIER_BUILD
+APPLY4_DESIGN2_END=true
+
+OUTPUT_END
+CHAT_OUTPUT_END
diff --git a/runtime/latest.json b/runtime/latest.json
index c0d13cf1..0fd150ff 100644
--- a/runtime/latest.json
+++ b/runtime/latest.json
@@ -1,19 +1,19 @@
{
"schema_version": 1,
"channel": "homelab-runtime",
- "command_id": "NEWFI-260907-A-PORTAL200-APPLY4DESIGN1",
+ "command_id": "NEWFI-260907-A-PORTAL200-APPLY4DESIGN2",
"status": "OK",
"rc": 0,
"host": "pve01",
"mode": "read-only",
- "component": "newfi-portal200-apply4-candidate-provenance",
- "started_at_utc": "2026-09-07T20:05:14Z",
- "finished_at_utc": "2026-09-07T20:05:15Z",
+ "component": "newfi-portal200-apply4-candidate-exact-recovery",
+ "started_at_utc": "2026-09-07T20:15:19Z",
+ "finished_at_utc": "2026-09-07T20:15:32Z",
"reference_register_checked": true,
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
"error_register_checked": true,
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
- "command_sha256": "ba1e39080eba5653f605069127f81a6d51ebc978a94c50c3091e5301ed3cd4ae",
+ "command_sha256": "d9ecc50604b452f7f25f062a6d5c744609c344a965cb5a785f7c8eb28a1b74e3",
"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": "869943bf04580fdbc610eb5377b46fecec1a92821a1b0663d8faab7700ba6176",
- "sanitized_output_sha256": "869943bf04580fdbc610eb5377b46fecec1a92821a1b0663d8faab7700ba6176",
+ "raw_evidence_sha256": "eb768ba37e84529ac30bac9faff315d6be84c63c2590d855fabd0f9231ba5bb0",
+ "sanitized_output_sha256": "eb768ba37e84529ac30bac9faff315d6be84c63c2590d855fabd0f9231ba5bb0",
"output_truncated_in_json": false,
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
- "output": "APPLY4_DESIGN1_BEGIN=true\nCOMMAND_ID=NEWFI-260907-A-PORTAL200-APPLY4DESIGN1\nMUTATION_SCOPE=NONE_READ_ONLY\nMUTATIONS_PERFORMED=NO\nERROR_REGISTER_CHECK=OK\nERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\nREFERENCE_CHECK=OK\nREFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nLANEB_PASS_HISTORY_SHA256=08c00e675ffa960eca55102a114d305fb1a15291ff7e401dc43c09d087c32ece\nLANEB_PASS_STATUS=OK\nLANEB_PASS_HOLD_REASONS=[]\nLANEB_PASS_FINAL_DECISION=ELIGIBLE_FOR_PORTAL200_APPLY4_PREP\nAPPLY3_HISTORY_SHA256=f3ea3fcebd7b182e64db6e963a34f1b90baca0d08477e25e27bf88c48b33611c\nAPPLY3_STATUS=FAIL\nAPPLY3_RC=76\nAPPLY3_RESULT_CONTRACT_VALID=false\nAPPLY3_MUTATION_OUTCOME=UNKNOWN\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nRUNNER_CONTRACT_EXCERPT=[\"7:import json\",\"8:import sys\",\"9:from pathlib import Path\",\"11:raw_path, command_id, mode, command_rc = sys.argv[1:]\",\"12:command_rc = int(command_rc)\",\"14:result = {\",\"15:\\\"valid\\\": True,\",\"16:\\\"status\\\": \\\"NOT_APPLICABLE\\\",\",\"17:\\\"changes_made\\\": \\\"false\\\",\",\"18:\\\"rollback_started\\\": \\\"false\\\",\",\"19:\\\"rollback_restored\\\": \\\"null\\\",\",\"20:\\\"mutation_outcome\\\": \\\"NO_MUTATION\\\",\",\"21:\\\"error\\\": \\\"NONE\\\",\",\"22:}\",\"24:if mode == \\\"change\\\":\",\"25:result = {\",\"26:\\\"valid\\\": False,\",\"27:\\\"status\\\": \\\"UNKNOWN\\\",\",\"28:\\\"changes_made\\\": \\\"unknown\\\",\",\"29:\\\"rollback_started\\\": \\\"unknown\\\",\",\"30:\\\"rollback_restored\\\": \\\"null\\\",\",\"31:\\\"mutation_outcome\\\": \\\"UNKNOWN\\\",\",\"32:\\\"error\\\": \\\"MISSING_CONTRACT\\\",\",\"33:}\",\"34:marker = \\\"HOMELAB_RESULT_CONTRACT=\\\"\",\"35:lines = Path(raw_path).read_bytes().decode(\",\"36:\\\"utf-8\\\",\",\"37:errors=\\\"replace\\\",\",\"38:).splitlines()\",\"44:if len(payloads) == 1:\",\"45:try:\",\"46:document = json.loads(payloads[0])\",\"47:if not isinstance(document, dict):\",\"48:raise ValueError(\\\"contract root is not object\\\")\",\"49:if document.get(\\\"version\\\") != 1:\",\"50:raise ValueError(\\\"unsupported version\\\")\",\"51:if document.get(\\\"command_id\\\") != command_id:\",\"52:raise ValueError(\\\"command_id mismatch\\\")\",\"53:status = document.get(\\\"status\\\")\",\"54:if status not in {\\\"OK\\\", \\\"BLOCKED\\\", \\\"FAIL\\\"}:\",\"55:raise ValueError(\\\"invalid status\\\")\",\"56:changes = document.get(\\\"changes_made\\\")\",\"57:rollback_started = document.get(\\\"rollback_started\\\")\",\"58:rollback_restored = document.get(\\\"rollback_restored\\\")\",\"59:if not isinstance(changes, bool):\",\"60:raise ValueError(\\\"changes_made must be boolean\\\")\",\"61:if not isinstance(rollback_started, bool):\",\"62:raise ValueError(\\\"rollback_started must be boolean\\\")\",\"63:if rollback_restored is not None and not isinstance(\",\"64:rollback_restored,\",\"65:bool,\",\"66:):\",\"67:raise ValueError(\",\"68:\\\"rollback_restored must be boolean or null\\\"\",\"69:)\",\"70:if rollback_restored is True and rollback_started is not True:\",\"71:raise ValueError(\",\"72:\\\"rollback_restored without rollback_started\\\"\",\"73:)\",\"74:if rollback_started is True and changes is not True:\",\"75:raise ValueError(\",\"76:\\\"rollback_started without changes\\\"\",\"77:)\",\"78:if status == \\\"BLOCKED\\\" and (\",\"79:changes\",\"80:or rollback_started\",\"81:or command_rc != 2\",\"82:):\",\"83:raise ValueError(\",\"84:\\\"BLOCKED contract inconsistent with rc/mutation\\\"\",\"85:)\",\"86:if status == \\\"OK\\\" and command_rc != 0:\",\"87:raise ValueError(\\\"OK contract inconsistent with rc\\\")\",\"88:if status == \\\"FAIL\\\" and command_rc == 0:\",\"89:raise ValueError(\\\"FAIL contract inconsistent with rc\\\")\",\"91:if not changes:\",\"92:outcome = \\\"NO_MUTATION\\\"\",\"93:elif not rollback_started:\",\"94:outcome = \\\"MUTATED\\\"\",\"95:elif rollback_restored is True:\",\"96:outcome = \\\"ROLLED_BACK\\\"\",\"97:elif rollback_restored is False:\",\"98:outcome = \\\"ROLLBACK_FAILED\\\"\",\"99:else:\",\"100:outcome = \\\"ROLLBACK_UNKNOWN\\\"\",\"102:result = {\",\"103:\\\"valid\\\": True,\",\"104:\\\"status\\\": status,\",\"105:\\\"changes_made\\\": str(changes).lower(),\",\"106:\\\"rollback_started\\\": str(\",\"107:rollback_started\",\"108:).lower(),\",\"109:\\\"rollback_restored\\\": (\",\"110:\\\"null\\\"\",\"111:if rollback_restored is None\",\"112:else str(rollback_restored).lower()\",\"113:),\",\"114:\\\"mutation_outcome\\\": outcome,\",\"115:\\\"error\\\": \\\"NONE\\\",\",\"116:}\",\"117:except Exception as exc:\",\"118:result[\\\"error\\\"] = (\",\"119:\\\"INVALID_CONTRACT:\\\" + type(exc).__name__\",\"120:)\",\"121:elif len(payloads) > 1:\",\"122:result[\\\"error\\\"] = \\\"MULTIPLE_CONTRACTS\\\"\",\"124:print(\\\"\\\\t\\\".join([\",\"125:str(result[\\\"valid\\\"]).lower(),\",\"126:result[\\\"status\\\"],\",\"127:result[\\\"changes_made\\\"],\",\"128:result[\\\"rollback_started\\\"],\",\"129:result[\\\"rollback_restored\\\"],\",\"130:result[\\\"mutation_outcome\\\"],\",\"131:result[\\\"error\\\"],\",\"132:]))\",\"133:PY_CONTRACT\",\"138:tmp=\\\"$(mktemp)\\\"\",\"139:trap 'rm -f \\\"$tmp\\\"' RETURN\",\"141:printf '%s\\\\n' \\\\\",\"142:'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T1\\\",\\\"status\\\":\\\"BLOCKED\\\",\\\"changes_made\\\":false,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\"143:>\\\"$tmp\\\"\",\"144:[ \\\"$(read_mutation_contract \\\"$tmp\\\" T1 change 2)\\\" = \\\\\",\"145:$'true\\\\tBLOCKED\\\\tfalse\\\\tfalse\\\\tnull\\\\tNO_MUTATION\\\\tNONE' ]\",\"147:printf '%s\\\\n' \\\\\",\"148:'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T2\\\",\\\"status\\\":\\\"OK\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\"149:>\\\"$tmp\\\"\",\"150:[ \\\"$(read_mutation_contract \\\"$tmp\\\" T2 change 0)\\\" = \\\\\",\"151:$'true\\\\tOK\\\\ttrue\\\\tfalse\\\\tnull\\\\tMUTATED\\\\tNONE' ]\",\"153:printf '%s\\\\n' \\\\\",\"154:'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T3\\\",\\\"status\\\":\\\"FAIL\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":true,\\\"rollback_restored\\\":true}' \\\\\",\"155:>\\\"$tmp\\\"\",\"156:[ \\\"$(read_mutation_contract \\\"$tmp\\\" T3 change 1)\\\" = \\\\\",\"157:$'true\\\\tFAIL\\\\ttrue\\\\ttrue\\\\ttrue\\\\tROLLED_BACK\\\\tNONE' ]\",\"164:[ \\\"$(read_mutation_contract \\\"$tmp\\\" T5 verify 0)\\\" = \\\\\",\"165:$'true\\\\tNOT_APPLICABLE\\\\tfalse\\\\tfalse\\\\tnull\\\\tNO_MUTATION\\\\tNONE' ]\",\"167:printf '%s\\\\n' \\\\\",\"168:'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"OTHER\\\",\\\"status\\\":\\\"OK\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\"169:>\\\"$tmp\\\"\",\"170:[ \\\"$(read_mutation_contract \\\"$tmp\\\" T6 change 0)\\\" = \\\\\",\"171:$'false\\\\tUNKNOWN\\\\tunknown\\\\tunknown\\\\tnull\\\\tUNKNOWN\\\\tINVALID_CONTRACT:ValueError' ]\",\"173:printf '%s\\\\n' \\\\\",\"174:'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T7\\\",\\\"status\\\":\\\"OK\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\"175:'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T7\\\",\\\"status\\\":\\\"OK\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\"176:>\\\"$tmp\\\"\",\"177:[ \\\"$(read_mutation_contract \\\"$tmp\\\" T7 change 0)\\\" = \\\\\",\"178:$'false\\\\tUNKNOWN\\\\tunknown\\\\tunknown\\\\tnull\\\\tUNKNOWN\\\\tMULTIPLE_CONTRACTS' ]\",\"188:usage() {\",\"189:cat >&2 <<'USAGE'\",\"190:Usage:\",\"191:homelab-chat-run COMMAND_ID MODE COMPONENT -- command [arguments...]\",\"193:MODE:\",\"194:read-only\",\"195:verify\",\"204:}\",\"206:[ \\\"$#\\\" -ge 5 ] || usage\",\"208:COMMAND_ID=\\\"$1\\\"\",\"209:MODE=\\\"$2\\\"\",\"210:COMPONENT=\\\"$3\\\"\",\"211:shift 3\",\"213:[ \\\"${1:-}\\\" = '--' ] || usage\",\"214:shift\",\"215:[ \\\"$#\\\" -ge 1 ] || usage\",\"217:case \\\"$COMMAND_ID\\\" in\",\"218:''|*[!A-Za-z0-9._-]*)\",\"219:echo 'RESULT=FAIL'\",\"220:echo 'REASON=INVALID_COMMAND_ID'\",\"221:exit 65\",\"222:;;\",\"223:esac\",\"293:STARTED_AT=\\\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\\\"\",\"294:STAMP=\\\"$(date -u +%Y%m%dT%H%M%SZ)\\\"\",\"295:HOST_SHORT=\\\"$(hostname -s 2>/dev/null || hostname)\\\"\",\"297:RAW_FILE=\\\"$RAW_DIR/${COMMAND_ID}-${STAMP}.log\\\"\",\"298:SANITIZED_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.txt\\\"\",\"299:JSON_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.json\\\"\",\"300:TXT_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}-latest.txt\\\"\",\"302:REFERENCE_SHA256=\\\"$(sha256sum \\\"$REFERENCE\\\" | awk '{print $1}')\\\"\",\"303:ERROR_REGISTER_SHA256=\\\"$(sha256sum \\\"$ERROR_REGISTER\\\" | awk '{print $1}')\\\"\",\"328:REPEAT_BLOCKED=false\",\"329:BLOCK_REASON=''\",\"330:CHANGE_DECLARED=false\",\"331:RESULT_CONTRACT_VALID=true\",\"332:CONTRACT_STATUS='NOT_APPLICABLE'\",\"333:CHANGES_MADE=false\",\"334:ROLLBACK_STARTED=false\",\"335:ROLLBACK_RESTORED=null\",\"336:MUTATION_OUTCOME='NO_MUTATION'\",\"337:RESULT_CONTRACT_ERROR='NONE'\",\"338:COMMAND_RC=''\",\"340:if [ \\\"$MODE\\\" = change ]; then\",\"341:CHANGE_DECLARED=true\",\"342:RESULT_CONTRACT_VALID=false\",\"343:CONTRACT_STATUS='UNKNOWN'\",\"344:CHANGES_MADE=unknown\",\"345:ROLLBACK_STARTED=unknown\",\"346:ROLLBACK_RESTORED=null\",\"347:MUTATION_OUTCOME='UNKNOWN'\",\"348:RESULT_CONTRACT_ERROR='MISSING_CONTRACT'\",\"349:fi\",\"354:RUN_STARTED=false\",\"355:REPEAT_BLOCKED=true\",\"356:BLOCK_REASON='EXACT_FAILED_COMMAND_REPEAT'\",\"357:RC=73\",\"358:STATUS='BLOCKED'\",\"359:RESULT_CONTRACT_VALID=true\",\"360:CONTRACT_STATUS='BLOCKED'\",\"361:CHANGES_MADE=false\",\"362:ROLLBACK_STARTED=false\",\"363:ROLLBACK_RESTORED=null\",\"364:MUTATION_OUTCOME='NO_MUTATION'\",\"365:RESULT_CONTRACT_ERROR='RUNNER_PREEXECUTION_BLOCK'\",\"367:{\",\"385:esac\",\"387:timeout \\\\\",\"388:--foreground \\\\\",\"389:--preserve-status \\\\\",\"390:\\\"$HOMELAB_TIMEOUT\\\" \\\\\",\"391:\\\"$@\\\" >\\\"$RAW_FILE\\\" 2>&1\",\"392:RC=$?\",\"393:else\"]\nTARGET_WORKTREES=[{\"dirty_count\":0,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote_head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"repo\":\"/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906\"}]\nGIT_REPO=/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906\nGIT_HEAD=06bab5acd124e768f70305b3d7eca2f595871890\nGIT_REMOTE_HEAD=06bab5acd124e768f70305b3d7eca2f595871890\nGIT_DIRTY_COUNT=0\nCURRENT_PORTAL_GIT_FILES=[\"src/addons/Newfi/Portal/Pub/Controller/Portal.php\",\"src/addons/Newfi/Portal/Pub/View/Portal.php\",\"src/addons/Newfi/Portal/_data/navigation.xml\",\"src/addons/Newfi/Portal/_data/phrases.xml\",\"src/addons/Newfi/Portal/_data/routes.xml\",\"src/addons/Newfi/Portal/_data/templates.xml\",\"src/addons/Newfi/Portal/addon.json\"]\nCURRENT_PORTAL_GIT_MANIFEST={\"src/addons/Newfi/Portal/Pub/Controller/Portal.php\":{\"bytes\":247,\"sha256\":\"53909e753ea5a011550fd280ad1c342a74ca9949be092dfbd95244243cae92f3\"},\"src/addons/Newfi/Portal/Pub/View/Portal.php\":{\"bytes\":79,\"sha256\":\"26e3b77c2c86d4f4a6fd51f0472e3f38e70e14c984ffd8d04dcec39071a2a69f\"},\"src/addons/Newfi/Portal/_data/navigation.xml\":{\"bytes\":281,\"sha256\":\"5d724ef5141438bdd0b9dba6a583d330bc6940b0ace5c21c7a8d5301e7d8d649\"},\"src/addons/Newfi/Portal/_data/phrases.xml\":{\"bytes\":173,\"sha256\":\"15282a06a956bda4e810f6b26b1703676dd766424029cd372ce0fd7832dbe09c\"},\"src/addons/Newfi/Portal/_data/routes.xml\":{\"bytes\":144,\"sha256\":\"9b80ef229bcebb49a5930369bb272ed85367deef66070f432948001096673629\"},\"src/addons/Newfi/Portal/_data/templates.xml\":{\"bytes\":1461,\"sha256\":\"c29c04f8b937284e821c87957653e87c2f6ac014fac30648a0f6b18e84392adf\"},\"src/addons/Newfi/Portal/addon.json\":{\"bytes\":378,\"json\":{\"description\":\"Minimal private-staging portal for the Newfi closed MVP.\",\"dev\":\"Newfi\",\"dev_url\":\"\",\"extra_urls\":[],\"faq_url\":\"\",\"icon\":\"\",\"legacy_addon_id\":\"\",\"require\":{\"XF\":[2031270,\"XenForo 2.3.12+\"]},\"support_url\":\"\",\"title\":\"Newfi Portal\",\"version_id\":1000010,\"version_string\":\"1.0.0 Alpha 1\"},\"sha256\":\"288a61044c941107162d045be49ab2e7c844d1586b25378a7289b3c7275010ab\"}}\nAPPLY3_ATTEMPT_DIR=/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3\nAPPLY3_ATTEMPT_EXISTS=true\nAPPLY3_ATTEMPT_FILES=[{\"bytes\":73,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/attempt.txt\",\"sha256\":\"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14\"},{\"bytes\":90,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/receipt.txt\",\"sha256\":\"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b\"},{\"bytes\":669,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/wrapper.log\",\"sha256\":\"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30\"}]\nRELATED_ARTIFACT_FILES=[]\nCANDIDATE_PORTAL_ROOTS=[]\nCANDIDATE_PORTAL_MANIFESTS=[]\nCANDIDATE_ARTIFACT_EVIDENCE=[{\"decoded_payloads\":[],\"hits\":[\"1:COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"2:STATE=RESERVED_BEFORE_EXECUTION\"],\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/attempt.txt\",\"sha256\":\"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14\"},{\"decoded_payloads\":[],\"hits\":[\"1:COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"2:WRAPPER_RC=76\",\"3:PUBLICATION=GITEA_RUNTIME_EXPECTED\"],\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/receipt.txt\",\"sha256\":\"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b\"},{\"decoded_payloads\":[],\"hits\":[\"3:remote: Processed 1 references in total \",\"4:RESULT=OK\",\"5:COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"6:COMMIT_SHA=bb707af34d2a2b6a6b23c3d4d03f6b701150a653\",\"7:STATIC_PUBLICATION=OK\",\"9:\",\"10:===== HOMELAB CHAT RUN COMPLETE =====\",\"11:COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"12:STATUS=FAIL\",\"13:RC=76\",\"17:GITEA_PUBLICATION=OK\",\"18:PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\",\"19:LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY3-20260907T112033Z.log\",\"20:SHELL_SESSION_PRESERVED=yes\"],\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/wrapper.log\",\"sha256\":\"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30\"}]\nPORTAL_GIT_ALL_HISTORY=[\"ca07bfc20953585887f7cc2f1d443cf8313912c8\\t2026-09-06T16:40:06+03:00\\tfeat: add Portal navigation and widgets\",\"82dd2066df377ba9d904f68f90898e009413eec9\\t2026-09-06T16:15:39+03:00\\tfeat: add Newfi Portal staging checkpoint\"]\nPORTAL_UNREACHABLE_COMMITS=[]\nHOLD_REASONS=[]\nFINAL_DECISION=ELIGIBLE_FOR_PORTAL200_APPLY4_CHANGE_CARRIER_BUILD\nAPPLY4_DESIGN1_END=true\n"
+ "output": "APPLY4_DESIGN2_BEGIN=true\nCOMMAND_ID=NEWFI-260907-A-PORTAL200-APPLY4DESIGN2\nMUTATION_SCOPE=NONE_READ_ONLY\nMUTATIONS_PERFORMED=NO\nERROR_REGISTER_CHECK=OK\nERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\nREFERENCE_CHECK=OK\nREFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nHISTORY_NEWFI_260907_PORTAL200_APPLY1_SHA256=e352a1ee17b6588b878c02a7ca5096e99b5bfd20391cfadaf9cd2a67f7043f17\nHISTORY_NEWFI_260907_PORTAL200_APPLY1_STATUS=FAIL\nHISTORY_NEWFI_260907_PORTAL200_APPLY1_RC=76\nHISTORY_NEWFI_260907_PORTAL200_APPLY1_CHANGES_MADE=unknown\nHISTORY_NEWFI_260907_PORTAL200_APPLY1_MUTATION_OUTCOME=UNKNOWN\nHISTORY_NEWFI_260907_PORTAL200_APPLY2_SHA256=5e043e4f2429583487a791569aeca832f744bb71a5eee1617bb6706f6657051b\nHISTORY_NEWFI_260907_PORTAL200_APPLY2_STATUS=FAIL\nHISTORY_NEWFI_260907_PORTAL200_APPLY2_RC=1\nHISTORY_NEWFI_260907_PORTAL200_APPLY2_CHANGES_MADE=false\nHISTORY_NEWFI_260907_PORTAL200_APPLY2_MUTATION_OUTCOME=NO_MUTATION\nHISTORY_NEWFI_260907_PORTAL200_APPLY3_SHA256=f3ea3fcebd7b182e64db6e963a34f1b90baca0d08477e25e27bf88c48b33611c\nHISTORY_NEWFI_260907_PORTAL200_APPLY3_STATUS=FAIL\nHISTORY_NEWFI_260907_PORTAL200_APPLY3_RC=76\nHISTORY_NEWFI_260907_PORTAL200_APPLY3_CHANGES_MADE=unknown\nHISTORY_NEWFI_260907_PORTAL200_APPLY3_MUTATION_OUTCOME=UNKNOWN\nHISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_SHA256=00c4dc5e100be0cb26a80262a8af96555457b5dc4fa924c6a9458089cd01474e\nHISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_STATUS=OK\nHISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_RC=0\nHISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_CHANGES_MADE=false\nHISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_MUTATION_OUTCOME=NO_MUTATION\nHISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_SHA256=805954f73608dbd343da33d387c59a6ad258a7f6a51965db4e78c3fd0f588fd4\nHISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_STATUS=OK\nHISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_RC=0\nHISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_CHANGES_MADE=false\nHISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_MUTATION_OUTCOME=NO_MUTATION\nHISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_SHA256=30370cad3d4d7e73c6612a5df702abe1fac6ae559bf142b5e489a19a1258cfb7\nHISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_STATUS=OK\nHISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_RC=0\nHISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_CHANGES_MADE=false\nHISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_MUTATION_OUTCOME=NO_MUTATION\nHISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_SHA256=08c00e675ffa960eca55102a114d305fb1a15291ff7e401dc43c09d087c32ece\nHISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_STATUS=OK\nHISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_RC=0\nHISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_CHANGES_MADE=false\nHISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_MUTATION_OUTCOME=NO_MUTATION\nHISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_SHA256=37d9ad10d0d9abb7fede76a4716cde8abe70866cb6ce8024243f399e39082ad7\nHISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_STATUS=OK\nHISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_RC=0\nHISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_CHANGES_MADE=false\nHISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_MUTATION_OUTCOME=NO_MUTATION\nNEWFI_260907_PORTAL200_APPLY1_CANDIDATE_RELEVANT_LINES=[\"CHAT_OUTPUT_BEGIN\",\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\",\"STATUS=FAIL\",\"RC=76\",\"HOST=pve01\",\"MODE=change\",\"COMPONENT=newfi-portal200-deploy\",\"REFERENCE_REGISTER_CHECK=OK\",\"REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\",\"COMMAND_RC=1\",\"CHANGES_MADE=unknown\",\"ROLLBACK_STARTED=unknown\",\"ROLLBACK_RESTORED=null\",\"MUTATION_OUTCOME=UNKNOWN\",\"SANITIZED=yes\",\"SANITIZED_OUTPUT_SHA256=50310a6619ab35d100c11d8842e044852dc3f5589b3d100948bd7fd05bdd5f0b\",\"OUTPUT_BEGIN\",\"NEWFI200_BEGIN\",\"PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\",\"PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\",\"PORTAL200_CANDIDATE_IDENTITY=PASS\",\"PORTAL200_GIT_PRESTATE={\\\"branch\\\":\\\"implementation/newfi-closed-mvp-20260906\\\",\\\"clean\\\":true,\\\"head\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\",\\\"remote\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\"}\",\"PORTAL200_CLUSTER=PASS\",\"PORTAL200_RUNTIME_HELPER_LINT=PASS\",\"PORTAL200_ERROR_BASELINE={\\\"prod\\\":0,\\\"staging\\\":40}\",\"PORTAL200_FAILURE=QGA_GUEST_RC\",\"HOMELAB_RESULT_CONTRACT={\\\"changes_made\\\":false,\\\"command_id\\\":\\\"NEWFI-260907-PORTAL200-APPLY1\\\",\\\"rollback_restored\\\":null,\\\"rollback_started\\\":false,\\\"status\\\":\\\"ERROR\\\",\\\"version\\\":1}\",\"PORTAL200_ROADMAP_REMAINS=22\",\"NEWFI200_END\",\"\",\"OUTPUT_END\"]\nNEWFI_260907_PORTAL200_APPLY2_CANDIDATE_RELEVANT_LINES=[\"CHAT_OUTPUT_BEGIN\",\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\",\"STATUS=FAIL\",\"RC=1\",\"HOST=pve01\",\"MODE=change\",\"COMPONENT=newfi-portal200-deploy\",\"REFERENCE_REGISTER_CHECK=OK\",\"REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\",\"COMMAND_RC=1\",\"CHANGES_MADE=false\",\"ROLLBACK_STARTED=false\",\"ROLLBACK_RESTORED=null\",\"MUTATION_OUTCOME=NO_MUTATION\",\"SANITIZED=yes\",\"SANITIZED_OUTPUT_SHA256=c86dd3bbfbc94ff56e5cb678b0d8dd999af220229e3aea248a99e3d1f51d007a\",\"OUTPUT_BEGIN\",\"NEWFI200_BEGIN\",\"PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\",\"PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\",\"PORTAL200_CANDIDATE_IDENTITY=PASS\",\"PORTAL200_ORCHESTRATION_FIXES={\\\"failure_status\\\":\\\"FAIL\\\",\\\"staging_503_without_css_links\\\":true}\",\"PORTAL200_GIT_PRESTATE={\\\"branch\\\":\\\"implementation/newfi-closed-mvp-20260906\\\",\\\"clean\\\":true,\\\"head\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\",\\\"remote\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\"}\",\"PORTAL200_CLUSTER=PASS\",\"PORTAL200_RUNTIME_HELPER_LINT=PASS\",\"PORTAL200_ERROR_BASELINE={\\\"prod\\\":0,\\\"staging\\\":40}\",\"PORTAL200_HTTP={\\\"bytes\\\":23800,\\\"css_count\\\":0,\\\"css_marker\\\":false,\\\"css_status\\\":[],\\\"forced_css_marker\\\":null,\\\"forced_css_status\\\":null,\\\"html_marker\\\":false,\\\"old_copy\\\":false,\\\"state\\\":\\\"old\\\",\\\"status\\\":503,\\\"target\\\":\\\"staging\\\"}\",\"PORTAL200_RUNTIME={\\\"html_bytes\\\":1116,\\\"html_marker\\\":false,\\\"old_copy\\\":true,\\\"state\\\":\\\"old\\\",\\\"target\\\":\\\"prod\\\"}\",\"PORTAL200_FAILURE=QGA_GUEST_RC\",\"HOMELAB_RESULT_CONTRACT={\\\"changes_made\\\":false,\\\"command_id\\\":\\\"NEWFI-260907-PORTAL200-APPLY2\\\",\\\"rollback_restored\\\":null,\\\"rollback_started\\\":false,\\\"status\\\":\\\"FAIL\\\",\\\"version\\\":1}\",\"PORTAL200_ROADMAP_REMAINS=22\",\"NEWFI200_END\",\"\",\"OUTPUT_END\"]\nNEWFI_260907_PORTAL200_APPLY3_CANDIDATE_RELEVANT_LINES=[\"CHAT_OUTPUT_BEGIN\",\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"STATUS=FAIL\",\"RC=76\",\"HOST=pve01\",\"MODE=change\",\"COMPONENT=newfi-portal200-deploy\",\"REFERENCE_REGISTER_CHECK=OK\",\"REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\",\"COMMAND_RC=1\",\"CHANGES_MADE=unknown\",\"ROLLBACK_STARTED=unknown\",\"ROLLBACK_RESTORED=null\",\"MUTATION_OUTCOME=UNKNOWN\",\"SANITIZED=yes\",\"SANITIZED_OUTPUT_SHA256=312b61dd11c589bcf59b0425107fe3673b1b8e6e64af31a9954ca43541faaa98\",\"OUTPUT_BEGIN\",\"NEWFI200_BEGIN\",\"PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\",\"PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\",\"PORTAL200_CANDIDATE_IDENTITY=PASS\",\"PORTAL200_ORCHESTRATION_FIXES={\\\"css_href_regex_fixed\\\":true,\\\"failure_status\\\":\\\"FAIL\\\",\\\"prod_http_via_pve01_public_route\\\":true,\\\"staging_503_without_css_links\\\":true}\",\"PORTAL200_GIT_PRESTATE={\\\"branch\\\":\\\"implementation/newfi-closed-mvp-20260906\\\",\\\"clean\\\":true,\\\"head\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\",\\\"remote\\\":\\\"06bab5acd124e768f70305b3d7eca2f595871890\\\"}\",\"PORTAL200_CLUSTER=PASS\",\"PORTAL200_RUNTIME_HELPER_LINT=PASS\",\"PORTAL200_ERROR_BASELINE={\\\"prod\\\":0,\\\"staging\\\":40}\",\"PORTAL200_HTTP={\\\"bytes\\\":23800,\\\"css_count\\\":2,\\\"css_marker\\\":false,\\\"css_status\\\":[200,200],\\\"forced_css_marker\\\":null,\\\"forced_css_status\\\":null,\\\"html_marker\\\":false,\\\"old_copy\\\":false,\\\"state\\\":\\\"old\\\",\\\"status\\\":503,\\\"target\\\":\\\"staging\\\"}\",\"PORTAL200_RUNTIME={\\\"html_bytes\\\":1116,\\\"html_marker\\\":false,\\\"old_copy\\\":true,\\\"state\\\":\\\"old\\\",\\\"target\\\":\\\"prod\\\"}\",\"PORTAL200_HTTP={\\\"bytes\\\":25939,\\\"css_count\\\":2,\\\"css_marker\\\":false,\\\"css_status\\\":[200,200],\\\"forced_css_marker\\\":null,\\\"forced_css_status\\\":null,\\\"html_marker\\\":false,\\\"old_copy\\\":true,\\\"state\\\":\\\"old\\\",\\\"status\\\":200,\\\"target\\\":\\\"prod\\\"}\",\"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}\",\"PORTAL200_ROADMAP_REMAINS=22\",\"NEWFI200_END\",\"\",\"OUTPUT_END\"]\nNEWFI_260907_PORTAL200_APPLY2_OUTPUT_BLOCK_SHA256=c86dd3bbfbc94ff56e5cb678b0d8dd999af220229e3aea248a99e3d1f51d007a\nNEWFI_260907_PORTAL200_APPLY2_OUTPUT_BLOCK=NEWFI200_BEGIN\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\\nPORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\\nPORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\\nPORTAL200_CANDIDATE_IDENTITY=PASS\\nPORTAL200_ORCHESTRATION_FIXES={\"failure_status\":\"FAIL\",\"staging_503_without_css_links\":true}\\nPORTAL200_GIT_PRESTATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote\":\"06bab5acd124e768f70305b3d7eca2f595871890\"}\\nPORTAL200_CLUSTER=PASS\\nPORTAL200_RUNTIME_HELPER_LINT=PASS\\nPORTAL200_ERROR_BASELINE={\"prod\":0,\"staging\":40}\\nPORTAL200_HTTP={\"bytes\":23800,\"css_count\":0,\"css_marker\":false,\"css_status\":[],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":false,\"state\":\"old\",\"status\":503,\"target\":\"staging\"}\\nPORTAL200_RUNTIME={\"html_bytes\":1116,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"target\":\"prod\"}\\nPORTAL200_FAILURE=QGA_GUEST_RC\\nHOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260907-PORTAL200-APPLY2\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"FAIL\",\"version\":1}\\nPORTAL200_ROADMAP_REMAINS=22\\nNEWFI200_END\\n\nNEWFI_260907_PORTAL200_APPLY3_OUTPUT_BLOCK_SHA256=312b61dd11c589bcf59b0425107fe3673b1b8e6e64af31a9954ca43541faaa98\nNEWFI_260907_PORTAL200_APPLY3_OUTPUT_BLOCK=NEWFI200_BEGIN\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\\nPORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\\nPORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\\nPORTAL200_CANDIDATE_IDENTITY=PASS\\nPORTAL200_ORCHESTRATION_FIXES={\"css_href_regex_fixed\":true,\"failure_status\":\"FAIL\",\"prod_http_via_pve01_public_route\":true,\"staging_503_without_css_links\":true}\\nPORTAL200_GIT_PRESTATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote\":\"06bab5acd124e768f70305b3d7eca2f595871890\"}\\nPORTAL200_CLUSTER=PASS\\nPORTAL200_RUNTIME_HELPER_LINT=PASS\\nPORTAL200_ERROR_BASELINE={\"prod\":0,\"staging\":40}\\nPORTAL200_HTTP={\"bytes\":23800,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":false,\"state\":\"old\",\"status\":503,\"target\":\"staging\"}\\nPORTAL200_RUNTIME={\"html_bytes\":1116,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"target\":\"prod\"}\\nPORTAL200_HTTP={\"bytes\":25939,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"status\":200,\"target\":\"prod\"}\\nPORTAL200_PREFLIGHT=PASS\\nPORTAL200_FAILURE=IMPORT_FAILED\\nPORTAL200_HTTP={\"bytes\":23800,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":false,\"state\":\"old\",\"status\":503,\"target\":\"staging\"}\\nPORTAL200_FAILURE_STAGING_ROLLBACK=PASS\\nHOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260907-PORTAL200-APPLY3\",\"rollback_restored\":true,\"rollback_started\":true,\"status\":\"FAIL\",\"version\":1}\\nPORTAL200_ROADMAP_REMAINS=22\\nNEWFI200_END\\n\nNEWFI_260907_PORTAL200_APPLY1_ATTEMPT_INVENTORY=[{\"bytes\":73,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/attempt.txt\",\"sha256\":\"e499da1ae348df5f86b560c4655d92d4ad6bccd24925c9cc8e818e0ad2e45e47\",\"text\":\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\\nSTATE=RESERVED_BEFORE_EXECUTION\\n\"},{\"bytes\":94,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/receipt.txt\",\"sha256\":\"dc440de62a30fa2480b0b3d83c8eaa5b9692a90afc2cea28012c757f0b410c78\",\"text\":\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\\nWRAPPER_RC=76\\nPUBLICATION=NOT_INDEPENDENTLY_VERIFIED\\n\"},{\"bytes\":669,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/wrapper.log\",\"sha256\":\"9685a3719da39ed64273e57bad5cd9a52bb637863d267750792bde1d82295f0e\",\"text\":\"PAYLOAD_VALIDATION=OK\\nremote: . Processing 1 references \\nremote: Processed 1 references in total \\nRESULT=OK\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\\nCOMMIT_SHA=55aa9f336df6f3b8a7976899b2a1d58d878431c7\\nSTATIC_PUBLICATION=OK\\nRAW_BRANCH_PUBLICATION=OK\\n\\n===== HOMELAB CHAT RUN COMPLETE =====\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\\nSTATUS=FAIL\\nRC=76\\nREFERENCE_REGISTER_CHECK=OK\\nERROR_REGISTER_CHECK=OK\\nDUPLICATE_FAILED_COMMAND_BLOCKED=false\\nGITEA_PUBLICATION=OK\\nPUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\\nLOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY1-20260907T095034Z.log\\nSHELL_SESSION_PRESERVED=yes\\n\"}]\nNEWFI_260907_PORTAL200_APPLY2_ATTEMPT_INVENTORY=[{\"bytes\":73,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/attempt.txt\",\"sha256\":\"83643d80ccdc44fddd2837ef415cac4b96431e3af3b0db7d9f13364f75442f33\",\"text\":\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\\nSTATE=RESERVED_BEFORE_EXECUTION\\n\"},{\"bytes\":89,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/receipt.txt\",\"sha256\":\"07b965c02187f78a8aa6836ec8267fc8ef01270717114e4c5ff39efa31121929\",\"text\":\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\\nWRAPPER_RC=1\\nPUBLICATION=GITEA_RUNTIME_EXPECTED\\n\"},{\"bytes\":668,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/wrapper.log\",\"sha256\":\"4c72462531ac8b9200007c954a1f9a90cebbfe346031bb71a07cb2ef67ac329d\",\"text\":\"PAYLOAD_VALIDATION=OK\\nremote: . Processing 1 references \\nremote: Processed 1 references in total \\nRESULT=OK\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\\nCOMMIT_SHA=fe5f3ed2f5c68fc46fcbab828685c0a872b1ce59\\nSTATIC_PUBLICATION=OK\\nRAW_BRANCH_PUBLICATION=OK\\n\\n===== HOMELAB CHAT RUN COMPLETE =====\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\\nSTATUS=FAIL\\nRC=1\\nREFERENCE_REGISTER_CHECK=OK\\nERROR_REGISTER_CHECK=OK\\nDUPLICATE_FAILED_COMMAND_BLOCKED=false\\nGITEA_PUBLICATION=OK\\nPUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\\nLOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY2-20260907T105610Z.log\\nSHELL_SESSION_PRESERVED=yes\\n\"}]\nNEWFI_260907_PORTAL200_APPLY3_ATTEMPT_INVENTORY=[{\"bytes\":73,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/attempt.txt\",\"sha256\":\"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14\",\"text\":\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\\nSTATE=RESERVED_BEFORE_EXECUTION\\n\"},{\"bytes\":90,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/receipt.txt\",\"sha256\":\"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b\",\"text\":\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\\nWRAPPER_RC=76\\nPUBLICATION=GITEA_RUNTIME_EXPECTED\\n\"},{\"bytes\":669,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/wrapper.log\",\"sha256\":\"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30\",\"text\":\"PAYLOAD_VALIDATION=OK\\nremote: . Processing 1 references \\nremote: Processed 1 references in total \\nRESULT=OK\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\\nCOMMIT_SHA=bb707af34d2a2b6a6b23c3d4d03f6b701150a653\\nSTATIC_PUBLICATION=OK\\nRAW_BRANCH_PUBLICATION=OK\\n\\n===== HOMELAB CHAT RUN COMPLETE =====\\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\\nSTATUS=FAIL\\nRC=76\\nREFERENCE_REGISTER_CHECK=OK\\nERROR_REGISTER_CHECK=OK\\nDUPLICATE_FAILED_COMMAND_BLOCKED=false\\nGITEA_PUBLICATION=OK\\nPUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\\nLOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY3-20260907T112033Z.log\\nSHELL_SESSION_PRESERVED=yes\\n\"}]\nFILESYSTEM_PORTAL200_EVIDENCE=[{\"bytes\":14898,\"path\":\"/root/.bash_history\",\"relevant_lines\":[\"]]>\",\"\",\" &1\",\" )\\\"; SSH_RC=$?; printf 'PORTAL200_CANDIDATE_%s_QGA_BEGIN\\\\n' \\\"$LABEL\\\"; printf '%s\\\\n' \\\"$OUT\\\"; printf 'PORTAL200_CANDIDATE_%s_QGA_END\\\\n' \\\"$LABEL\\\"; printf 'PORTAL200_CANDIDATE_%s_SSH_RC=%s\\\\n' \\\"$LABEL\\\" \\\"$SSH_RC\\\"; if [ \\\"$SSH_RC\\\" -ne 0 ]; then return 1; fi; printf '%s' \\\"$OUT\\\" | python3 -c '\",\"import json\",\"import sys\",\"assert \\\"No syntax errors detected\\\" in out\",\"' || return 1; return 0; }; if [ \\\"$RC\\\" -eq 0 ]; then lint_php \\\"$CAND/src/addons/Newfi/Portal/Pub/Controller/Portal.php\\\" CONTROLLER; L1=$?; lint_php \\\"$CAND/src/addons/Newfi/Portal/Service/PortalData.php\\\" SERVICE; L2=$?; printf 'PORTAL200_CANDIDATE_CONTROLLER_LINT_RC=%s\\\\n' \\\"$L1\\\"; printf 'PORTAL200_CANDIDATE_SERVICE_LINT_RC=%s\\\\n' \\\"$L2\\\"; if [ \\\"$L1\\\" -ne 0 ] || [ \\\"$L2\\\" -ne 0 ]; then RC=1; fi; fi; END_HEAD=\\\"$(git -C \\\"$WT\\\" rev-parse HEAD 2>/dev/null)\\\"; END_STATUS=\\\"$(\",\" git -C \\\"$WT\\\" status --porcelain=v1 --untracked-files=all 2>/dev/null\",\")\\\"; printf 'PORTAL200_CANDIDATE_END_GIT_HEAD=%s\\\\n' \\\"$END_HEAD\\\"; printf 'PORTAL200_CANDIDATE_END_GIT_CLEAN=%s\\\\n' \\\"$(\",\" if [ -z \\\"$END_STATUS\\\" ]; then printf true; else printf false; fi\",\")\\\"; if [ \\\"$END_HEAD\\\" != \\\"$EXPECTED_HEAD\\\" ] || [ -n \\\"$END_STATUS\\\" ]; then RC=1; fi; if [ \\\"$RC\\\" -eq 0 ]; then printf 'PORTAL200_CANDIDATE_RESULT=PASS\\\\n'; printf 'PORTAL200_CANDIDATE_PATH=%s\\\\n' \\\"$CAND\\\"; printf 'PORTAL200_EXECUTED=NO\\\\n'; else printf 'PORTAL200_CANDIDATE_RESULT=FAIL\\\\n'; rm -rf \\\"$CAND\\\" 2>/dev/null || true; fi; printf 'PORTAL200_ROADMAP_REMAINS=22\\\\n'; printf 'PORTAL200_CANDIDATE_END=%s\\\\n' \\\"$CID\\\"; printf 'WRAPPER_RC=%s\\\\n' \\\"$RC\\\"; printf 'TERMINAL=KEEP_OPEN\\\\n'; printf 'NEWFI_COMMAND_SHELL_EXIT=DISABLED\\\\n'; true; ) || true\",\"printf 'WRAPPER_SHELL_RC=0\\\\n'\",\"printf 'TERMINAL=KEEP_OPEN\\\\n'\"],\"sha256\":\"0d1e6f73b9c6f8ffe1b3a3849bb0f787ed523b1e46a34960ad9ba422e4a3b91f\"},{\"bytes\":73,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/attempt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"STATE=RESERVED_BEFORE_EXECUTION\"],\"sha256\":\"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14\"},{\"bytes\":90,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/receipt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"WRAPPER_RC=76\",\"PUBLICATION=GITEA_RUNTIME_EXPECTED\"],\"sha256\":\"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b\"},{\"bytes\":669,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/wrapper.log\",\"relevant_lines\":[\"remote: Processed 1 references in total \",\"RESULT=OK\",\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\",\"COMMIT_SHA=bb707af34d2a2b6a6b23c3d4d03f6b701150a653\",\"STATIC_PUBLICATION=OK\",\"\",\"===== HOMELAB CHAT RUN COMPLETE =====\",\"STATUS=FAIL\",\"RC=76\",\"GITEA_PUBLICATION=OK\",\"PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\",\"LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY3-20260907T112033Z.log\",\"SHELL_SESSION_PRESERVED=yes\"],\"sha256\":\"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30\"},{\"bytes\":73,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/attempt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\",\"STATE=RESERVED_BEFORE_EXECUTION\"],\"sha256\":\"e499da1ae348df5f86b560c4655d92d4ad6bccd24925c9cc8e818e0ad2e45e47\"},{\"bytes\":94,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/receipt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\",\"WRAPPER_RC=76\",\"PUBLICATION=NOT_INDEPENDENTLY_VERIFIED\"],\"sha256\":\"dc440de62a30fa2480b0b3d83c8eaa5b9692a90afc2cea28012c757f0b410c78\"},{\"bytes\":669,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/wrapper.log\",\"relevant_lines\":[\"remote: Processed 1 references in total \",\"RESULT=OK\",\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\",\"COMMIT_SHA=55aa9f336df6f3b8a7976899b2a1d58d878431c7\",\"STATIC_PUBLICATION=OK\",\"\",\"===== HOMELAB CHAT RUN COMPLETE =====\",\"STATUS=FAIL\",\"RC=76\",\"GITEA_PUBLICATION=OK\",\"PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\",\"LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY1-20260907T095034Z.log\",\"SHELL_SESSION_PRESERVED=yes\"],\"sha256\":\"9685a3719da39ed64273e57bad5cd9a52bb637863d267750792bde1d82295f0e\"},{\"bytes\":73,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/attempt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\",\"STATE=RESERVED_BEFORE_EXECUTION\"],\"sha256\":\"83643d80ccdc44fddd2837ef415cac4b96431e3af3b0db7d9f13364f75442f33\"},{\"bytes\":89,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/receipt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\",\"WRAPPER_RC=1\",\"PUBLICATION=GITEA_RUNTIME_EXPECTED\"],\"sha256\":\"07b965c02187f78a8aa6836ec8267fc8ef01270717114e4c5ff39efa31121929\"},{\"bytes\":668,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/wrapper.log\",\"relevant_lines\":[\"remote: Processed 1 references in total \",\"RESULT=OK\",\"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\",\"COMMIT_SHA=fe5f3ed2f5c68fc46fcbab828685c0a872b1ce59\",\"STATIC_PUBLICATION=OK\",\"\",\"===== HOMELAB CHAT RUN COMPLETE =====\",\"STATUS=FAIL\",\"RC=1\",\"GITEA_PUBLICATION=OK\",\"PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\",\"LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY2-20260907T105610Z.log\",\"SHELL_SESSION_PRESERVED=yes\"],\"sha256\":\"4c72462531ac8b9200007c954a1f9a90cebbfe346031bb71a07cb2ef67ac329d\"},{\"bytes\":71,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-RCA4/attempt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-RCA4\",\"STATE=RESERVED_BEFORE_EXECUTION\"],\"sha256\":\"6f5f48b114a59b391450532fdf2c73a2627105ffe91942054e272931af0af62b\"},{\"bytes\":91,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-RCA4/receipt.txt\",\"relevant_lines\":[\"COMMAND_ID=NEWFI-260907-PORTAL200-RCA4\",\"WRAPPER_RC=0\",\"PUBLICATION=NOT_INDEPENDENTLY_VERIFIED\"],\"sha256\":\"6406f6bc528bf48bd88eabccc9dd88a9fa25d6415f5121ed55b8aa8f357d0c84\"},{\"bytes\":660,\"path\":\"/root/newfi-run-NEWFI-260907-PORTAL200-RCA4/wrapper.log\",\"relevant_lines\":[\"remote: Processed 1 references in total \",\"RESULT=OK\",\"COMMAND_ID=NEWFI-260907-PORTAL200-RCA4\",\"COMMIT_SHA=74bee60e6746db6bf0eba73b3c66c184bf148680\",\"STATIC_PUBLICATION=OK\",\"\",\"===== HOMELAB CHAT RUN COMPLETE =====\",\"STATUS=OK\",\"RC=0\",\"GITEA_PUBLICATION=OK\",\"PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\",\"LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-RCA4-20260907T103455Z.log\",\"SHELL_SESSION_PRESERVED=yes\"],\"sha256\":\"b7f1ea0cdee90fe027b3302bf1e932c15fbb80a73764b948269d3025307c7672\"}]\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nRUNNER_CONTRACT_EXACT_RELEVANT_LINES=[\"import json\",\"import sys\",\"from pathlib import Path\",\"\",\"raw_path, command_id, mode, command_rc = sys.argv[1:]\",\"command_rc = int(command_rc)\",\"result = {\",\" \\\"valid\\\": True,\",\" \\\"status\\\": \\\"NOT_APPLICABLE\\\",\",\" \\\"changes_made\\\": \\\"false\\\",\",\" \\\"rollback_started\\\": \\\"false\\\",\",\" \\\"rollback_restored\\\": \\\"null\\\",\",\" \\\"mutation_outcome\\\": \\\"NO_MUTATION\\\",\",\" \\\"error\\\": \\\"NONE\\\",\",\"}\",\"if mode == \\\"change\\\":\",\" result = {\",\" \\\"valid\\\": False,\",\" \\\"status\\\": \\\"UNKNOWN\\\",\",\" \\\"changes_made\\\": \\\"unknown\\\",\",\" \\\"rollback_started\\\": \\\"unknown\\\",\",\" \\\"rollback_restored\\\": \\\"null\\\",\",\" \\\"mutation_outcome\\\": \\\"UNKNOWN\\\",\",\" \\\"error\\\": \\\"MISSING_CONTRACT\\\",\",\" }\",\" marker = \\\"HOMELAB_RESULT_CONTRACT=\\\"\",\" lines = Path(raw_path).read_bytes().decode(\",\" \\\"utf-8\\\",\",\" errors=\\\"replace\\\",\",\" ).splitlines()\",\" document = json.loads(payloads[0])\",\" if not isinstance(document, dict):\",\" raise ValueError(\\\"contract root is not object\\\")\",\" if document.get(\\\"version\\\") != 1:\",\" raise ValueError(\\\"unsupported version\\\")\",\" if document.get(\\\"command_id\\\") != command_id:\",\" raise ValueError(\\\"command_id mismatch\\\")\",\" status = document.get(\\\"status\\\")\",\" if status not in {\\\"OK\\\", \\\"BLOCKED\\\", \\\"FAIL\\\"}:\",\" raise ValueError(\\\"invalid status\\\")\",\" changes = document.get(\\\"changes_made\\\")\",\" rollback_started = document.get(\\\"rollback_started\\\")\",\" rollback_restored = document.get(\\\"rollback_restored\\\")\",\" if not isinstance(changes, bool):\",\" raise ValueError(\\\"changes_made must be boolean\\\")\",\" if not isinstance(rollback_started, bool):\",\" raise ValueError(\\\"rollback_started must be boolean\\\")\",\" if rollback_restored is not None and not isinstance(\",\" rollback_restored,\",\" bool,\",\" ):\",\" raise ValueError(\",\" \\\"rollback_restored must be boolean or null\\\"\",\" )\",\" if rollback_restored is True and rollback_started is not True:\",\" \\\"rollback_restored without rollback_started\\\"\",\" if rollback_started is True and changes is not True:\",\" \\\"rollback_started without changes\\\"\",\" if status == \\\"BLOCKED\\\" and (\",\" changes\",\" or rollback_started\",\" or command_rc != 2\",\" \\\"BLOCKED contract inconsistent with rc/mutation\\\"\",\" raise ValueError(\\\"FAIL contract inconsistent with rc\\\")\",\" if not changes:\",\" outcome = \\\"NO_MUTATION\\\"\",\" elif not rollback_started:\",\" outcome = \\\"MUTATED\\\"\",\" elif rollback_restored is True:\",\" outcome = \\\"ROLLED_BACK\\\"\",\" elif rollback_restored is False:\",\" outcome = \\\"ROLLBACK_FAILED\\\"\",\" else:\",\" outcome = \\\"ROLLBACK_UNKNOWN\\\"\",\" result = {\",\" \\\"valid\\\": True,\",\" \\\"status\\\": status,\",\" \\\"changes_made\\\": str(changes).lower(),\",\" \\\"rollback_started\\\": str(\",\" rollback_started\",\" ).lower(),\",\" \\\"rollback_restored\\\": (\",\" \\\"null\\\"\",\" if rollback_restored is None\",\" else str(rollback_restored).lower()\",\" ),\",\" \\\"mutation_outcome\\\": outcome,\",\" \\\"error\\\": \\\"NONE\\\",\",\" }\",\" except Exception as exc:\",\" result[\\\"error\\\"] = (\",\" \\\"INVALID_CONTRACT:\\\" + type(exc).__name__\",\" )\",\" elif len(payloads) > 1:\",\" result[\\\"error\\\"] = \\\"MULTIPLE_CONTRACTS\\\"\",\"print(\\\"\\\\t\\\".join([\",\" str(result[\\\"valid\\\"]).lower(),\",\" result[\\\"status\\\"],\",\" result[\\\"changes_made\\\"],\",\" result[\\\"rollback_started\\\"],\",\" result[\\\"rollback_restored\\\"],\",\" result[\\\"mutation_outcome\\\"],\",\" result[\\\"error\\\"],\",\"]))\",\"PY_CONTRACT\",\" tmp=\\\"$(mktemp)\\\"\",\" trap 'rm -f \\\"$tmp\\\"' RETURN\",\" printf '%s\\\\n' \\\\\",\" 'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T1\\\",\\\"status\\\":\\\"BLOCKED\\\",\\\"changes_made\\\":false,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\" >\\\"$tmp\\\"\",\" [ \\\"$(read_mutation_contract \\\"$tmp\\\" T1 change 2)\\\" = \\\\\",\" $'true\\\\tBLOCKED\\\\tfalse\\\\tfalse\\\\tnull\\\\tNO_MUTATION\\\\tNONE' ]\",\" 'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T2\\\",\\\"status\\\":\\\"OK\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\" [ \\\"$(read_mutation_contract \\\"$tmp\\\" T2 change 0)\\\" = \\\\\",\" $'true\\\\tOK\\\\ttrue\\\\tfalse\\\\tnull\\\\tMUTATED\\\\tNONE' ]\",\" 'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T3\\\",\\\"status\\\":\\\"FAIL\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":true,\\\"rollback_restored\\\":true}' \\\\\",\" [ \\\"$(read_mutation_contract \\\"$tmp\\\" T3 change 1)\\\" = \\\\\",\" $'true\\\\tFAIL\\\\ttrue\\\\ttrue\\\\ttrue\\\\tROLLED_BACK\\\\tNONE' ]\",\" [ \\\"$(read_mutation_contract \\\"$tmp\\\" T5 verify 0)\\\" = \\\\\",\" $'true\\\\tNOT_APPLICABLE\\\\tfalse\\\\tfalse\\\\tnull\\\\tNO_MUTATION\\\\tNONE' ]\",\" 'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"OTHER\\\",\\\"status\\\":\\\"OK\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\" [ \\\"$(read_mutation_contract \\\"$tmp\\\" T6 change 0)\\\" = \\\\\",\" $'false\\\\tUNKNOWN\\\\tunknown\\\\tunknown\\\\tnull\\\\tUNKNOWN\\\\tINVALID_CONTRACT:ValueError' ]\",\" 'HOMELAB_RESULT_CONTRACT={\\\"version\\\":1,\\\"command_id\\\":\\\"T7\\\",\\\"status\\\":\\\"OK\\\",\\\"changes_made\\\":true,\\\"rollback_started\\\":false,\\\"rollback_restored\\\":null}' \\\\\",\" [ \\\"$(read_mutation_contract \\\"$tmp\\\" T7 change 0)\\\" = \\\\\",\" $'false\\\\tUNKNOWN\\\\tunknown\\\\tunknown\\\\tnull\\\\tUNKNOWN\\\\tMULTIPLE_CONTRACTS' ]\",\"usage() {\",\" cat >&2 <<'USAGE'\",\"Usage:\",\" homelab-chat-run COMMAND_ID MODE COMPONENT -- command [arguments...]\",\"MODE:\",\" read-only\",\" verify\",\"[ \\\"$#\\\" -ge 5 ] || usage\",\"COMMAND_ID=\\\"$1\\\"\",\"MODE=\\\"$2\\\"\",\"COMPONENT=\\\"$3\\\"\",\"shift 3\",\"[ \\\"${1:-}\\\" = '--' ] || usage\",\"shift\",\"[ \\\"$#\\\" -ge 1 ] || usage\",\"case \\\"$COMMAND_ID\\\" in\",\" ''|*[!A-Za-z0-9._-]*)\",\" echo 'RESULT=FAIL'\",\" echo 'REASON=INVALID_COMMAND_ID'\",\" exit 65\",\" ;;\",\"esac\",\"STARTED_AT=\\\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\\\"\",\"STAMP=\\\"$(date -u +%Y%m%dT%H%M%SZ)\\\"\",\"HOST_SHORT=\\\"$(hostname -s 2>/dev/null || hostname)\\\"\",\"RAW_FILE=\\\"$RAW_DIR/${COMMAND_ID}-${STAMP}.log\\\"\",\"SANITIZED_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.txt\\\"\",\"JSON_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.json\\\"\",\"TXT_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}-latest.txt\\\"\",\"REFERENCE_SHA256=\\\"$(sha256sum \\\"$REFERENCE\\\" | awk '{print $1}')\\\"\",\"ERROR_REGISTER_SHA256=\\\"$(sha256sum \\\"$ERROR_REGISTER\\\" | awk '{print $1}')\\\"\",\"BLOCK_REASON=''\",\"CHANGE_DECLARED=false\",\"RESULT_CONTRACT_VALID=true\",\"CONTRACT_STATUS='NOT_APPLICABLE'\",\"CHANGES_MADE=false\",\"ROLLBACK_STARTED=false\",\"ROLLBACK_RESTORED=null\",\"MUTATION_OUTCOME='NO_MUTATION'\",\"RESULT_CONTRACT_ERROR='NONE'\",\"COMMAND_RC=''\",\"if [ \\\"$MODE\\\" = change ]; then\",\" CHANGE_DECLARED=true\",\" RESULT_CONTRACT_VALID=false\",\" CONTRACT_STATUS='UNKNOWN'\",\" CHANGES_MADE=unknown\",\" ROLLBACK_STARTED=unknown\",\" ROLLBACK_RESTORED=null\",\" MUTATION_OUTCOME='UNKNOWN'\",\" RESULT_CONTRACT_ERROR='MISSING_CONTRACT'\",\"fi\",\" RC=73\",\" STATUS='BLOCKED'\",\" RESULT_CONTRACT_VALID=true\",\" CONTRACT_STATUS='BLOCKED'\",\" CHANGES_MADE=false\",\" ROLLBACK_STARTED=false\",\" MUTATION_OUTCOME='NO_MUTATION'\",\" RESULT_CONTRACT_ERROR='RUNNER_PREEXECUTION_BLOCK'\",\" {\",\" IFS=$'\\\\t' read -r \\\\\",\" RESULT_CONTRACT_VALID \\\\\",\" CONTRACT_STATUS \\\\\",\" CHANGES_MADE \\\\\",\" ROLLBACK_STARTED \\\\\",\" ROLLBACK_RESTORED \\\\\",\" MUTATION_OUTCOME \\\\\",\" RESULT_CONTRACT_ERROR < <(\",\" read_mutation_contract \\\\\",\" \\\"$RAW_FILE\\\" \\\\\",\" \\\"$COMMAND_ID\\\" \\\\\",\" \\\"$MODE\\\" \\\\\",\" \\\"$COMMAND_RC\\\"\",\" )\",\"python3 - \\\\\",\" \\\"$JSON_FILE\\\" \\\\\",\" \\\"$SANITIZED_FILE\\\" \\\\\",\" \\\"$COMMAND_ID\\\" \\\\\",\" \\\"$STATUS\\\" \\\\\",\" \\\"$RC\\\" \\\\\",\" \\\"$HOST_SHORT\\\" \\\\\",\" \\\"$MODE\\\" \\\\\",\" \\\"$BLOCK_REASON\\\" \\\\\",\" \\\"$CHANGE_DECLARED\\\" \\\\\",\" \\\"$RESULT_CONTRACT_VALID\\\" \\\\\",\" \\\"$CONTRACT_STATUS\\\" \\\\\",\" \\\"$CHANGES_MADE\\\" \\\\\",\" \\\"$ROLLBACK_STARTED\\\" \\\\\",\" \\\"$ROLLBACK_RESTORED\\\" \\\\\",\" \\\"$MUTATION_OUTCOME\\\" \\\\\",\" \\\"$RESULT_CONTRACT_ERROR\\\" \\\\\",\" \\\"$COMMAND_RC\\\" <<'PY'\",\"(\",\" json_path,\",\" output_path,\",\" command_id,\",\" status,\",\" rc,\",\" host,\",\" mode,\",\" block_reason,\",\" change_declared,\",\" result_contract_valid,\",\" contract_status,\",\" changes_made,\",\" rollback_started,\",\" rollback_restored,\",\" mutation_outcome,\",\" result_contract_error,\",\" command_rc,\",\") = sys.argv[1:]\",\"document = {\",\" \\\"schema_version\\\": 1,\",\" \\\"channel\\\": \\\"homelab-runtime\\\",\",\" \\\"command_id\\\": command_id,\",\" \\\"status\\\": status,\",\" \\\"rc\\\": int(rc),\",\" \\\"host\\\": host,\",\" \\\"mode\\\": mode,\",\" \\\"change_declared\\\": change_declared == \\\"true\\\",\",\" \\\"result_contract_valid\\\": result_contract_valid == \\\"true\\\",\",\" \\\"result_contract_status\\\": (\",\" None\",\" if contract_status in {\\\"\\\", \\\"UNKNOWN\\\", \\\"NOT_APPLICABLE\\\"}\",\" else contract_status\",\" ),\",\" \\\"result_contract_error\\\": (\",\" if result_contract_error == \\\"NONE\\\"\",\" else result_contract_error\",\" \\\"command_rc\\\": int(command_rc) if command_rc else None,\",\" \\\"changes_made\\\": optional_bool(changes_made),\",\" \\\"rollback_started\\\": optional_bool(rollback_started),\",\" \\\"rollback_restored\\\": optional_bool(rollback_restored),\",\" \\\"mutation_outcome\\\": mutation_outcome,\"]\nCANDIDATE_EXACTNESS_SIGNALS={\"source_or_hash\":true,\"version_id\":true,\"version_string\":true}\nHOLD_REASONS=[]\nFINAL_DECISION=ELIGIBLE_FOR_PORTAL200_APPLY4_CHANGE_CARRIER_BUILD\nAPPLY4_DESIGN2_END=true\n"
}
diff --git a/runtime/latest.txt b/runtime/latest.txt
index 7321aca2..9841a639 100644
--- a/runtime/latest.txt
+++ b/runtime/latest.txt
@@ -1,15 +1,15 @@
CHAT_OUTPUT_BEGIN
-COMMAND_ID=NEWFI-260907-A-PORTAL200-APPLY4DESIGN1
+COMMAND_ID=NEWFI-260907-A-PORTAL200-APPLY4DESIGN2
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
-COMPONENT=newfi-portal200-apply4-candidate-provenance
+COMPONENT=newfi-portal200-apply4-candidate-exact-recovery
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
-COMMAND_SHA256=ba1e39080eba5653f605069127f81a6d51ebc978a94c50c3091e5301ed3cd4ae
+COMMAND_SHA256=d9ecc50604b452f7f25f062a6d5c744609c344a965cb5a785f7c8eb28a1b74e3
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=869943bf04580fdbc610eb5377b46fecec1a92821a1b0663d8faab7700ba6176
-SANITIZED_OUTPUT_SHA256=869943bf04580fdbc610eb5377b46fecec1a92821a1b0663d8faab7700ba6176
+RAW_EVIDENCE_SHA256=eb768ba37e84529ac30bac9faff315d6be84c63c2590d855fabd0f9231ba5bb0
+SANITIZED_OUTPUT_SHA256=eb768ba37e84529ac30bac9faff315d6be84c63c2590d855fabd0f9231ba5bb0
OUTPUT_BEGIN
-APPLY4_DESIGN1_BEGIN=true
-COMMAND_ID=NEWFI-260907-A-PORTAL200-APPLY4DESIGN1
+APPLY4_DESIGN2_BEGIN=true
+COMMAND_ID=NEWFI-260907-A-PORTAL200-APPLY4DESIGN2
MUTATION_SCOPE=NONE_READ_ONLY
MUTATIONS_PERFORMED=NO
ERROR_REGISTER_CHECK=OK
@@ -36,36 +36,63 @@ ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4
REFERENCE_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED
-LANEB_PASS_HISTORY_SHA256=08c00e675ffa960eca55102a114d305fb1a15291ff7e401dc43c09d087c32ece
-LANEB_PASS_STATUS=OK
-LANEB_PASS_HOLD_REASONS=[]
-LANEB_PASS_FINAL_DECISION=ELIGIBLE_FOR_PORTAL200_APPLY4_PREP
-APPLY3_HISTORY_SHA256=f3ea3fcebd7b182e64db6e963a34f1b90baca0d08477e25e27bf88c48b33611c
-APPLY3_STATUS=FAIL
-APPLY3_RC=76
-APPLY3_RESULT_CONTRACT_VALID=false
-APPLY3_MUTATION_OUTCOME=UNKNOWN
+HISTORY_NEWFI_260907_PORTAL200_APPLY1_SHA256=e352a1ee17b6588b878c02a7ca5096e99b5bfd20391cfadaf9cd2a67f7043f17
+HISTORY_NEWFI_260907_PORTAL200_APPLY1_STATUS=FAIL
+HISTORY_NEWFI_260907_PORTAL200_APPLY1_RC=76
+HISTORY_NEWFI_260907_PORTAL200_APPLY1_CHANGES_MADE=unknown
+HISTORY_NEWFI_260907_PORTAL200_APPLY1_MUTATION_OUTCOME=UNKNOWN
+HISTORY_NEWFI_260907_PORTAL200_APPLY2_SHA256=5e043e4f2429583487a791569aeca832f744bb71a5eee1617bb6706f6657051b
+HISTORY_NEWFI_260907_PORTAL200_APPLY2_STATUS=FAIL
+HISTORY_NEWFI_260907_PORTAL200_APPLY2_RC=1
+HISTORY_NEWFI_260907_PORTAL200_APPLY2_CHANGES_MADE=false
+HISTORY_NEWFI_260907_PORTAL200_APPLY2_MUTATION_OUTCOME=NO_MUTATION
+HISTORY_NEWFI_260907_PORTAL200_APPLY3_SHA256=f3ea3fcebd7b182e64db6e963a34f1b90baca0d08477e25e27bf88c48b33611c
+HISTORY_NEWFI_260907_PORTAL200_APPLY3_STATUS=FAIL
+HISTORY_NEWFI_260907_PORTAL200_APPLY3_RC=76
+HISTORY_NEWFI_260907_PORTAL200_APPLY3_CHANGES_MADE=unknown
+HISTORY_NEWFI_260907_PORTAL200_APPLY3_MUTATION_OUTCOME=UNKNOWN
+HISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_SHA256=00c4dc5e100be0cb26a80262a8af96555457b5dc4fa924c6a9458089cd01474e
+HISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_STATUS=OK
+HISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_RC=0
+HISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_CHANGES_MADE=false
+HISTORY_NEWFI_260907_PORTAL200_CONTRACTAST1_MUTATION_OUTCOME=NO_MUTATION
+HISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_SHA256=805954f73608dbd343da33d387c59a6ad258a7f6a51965db4e78c3fd0f588fd4
+HISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_STATUS=OK
+HISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_RC=0
+HISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_CHANGES_MADE=false
+HISTORY_NEWFI_260907_PORTAL200_IMPORTDISC2_MUTATION_OUTCOME=NO_MUTATION
+HISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_SHA256=30370cad3d4d7e73c6612a5df702abe1fac6ae559bf142b5e489a19a1258cfb7
+HISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_STATUS=OK
+HISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_RC=0
+HISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_CHANGES_MADE=false
+HISTORY_NEWFI_260907_PORTAL200_REBUILDHELP1_MUTATION_OUTCOME=NO_MUTATION
+HISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_SHA256=08c00e675ffa960eca55102a114d305fb1a15291ff7e401dc43c09d087c32ece
+HISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_STATUS=OK
+HISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_RC=0
+HISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_CHANGES_MADE=false
+HISTORY_NEWFI_260907_B_PORTAL200_RECOVERY5_MUTATION_OUTCOME=NO_MUTATION
+HISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_SHA256=37d9ad10d0d9abb7fede76a4716cde8abe70866cb6ce8024243f399e39082ad7
+HISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_STATUS=OK
+HISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_RC=0
+HISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_CHANGES_MADE=false
+HISTORY_NEWFI_260907_A_PORTAL200_APPLY4DESIGN1_MUTATION_OUTCOME=NO_MUTATION
+NEWFI_260907_PORTAL200_APPLY1_CANDIDATE_RELEVANT_LINES=["CHAT_OUTPUT_BEGIN","COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1","STATUS=FAIL","RC=76","HOST=pve01","MODE=change","COMPONENT=newfi-portal200-deploy","REFERENCE_REGISTER_CHECK=OK","REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66","COMMAND_RC=1","CHANGES_MADE=unknown","ROLLBACK_STARTED=unknown","ROLLBACK_RESTORED=null","MUTATION_OUTCOME=UNKNOWN","SANITIZED=yes","SANITIZED_OUTPUT_SHA256=50310a6619ab35d100c11d8842e044852dc3f5589b3d100948bd7fd05bdd5f0b","OUTPUT_BEGIN","NEWFI200_BEGIN","PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22","PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production","PORTAL200_CANDIDATE_IDENTITY=PASS","PORTAL200_GIT_PRESTATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote\":\"06bab5acd124e768f70305b3d7eca2f595871890\"}","PORTAL200_CLUSTER=PASS","PORTAL200_RUNTIME_HELPER_LINT=PASS","PORTAL200_ERROR_BASELINE={\"prod\":0,\"staging\":40}","PORTAL200_FAILURE=QGA_GUEST_RC","HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260907-PORTAL200-APPLY1\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"ERROR\",\"version\":1}","PORTAL200_ROADMAP_REMAINS=22","NEWFI200_END","","OUTPUT_END"]
+NEWFI_260907_PORTAL200_APPLY2_CANDIDATE_RELEVANT_LINES=["CHAT_OUTPUT_BEGIN","COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2","STATUS=FAIL","RC=1","HOST=pve01","MODE=change","COMPONENT=newfi-portal200-deploy","REFERENCE_REGISTER_CHECK=OK","REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66","COMMAND_RC=1","CHANGES_MADE=false","ROLLBACK_STARTED=false","ROLLBACK_RESTORED=null","MUTATION_OUTCOME=NO_MUTATION","SANITIZED=yes","SANITIZED_OUTPUT_SHA256=c86dd3bbfbc94ff56e5cb678b0d8dd999af220229e3aea248a99e3d1f51d007a","OUTPUT_BEGIN","NEWFI200_BEGIN","PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22","PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production","PORTAL200_CANDIDATE_IDENTITY=PASS","PORTAL200_ORCHESTRATION_FIXES={\"failure_status\":\"FAIL\",\"staging_503_without_css_links\":true}","PORTAL200_GIT_PRESTATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote\":\"06bab5acd124e768f70305b3d7eca2f595871890\"}","PORTAL200_CLUSTER=PASS","PORTAL200_RUNTIME_HELPER_LINT=PASS","PORTAL200_ERROR_BASELINE={\"prod\":0,\"staging\":40}","PORTAL200_HTTP={\"bytes\":23800,\"css_count\":0,\"css_marker\":false,\"css_status\":[],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":false,\"state\":\"old\",\"status\":503,\"target\":\"staging\"}","PORTAL200_RUNTIME={\"html_bytes\":1116,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"target\":\"prod\"}","PORTAL200_FAILURE=QGA_GUEST_RC","HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260907-PORTAL200-APPLY2\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"FAIL\",\"version\":1}","PORTAL200_ROADMAP_REMAINS=22","NEWFI200_END","","OUTPUT_END"]
+NEWFI_260907_PORTAL200_APPLY3_CANDIDATE_RELEVANT_LINES=["CHAT_OUTPUT_BEGIN","COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","STATUS=FAIL","RC=76","HOST=pve01","MODE=change","COMPONENT=newfi-portal200-deploy","REFERENCE_REGISTER_CHECK=OK","REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66","COMMAND_RC=1","CHANGES_MADE=unknown","ROLLBACK_STARTED=unknown","ROLLBACK_RESTORED=null","MUTATION_OUTCOME=UNKNOWN","SANITIZED=yes","SANITIZED_OUTPUT_SHA256=312b61dd11c589bcf59b0425107fe3673b1b8e6e64af31a9954ca43541faaa98","OUTPUT_BEGIN","NEWFI200_BEGIN","PORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22","PORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production","PORTAL200_CANDIDATE_IDENTITY=PASS","PORTAL200_ORCHESTRATION_FIXES={\"css_href_regex_fixed\":true,\"failure_status\":\"FAIL\",\"prod_http_via_pve01_public_route\":true,\"staging_503_without_css_links\":true}","PORTAL200_GIT_PRESTATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"remote\":\"06bab5acd124e768f70305b3d7eca2f595871890\"}","PORTAL200_CLUSTER=PASS","PORTAL200_RUNTIME_HELPER_LINT=PASS","PORTAL200_ERROR_BASELINE={\"prod\":0,\"staging\":40}","PORTAL200_HTTP={\"bytes\":23800,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":false,\"state\":\"old\",\"status\":503,\"target\":\"staging\"}","PORTAL200_RUNTIME={\"html_bytes\":1116,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"target\":\"prod\"}","PORTAL200_HTTP={\"bytes\":25939,\"css_count\":2,\"css_marker\":false,\"css_status\":[200,200],\"forced_css_marker\":null,\"forced_css_status\":null,\"html_marker\":false,\"old_copy\":true,\"state\":\"old\",\"status\":200,\"target\":\"prod\"}","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}","PORTAL200_ROADMAP_REMAINS=22","NEWFI200_END","","OUTPUT_END"]
+NEWFI_260907_PORTAL200_APPLY2_OUTPUT_BLOCK_SHA256=c86dd3bbfbc94ff56e5cb678b0d8dd999af220229e3aea248a99e3d1f51d007a
+NEWFI_260907_PORTAL200_APPLY2_OUTPUT_BLOCK=NEWFI200_BEGIN\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\nPORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\nPORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\nPORTAL200_CANDIDATE_IDENTITY=PASS\nPORTAL200_ORCHESTRATION_FIXES={"failure_status":"FAIL","staging_503_without_css_links":true}\nPORTAL200_GIT_PRESTATE={"branch":"implementation/newfi-closed-mvp-20260906","clean":true,"head":"06bab5acd124e768f70305b3d7eca2f595871890","remote":"06bab5acd124e768f70305b3d7eca2f595871890"}\nPORTAL200_CLUSTER=PASS\nPORTAL200_RUNTIME_HELPER_LINT=PASS\nPORTAL200_ERROR_BASELINE={"prod":0,"staging":40}\nPORTAL200_HTTP={"bytes":23800,"css_count":0,"css_marker":false,"css_status":[],"forced_css_marker":null,"forced_css_status":null,"html_marker":false,"old_copy":false,"state":"old","status":503,"target":"staging"}\nPORTAL200_RUNTIME={"html_bytes":1116,"html_marker":false,"old_copy":true,"state":"old","target":"prod"}\nPORTAL200_FAILURE=QGA_GUEST_RC\nHOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"NEWFI-260907-PORTAL200-APPLY2","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1}\nPORTAL200_ROADMAP_REMAINS=22\nNEWFI200_END\n
+NEWFI_260907_PORTAL200_APPLY3_OUTPUT_BLOCK_SHA256=312b61dd11c589bcf59b0425107fe3673b1b8e6e64af31a9954ca43541faaa98
+NEWFI_260907_PORTAL200_APPLY3_OUTPUT_BLOCK=NEWFI200_BEGIN\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\nPORTAL200_REMAINING_FULL_PRODUCT_COMMANDS_BEFORE=22\nPORTAL200_FLOW=candidate->staging-apply->rollback-proof->staging-reapply->git-push->production\nPORTAL200_CANDIDATE_IDENTITY=PASS\nPORTAL200_ORCHESTRATION_FIXES={"css_href_regex_fixed":true,"failure_status":"FAIL","prod_http_via_pve01_public_route":true,"staging_503_without_css_links":true}\nPORTAL200_GIT_PRESTATE={"branch":"implementation/newfi-closed-mvp-20260906","clean":true,"head":"06bab5acd124e768f70305b3d7eca2f595871890","remote":"06bab5acd124e768f70305b3d7eca2f595871890"}\nPORTAL200_CLUSTER=PASS\nPORTAL200_RUNTIME_HELPER_LINT=PASS\nPORTAL200_ERROR_BASELINE={"prod":0,"staging":40}\nPORTAL200_HTTP={"bytes":23800,"css_count":2,"css_marker":false,"css_status":[200,200],"forced_css_marker":null,"forced_css_status":null,"html_marker":false,"old_copy":false,"state":"old","status":503,"target":"staging"}\nPORTAL200_RUNTIME={"html_bytes":1116,"html_marker":false,"old_copy":true,"state":"old","target":"prod"}\nPORTAL200_HTTP={"bytes":25939,"css_count":2,"css_marker":false,"css_status":[200,200],"forced_css_marker":null,"forced_css_status":null,"html_marker":false,"old_copy":true,"state":"old","status":200,"target":"prod"}\nPORTAL200_PREFLIGHT=PASS\nPORTAL200_FAILURE=IMPORT_FAILED\nPORTAL200_HTTP={"bytes":23800,"css_count":2,"css_marker":false,"css_status":[200,200],"forced_css_marker":null,"forced_css_status":null,"html_marker":false,"old_copy":false,"state":"old","status":503,"target":"staging"}\nPORTAL200_FAILURE_STAGING_ROLLBACK=PASS\nHOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"NEWFI-260907-PORTAL200-APPLY3","rollback_restored":true,"rollback_started":true,"status":"FAIL","version":1}\nPORTAL200_ROADMAP_REMAINS=22\nNEWFI200_END\n
+NEWFI_260907_PORTAL200_APPLY1_ATTEMPT_INVENTORY=[{"bytes":73,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/attempt.txt","sha256":"e499da1ae348df5f86b560c4655d92d4ad6bccd24925c9cc8e818e0ad2e45e47","text":"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\nSTATE=RESERVED_BEFORE_EXECUTION\n"},{"bytes":94,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/receipt.txt","sha256":"dc440de62a30fa2480b0b3d83c8eaa5b9692a90afc2cea28012c757f0b410c78","text":"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\nWRAPPER_RC=76\nPUBLICATION=NOT_INDEPENDENTLY_VERIFIED\n"},{"bytes":669,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/wrapper.log","sha256":"9685a3719da39ed64273e57bad5cd9a52bb637863d267750792bde1d82295f0e","text":"PAYLOAD_VALIDATION=OK\nremote: . Processing 1 references \nremote: Processed 1 references in total \nRESULT=OK\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\nCOMMIT_SHA=55aa9f336df6f3b8a7976899b2a1d58d878431c7\nSTATIC_PUBLICATION=OK\nRAW_BRANCH_PUBLICATION=OK\n\n===== HOMELAB CHAT RUN COMPLETE =====\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY1\nSTATUS=FAIL\nRC=76\nREFERENCE_REGISTER_CHECK=OK\nERROR_REGISTER_CHECK=OK\nDUPLICATE_FAILED_COMMAND_BLOCKED=false\nGITEA_PUBLICATION=OK\nPUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\nLOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY1-20260907T095034Z.log\nSHELL_SESSION_PRESERVED=yes\n"}]
+NEWFI_260907_PORTAL200_APPLY2_ATTEMPT_INVENTORY=[{"bytes":73,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/attempt.txt","sha256":"83643d80ccdc44fddd2837ef415cac4b96431e3af3b0db7d9f13364f75442f33","text":"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\nSTATE=RESERVED_BEFORE_EXECUTION\n"},{"bytes":89,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/receipt.txt","sha256":"07b965c02187f78a8aa6836ec8267fc8ef01270717114e4c5ff39efa31121929","text":"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\nWRAPPER_RC=1\nPUBLICATION=GITEA_RUNTIME_EXPECTED\n"},{"bytes":668,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/wrapper.log","sha256":"4c72462531ac8b9200007c954a1f9a90cebbfe346031bb71a07cb2ef67ac329d","text":"PAYLOAD_VALIDATION=OK\nremote: . Processing 1 references \nremote: Processed 1 references in total \nRESULT=OK\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\nCOMMIT_SHA=fe5f3ed2f5c68fc46fcbab828685c0a872b1ce59\nSTATIC_PUBLICATION=OK\nRAW_BRANCH_PUBLICATION=OK\n\n===== HOMELAB CHAT RUN COMPLETE =====\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY2\nSTATUS=FAIL\nRC=1\nREFERENCE_REGISTER_CHECK=OK\nERROR_REGISTER_CHECK=OK\nDUPLICATE_FAILED_COMMAND_BLOCKED=false\nGITEA_PUBLICATION=OK\nPUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\nLOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY2-20260907T105610Z.log\nSHELL_SESSION_PRESERVED=yes\n"}]
+NEWFI_260907_PORTAL200_APPLY3_ATTEMPT_INVENTORY=[{"bytes":73,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/attempt.txt","sha256":"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14","text":"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\nSTATE=RESERVED_BEFORE_EXECUTION\n"},{"bytes":90,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/receipt.txt","sha256":"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b","text":"COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\nWRAPPER_RC=76\nPUBLICATION=GITEA_RUNTIME_EXPECTED\n"},{"bytes":669,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/wrapper.log","sha256":"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30","text":"PAYLOAD_VALIDATION=OK\nremote: . Processing 1 references \nremote: Processed 1 references in total \nRESULT=OK\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\nCOMMIT_SHA=bb707af34d2a2b6a6b23c3d4d03f6b701150a653\nSTATIC_PUBLICATION=OK\nRAW_BRANCH_PUBLICATION=OK\n\n===== HOMELAB CHAT RUN COMPLETE =====\nCOMMAND_ID=NEWFI-260907-PORTAL200-APPLY3\nSTATUS=FAIL\nRC=76\nREFERENCE_REGISTER_CHECK=OK\nERROR_REGISTER_CHECK=OK\nDUPLICATE_FAILED_COMMAND_BLOCKED=false\nGITEA_PUBLICATION=OK\nPUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json\nLOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY3-20260907T112033Z.log\nSHELL_SESSION_PRESERVED=yes\n"}]
+FILESYSTEM_PORTAL200_EVIDENCE=[{"bytes":14898,"path":"/root/.bash_history","relevant_lines":["]]>",""," &1"," )\"; SSH_RC=$?; printf 'PORTAL200_CANDIDATE_%s_QGA_BEGIN\\n' \"$LABEL\"; printf '%s\\n' \"$OUT\"; printf 'PORTAL200_CANDIDATE_%s_QGA_END\\n' \"$LABEL\"; printf 'PORTAL200_CANDIDATE_%s_SSH_RC=%s\\n' \"$LABEL\" \"$SSH_RC\"; if [ \"$SSH_RC\" -ne 0 ]; then return 1; fi; printf '%s' \"$OUT\" | python3 -c '","import json","import sys","assert \"No syntax errors detected\" in out","' || return 1; return 0; }; if [ \"$RC\" -eq 0 ]; then lint_php \"$CAND/src/addons/Newfi/Portal/Pub/Controller/Portal.php\" CONTROLLER; L1=$?; lint_php \"$CAND/src/addons/Newfi/Portal/Service/PortalData.php\" SERVICE; L2=$?; printf 'PORTAL200_CANDIDATE_CONTROLLER_LINT_RC=%s\\n' \"$L1\"; printf 'PORTAL200_CANDIDATE_SERVICE_LINT_RC=%s\\n' \"$L2\"; if [ \"$L1\" -ne 0 ] || [ \"$L2\" -ne 0 ]; then RC=1; fi; fi; END_HEAD=\"$(git -C \"$WT\" rev-parse HEAD 2>/dev/null)\"; END_STATUS=\"$("," git -C \"$WT\" status --porcelain=v1 --untracked-files=all 2>/dev/null",")\"; printf 'PORTAL200_CANDIDATE_END_GIT_HEAD=%s\\n' \"$END_HEAD\"; printf 'PORTAL200_CANDIDATE_END_GIT_CLEAN=%s\\n' \"$("," if [ -z \"$END_STATUS\" ]; then printf true; else printf false; fi",")\"; if [ \"$END_HEAD\" != \"$EXPECTED_HEAD\" ] || [ -n \"$END_STATUS\" ]; then RC=1; fi; if [ \"$RC\" -eq 0 ]; then printf 'PORTAL200_CANDIDATE_RESULT=PASS\\n'; printf 'PORTAL200_CANDIDATE_PATH=%s\\n' \"$CAND\"; printf 'PORTAL200_EXECUTED=NO\\n'; else printf 'PORTAL200_CANDIDATE_RESULT=FAIL\\n'; rm -rf \"$CAND\" 2>/dev/null || true; fi; printf 'PORTAL200_ROADMAP_REMAINS=22\\n'; printf 'PORTAL200_CANDIDATE_END=%s\\n' \"$CID\"; printf 'WRAPPER_RC=%s\\n' \"$RC\"; printf 'TERMINAL=KEEP_OPEN\\n'; printf 'NEWFI_COMMAND_SHELL_EXIT=DISABLED\\n'; true; ) || true","printf 'WRAPPER_SHELL_RC=0\\n'","printf 'TERMINAL=KEEP_OPEN\\n'"],"sha256":"0d1e6f73b9c6f8ffe1b3a3849bb0f787ed523b1e46a34960ad9ba422e4a3b91f"},{"bytes":73,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/attempt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","STATE=RESERVED_BEFORE_EXECUTION"],"sha256":"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14"},{"bytes":90,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/receipt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","WRAPPER_RC=76","PUBLICATION=GITEA_RUNTIME_EXPECTED"],"sha256":"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b"},{"bytes":669,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/wrapper.log","relevant_lines":["remote: Processed 1 references in total ","RESULT=OK","COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","COMMIT_SHA=bb707af34d2a2b6a6b23c3d4d03f6b701150a653","STATIC_PUBLICATION=OK","","===== HOMELAB CHAT RUN COMPLETE =====","STATUS=FAIL","RC=76","GITEA_PUBLICATION=OK","PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json","LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY3-20260907T112033Z.log","SHELL_SESSION_PRESERVED=yes"],"sha256":"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30"},{"bytes":73,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/attempt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1","STATE=RESERVED_BEFORE_EXECUTION"],"sha256":"e499da1ae348df5f86b560c4655d92d4ad6bccd24925c9cc8e818e0ad2e45e47"},{"bytes":94,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/receipt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1","WRAPPER_RC=76","PUBLICATION=NOT_INDEPENDENTLY_VERIFIED"],"sha256":"dc440de62a30fa2480b0b3d83c8eaa5b9692a90afc2cea28012c757f0b410c78"},{"bytes":669,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY1/wrapper.log","relevant_lines":["remote: Processed 1 references in total ","RESULT=OK","COMMAND_ID=NEWFI-260907-PORTAL200-APPLY1","COMMIT_SHA=55aa9f336df6f3b8a7976899b2a1d58d878431c7","STATIC_PUBLICATION=OK","","===== HOMELAB CHAT RUN COMPLETE =====","STATUS=FAIL","RC=76","GITEA_PUBLICATION=OK","PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json","LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY1-20260907T095034Z.log","SHELL_SESSION_PRESERVED=yes"],"sha256":"9685a3719da39ed64273e57bad5cd9a52bb637863d267750792bde1d82295f0e"},{"bytes":73,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/attempt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2","STATE=RESERVED_BEFORE_EXECUTION"],"sha256":"83643d80ccdc44fddd2837ef415cac4b96431e3af3b0db7d9f13364f75442f33"},{"bytes":89,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/receipt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2","WRAPPER_RC=1","PUBLICATION=GITEA_RUNTIME_EXPECTED"],"sha256":"07b965c02187f78a8aa6836ec8267fc8ef01270717114e4c5ff39efa31121929"},{"bytes":668,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY2/wrapper.log","relevant_lines":["remote: Processed 1 references in total ","RESULT=OK","COMMAND_ID=NEWFI-260907-PORTAL200-APPLY2","COMMIT_SHA=fe5f3ed2f5c68fc46fcbab828685c0a872b1ce59","STATIC_PUBLICATION=OK","","===== HOMELAB CHAT RUN COMPLETE =====","STATUS=FAIL","RC=1","GITEA_PUBLICATION=OK","PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json","LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY2-20260907T105610Z.log","SHELL_SESSION_PRESERVED=yes"],"sha256":"4c72462531ac8b9200007c954a1f9a90cebbfe346031bb71a07cb2ef67ac329d"},{"bytes":71,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-RCA4/attempt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-RCA4","STATE=RESERVED_BEFORE_EXECUTION"],"sha256":"6f5f48b114a59b391450532fdf2c73a2627105ffe91942054e272931af0af62b"},{"bytes":91,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-RCA4/receipt.txt","relevant_lines":["COMMAND_ID=NEWFI-260907-PORTAL200-RCA4","WRAPPER_RC=0","PUBLICATION=NOT_INDEPENDENTLY_VERIFIED"],"sha256":"6406f6bc528bf48bd88eabccc9dd88a9fa25d6415f5121ed55b8aa8f357d0c84"},{"bytes":660,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-RCA4/wrapper.log","relevant_lines":["remote: Processed 1 references in total ","RESULT=OK","COMMAND_ID=NEWFI-260907-PORTAL200-RCA4","COMMIT_SHA=74bee60e6746db6bf0eba73b3c66c184bf148680","STATIC_PUBLICATION=OK","","===== HOMELAB CHAT RUN COMPLETE =====","STATUS=OK","RC=0","GITEA_PUBLICATION=OK","PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json","LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-RCA4-20260907T103455Z.log","SHELL_SESSION_PRESERVED=yes"],"sha256":"b7f1ea0cdee90fe027b3302bf1e932c15fbb80a73764b948269d3025307c7672"}]
RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d
-RUNNER_CONTRACT_EXCERPT=["7:import json","8:import sys","9:from pathlib import Path","11:raw_path, command_id, mode, command_rc = sys.argv[1:]","12:command_rc = int(command_rc)","14:result = {","15:\"valid\": True,","16:\"status\": \"NOT_APPLICABLE\",","17:\"changes_made\": \"false\",","18:\"rollback_started\": \"false\",","19:\"rollback_restored\": \"null\",","20:\"mutation_outcome\": \"NO_MUTATION\",","21:\"error\": \"NONE\",","22:}","24:if mode == \"change\":","25:result = {","26:\"valid\": False,","27:\"status\": \"UNKNOWN\",","28:\"changes_made\": \"unknown\",","29:\"rollback_started\": \"unknown\",","30:\"rollback_restored\": \"null\",","31:\"mutation_outcome\": \"UNKNOWN\",","32:\"error\": \"MISSING_CONTRACT\",","33:}","34:marker = \"HOMELAB_RESULT_CONTRACT=\"","35:lines = Path(raw_path).read_bytes().decode(","36:\"utf-8\",","37:errors=\"replace\",","38:).splitlines()","44:if len(payloads) == 1:","45:try:","46:document = json.loads(payloads[0])","47:if not isinstance(document, dict):","48:raise ValueError(\"contract root is not object\")","49:if document.get(\"version\") != 1:","50:raise ValueError(\"unsupported version\")","51:if document.get(\"command_id\") != command_id:","52:raise ValueError(\"command_id mismatch\")","53:status = document.get(\"status\")","54:if status not in {\"OK\", \"BLOCKED\", \"FAIL\"}:","55:raise ValueError(\"invalid status\")","56:changes = document.get(\"changes_made\")","57:rollback_started = document.get(\"rollback_started\")","58:rollback_restored = document.get(\"rollback_restored\")","59:if not isinstance(changes, bool):","60:raise ValueError(\"changes_made must be boolean\")","61:if not isinstance(rollback_started, bool):","62:raise ValueError(\"rollback_started must be boolean\")","63:if rollback_restored is not None and not isinstance(","64:rollback_restored,","65:bool,","66:):","67:raise ValueError(","68:\"rollback_restored must be boolean or null\"","69:)","70:if rollback_restored is True and rollback_started is not True:","71:raise ValueError(","72:\"rollback_restored without rollback_started\"","73:)","74:if rollback_started is True and changes is not True:","75:raise ValueError(","76:\"rollback_started without changes\"","77:)","78:if status == \"BLOCKED\" and (","79:changes","80:or rollback_started","81:or command_rc != 2","82:):","83:raise ValueError(","84:\"BLOCKED contract inconsistent with rc/mutation\"","85:)","86:if status == \"OK\" and command_rc != 0:","87:raise ValueError(\"OK contract inconsistent with rc\")","88:if status == \"FAIL\" and command_rc == 0:","89:raise ValueError(\"FAIL contract inconsistent with rc\")","91:if not changes:","92:outcome = \"NO_MUTATION\"","93:elif not rollback_started:","94:outcome = \"MUTATED\"","95:elif rollback_restored is True:","96:outcome = \"ROLLED_BACK\"","97:elif rollback_restored is False:","98:outcome = \"ROLLBACK_FAILED\"","99:else:","100:outcome = \"ROLLBACK_UNKNOWN\"","102:result = {","103:\"valid\": True,","104:\"status\": status,","105:\"changes_made\": str(changes).lower(),","106:\"rollback_started\": str(","107:rollback_started","108:).lower(),","109:\"rollback_restored\": (","110:\"null\"","111:if rollback_restored is None","112:else str(rollback_restored).lower()","113:),","114:\"mutation_outcome\": outcome,","115:\"error\": \"NONE\",","116:}","117:except Exception as exc:","118:result[\"error\"] = (","119:\"INVALID_CONTRACT:\" + type(exc).__name__","120:)","121:elif len(payloads) > 1:","122:result[\"error\"] = \"MULTIPLE_CONTRACTS\"","124:print(\"\\t\".join([","125:str(result[\"valid\"]).lower(),","126:result[\"status\"],","127:result[\"changes_made\"],","128:result[\"rollback_started\"],","129:result[\"rollback_restored\"],","130:result[\"mutation_outcome\"],","131:result[\"error\"],","132:]))","133:PY_CONTRACT","138:tmp=\"$(mktemp)\"","139:trap 'rm -f \"$tmp\"' RETURN","141:printf '%s\\n' \\","142:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T1\",\"status\":\"BLOCKED\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}' \\","143:>\"$tmp\"","144:[ \"$(read_mutation_contract \"$tmp\" T1 change 2)\" = \\","145:$'true\\tBLOCKED\\tfalse\\tfalse\\tnull\\tNO_MUTATION\\tNONE' ]","147:printf '%s\\n' \\","148:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T2\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\","149:>\"$tmp\"","150:[ \"$(read_mutation_contract \"$tmp\" T2 change 0)\" = \\","151:$'true\\tOK\\ttrue\\tfalse\\tnull\\tMUTATED\\tNONE' ]","153:printf '%s\\n' \\","154:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T3\",\"status\":\"FAIL\",\"changes_made\":true,\"rollback_started\":true,\"rollback_restored\":true}' \\","155:>\"$tmp\"","156:[ \"$(read_mutation_contract \"$tmp\" T3 change 1)\" = \\","157:$'true\\tFAIL\\ttrue\\ttrue\\ttrue\\tROLLED_BACK\\tNONE' ]","164:[ \"$(read_mutation_contract \"$tmp\" T5 verify 0)\" = \\","165:$'true\\tNOT_APPLICABLE\\tfalse\\tfalse\\tnull\\tNO_MUTATION\\tNONE' ]","167:printf '%s\\n' \\","168:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"OTHER\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\","169:>\"$tmp\"","170:[ \"$(read_mutation_contract \"$tmp\" T6 change 0)\" = \\","171:$'false\\tUNKNOWN\\tunknown\\tunknown\\tnull\\tUNKNOWN\\tINVALID_CONTRACT:ValueError' ]","173:printf '%s\\n' \\","174:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T7\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\","175:'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T7\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\","176:>\"$tmp\"","177:[ \"$(read_mutation_contract \"$tmp\" T7 change 0)\" = \\","178:$'false\\tUNKNOWN\\tunknown\\tunknown\\tnull\\tUNKNOWN\\tMULTIPLE_CONTRACTS' ]","188:usage() {","189:cat >&2 <<'USAGE'","190:Usage:","191:homelab-chat-run COMMAND_ID MODE COMPONENT -- command [arguments...]","193:MODE:","194:read-only","195:verify","204:}","206:[ \"$#\" -ge 5 ] || usage","208:COMMAND_ID=\"$1\"","209:MODE=\"$2\"","210:COMPONENT=\"$3\"","211:shift 3","213:[ \"${1:-}\" = '--' ] || usage","214:shift","215:[ \"$#\" -ge 1 ] || usage","217:case \"$COMMAND_ID\" in","218:''|*[!A-Za-z0-9._-]*)","219:echo 'RESULT=FAIL'","220:echo 'REASON=INVALID_COMMAND_ID'","221:exit 65","222:;;","223:esac","293:STARTED_AT=\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"","294:STAMP=\"$(date -u +%Y%m%dT%H%M%SZ)\"","295:HOST_SHORT=\"$(hostname -s 2>/dev/null || hostname)\"","297:RAW_FILE=\"$RAW_DIR/${COMMAND_ID}-${STAMP}.log\"","298:SANITIZED_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.txt\"","299:JSON_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.json\"","300:TXT_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}-latest.txt\"","302:REFERENCE_SHA256=\"$(sha256sum \"$REFERENCE\" | awk '{print $1}')\"","303:ERROR_REGISTER_SHA256=\"$(sha256sum \"$ERROR_REGISTER\" | awk '{print $1}')\"","328:REPEAT_BLOCKED=false","329:BLOCK_REASON=''","330:CHANGE_DECLARED=false","331:RESULT_CONTRACT_VALID=true","332:CONTRACT_STATUS='NOT_APPLICABLE'","333:CHANGES_MADE=false","334:ROLLBACK_STARTED=false","335:ROLLBACK_RESTORED=null","336:MUTATION_OUTCOME='NO_MUTATION'","337:RESULT_CONTRACT_ERROR='NONE'","338:COMMAND_RC=''","340:if [ \"$MODE\" = change ]; then","341:CHANGE_DECLARED=true","342:RESULT_CONTRACT_VALID=false","343:CONTRACT_STATUS='UNKNOWN'","344:CHANGES_MADE=unknown","345:ROLLBACK_STARTED=unknown","346:ROLLBACK_RESTORED=null","347:MUTATION_OUTCOME='UNKNOWN'","348:RESULT_CONTRACT_ERROR='MISSING_CONTRACT'","349:fi","354:RUN_STARTED=false","355:REPEAT_BLOCKED=true","356:BLOCK_REASON='EXACT_FAILED_COMMAND_REPEAT'","357:RC=73","358:STATUS='BLOCKED'","359:RESULT_CONTRACT_VALID=true","360:CONTRACT_STATUS='BLOCKED'","361:CHANGES_MADE=false","362:ROLLBACK_STARTED=false","363:ROLLBACK_RESTORED=null","364:MUTATION_OUTCOME='NO_MUTATION'","365:RESULT_CONTRACT_ERROR='RUNNER_PREEXECUTION_BLOCK'","367:{","385:esac","387:timeout \\","388:--foreground \\","389:--preserve-status \\","390:\"$HOMELAB_TIMEOUT\" \\","391:\"$@\" >\"$RAW_FILE\" 2>&1","392:RC=$?","393:else"]
-TARGET_WORKTREES=[{"dirty_count":0,"head":"06bab5acd124e768f70305b3d7eca2f595871890","remote_head":"06bab5acd124e768f70305b3d7eca2f595871890","repo":"/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906"}]
-GIT_REPO=/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906
-GIT_HEAD=06bab5acd124e768f70305b3d7eca2f595871890
-GIT_REMOTE_HEAD=06bab5acd124e768f70305b3d7eca2f595871890
-GIT_DIRTY_COUNT=0
-CURRENT_PORTAL_GIT_FILES=["src/addons/Newfi/Portal/Pub/Controller/Portal.php","src/addons/Newfi/Portal/Pub/View/Portal.php","src/addons/Newfi/Portal/_data/navigation.xml","src/addons/Newfi/Portal/_data/phrases.xml","src/addons/Newfi/Portal/_data/routes.xml","src/addons/Newfi/Portal/_data/templates.xml","src/addons/Newfi/Portal/addon.json"]
-CURRENT_PORTAL_GIT_MANIFEST={"src/addons/Newfi/Portal/Pub/Controller/Portal.php":{"bytes":247,"sha256":"53909e753ea5a011550fd280ad1c342a74ca9949be092dfbd95244243cae92f3"},"src/addons/Newfi/Portal/Pub/View/Portal.php":{"bytes":79,"sha256":"26e3b77c2c86d4f4a6fd51f0472e3f38e70e14c984ffd8d04dcec39071a2a69f"},"src/addons/Newfi/Portal/_data/navigation.xml":{"bytes":281,"sha256":"5d724ef5141438bdd0b9dba6a583d330bc6940b0ace5c21c7a8d5301e7d8d649"},"src/addons/Newfi/Portal/_data/phrases.xml":{"bytes":173,"sha256":"15282a06a956bda4e810f6b26b1703676dd766424029cd372ce0fd7832dbe09c"},"src/addons/Newfi/Portal/_data/routes.xml":{"bytes":144,"sha256":"9b80ef229bcebb49a5930369bb272ed85367deef66070f432948001096673629"},"src/addons/Newfi/Portal/_data/templates.xml":{"bytes":1461,"sha256":"c29c04f8b937284e821c87957653e87c2f6ac014fac30648a0f6b18e84392adf"},"src/addons/Newfi/Portal/addon.json":{"bytes":378,"json":{"description":"Minimal private-staging portal for the Newfi closed MVP.","dev":"Newfi","dev_url":"","extra_urls":[],"faq_url":"","icon":"","legacy_addon_id":"","require":{"XF":[2031270,"XenForo 2.3.12+"]},"support_url":"","title":"Newfi Portal","version_id":1000010,"version_string":"1.0.0 Alpha 1"},"sha256":"288a61044c941107162d045be49ab2e7c844d1586b25378a7289b3c7275010ab"}}
-APPLY3_ATTEMPT_DIR=/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3
-APPLY3_ATTEMPT_EXISTS=true
-APPLY3_ATTEMPT_FILES=[{"bytes":73,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/attempt.txt","sha256":"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14"},{"bytes":90,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/receipt.txt","sha256":"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b"},{"bytes":669,"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/wrapper.log","sha256":"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30"}]
-RELATED_ARTIFACT_FILES=[]
-CANDIDATE_PORTAL_ROOTS=[]
-CANDIDATE_PORTAL_MANIFESTS=[]
-CANDIDATE_ARTIFACT_EVIDENCE=[{"decoded_payloads":[],"hits":["1:COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","2:STATE=RESERVED_BEFORE_EXECUTION"],"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/attempt.txt","sha256":"fc3d53a77acceff697ec5111ab3ba411ede195fd9a8e358de5ae94dbc94f4d14"},{"decoded_payloads":[],"hits":["1:COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","2:WRAPPER_RC=76","3:PUBLICATION=GITEA_RUNTIME_EXPECTED"],"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/receipt.txt","sha256":"a993d3503cd786e73baa68900ae5bc46eac405da3430cfab0bb5db981e0f1b4b"},{"decoded_payloads":[],"hits":["3:remote: Processed 1 references in total ","4:RESULT=OK","5:COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","6:COMMIT_SHA=bb707af34d2a2b6a6b23c3d4d03f6b701150a653","7:STATIC_PUBLICATION=OK","9:","10:===== HOMELAB CHAT RUN COMPLETE =====","11:COMMAND_ID=NEWFI-260907-PORTAL200-APPLY3","12:STATUS=FAIL","13:RC=76","17:GITEA_PUBLICATION=OK","18:PUBLIC_URL=https://git.gram1.ru/.well-known/homelab-runtime/latest.json","19:LOCAL_RAW_FILE=/var/lib/homelab-chat-run/raw/NEWFI-260907-PORTAL200-APPLY3-20260907T112033Z.log","20:SHELL_SESSION_PRESERVED=yes"],"path":"/root/newfi-run-NEWFI-260907-PORTAL200-APPLY3/wrapper.log","sha256":"dec036ea985e75d776b2de8c2bede77fe4b4aafa5da33648b2a6b5f79f3dec30"}]
-PORTAL_GIT_ALL_HISTORY=["ca07bfc20953585887f7cc2f1d443cf8313912c8\t2026-09-06T16:40:06+03:00\tfeat: add Portal navigation and widgets","82dd2066df377ba9d904f68f90898e009413eec9\t2026-09-06T16:15:39+03:00\tfeat: add Newfi Portal staging checkpoint"]
-PORTAL_UNREACHABLE_COMMITS=[]
+RUNNER_CONTRACT_EXACT_RELEVANT_LINES=["import json","import sys","from pathlib import Path","","raw_path, command_id, mode, command_rc = sys.argv[1:]","command_rc = int(command_rc)","result = {"," \"valid\": True,"," \"status\": \"NOT_APPLICABLE\","," \"changes_made\": \"false\","," \"rollback_started\": \"false\","," \"rollback_restored\": \"null\","," \"mutation_outcome\": \"NO_MUTATION\","," \"error\": \"NONE\",","}","if mode == \"change\":"," result = {"," \"valid\": False,"," \"status\": \"UNKNOWN\","," \"changes_made\": \"unknown\","," \"rollback_started\": \"unknown\","," \"rollback_restored\": \"null\","," \"mutation_outcome\": \"UNKNOWN\","," \"error\": \"MISSING_CONTRACT\","," }"," marker = \"HOMELAB_RESULT_CONTRACT=\""," lines = Path(raw_path).read_bytes().decode("," \"utf-8\","," errors=\"replace\","," ).splitlines()"," document = json.loads(payloads[0])"," if not isinstance(document, dict):"," raise ValueError(\"contract root is not object\")"," if document.get(\"version\") != 1:"," raise ValueError(\"unsupported version\")"," if document.get(\"command_id\") != command_id:"," raise ValueError(\"command_id mismatch\")"," status = document.get(\"status\")"," if status not in {\"OK\", \"BLOCKED\", \"FAIL\"}:"," raise ValueError(\"invalid status\")"," changes = document.get(\"changes_made\")"," rollback_started = document.get(\"rollback_started\")"," rollback_restored = document.get(\"rollback_restored\")"," if not isinstance(changes, bool):"," raise ValueError(\"changes_made must be boolean\")"," if not isinstance(rollback_started, bool):"," raise ValueError(\"rollback_started must be boolean\")"," if rollback_restored is not None and not isinstance("," rollback_restored,"," bool,"," ):"," raise ValueError("," \"rollback_restored must be boolean or null\""," )"," if rollback_restored is True and rollback_started is not True:"," \"rollback_restored without rollback_started\""," if rollback_started is True and changes is not True:"," \"rollback_started without changes\""," if status == \"BLOCKED\" and ("," changes"," or rollback_started"," or command_rc != 2"," \"BLOCKED contract inconsistent with rc/mutation\""," raise ValueError(\"FAIL contract inconsistent with rc\")"," if not changes:"," outcome = \"NO_MUTATION\""," elif not rollback_started:"," outcome = \"MUTATED\""," elif rollback_restored is True:"," outcome = \"ROLLED_BACK\""," elif rollback_restored is False:"," outcome = \"ROLLBACK_FAILED\""," else:"," outcome = \"ROLLBACK_UNKNOWN\""," result = {"," \"valid\": True,"," \"status\": status,"," \"changes_made\": str(changes).lower(),"," \"rollback_started\": str("," rollback_started"," ).lower(),"," \"rollback_restored\": ("," \"null\""," if rollback_restored is None"," else str(rollback_restored).lower()"," ),"," \"mutation_outcome\": outcome,"," \"error\": \"NONE\","," }"," except Exception as exc:"," result[\"error\"] = ("," \"INVALID_CONTRACT:\" + type(exc).__name__"," )"," elif len(payloads) > 1:"," result[\"error\"] = \"MULTIPLE_CONTRACTS\"","print(\"\\t\".join(["," str(result[\"valid\"]).lower(),"," result[\"status\"],"," result[\"changes_made\"],"," result[\"rollback_started\"],"," result[\"rollback_restored\"],"," result[\"mutation_outcome\"],"," result[\"error\"],","]))","PY_CONTRACT"," tmp=\"$(mktemp)\""," trap 'rm -f \"$tmp\"' RETURN"," printf '%s\\n' \\"," 'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T1\",\"status\":\"BLOCKED\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}' \\"," >\"$tmp\""," [ \"$(read_mutation_contract \"$tmp\" T1 change 2)\" = \\"," $'true\\tBLOCKED\\tfalse\\tfalse\\tnull\\tNO_MUTATION\\tNONE' ]"," 'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T2\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\"," [ \"$(read_mutation_contract \"$tmp\" T2 change 0)\" = \\"," $'true\\tOK\\ttrue\\tfalse\\tnull\\tMUTATED\\tNONE' ]"," 'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T3\",\"status\":\"FAIL\",\"changes_made\":true,\"rollback_started\":true,\"rollback_restored\":true}' \\"," [ \"$(read_mutation_contract \"$tmp\" T3 change 1)\" = \\"," $'true\\tFAIL\\ttrue\\ttrue\\ttrue\\tROLLED_BACK\\tNONE' ]"," [ \"$(read_mutation_contract \"$tmp\" T5 verify 0)\" = \\"," $'true\\tNOT_APPLICABLE\\tfalse\\tfalse\\tnull\\tNO_MUTATION\\tNONE' ]"," 'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"OTHER\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\"," [ \"$(read_mutation_contract \"$tmp\" T6 change 0)\" = \\"," $'false\\tUNKNOWN\\tunknown\\tunknown\\tnull\\tUNKNOWN\\tINVALID_CONTRACT:ValueError' ]"," 'HOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"T7\",\"status\":\"OK\",\"changes_made\":true,\"rollback_started\":false,\"rollback_restored\":null}' \\"," [ \"$(read_mutation_contract \"$tmp\" T7 change 0)\" = \\"," $'false\\tUNKNOWN\\tunknown\\tunknown\\tnull\\tUNKNOWN\\tMULTIPLE_CONTRACTS' ]","usage() {"," cat >&2 <<'USAGE'","Usage:"," homelab-chat-run COMMAND_ID MODE COMPONENT -- command [arguments...]","MODE:"," read-only"," verify","[ \"$#\" -ge 5 ] || usage","COMMAND_ID=\"$1\"","MODE=\"$2\"","COMPONENT=\"$3\"","shift 3","[ \"${1:-}\" = '--' ] || usage","shift","[ \"$#\" -ge 1 ] || usage","case \"$COMMAND_ID\" in"," ''|*[!A-Za-z0-9._-]*)"," echo 'RESULT=FAIL'"," echo 'REASON=INVALID_COMMAND_ID'"," exit 65"," ;;","esac","STARTED_AT=\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"","STAMP=\"$(date -u +%Y%m%dT%H%M%SZ)\"","HOST_SHORT=\"$(hostname -s 2>/dev/null || hostname)\"","RAW_FILE=\"$RAW_DIR/${COMMAND_ID}-${STAMP}.log\"","SANITIZED_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.txt\"","JSON_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.json\"","TXT_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}-latest.txt\"","REFERENCE_SHA256=\"$(sha256sum \"$REFERENCE\" | awk '{print $1}')\"","ERROR_REGISTER_SHA256=\"$(sha256sum \"$ERROR_REGISTER\" | awk '{print $1}')\"","BLOCK_REASON=''","CHANGE_DECLARED=false","RESULT_CONTRACT_VALID=true","CONTRACT_STATUS='NOT_APPLICABLE'","CHANGES_MADE=false","ROLLBACK_STARTED=false","ROLLBACK_RESTORED=null","MUTATION_OUTCOME='NO_MUTATION'","RESULT_CONTRACT_ERROR='NONE'","COMMAND_RC=''","if [ \"$MODE\" = change ]; then"," CHANGE_DECLARED=true"," RESULT_CONTRACT_VALID=false"," CONTRACT_STATUS='UNKNOWN'"," CHANGES_MADE=unknown"," ROLLBACK_STARTED=unknown"," ROLLBACK_RESTORED=null"," MUTATION_OUTCOME='UNKNOWN'"," RESULT_CONTRACT_ERROR='MISSING_CONTRACT'","fi"," RC=73"," STATUS='BLOCKED'"," RESULT_CONTRACT_VALID=true"," CONTRACT_STATUS='BLOCKED'"," CHANGES_MADE=false"," ROLLBACK_STARTED=false"," MUTATION_OUTCOME='NO_MUTATION'"," RESULT_CONTRACT_ERROR='RUNNER_PREEXECUTION_BLOCK'"," {"," IFS=$'\\t' read -r \\"," RESULT_CONTRACT_VALID \\"," CONTRACT_STATUS \\"," CHANGES_MADE \\"," ROLLBACK_STARTED \\"," ROLLBACK_RESTORED \\"," MUTATION_OUTCOME \\"," RESULT_CONTRACT_ERROR < <("," read_mutation_contract \\"," \"$RAW_FILE\" \\"," \"$COMMAND_ID\" \\"," \"$MODE\" \\"," \"$COMMAND_RC\""," )","python3 - \\"," \"$JSON_FILE\" \\"," \"$SANITIZED_FILE\" \\"," \"$COMMAND_ID\" \\"," \"$STATUS\" \\"," \"$RC\" \\"," \"$HOST_SHORT\" \\"," \"$MODE\" \\"," \"$BLOCK_REASON\" \\"," \"$CHANGE_DECLARED\" \\"," \"$RESULT_CONTRACT_VALID\" \\"," \"$CONTRACT_STATUS\" \\"," \"$CHANGES_MADE\" \\"," \"$ROLLBACK_STARTED\" \\"," \"$ROLLBACK_RESTORED\" \\"," \"$MUTATION_OUTCOME\" \\"," \"$RESULT_CONTRACT_ERROR\" \\"," \"$COMMAND_RC\" <<'PY'","("," json_path,"," output_path,"," command_id,"," status,"," rc,"," host,"," mode,"," block_reason,"," change_declared,"," result_contract_valid,"," contract_status,"," changes_made,"," rollback_started,"," rollback_restored,"," mutation_outcome,"," result_contract_error,"," command_rc,",") = sys.argv[1:]","document = {"," \"schema_version\": 1,"," \"channel\": \"homelab-runtime\","," \"command_id\": command_id,"," \"status\": status,"," \"rc\": int(rc),"," \"host\": host,"," \"mode\": mode,"," \"change_declared\": change_declared == \"true\","," \"result_contract_valid\": result_contract_valid == \"true\","," \"result_contract_status\": ("," None"," if contract_status in {\"\", \"UNKNOWN\", \"NOT_APPLICABLE\"}"," else contract_status"," ),"," \"result_contract_error\": ("," if result_contract_error == \"NONE\""," else result_contract_error"," \"command_rc\": int(command_rc) if command_rc else None,"," \"changes_made\": optional_bool(changes_made),"," \"rollback_started\": optional_bool(rollback_started),"," \"rollback_restored\": optional_bool(rollback_restored),"," \"mutation_outcome\": mutation_outcome,"]
+CANDIDATE_EXACTNESS_SIGNALS={"source_or_hash":true,"version_id":true,"version_string":true}
HOLD_REASONS=[]
FINAL_DECISION=ELIGIBLE_FOR_PORTAL200_APPLY4_CHANGE_CARRIER_BUILD
-APPLY4_DESIGN1_END=true
+APPLY4_DESIGN2_END=true
OUTPUT_END
CHAT_OUTPUT_END