From 50643ff66580f01510a24e31310e95357be624b7 Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Mon, 7 Sep 2026 19:04:14 +0000 Subject: [PATCH] runtime: publish NEWFI-260907-B-PORTAL200-RUNNERCONTRACT4 --- ...FI-260907-B-PORTAL200-RUNNERCONTRACT4.json | 38 ++++++++++ ...WFI-260907-B-PORTAL200-RUNNERCONTRACT4.txt | 39 +++++++++++ runtime/latest.json | 22 +++--- runtime/latest.txt | 69 ++++--------------- 4 files changed, 100 insertions(+), 68 deletions(-) create mode 100644 runtime/history/NEWFI-260907-B-PORTAL200-RUNNERCONTRACT4.json create mode 100644 runtime/history/NEWFI-260907-B-PORTAL200-RUNNERCONTRACT4.txt diff --git a/runtime/history/NEWFI-260907-B-PORTAL200-RUNNERCONTRACT4.json b/runtime/history/NEWFI-260907-B-PORTAL200-RUNNERCONTRACT4.json new file mode 100644 index 00000000..85a2a4c8 --- /dev/null +++ b/runtime/history/NEWFI-260907-B-PORTAL200-RUNNERCONTRACT4.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "NEWFI-260907-B-PORTAL200-RUNNERCONTRACT4", + "status": "FAIL", + "rc": 3, + "host": "pve01", + "mode": "read-only", + "component": "newfi-portal200-runner-contract-ast-evidence", + "started_at_utc": "2026-09-07T19:04:13Z", + "finished_at_utc": "2026-09-07T19:04:13Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "229874e0a8df9ee823304d2e627039f75526630636b06f99ea1c5c7eaded6ccb", + "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": 3, + "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": "85dc61a8c2998eb9b3c2952f652ea25eb6afebbcb34f2f5197b9e9545f55f052", + "sanitized_output_sha256": "85dc61a8c2998eb9b3c2952f652ea25eb6afebbcb34f2f5197b9e9545f55f052", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "ERROR_REGISTER_CHECK=OK\nREFERENCE_CHECK=OK\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nRUNNERCONTRACT4_AUTHORITY={\"ERROR_REGISTER\":{\"bytes\":302058,\"ok\":true,\"sha256\":\"3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\"},\"REFERENCE\":{\"bytes\":201129,\"ok\":true,\"sha256\":\"5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\"}}\nRUNNERCONTRACT4_RUNNER={\"bytes\":21321,\"matches_handoff_baseline\":true,\"path\":\"/usr/local/sbin/homelab-chat-run\",\"sha256\":\"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\"}\nRUNNERCONTRACT4_HOLD_REASONS=[\"RUNNER_AST_PARSE_FAILED_SyntaxError\"]\nRUNNERCONTRACT4_DECISION=HOLD_RUNNER_AST_PARSE_FAILED\n" +} diff --git a/runtime/history/NEWFI-260907-B-PORTAL200-RUNNERCONTRACT4.txt b/runtime/history/NEWFI-260907-B-PORTAL200-RUNNERCONTRACT4.txt new file mode 100644 index 00000000..5c164005 --- /dev/null +++ b/runtime/history/NEWFI-260907-B-PORTAL200-RUNNERCONTRACT4.txt @@ -0,0 +1,39 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=NEWFI-260907-B-PORTAL200-RUNNERCONTRACT4 +STATUS=FAIL +RC=3 +HOST=pve01 +MODE=read-only +COMPONENT=newfi-portal200-runner-contract-ast-evidence +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=229874e0a8df9ee823304d2e627039f75526630636b06f99ea1c5c7eaded6ccb +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=3 +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=85dc61a8c2998eb9b3c2952f652ea25eb6afebbcb34f2f5197b9e9545f55f052 +SANITIZED_OUTPUT_SHA256=85dc61a8c2998eb9b3c2952f652ea25eb6afebbcb34f2f5197b9e9545f55f052 +OUTPUT_BEGIN +ERROR_REGISTER_CHECK=OK +REFERENCE_CHECK=OK +AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED +RUNNERCONTRACT4_AUTHORITY={"ERROR_REGISTER":{"bytes":302058,"ok":true,"sha256":"3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0"},"REFERENCE":{"bytes":201129,"ok":true,"sha256":"5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66"}} +RUNNERCONTRACT4_RUNNER={"bytes":21321,"matches_handoff_baseline":true,"path":"/usr/local/sbin/homelab-chat-run","sha256":"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d"} +RUNNERCONTRACT4_HOLD_REASONS=["RUNNER_AST_PARSE_FAILED_SyntaxError"] +RUNNERCONTRACT4_DECISION=HOLD_RUNNER_AST_PARSE_FAILED + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 3a0173b9..85a2a4c8 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-APPLY4PREP1", - "status": "OK", - "rc": 0, + "command_id": "NEWFI-260907-B-PORTAL200-RUNNERCONTRACT4", + "status": "FAIL", + "rc": 3, "host": "pve01", "mode": "read-only", - "component": "newfi-portal200-apply4-preparation", - "started_at_utc": "2026-09-07T19:01:26Z", - "finished_at_utc": "2026-09-07T19:01:42Z", + "component": "newfi-portal200-runner-contract-ast-evidence", + "started_at_utc": "2026-09-07T19:04:13Z", + "finished_at_utc": "2026-09-07T19:04:13Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", - "command_sha256": "549a62ae9b0a3353233208c0615167a9903e3bcc0280d1171e0421c44dcbdd8b", + "command_sha256": "229874e0a8df9ee823304d2e627039f75526630636b06f99ea1c5c7eaded6ccb", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -21,7 +21,7 @@ "result_contract_valid": true, "result_contract_status": null, "result_contract_error": null, - "command_rc": 0, + "command_rc": 3, "changes_made": false, "rollback_started": false, "rollback_restored": null, @@ -30,9 +30,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "fe9f7b7570e491d7d496776d1d946aa03cb264b46cea79cc07fc32d040fba0b5", - "sanitized_output_sha256": "fe9f7b7570e491d7d496776d1d946aa03cb264b46cea79cc07fc32d040fba0b5", + "raw_evidence_sha256": "85dc61a8c2998eb9b3c2952f652ea25eb6afebbcb34f2f5197b9e9545f55f052", + "sanitized_output_sha256": "85dc61a8c2998eb9b3c2952f652ea25eb6afebbcb34f2f5197b9e9545f55f052", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "APPLY4_PREP_BEGIN=true\nCOMMAND_ID=NEWFI-260907-A-PORTAL200-APPLY4PREP1\nMUTATION_SCOPE=NONE_READ_ONLY\nMUTATIONS_PERFORMED=NO\nERROR_REGISTER_CHECK=OK\nERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\nREFERENCE_CHECK=OK\nREFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\nERROR_REGISTER_CHECK=OK\nREFERENCE_CHECK=OK\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nRUNNER_SHA_MATCHES_KNOWN_BASELINE=true\nRUNNER_CONTRACT_AND_DUPLICATE_EXCERPT=[\"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\\\",\",\"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:]))\",\"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' ]\",\"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\",\"197:transport-test\",\"199:Environment:\",\"200:HOMELAB_ALLOW_REPEAT=1 Allow exact repeat of a previously failed command.\",\"201:HOMELAB_TIMEOUT=SECONDS Optional command timeout.\",\"202:USAGE\",\"203:exit 64\",\"206:[ \\\"$#\\\" -ge 5 ] || usage\",\"208:COMMAND_ID=\\\"$1\\\"\",\"209:MODE=\\\"$2\\\"\",\"210:COMPONENT=\\\"$3\\\"\",\"211:shift 3\",\"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\",\"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}')\\\"\",\"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'\"]\nRUNNER_CONTRACT_EXCERPT_SHA256=f4b17f4d25a636e3e685f518ca9001c7560f8bac2ba637c28f4d311200e2fb78\nNEWFI_260907_PORTAL200_CONTRACTAST1_EXACT_OK=true\nNEWFI_260907_PORTAL200_CONTRACTAST1_SHA256=00c4dc5e100be0cb26a80262a8af96555457b5dc4fa924c6a9458089cd01474e\nNEWFI_260907_PORTAL200_IMPORTDISC2_EXACT_OK=true\nNEWFI_260907_PORTAL200_IMPORTDISC2_SHA256=805954f73608dbd343da33d387c59a6ad258a7f6a51965db4e78c3fd0f588fd4\nNEWFI_260907_PORTAL200_REBUILDHELP1_EXACT_OK=true\nNEWFI_260907_PORTAL200_REBUILDHELP1_SHA256=30370cad3d4d7e73c6612a5df702abe1fac6ae559bf142b5e489a19a1258cfb7\nASSISTANT_RUNTIME_BRANCH_HEAD=2da92090b830c31690cbba441708f33d8d6c1c5f\nLANEB_PORTAL200_HISTORY_CANDIDATE_PATHS=[]\nLANEB_ELIGIBLE_IMMUTABLE_CHECKPOINTS=[]\nNEWFI_GIT_CANDIDATES=[{\"branch\":\"main\",\"dirty_count\":0,\"head\":\"6360c4c919c4c5b3cb2430dd55fe63b6ad595a28\",\"portal_hits\":[],\"remote_head\":\"6360c4c919c4c5b3cb2430dd55fe63b6ad595a28\",\"repo\":\"/root/newfi-portal\",\"score\":3},{\"branch\":\"foundation/newfi-foundation-20260904\",\"dirty_count\":0,\"head\":\"38688a88c3850e43e310e755faa0c6178e203e26\",\"portal_hits\":[],\"remote_head\":\"e4f7b4318e2b0c1aa799edf91f39992c4b3ba378\",\"repo\":\"/root/newfi-portal/.worktrees/foundation-newfi-foundation-20260904\",\"score\":9},{\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"dirty_count\":0,\"head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"portal_hits\":[],\"remote_head\":\"06bab5acd124e768f70305b3d7eca2f595871890\",\"repo\":\"/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906\",\"score\":15}]\nGIT_REPO=/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906\nGIT_BRANCH=implementation/newfi-closed-mvp-20260906\nGIT_HEAD=06bab5acd124e768f70305b3d7eca2f595871890\nGIT_REMOTE_HEAD=06bab5acd124e768f70305b3d7eca2f595871890\nGIT_DIRTY_COUNT=0\nNEWFI_CLUSTER_VMS=[{\"name\":\"newfi-prod\",\"node\":\"pve01\",\"status\":\"running\",\"type\":\"qemu\",\"vmid\":210},{\"name\":\"newfi-staging\",\"node\":\"pve03\",\"status\":\"running\",\"type\":\"qemu\",\"vmid\":211}]\nPRODUCTION_VM={\"name\":\"newfi-prod\",\"node\":\"pve01\",\"status\":\"running\",\"type\":\"qemu\",\"vmid\":210}\nSTAGING_VM={\"name\":\"newfi-staging\",\"node\":\"pve03\",\"status\":\"running\",\"type\":\"qemu\",\"vmid\":211}\nPRODUCTION_XF_ROOT_CANDIDATES=[\"/var/www/forums/newfi/public\"]\nPRODUCTION_XF_ROOT=/var/www/forums/newfi/public\nPRODUCTION_XF_VERSION_DECL=XenForo 2.3.12\nPRODUCTION_SERVICES=nginx=active\\nmariadb=active\\nmysql=active\\nphp8.3-fpm.service=active\nPRODUCTION_ADDON_LIST= -------------- -------------------------- --------------- -------- \\n Add-on ID Title Version Active \\n -------------- -------------------------- --------------- -------- \\n Newfi/Dogs Newfi Dogs 1.0.0 Alpha 1 Yes \\n Newfi/Events Newfi Events 1.0.0 Alpha 1 Yes \\n Newfi/Portal Newfi Portal 1.0.0 Alpha 1 Yes \\n XFMG XenForo Media Gallery 2.3.11 Yes \\n XFRM XenForo Resource Manager 2.3.11 Yes \\n -------------- -------------------------- --------------- -------- \\n\\n Total: 5 add-ons (5 active, 0 inactive)\nPRODUCTION_PORTAL_ADDON_CANDIDATES=[{\"id\":\"Newfi/Portal\",\"path\":\"/var/www/forums/newfi/public/src/addons/Newfi/Portal/addon.json\",\"title\":\"Newfi Portal\",\"version_id\":1000010,\"version_string\":\"1.0.0 Alpha 1\"}]\nSTAGING_NODE_SSH_RC=0\nSTAGING_NODE_SSH_HOSTNAME=pve03\nSTAGING_XF_ROOT_CANDIDATES=[]\nPRODUCTION_DB_CLIENT=/usr/bin/mariadb\nPRODUCTION_XF_DB_SCHEMAS=[\"xf_newfi\"]\nPRODUCTION_BOARD_ACTIVE=1\nPRODUCTION_ERROR_MAX=0\nPRODUCTION_ADDON_ROWS=Newfi/Dogs\tNewfi Dogs\t1000010\t1.0.0 Alpha 1\t1\\nNewfi/Events\tNewfi Events\t1000010\t1.0.0 Alpha 1\t1\\nNewfi/Portal\tNewfi Portal\t1000010\t1.0.0 Alpha 1\t1\\nXF\tXenForo\t2031270\t2.3.12\t1\\nXFMG\tXenForo Media Gallery\t902031170\t2.3.11\t1\\nXFRM\tXenForo Resource Manager\t2031170\t2.3.11\t1\nPRODUCTION_ROLLBACK_PREREQUISITES=tar=/usr/bin/tar\\ndump=/usr/bin/mariadb-dump\\n/dev/sda1 51392640 2041460 47212844 5% /\\n/dev/sda1 51392640 2041460 47212844 5% /\nPRODUCTION_PUBLIC_HTTP={\"http\":\"200\",\"rc\":0,\"url\":\"https://newfi.ru/\"}\nHOLD_REASONS=[\"EXACT_SINGLE_LANEB_ELIGIBLE_CHECKPOINT_NOT_RESOLVED\",\"STAGING_XF_ROOT_UNPROVEN\",\"PORTAL_ADDON_ID_CROSS_ENV_MISMATCH_OR_UNPROVEN\"]\nFINAL_DECISION=HOLD_PORTAL200_APPLY4_CARRIER_FINALIZATION_EXACT_SINGLE_LANEB_ELIGIBLE_CHECKPOINT_NOT_RESOLVED__STAGING_XF_ROOT_UNPROVEN__PORTAL_ADDON_ID_CROSS_ENV_MISMATCH_OR_UNPROVEN\nAPPLY4_PREP_END=true\n" + "output": "ERROR_REGISTER_CHECK=OK\nREFERENCE_CHECK=OK\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nRUNNERCONTRACT4_AUTHORITY={\"ERROR_REGISTER\":{\"bytes\":302058,\"ok\":true,\"sha256\":\"3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\"},\"REFERENCE\":{\"bytes\":201129,\"ok\":true,\"sha256\":\"5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\"}}\nRUNNERCONTRACT4_RUNNER={\"bytes\":21321,\"matches_handoff_baseline\":true,\"path\":\"/usr/local/sbin/homelab-chat-run\",\"sha256\":\"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\"}\nRUNNERCONTRACT4_HOLD_REASONS=[\"RUNNER_AST_PARSE_FAILED_SyntaxError\"]\nRUNNERCONTRACT4_DECISION=HOLD_RUNNER_AST_PARSE_FAILED\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index b350bd08..5c164005 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,22 +1,22 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=NEWFI-260907-A-PORTAL200-APPLY4PREP1 -STATUS=OK -RC=0 +COMMAND_ID=NEWFI-260907-B-PORTAL200-RUNNERCONTRACT4 +STATUS=FAIL +RC=3 HOST=pve01 MODE=read-only -COMPONENT=newfi-portal200-apply4-preparation +COMPONENT=newfi-portal200-runner-contract-ast-evidence REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=549a62ae9b0a3353233208c0615167a9903e3bcc0280d1171e0421c44dcbdd8b +COMMAND_SHA256=229874e0a8df9ee823304d2e627039f75526630636b06f99ea1c5c7eaded6ccb 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 +COMMAND_RC=3 CHANGES_MADE=false ROLLBACK_STARTED=false ROLLBACK_RESTORED=null @@ -24,61 +24,16 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=fe9f7b7570e491d7d496776d1d946aa03cb264b46cea79cc07fc32d040fba0b5 -SANITIZED_OUTPUT_SHA256=fe9f7b7570e491d7d496776d1d946aa03cb264b46cea79cc07fc32d040fba0b5 +RAW_EVIDENCE_SHA256=85dc61a8c2998eb9b3c2952f652ea25eb6afebbcb34f2f5197b9e9545f55f052 +SANITIZED_OUTPUT_SHA256=85dc61a8c2998eb9b3c2952f652ea25eb6afebbcb34f2f5197b9e9545f55f052 OUTPUT_BEGIN -APPLY4_PREP_BEGIN=true -COMMAND_ID=NEWFI-260907-A-PORTAL200-APPLY4PREP1 -MUTATION_SCOPE=NONE_READ_ONLY -MUTATIONS_PERFORMED=NO -ERROR_REGISTER_CHECK=OK -ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -REFERENCE_CHECK=OK -REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK REFERENCE_CHECK=OK AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED -RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d -RUNNER_SHA_MATCHES_KNOWN_BASELINE=true -RUNNER_CONTRACT_AND_DUPLICATE_EXCERPT=["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\",","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:]))","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' ]","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","197:transport-test","199:Environment:","200:HOMELAB_ALLOW_REPEAT=1 Allow exact repeat of a previously failed command.","201:HOMELAB_TIMEOUT=SECONDS Optional command timeout.","202:USAGE","203:exit 64","206:[ \"$#\" -ge 5 ] || usage","208:COMMAND_ID=\"$1\"","209:MODE=\"$2\"","210:COMPONENT=\"$3\"","211:shift 3","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","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}')\"","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'"] -RUNNER_CONTRACT_EXCERPT_SHA256=f4b17f4d25a636e3e685f518ca9001c7560f8bac2ba637c28f4d311200e2fb78 -NEWFI_260907_PORTAL200_CONTRACTAST1_EXACT_OK=true -NEWFI_260907_PORTAL200_CONTRACTAST1_SHA256=00c4dc5e100be0cb26a80262a8af96555457b5dc4fa924c6a9458089cd01474e -NEWFI_260907_PORTAL200_IMPORTDISC2_EXACT_OK=true -NEWFI_260907_PORTAL200_IMPORTDISC2_SHA256=805954f73608dbd343da33d387c59a6ad258a7f6a51965db4e78c3fd0f588fd4 -NEWFI_260907_PORTAL200_REBUILDHELP1_EXACT_OK=true -NEWFI_260907_PORTAL200_REBUILDHELP1_SHA256=30370cad3d4d7e73c6612a5df702abe1fac6ae559bf142b5e489a19a1258cfb7 -ASSISTANT_RUNTIME_BRANCH_HEAD=2da92090b830c31690cbba441708f33d8d6c1c5f -LANEB_PORTAL200_HISTORY_CANDIDATE_PATHS=[] -LANEB_ELIGIBLE_IMMUTABLE_CHECKPOINTS=[] -NEWFI_GIT_CANDIDATES=[{"branch":"main","dirty_count":0,"head":"6360c4c919c4c5b3cb2430dd55fe63b6ad595a28","portal_hits":[],"remote_head":"6360c4c919c4c5b3cb2430dd55fe63b6ad595a28","repo":"/root/newfi-portal","score":3},{"branch":"foundation/newfi-foundation-20260904","dirty_count":0,"head":"38688a88c3850e43e310e755faa0c6178e203e26","portal_hits":[],"remote_head":"e4f7b4318e2b0c1aa799edf91f39992c4b3ba378","repo":"/root/newfi-portal/.worktrees/foundation-newfi-foundation-20260904","score":9},{"branch":"implementation/newfi-closed-mvp-20260906","dirty_count":0,"head":"06bab5acd124e768f70305b3d7eca2f595871890","portal_hits":[],"remote_head":"06bab5acd124e768f70305b3d7eca2f595871890","repo":"/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906","score":15}] -GIT_REPO=/root/newfi-portal/.worktrees/implementation-newfi-closed-mvp-20260906 -GIT_BRANCH=implementation/newfi-closed-mvp-20260906 -GIT_HEAD=06bab5acd124e768f70305b3d7eca2f595871890 -GIT_REMOTE_HEAD=06bab5acd124e768f70305b3d7eca2f595871890 -GIT_DIRTY_COUNT=0 -NEWFI_CLUSTER_VMS=[{"name":"newfi-prod","node":"pve01","status":"running","type":"qemu","vmid":210},{"name":"newfi-staging","node":"pve03","status":"running","type":"qemu","vmid":211}] -PRODUCTION_VM={"name":"newfi-prod","node":"pve01","status":"running","type":"qemu","vmid":210} -STAGING_VM={"name":"newfi-staging","node":"pve03","status":"running","type":"qemu","vmid":211} -PRODUCTION_XF_ROOT_CANDIDATES=["/var/www/forums/newfi/public"] -PRODUCTION_XF_ROOT=/var/www/forums/newfi/public -PRODUCTION_XF_VERSION_DECL=XenForo 2.3.12 -PRODUCTION_SERVICES=nginx=active\nmariadb=active\nmysql=active\nphp8.3-fpm.service=active -PRODUCTION_ADDON_LIST= -------------- -------------------------- --------------- -------- \n Add-on ID Title Version Active \n -------------- -------------------------- --------------- -------- \n Newfi/Dogs Newfi Dogs 1.0.0 Alpha 1 Yes \n Newfi/Events Newfi Events 1.0.0 Alpha 1 Yes \n Newfi/Portal Newfi Portal 1.0.0 Alpha 1 Yes \n XFMG XenForo Media Gallery 2.3.11 Yes \n XFRM XenForo Resource Manager 2.3.11 Yes \n -------------- -------------------------- --------------- -------- \n\n Total: 5 add-ons (5 active, 0 inactive) -PRODUCTION_PORTAL_ADDON_CANDIDATES=[{"id":"Newfi/Portal","path":"/var/www/forums/newfi/public/src/addons/Newfi/Portal/addon.json","title":"Newfi Portal","version_id":1000010,"version_string":"1.0.0 Alpha 1"}] -STAGING_NODE_SSH_RC=0 -STAGING_NODE_SSH_HOSTNAME=pve03 -STAGING_XF_ROOT_CANDIDATES=[] -PRODUCTION_DB_CLIENT=/usr/bin/mariadb -PRODUCTION_XF_DB_SCHEMAS=["xf_newfi"] -PRODUCTION_BOARD_ACTIVE=1 -PRODUCTION_ERROR_MAX=0 -PRODUCTION_ADDON_ROWS=Newfi/Dogs Newfi Dogs 1000010 1.0.0 Alpha 1 1\nNewfi/Events Newfi Events 1000010 1.0.0 Alpha 1 1\nNewfi/Portal Newfi Portal 1000010 1.0.0 Alpha 1 1\nXF XenForo 2031270 2.3.12 1\nXFMG XenForo Media Gallery 902031170 2.3.11 1\nXFRM XenForo Resource Manager 2031170 2.3.11 1 -PRODUCTION_ROLLBACK_PREREQUISITES=tar=/usr/bin/tar\ndump=/usr/bin/mariadb-dump\n/dev/sda1 51392640 2041460 47212844 5% /\n/dev/sda1 51392640 2041460 47212844 5% / -PRODUCTION_PUBLIC_HTTP={"http":"200","rc":0,"url":"https://newfi.ru/"} -HOLD_REASONS=["EXACT_SINGLE_LANEB_ELIGIBLE_CHECKPOINT_NOT_RESOLVED","STAGING_XF_ROOT_UNPROVEN","PORTAL_ADDON_ID_CROSS_ENV_MISMATCH_OR_UNPROVEN"] -FINAL_DECISION=HOLD_PORTAL200_APPLY4_CARRIER_FINALIZATION_EXACT_SINGLE_LANEB_ELIGIBLE_CHECKPOINT_NOT_RESOLVED__STAGING_XF_ROOT_UNPROVEN__PORTAL_ADDON_ID_CROSS_ENV_MISMATCH_OR_UNPROVEN -APPLY4_PREP_END=true +RUNNERCONTRACT4_AUTHORITY={"ERROR_REGISTER":{"bytes":302058,"ok":true,"sha256":"3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0"},"REFERENCE":{"bytes":201129,"ok":true,"sha256":"5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66"}} +RUNNERCONTRACT4_RUNNER={"bytes":21321,"matches_handoff_baseline":true,"path":"/usr/local/sbin/homelab-chat-run","sha256":"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d"} +RUNNERCONTRACT4_HOLD_REASONS=["RUNNER_AST_PARSE_FAILED_SyntaxError"] +RUNNERCONTRACT4_DECISION=HOLD_RUNNER_AST_PARSE_FAILED OUTPUT_END CHAT_OUTPUT_END