diff --git a/runtime/history/RUNNER-FAILURE-DIAGNOSTIC-HOOK-DISCOVERY-261.json b/runtime/history/RUNNER-FAILURE-DIAGNOSTIC-HOOK-DISCOVERY-261.json new file mode 100644 index 0000000..889d08d --- /dev/null +++ b/runtime/history/RUNNER-FAILURE-DIAGNOSTIC-HOOK-DISCOVERY-261.json @@ -0,0 +1,30 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "RUNNER-FAILURE-DIAGNOSTIC-HOOK-DISCOVERY-261", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "cluster-audit", + "started_at_utc": "2026-07-22T20:27:17Z", + "finished_at_utc": "2026-07-22T20:27:17Z", + "reference_register_checked": true, + "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", + "error_register_checked": true, + "error_register_sha256": "08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752", + "command_sha256": "352caa763388abe52f7800d70b48b752023cd8e19277127fb3ac421823680210", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "changes_made": false, + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "0eadf0475d642be592cd8964c1aec57e12fc87ff0d41844e9f4b13fc910a78a3", + "sanitized_output_sha256": "bf8edda14ec575719275d87ab74aa3e5212762dff54939003287742c89cc8866", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "PREVIOUS_COMMAND_ID=GITEA-READER-NGINX-APPLY-FAILURE-260\n=== RESULT_BUILD_AND_PUBLICATION ===\n25:COMMAND_ID=\"$1\"\n66: sha256sum \\\n119:REFERENCE_SHA256=\"$(sha256sum \"$REFERENCE\" | awk '{print $1}')\"\n120:ERROR_REGISTER_SHA256=\"$(sha256sum \"$ERROR_REGISTER\" | awk '{print $1}')\"\n128: sha256sum |\n132:PREVIOUS_FAILED_RC=\"$(\n161: RC=73\n162: STATUS='BLOCKED'\n167: echo \"PREVIOUS_RC=$PREVIOUS_FAILED_RC\"\n189: RC=$?\n192: RC=$?\n198: STATUS='OK'\n200: STATUS='FAIL'\n205:RAW_SHA256=\"$(sha256sum \"$RAW_FILE\" | awk '{print $1}')\"\n310: sha256sum \"$SANITIZED_FILE\" |\n353: sanitized_sha,\n389: \"reference_sha256\": reference_sha,\n391: \"error_register_sha256\": error_sha,\n392: \"command_sha256\": command_sha,\n397: \"sanitized\": True,\n401: \"raw_evidence_sha256\": raw_sha,\n402: \"sanitized_output_sha256\": sanitized_sha,\n404: \"full_sanitized_output_url\": (\n423: echo 'CHAT_OUTPUT_BEGIN'\n424: echo \"COMMAND_ID=$COMMAND_ID\"\n425: echo \"STATUS=$STATUS\"\n426: echo \"RC=$RC\"\n443: echo 'OUTPUT_BEGIN'\n446: echo 'OUTPUT_END'\n447: echo 'CHAT_OUTPUT_END'\n519: echo \"COMMAND_ID=$COMMAND_ID\"\n520: echo \"LOCAL_RAW_FILE=$RAW_FILE\"\n534:echo \"COMMAND_ID=$COMMAND_ID\"\n535:echo \"STATUS=$STATUS\"\n536:echo \"RC=$RC\"\n542:echo \"LOCAL_RAW_FILE=$RAW_FILE\"\n=== RELEVANT_SOURCE_BLOCKS ===\n----- LINES 403-458 -----\n \"output_truncated_in_json\": output_truncated,\n \"full_sanitized_output_url\": (\n \"https://git.gram1.ru/.well-known/\"\n \"homelab-runtime/latest.txt\"\n ),\n \"output\": output_preview,\n}\n\nPath(json_path).write_text(\n json.dumps(\n document,\n ensure_ascii=False,\n indent=2,\n )\n + \"\\n\",\n encoding=\"utf-8\",\n)\nPY\n\n{\n echo 'CHAT_OUTPUT_BEGIN'\n echo \"COMMAND_ID=$COMMAND_ID\"\n echo \"STATUS=$STATUS\"\n echo \"RC=$RC\"\n echo \"HOST=$HOST_SHORT\"\n echo \"MODE=$MODE\"\n echo \"COMPONENT=$COMPONENT\"\n echo 'REFERENCE_REGISTER_CHECK=OK'\n echo \"REFERENCE_SHA256=$REFERENCE_SHA256\"\n echo 'ERROR_REGISTER_CHECK=OK'\n echo \"ERROR_REGISTER_SHA256=$ERROR_REGISTER_SHA256\"\n echo \"COMMAND_SHA256=$COMMAND_SHA256\"\n echo \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\"\n echo \"EXECUTION_STARTED=$RUN_STARTED\"\n echo \"CHANGES_MADE=$CHANGES_MADE\"\n echo 'SANITIZED=yes'\n echo 'SECRETS_INCLUDED=no'\n echo 'PRIVATE_ADDRESSES_INCLUDED=no'\n echo \"RAW_EVIDENCE_SHA256=$RAW_SHA256\"\n echo \"SANITIZED_OUTPUT_SHA256=$SANITIZED_SHA256\"\n echo 'OUTPUT_BEGIN'\n cat \"$SANITIZED_FILE\"\n echo\n echo 'OUTPUT_END'\n echo 'CHAT_OUTPUT_END'\n} >\"$TXT_FILE\"\n\nchmod 0600 \\\n \"$RAW_FILE\" \\\n \"$SANITIZED_FILE\" \\\n \"$JSON_FILE\" \\\n \"$TXT_FILE\"\n\nTARGET=debian@[PRIVATE_IP]\nREMOTE_PREFIX=\"/tmp/homelab-runtime-${COMMAND_ID}-$$\"\n\n----- LINES 423-478 -----\n echo 'CHAT_OUTPUT_BEGIN'\n echo \"COMMAND_ID=$COMMAND_ID\"\n echo \"STATUS=$STATUS\"\n echo \"RC=$RC\"\n echo \"HOST=$HOST_SHORT\"\n echo \"MODE=$MODE\"\n echo \"COMPONENT=$COMPONENT\"\n echo 'REFERENCE_REGISTER_CHECK=OK'\n echo \"REFERENCE_SHA256=$REFERENCE_SHA256\"\n echo 'ERROR_REGISTER_CHECK=OK'\n echo \"ERROR_REGISTER_SHA256=$ERROR_REGISTER_SHA256\"\n echo \"COMMAND_SHA256=$COMMAND_SHA256\"\n echo \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\"\n echo \"EXECUTION_STARTED=$RUN_STARTED\"\n echo \"CHANGES_MADE=$CHANGES_MADE\"\n echo 'SANITIZED=yes'\n echo 'SECRETS_INCLUDED=no'\n echo 'PRIVATE_ADDRESSES_INCLUDED=no'\n echo \"RAW_EVIDENCE_SHA256=$RAW_SHA256\"\n echo \"SANITIZED_OUTPUT_SHA256=$SANITIZED_SHA256\"\n echo 'OUTPUT_BEGIN'\n cat \"$SANITIZED_FILE\"\n echo\n echo 'OUTPUT_END'\n echo 'CHAT_OUTPUT_END'\n} >\"$TXT_FILE\"\n\nchmod 0600 \\\n \"$RAW_FILE\" \\\n \"$SANITIZED_FILE\" \\\n \"$JSON_FILE\" \\\n \"$TXT_FILE\"\n\nTARGET=debian@[PRIVATE_IP]\nREMOTE_PREFIX=\"/tmp/homelab-runtime-${COMMAND_ID}-$$\"\n\nSSH_OPTS=(\n -o BatchMode=yes\n -o ConnectTimeout=10\n -o ConnectionAttempts=1\n -o StrictHostKeyChecking=yes\n -o UserKnownHostsFile=[SENSITIVE_PATH]\n)\n\nscp \\\n -q \\\n \"${SSH_OPTS[@]}\" \\\n \"$JSON_FILE\" \\\n \"${TARGET}:${REMOTE_PREFIX}.json\"\n\nscp \\\n -q \\\n \"${SSH_OPTS[@]}\" \\\n \"$TXT_FILE\" \\\n \"${TARGET}:${REMOTE_PREFIX}.txt\"\n\n----- LINES 500-555 -----\n CONTENT=\"$(\n curl -fsS \\\n --max-time 15 \\\n \"$PUBLIC_URL\" 2>/dev/null ||\n true\n )\"\n\n if printf '%s\\n' \"$CONTENT\" |\n grep -Fq \"\\\"command_id\\\": \\\"$COMMAND_ID\\\"\"; then\n PUBLIC_VISIBLE=true\n break\n fi\n\n sleep 2\ndone\n\nif [ \"$PUBLIC_VISIBLE\" != true ]; then\n echo 'RESULT=FAIL'\n echo 'REASON=PUBLIC_RUNTIME_RESULT_NOT_VISIBLE'\n echo \"COMMAND_ID=$COMMAND_ID\"\n echo \"LOCAL_RAW_FILE=$RAW_FILE\"\n exit 75\nfi\n\nprintf '%s\\t%s\\t%s\\t%s\\t%s\\t%s\\n' \\\n \"$FINISHED_AT\" \\\n \"$COMMAND_ID\" \\\n \"$COMMAND_SHA256\" \\\n \"$RC\" \\\n \"$STATUS\" \\\n \"$COMPONENT\" >>\"$LEDGER\"\n\necho\necho '===== HOMELAB CHAT RUN COMPLETE ====='\necho \"COMMAND_ID=$COMMAND_ID\"\necho \"STATUS=$STATUS\"\necho \"RC=$RC\"\necho 'REFERENCE_REGISTER_CHECK=OK'\necho 'ERROR_REGISTER_CHECK=OK'\necho \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\"\necho 'GITEA_PUBLICATION=OK'\necho \"PUBLIC_URL=$PUBLIC_URL\"\necho \"LOCAL_RAW_FILE=$RAW_FILE\"\necho 'SHELL_SESSION_PRESERVED=yes'\n\nexit \"$RC\"\n----- LINES 522-577 -----\nfi\n\nprintf '%s\\t%s\\t%s\\t%s\\t%s\\t%s\\n' \\\n \"$FINISHED_AT\" \\\n \"$COMMAND_ID\" \\\n \"$COMMAND_SHA256\" \\\n \"$RC\" \\\n \"$STATUS\" \\\n \"$COMPONENT\" >>\"$LEDGER\"\n\necho\necho '===== HOMELAB CHAT RUN COMPLETE ====='\necho \"COMMAND_ID=$COMMAND_ID\"\necho \"STATUS=$STATUS\"\necho \"RC=$RC\"\necho 'REFERENCE_REGISTER_CHECK=OK'\necho 'ERROR_REGISTER_CHECK=OK'\necho \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\"\necho 'GITEA_PUBLICATION=OK'\necho \"PUBLIC_URL=$PUBLIC_URL\"\necho \"LOCAL_RAW_FILE=$RAW_FILE\"\necho 'SHELL_SESSION_PRESERVED=yes'\n\nexit \"$RC\"\nCHANGES_MADE=NO\n" +} diff --git a/runtime/history/RUNNER-FAILURE-DIAGNOSTIC-HOOK-DISCOVERY-261.txt b/runtime/history/RUNNER-FAILURE-DIAGNOSTIC-HOOK-DISCOVERY-261.txt new file mode 100644 index 0000000..d812953 --- /dev/null +++ b/runtime/history/RUNNER-FAILURE-DIAGNOSTIC-HOOK-DISCOVERY-261.txt @@ -0,0 +1,250 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=RUNNER-FAILURE-DIAGNOSTIC-HOOK-DISCOVERY-261 +STATUS=OK +RC=0 +HOST=pve01 +MODE=read-only +COMPONENT=cluster-audit +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752 +COMMAND_SHA256=352caa763388abe52f7800d70b48b752023cd8e19277127fb3ac421823680210 +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGES_MADE=false +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=0eadf0475d642be592cd8964c1aec57e12fc87ff0d41844e9f4b13fc910a78a3 +SANITIZED_OUTPUT_SHA256=bf8edda14ec575719275d87ab74aa3e5212762dff54939003287742c89cc8866 +OUTPUT_BEGIN +PREVIOUS_COMMAND_ID=GITEA-READER-NGINX-APPLY-FAILURE-260 +=== RESULT_BUILD_AND_PUBLICATION === +25:COMMAND_ID="$1" +66: sha256sum \ +119:REFERENCE_SHA256="$(sha256sum "$REFERENCE" | awk '{print $1}')" +120:ERROR_REGISTER_SHA256="$(sha256sum "$ERROR_REGISTER" | awk '{print $1}')" +128: sha256sum | +132:PREVIOUS_FAILED_RC="$( +161: RC=73 +162: STATUS='BLOCKED' +167: echo "PREVIOUS_RC=$PREVIOUS_FAILED_RC" +189: RC=$? +192: RC=$? +198: STATUS='OK' +200: STATUS='FAIL' +205:RAW_SHA256="$(sha256sum "$RAW_FILE" | awk '{print $1}')" +310: sha256sum "$SANITIZED_FILE" | +353: sanitized_sha, +389: "reference_sha256": reference_sha, +391: "error_register_sha256": error_sha, +392: "command_sha256": command_sha, +397: "sanitized": True, +401: "raw_evidence_sha256": raw_sha, +402: "sanitized_output_sha256": sanitized_sha, +404: "full_sanitized_output_url": ( +423: echo 'CHAT_OUTPUT_BEGIN' +424: echo "COMMAND_ID=$COMMAND_ID" +425: echo "STATUS=$STATUS" +426: echo "RC=$RC" +443: echo 'OUTPUT_BEGIN' +446: echo 'OUTPUT_END' +447: echo 'CHAT_OUTPUT_END' +519: echo "COMMAND_ID=$COMMAND_ID" +520: echo "LOCAL_RAW_FILE=$RAW_FILE" +534:echo "COMMAND_ID=$COMMAND_ID" +535:echo "STATUS=$STATUS" +536:echo "RC=$RC" +542:echo "LOCAL_RAW_FILE=$RAW_FILE" +=== RELEVANT_SOURCE_BLOCKS === +----- LINES 403-458 ----- + "output_truncated_in_json": output_truncated, + "full_sanitized_output_url": ( + "https://git.gram1.ru/.well-known/" + "homelab-runtime/latest.txt" + ), + "output": output_preview, +} + +Path(json_path).write_text( + json.dumps( + document, + ensure_ascii=False, + indent=2, + ) + + "\n", + encoding="utf-8", +) +PY + +{ + echo 'CHAT_OUTPUT_BEGIN' + echo "COMMAND_ID=$COMMAND_ID" + echo "STATUS=$STATUS" + echo "RC=$RC" + echo "HOST=$HOST_SHORT" + echo "MODE=$MODE" + echo "COMPONENT=$COMPONENT" + echo 'REFERENCE_REGISTER_CHECK=OK' + echo "REFERENCE_SHA256=$REFERENCE_SHA256" + echo 'ERROR_REGISTER_CHECK=OK' + echo "ERROR_REGISTER_SHA256=$ERROR_REGISTER_SHA256" + echo "COMMAND_SHA256=$COMMAND_SHA256" + echo "DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED" + echo "EXECUTION_STARTED=$RUN_STARTED" + echo "CHANGES_MADE=$CHANGES_MADE" + echo 'SANITIZED=yes' + echo 'SECRETS_INCLUDED=no' + echo 'PRIVATE_ADDRESSES_INCLUDED=no' + echo "RAW_EVIDENCE_SHA256=$RAW_SHA256" + echo "SANITIZED_OUTPUT_SHA256=$SANITIZED_SHA256" + echo 'OUTPUT_BEGIN' + cat "$SANITIZED_FILE" + echo + echo 'OUTPUT_END' + echo 'CHAT_OUTPUT_END' +} >"$TXT_FILE" + +chmod 0600 \ + "$RAW_FILE" \ + "$SANITIZED_FILE" \ + "$JSON_FILE" \ + "$TXT_FILE" + +TARGET=debian@[PRIVATE_IP] +REMOTE_PREFIX="/tmp/homelab-runtime-${COMMAND_ID}-$$" + +----- LINES 423-478 ----- + echo 'CHAT_OUTPUT_BEGIN' + echo "COMMAND_ID=$COMMAND_ID" + echo "STATUS=$STATUS" + echo "RC=$RC" + echo "HOST=$HOST_SHORT" + echo "MODE=$MODE" + echo "COMPONENT=$COMPONENT" + echo 'REFERENCE_REGISTER_CHECK=OK' + echo "REFERENCE_SHA256=$REFERENCE_SHA256" + echo 'ERROR_REGISTER_CHECK=OK' + echo "ERROR_REGISTER_SHA256=$ERROR_REGISTER_SHA256" + echo "COMMAND_SHA256=$COMMAND_SHA256" + echo "DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED" + echo "EXECUTION_STARTED=$RUN_STARTED" + echo "CHANGES_MADE=$CHANGES_MADE" + echo 'SANITIZED=yes' + echo 'SECRETS_INCLUDED=no' + echo 'PRIVATE_ADDRESSES_INCLUDED=no' + echo "RAW_EVIDENCE_SHA256=$RAW_SHA256" + echo "SANITIZED_OUTPUT_SHA256=$SANITIZED_SHA256" + echo 'OUTPUT_BEGIN' + cat "$SANITIZED_FILE" + echo + echo 'OUTPUT_END' + echo 'CHAT_OUTPUT_END' +} >"$TXT_FILE" + +chmod 0600 \ + "$RAW_FILE" \ + "$SANITIZED_FILE" \ + "$JSON_FILE" \ + "$TXT_FILE" + +TARGET=debian@[PRIVATE_IP] +REMOTE_PREFIX="/tmp/homelab-runtime-${COMMAND_ID}-$$" + +SSH_OPTS=( + -o BatchMode=yes + -o ConnectTimeout=10 + -o ConnectionAttempts=1 + -o StrictHostKeyChecking=yes + -o UserKnownHostsFile=[SENSITIVE_PATH] +) + +scp \ + -q \ + "${SSH_OPTS[@]}" \ + "$JSON_FILE" \ + "${TARGET}:${REMOTE_PREFIX}.json" + +scp \ + -q \ + "${SSH_OPTS[@]}" \ + "$TXT_FILE" \ + "${TARGET}:${REMOTE_PREFIX}.txt" + +----- LINES 500-555 ----- + CONTENT="$( + curl -fsS \ + --max-time 15 \ + "$PUBLIC_URL" 2>/dev/null || + true + )" + + if printf '%s\n' "$CONTENT" | + grep -Fq "\"command_id\": \"$COMMAND_ID\""; then + PUBLIC_VISIBLE=true + break + fi + + sleep 2 +done + +if [ "$PUBLIC_VISIBLE" != true ]; then + echo 'RESULT=FAIL' + echo 'REASON=PUBLIC_RUNTIME_RESULT_NOT_VISIBLE' + echo "COMMAND_ID=$COMMAND_ID" + echo "LOCAL_RAW_FILE=$RAW_FILE" + exit 75 +fi + +printf '%s\t%s\t%s\t%s\t%s\t%s\n' \ + "$FINISHED_AT" \ + "$COMMAND_ID" \ + "$COMMAND_SHA256" \ + "$RC" \ + "$STATUS" \ + "$COMPONENT" >>"$LEDGER" + +echo +echo '===== HOMELAB CHAT RUN COMPLETE =====' +echo "COMMAND_ID=$COMMAND_ID" +echo "STATUS=$STATUS" +echo "RC=$RC" +echo 'REFERENCE_REGISTER_CHECK=OK' +echo 'ERROR_REGISTER_CHECK=OK' +echo "DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED" +echo 'GITEA_PUBLICATION=OK' +echo "PUBLIC_URL=$PUBLIC_URL" +echo "LOCAL_RAW_FILE=$RAW_FILE" +echo 'SHELL_SESSION_PRESERVED=yes' + +exit "$RC" +----- LINES 522-577 ----- +fi + +printf '%s\t%s\t%s\t%s\t%s\t%s\n' \ + "$FINISHED_AT" \ + "$COMMAND_ID" \ + "$COMMAND_SHA256" \ + "$RC" \ + "$STATUS" \ + "$COMPONENT" >>"$LEDGER" + +echo +echo '===== HOMELAB CHAT RUN COMPLETE =====' +echo "COMMAND_ID=$COMMAND_ID" +echo "STATUS=$STATUS" +echo "RC=$RC" +echo 'REFERENCE_REGISTER_CHECK=OK' +echo 'ERROR_REGISTER_CHECK=OK' +echo "DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED" +echo 'GITEA_PUBLICATION=OK' +echo "PUBLIC_URL=$PUBLIC_URL" +echo "LOCAL_RAW_FILE=$RAW_FILE" +echo 'SHELL_SESSION_PRESERVED=yes' + +exit "$RC" +CHANGES_MADE=NO + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 87565ee..889d08d 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "GITEA-READER-NGINX-APPLY-FAILURE-260", + "command_id": "RUNNER-FAILURE-DIAGNOSTIC-HOOK-DISCOVERY-261", "status": "OK", "rc": 0, "host": "pve01", "mode": "read-only", "component": "cluster-audit", - "started_at_utc": "2026-07-22T20:24:52Z", - "finished_at_utc": "2026-07-22T20:24:52Z", + "started_at_utc": "2026-07-22T20:27:17Z", + "finished_at_utc": "2026-07-22T20:27:17Z", "reference_register_checked": true, "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", "error_register_checked": true, "error_register_sha256": "08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752", - "command_sha256": "c338db3c4b88501c7100746a6fc233f0975f695940bc3f2598425c56302599d5", + "command_sha256": "352caa763388abe52f7800d70b48b752023cd8e19277127fb3ac421823680210", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -22,9 +22,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "e0adbd212321166916b28796a51aae339dda52d316725013d198ffd3847fc9d5", - "sanitized_output_sha256": "e0adbd212321166916b28796a51aae339dda52d316725013d198ffd3847fc9d5", + "raw_evidence_sha256": "0eadf0475d642be592cd8964c1aec57e12fc87ff0d41844e9f4b13fc910a78a3", + "sanitized_output_sha256": "bf8edda14ec575719275d87ab74aa3e5212762dff54939003287742c89cc8866", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "PREVIOUS_COMMAND_ID=GITEA-READER-NGINX-APPLY-FROM-256-259\n=== RAW_LOG_259 ===\nUNSUPPORTED_DECISION=\nSOURCE_DECISION=\n=== ERROR_LINES ===\n1:UNSUPPORTED_DECISION=\n2:SOURCE_DECISION=\n=== READER_V3 ===\nResult=success\nExecMainStatus=0\nLoadState=loaded\nActiveState=active\nSubState=running\nLISTEN 0 5 127.0.0.1:18788 0.0.0.0:* users:((\"python3\",pid=2649737,fd=3)) \n{\"status\":\"ok\",\"version\":3}\n\nLOCAL_HTTP_CODE=200\n=== NGINX_STATE ===\n/usr/bin/bash: line 1: /usr/sbin/nginx: No such file or directory\n=== HTTPS_ROUTE ===\ncurl: (7) Failed to connect to git.gram1.ru port 443 after 0 ms: Could not connect to server\nCHANGES_MADE=NO\n" + "output": "PREVIOUS_COMMAND_ID=GITEA-READER-NGINX-APPLY-FAILURE-260\n=== RESULT_BUILD_AND_PUBLICATION ===\n25:COMMAND_ID=\"$1\"\n66: sha256sum \\\n119:REFERENCE_SHA256=\"$(sha256sum \"$REFERENCE\" | awk '{print $1}')\"\n120:ERROR_REGISTER_SHA256=\"$(sha256sum \"$ERROR_REGISTER\" | awk '{print $1}')\"\n128: sha256sum |\n132:PREVIOUS_FAILED_RC=\"$(\n161: RC=73\n162: STATUS='BLOCKED'\n167: echo \"PREVIOUS_RC=$PREVIOUS_FAILED_RC\"\n189: RC=$?\n192: RC=$?\n198: STATUS='OK'\n200: STATUS='FAIL'\n205:RAW_SHA256=\"$(sha256sum \"$RAW_FILE\" | awk '{print $1}')\"\n310: sha256sum \"$SANITIZED_FILE\" |\n353: sanitized_sha,\n389: \"reference_sha256\": reference_sha,\n391: \"error_register_sha256\": error_sha,\n392: \"command_sha256\": command_sha,\n397: \"sanitized\": True,\n401: \"raw_evidence_sha256\": raw_sha,\n402: \"sanitized_output_sha256\": sanitized_sha,\n404: \"full_sanitized_output_url\": (\n423: echo 'CHAT_OUTPUT_BEGIN'\n424: echo \"COMMAND_ID=$COMMAND_ID\"\n425: echo \"STATUS=$STATUS\"\n426: echo \"RC=$RC\"\n443: echo 'OUTPUT_BEGIN'\n446: echo 'OUTPUT_END'\n447: echo 'CHAT_OUTPUT_END'\n519: echo \"COMMAND_ID=$COMMAND_ID\"\n520: echo \"LOCAL_RAW_FILE=$RAW_FILE\"\n534:echo \"COMMAND_ID=$COMMAND_ID\"\n535:echo \"STATUS=$STATUS\"\n536:echo \"RC=$RC\"\n542:echo \"LOCAL_RAW_FILE=$RAW_FILE\"\n=== RELEVANT_SOURCE_BLOCKS ===\n----- LINES 403-458 -----\n \"output_truncated_in_json\": output_truncated,\n \"full_sanitized_output_url\": (\n \"https://git.gram1.ru/.well-known/\"\n \"homelab-runtime/latest.txt\"\n ),\n \"output\": output_preview,\n}\n\nPath(json_path).write_text(\n json.dumps(\n document,\n ensure_ascii=False,\n indent=2,\n )\n + \"\\n\",\n encoding=\"utf-8\",\n)\nPY\n\n{\n echo 'CHAT_OUTPUT_BEGIN'\n echo \"COMMAND_ID=$COMMAND_ID\"\n echo \"STATUS=$STATUS\"\n echo \"RC=$RC\"\n echo \"HOST=$HOST_SHORT\"\n echo \"MODE=$MODE\"\n echo \"COMPONENT=$COMPONENT\"\n echo 'REFERENCE_REGISTER_CHECK=OK'\n echo \"REFERENCE_SHA256=$REFERENCE_SHA256\"\n echo 'ERROR_REGISTER_CHECK=OK'\n echo \"ERROR_REGISTER_SHA256=$ERROR_REGISTER_SHA256\"\n echo \"COMMAND_SHA256=$COMMAND_SHA256\"\n echo \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\"\n echo \"EXECUTION_STARTED=$RUN_STARTED\"\n echo \"CHANGES_MADE=$CHANGES_MADE\"\n echo 'SANITIZED=yes'\n echo 'SECRETS_INCLUDED=no'\n echo 'PRIVATE_ADDRESSES_INCLUDED=no'\n echo \"RAW_EVIDENCE_SHA256=$RAW_SHA256\"\n echo \"SANITIZED_OUTPUT_SHA256=$SANITIZED_SHA256\"\n echo 'OUTPUT_BEGIN'\n cat \"$SANITIZED_FILE\"\n echo\n echo 'OUTPUT_END'\n echo 'CHAT_OUTPUT_END'\n} >\"$TXT_FILE\"\n\nchmod 0600 \\\n \"$RAW_FILE\" \\\n \"$SANITIZED_FILE\" \\\n \"$JSON_FILE\" \\\n \"$TXT_FILE\"\n\nTARGET=debian@[PRIVATE_IP]\nREMOTE_PREFIX=\"/tmp/homelab-runtime-${COMMAND_ID}-$$\"\n\n----- LINES 423-478 -----\n echo 'CHAT_OUTPUT_BEGIN'\n echo \"COMMAND_ID=$COMMAND_ID\"\n echo \"STATUS=$STATUS\"\n echo \"RC=$RC\"\n echo \"HOST=$HOST_SHORT\"\n echo \"MODE=$MODE\"\n echo \"COMPONENT=$COMPONENT\"\n echo 'REFERENCE_REGISTER_CHECK=OK'\n echo \"REFERENCE_SHA256=$REFERENCE_SHA256\"\n echo 'ERROR_REGISTER_CHECK=OK'\n echo \"ERROR_REGISTER_SHA256=$ERROR_REGISTER_SHA256\"\n echo \"COMMAND_SHA256=$COMMAND_SHA256\"\n echo \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\"\n echo \"EXECUTION_STARTED=$RUN_STARTED\"\n echo \"CHANGES_MADE=$CHANGES_MADE\"\n echo 'SANITIZED=yes'\n echo 'SECRETS_INCLUDED=no'\n echo 'PRIVATE_ADDRESSES_INCLUDED=no'\n echo \"RAW_EVIDENCE_SHA256=$RAW_SHA256\"\n echo \"SANITIZED_OUTPUT_SHA256=$SANITIZED_SHA256\"\n echo 'OUTPUT_BEGIN'\n cat \"$SANITIZED_FILE\"\n echo\n echo 'OUTPUT_END'\n echo 'CHAT_OUTPUT_END'\n} >\"$TXT_FILE\"\n\nchmod 0600 \\\n \"$RAW_FILE\" \\\n \"$SANITIZED_FILE\" \\\n \"$JSON_FILE\" \\\n \"$TXT_FILE\"\n\nTARGET=debian@[PRIVATE_IP]\nREMOTE_PREFIX=\"/tmp/homelab-runtime-${COMMAND_ID}-$$\"\n\nSSH_OPTS=(\n -o BatchMode=yes\n -o ConnectTimeout=10\n -o ConnectionAttempts=1\n -o StrictHostKeyChecking=yes\n -o UserKnownHostsFile=[SENSITIVE_PATH]\n)\n\nscp \\\n -q \\\n \"${SSH_OPTS[@]}\" \\\n \"$JSON_FILE\" \\\n \"${TARGET}:${REMOTE_PREFIX}.json\"\n\nscp \\\n -q \\\n \"${SSH_OPTS[@]}\" \\\n \"$TXT_FILE\" \\\n \"${TARGET}:${REMOTE_PREFIX}.txt\"\n\n----- LINES 500-555 -----\n CONTENT=\"$(\n curl -fsS \\\n --max-time 15 \\\n \"$PUBLIC_URL\" 2>/dev/null ||\n true\n )\"\n\n if printf '%s\\n' \"$CONTENT\" |\n grep -Fq \"\\\"command_id\\\": \\\"$COMMAND_ID\\\"\"; then\n PUBLIC_VISIBLE=true\n break\n fi\n\n sleep 2\ndone\n\nif [ \"$PUBLIC_VISIBLE\" != true ]; then\n echo 'RESULT=FAIL'\n echo 'REASON=PUBLIC_RUNTIME_RESULT_NOT_VISIBLE'\n echo \"COMMAND_ID=$COMMAND_ID\"\n echo \"LOCAL_RAW_FILE=$RAW_FILE\"\n exit 75\nfi\n\nprintf '%s\\t%s\\t%s\\t%s\\t%s\\t%s\\n' \\\n \"$FINISHED_AT\" \\\n \"$COMMAND_ID\" \\\n \"$COMMAND_SHA256\" \\\n \"$RC\" \\\n \"$STATUS\" \\\n \"$COMPONENT\" >>\"$LEDGER\"\n\necho\necho '===== HOMELAB CHAT RUN COMPLETE ====='\necho \"COMMAND_ID=$COMMAND_ID\"\necho \"STATUS=$STATUS\"\necho \"RC=$RC\"\necho 'REFERENCE_REGISTER_CHECK=OK'\necho 'ERROR_REGISTER_CHECK=OK'\necho \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\"\necho 'GITEA_PUBLICATION=OK'\necho \"PUBLIC_URL=$PUBLIC_URL\"\necho \"LOCAL_RAW_FILE=$RAW_FILE\"\necho 'SHELL_SESSION_PRESERVED=yes'\n\nexit \"$RC\"\n----- LINES 522-577 -----\nfi\n\nprintf '%s\\t%s\\t%s\\t%s\\t%s\\t%s\\n' \\\n \"$FINISHED_AT\" \\\n \"$COMMAND_ID\" \\\n \"$COMMAND_SHA256\" \\\n \"$RC\" \\\n \"$STATUS\" \\\n \"$COMPONENT\" >>\"$LEDGER\"\n\necho\necho '===== HOMELAB CHAT RUN COMPLETE ====='\necho \"COMMAND_ID=$COMMAND_ID\"\necho \"STATUS=$STATUS\"\necho \"RC=$RC\"\necho 'REFERENCE_REGISTER_CHECK=OK'\necho 'ERROR_REGISTER_CHECK=OK'\necho \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\"\necho 'GITEA_PUBLICATION=OK'\necho \"PUBLIC_URL=$PUBLIC_URL\"\necho \"LOCAL_RAW_FILE=$RAW_FILE\"\necho 'SHELL_SESSION_PRESERVED=yes'\n\nexit \"$RC\"\nCHANGES_MADE=NO\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 9a286c1..d812953 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,5 +1,5 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=GITEA-READER-NGINX-APPLY-FAILURE-260 +COMMAND_ID=RUNNER-FAILURE-DIAGNOSTIC-HOOK-DISCOVERY-261 STATUS=OK RC=0 HOST=pve01 @@ -9,37 +9,241 @@ REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752 -COMMAND_SHA256=c338db3c4b88501c7100746a6fc233f0975f695940bc3f2598425c56302599d5 +COMMAND_SHA256=352caa763388abe52f7800d70b48b752023cd8e19277127fb3ac421823680210 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGES_MADE=false SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=e0adbd212321166916b28796a51aae339dda52d316725013d198ffd3847fc9d5 -SANITIZED_OUTPUT_SHA256=e0adbd212321166916b28796a51aae339dda52d316725013d198ffd3847fc9d5 +RAW_EVIDENCE_SHA256=0eadf0475d642be592cd8964c1aec57e12fc87ff0d41844e9f4b13fc910a78a3 +SANITIZED_OUTPUT_SHA256=bf8edda14ec575719275d87ab74aa3e5212762dff54939003287742c89cc8866 OUTPUT_BEGIN -PREVIOUS_COMMAND_ID=GITEA-READER-NGINX-APPLY-FROM-256-259 -=== RAW_LOG_259 === -UNSUPPORTED_DECISION= -SOURCE_DECISION= -=== ERROR_LINES === -1:UNSUPPORTED_DECISION= -2:SOURCE_DECISION= -=== READER_V3 === -Result=success -ExecMainStatus=0 -LoadState=loaded -ActiveState=active -SubState=running -LISTEN 0 5 127.0.0.1:18788 0.0.0.0:* users:(("python3",pid=2649737,fd=3)) -{"status":"ok","version":3} +PREVIOUS_COMMAND_ID=GITEA-READER-NGINX-APPLY-FAILURE-260 +=== RESULT_BUILD_AND_PUBLICATION === +25:COMMAND_ID="$1" +66: sha256sum \ +119:REFERENCE_SHA256="$(sha256sum "$REFERENCE" | awk '{print $1}')" +120:ERROR_REGISTER_SHA256="$(sha256sum "$ERROR_REGISTER" | awk '{print $1}')" +128: sha256sum | +132:PREVIOUS_FAILED_RC="$( +161: RC=73 +162: STATUS='BLOCKED' +167: echo "PREVIOUS_RC=$PREVIOUS_FAILED_RC" +189: RC=$? +192: RC=$? +198: STATUS='OK' +200: STATUS='FAIL' +205:RAW_SHA256="$(sha256sum "$RAW_FILE" | awk '{print $1}')" +310: sha256sum "$SANITIZED_FILE" | +353: sanitized_sha, +389: "reference_sha256": reference_sha, +391: "error_register_sha256": error_sha, +392: "command_sha256": command_sha, +397: "sanitized": True, +401: "raw_evidence_sha256": raw_sha, +402: "sanitized_output_sha256": sanitized_sha, +404: "full_sanitized_output_url": ( +423: echo 'CHAT_OUTPUT_BEGIN' +424: echo "COMMAND_ID=$COMMAND_ID" +425: echo "STATUS=$STATUS" +426: echo "RC=$RC" +443: echo 'OUTPUT_BEGIN' +446: echo 'OUTPUT_END' +447: echo 'CHAT_OUTPUT_END' +519: echo "COMMAND_ID=$COMMAND_ID" +520: echo "LOCAL_RAW_FILE=$RAW_FILE" +534:echo "COMMAND_ID=$COMMAND_ID" +535:echo "STATUS=$STATUS" +536:echo "RC=$RC" +542:echo "LOCAL_RAW_FILE=$RAW_FILE" +=== RELEVANT_SOURCE_BLOCKS === +----- LINES 403-458 ----- + "output_truncated_in_json": output_truncated, + "full_sanitized_output_url": ( + "https://git.gram1.ru/.well-known/" + "homelab-runtime/latest.txt" + ), + "output": output_preview, +} -LOCAL_HTTP_CODE=200 -=== NGINX_STATE === -/usr/bin/bash: line 1: /usr/sbin/nginx: No such file or directory -=== HTTPS_ROUTE === -curl: (7) Failed to connect to git.gram1.ru port 443 after 0 ms: Could not connect to server +Path(json_path).write_text( + json.dumps( + document, + ensure_ascii=False, + indent=2, + ) + + "\n", + encoding="utf-8", +) +PY + +{ + echo 'CHAT_OUTPUT_BEGIN' + echo "COMMAND_ID=$COMMAND_ID" + echo "STATUS=$STATUS" + echo "RC=$RC" + echo "HOST=$HOST_SHORT" + echo "MODE=$MODE" + echo "COMPONENT=$COMPONENT" + echo 'REFERENCE_REGISTER_CHECK=OK' + echo "REFERENCE_SHA256=$REFERENCE_SHA256" + echo 'ERROR_REGISTER_CHECK=OK' + echo "ERROR_REGISTER_SHA256=$ERROR_REGISTER_SHA256" + echo "COMMAND_SHA256=$COMMAND_SHA256" + echo "DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED" + echo "EXECUTION_STARTED=$RUN_STARTED" + echo "CHANGES_MADE=$CHANGES_MADE" + echo 'SANITIZED=yes' + echo 'SECRETS_INCLUDED=no' + echo 'PRIVATE_ADDRESSES_INCLUDED=no' + echo "RAW_EVIDENCE_SHA256=$RAW_SHA256" + echo "SANITIZED_OUTPUT_SHA256=$SANITIZED_SHA256" + echo 'OUTPUT_BEGIN' + cat "$SANITIZED_FILE" + echo + echo 'OUTPUT_END' + echo 'CHAT_OUTPUT_END' +} >"$TXT_FILE" + +chmod 0600 \ + "$RAW_FILE" \ + "$SANITIZED_FILE" \ + "$JSON_FILE" \ + "$TXT_FILE" + +TARGET=debian@[PRIVATE_IP] +REMOTE_PREFIX="/tmp/homelab-runtime-${COMMAND_ID}-$$" + +----- LINES 423-478 ----- + echo 'CHAT_OUTPUT_BEGIN' + echo "COMMAND_ID=$COMMAND_ID" + echo "STATUS=$STATUS" + echo "RC=$RC" + echo "HOST=$HOST_SHORT" + echo "MODE=$MODE" + echo "COMPONENT=$COMPONENT" + echo 'REFERENCE_REGISTER_CHECK=OK' + echo "REFERENCE_SHA256=$REFERENCE_SHA256" + echo 'ERROR_REGISTER_CHECK=OK' + echo "ERROR_REGISTER_SHA256=$ERROR_REGISTER_SHA256" + echo "COMMAND_SHA256=$COMMAND_SHA256" + echo "DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED" + echo "EXECUTION_STARTED=$RUN_STARTED" + echo "CHANGES_MADE=$CHANGES_MADE" + echo 'SANITIZED=yes' + echo 'SECRETS_INCLUDED=no' + echo 'PRIVATE_ADDRESSES_INCLUDED=no' + echo "RAW_EVIDENCE_SHA256=$RAW_SHA256" + echo "SANITIZED_OUTPUT_SHA256=$SANITIZED_SHA256" + echo 'OUTPUT_BEGIN' + cat "$SANITIZED_FILE" + echo + echo 'OUTPUT_END' + echo 'CHAT_OUTPUT_END' +} >"$TXT_FILE" + +chmod 0600 \ + "$RAW_FILE" \ + "$SANITIZED_FILE" \ + "$JSON_FILE" \ + "$TXT_FILE" + +TARGET=debian@[PRIVATE_IP] +REMOTE_PREFIX="/tmp/homelab-runtime-${COMMAND_ID}-$$" + +SSH_OPTS=( + -o BatchMode=yes + -o ConnectTimeout=10 + -o ConnectionAttempts=1 + -o StrictHostKeyChecking=yes + -o UserKnownHostsFile=[SENSITIVE_PATH] +) + +scp \ + -q \ + "${SSH_OPTS[@]}" \ + "$JSON_FILE" \ + "${TARGET}:${REMOTE_PREFIX}.json" + +scp \ + -q \ + "${SSH_OPTS[@]}" \ + "$TXT_FILE" \ + "${TARGET}:${REMOTE_PREFIX}.txt" + +----- LINES 500-555 ----- + CONTENT="$( + curl -fsS \ + --max-time 15 \ + "$PUBLIC_URL" 2>/dev/null || + true + )" + + if printf '%s\n' "$CONTENT" | + grep -Fq "\"command_id\": \"$COMMAND_ID\""; then + PUBLIC_VISIBLE=true + break + fi + + sleep 2 +done + +if [ "$PUBLIC_VISIBLE" != true ]; then + echo 'RESULT=FAIL' + echo 'REASON=PUBLIC_RUNTIME_RESULT_NOT_VISIBLE' + echo "COMMAND_ID=$COMMAND_ID" + echo "LOCAL_RAW_FILE=$RAW_FILE" + exit 75 +fi + +printf '%s\t%s\t%s\t%s\t%s\t%s\n' \ + "$FINISHED_AT" \ + "$COMMAND_ID" \ + "$COMMAND_SHA256" \ + "$RC" \ + "$STATUS" \ + "$COMPONENT" >>"$LEDGER" + +echo +echo '===== HOMELAB CHAT RUN COMPLETE =====' +echo "COMMAND_ID=$COMMAND_ID" +echo "STATUS=$STATUS" +echo "RC=$RC" +echo 'REFERENCE_REGISTER_CHECK=OK' +echo 'ERROR_REGISTER_CHECK=OK' +echo "DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED" +echo 'GITEA_PUBLICATION=OK' +echo "PUBLIC_URL=$PUBLIC_URL" +echo "LOCAL_RAW_FILE=$RAW_FILE" +echo 'SHELL_SESSION_PRESERVED=yes' + +exit "$RC" +----- LINES 522-577 ----- +fi + +printf '%s\t%s\t%s\t%s\t%s\t%s\n' \ + "$FINISHED_AT" \ + "$COMMAND_ID" \ + "$COMMAND_SHA256" \ + "$RC" \ + "$STATUS" \ + "$COMPONENT" >>"$LEDGER" + +echo +echo '===== HOMELAB CHAT RUN COMPLETE =====' +echo "COMMAND_ID=$COMMAND_ID" +echo "STATUS=$STATUS" +echo "RC=$RC" +echo 'REFERENCE_REGISTER_CHECK=OK' +echo 'ERROR_REGISTER_CHECK=OK' +echo "DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED" +echo 'GITEA_PUBLICATION=OK' +echo "PUBLIC_URL=$PUBLIC_URL" +echo "LOCAL_RAW_FILE=$RAW_FILE" +echo 'SHELL_SESSION_PRESERVED=yes' + +exit "$RC" CHANGES_MADE=NO OUTPUT_END