1
0
Files
homelab-public-context/runtime/latest.json
T
2026-07-24 09:37:55 +00:00

31 lines
17 KiB
JSON

{
"schema_version": 1,
"channel": "homelab-runtime",
"command_id": "HOMELAB-DUPLICATE-EXACT-LOGIC-427",
"status": "OK",
"rc": 0,
"host": "pve01",
"mode": "read-only",
"component": "cluster-audit",
"started_at_utc": "2026-07-24T09:37:54Z",
"finished_at_utc": "2026-07-24T09:37:54Z",
"reference_register_checked": true,
"reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
"error_register_checked": true,
"error_register_sha256": "08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752",
"command_sha256": "7e4f72d9877110d6d6d4ef926a611b1bd8ad15fa4b2ad3ef17e9027ba49bc111",
"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": "8480bb49baedd9fdebe212ee204d07d772e707d3c09045de0c3334fde723f6e9",
"sanitized_output_sha256": "5e8f3e2de086ae3c1d1bf84dcffbcb8dc8770ebefb00aa959db1ff15db3468b9",
"output_truncated_in_json": false,
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
"output": "DETAIL=FILE=/usr/local/sbin/homelab-chat-run-linked\nDETAIL=SHA256=5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1\nDETAIL=EXACT_LOGIC_BEGIN\nDETAIL=TOTAL_LINES=39\nDETAIL=EXACT_LOGIC_END\nDETAIL=FILE=/usr/local/sbin/homelab-chat-run\nDETAIL=SHA256=2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\nDETAIL=EXACT_LOGIC_BEGIN\nDETAIL=SOURCE_LINE=0048:esac\nDETAIL=SOURCE_LINE=0049:\nDETAIL=SOURCE_LINE=0050:case \"$MODE\" in\nDETAIL=SOURCE_LINE=0051: read-only|verify|change|transport-test)\nDETAIL=SOURCE_LINE=0052: ;;\nDETAIL=SOURCE_LINE=0053: *)\nDETAIL=SOURCE_LINE=0054: echo 'RESULT=FAIL'\nDETAIL=SOURCE_LINE=0055: echo 'REASON=INVALID_MODE'\nDETAIL=SOURCE_LINE=0056: exit 67\nDETAIL=SOURCE_LINE=0057: ;;\nDETAIL=SOURCE_LINE=0058:esac\nDETAIL=SOURCE_LINE=0059:\nDETAIL=SOURCE_LINE=0060:for TOOL in \\\nDETAIL=SOURCE_LINE=0061: awk \\\nDETAIL=SOURCE_LINE=0062: curl \\\nDETAIL=SOURCE_LINE=0063: flock \\\nDETAIL=SOURCE_LINE=0064: python3 \\\nDETAIL=SOURCE_LINE=0065: scp \\\nDETAIL=SOURCE_LINE=0066: sha256sum \\\nDETAIL=SOURCE_LINE=0067: ssh\nDETAIL=SOURCE_LINE=0068:do\nDETAIL=SOURCE_LINE=0069: command -v \"$TOOL\" >/dev/null 2>&1 || {\nDETAIL=SOURCE_LINE=0070: echo 'RESULT=FAIL'\nDETAIL=SOURCE_LINE=0071: echo \"REASON=REQUIRED_TOOL_MISSING:$TOOL\"\nDETAIL=SOURCE_LINE=0072: exit 68\nDETAIL=SOURCE_LINE=0073: }\nDETAIL=SOURCE_LINE=0074:done\nDETAIL=SOURCE_LINE=0075:\nDETAIL=SOURCE_LINE=0076:REFERENCE=/etc/pve/31_HOMELAB_REFERENCE.md\nDETAIL=SOURCE_LINE=0077:ERROR_REGISTER=/etc/pve/HOMELAB_ASSISTANT_ERROR_REGISTER.md\nDETAIL=SOURCE_LINE=0078:\nDETAIL=SOURCE_LINE=0079:[ -r \"$REFERENCE\" ] || {\nDETAIL=SOURCE_LINE=0080: echo 'RESULT=FAIL'\nDETAIL=SOURCE_LINE=0081: echo 'REASON=REFERENCE_NOT_READABLE'\nDETAIL=SOURCE_LINE=0082: exit 69\nDETAIL=SOURCE_LINE=0083:}\nDETAIL=SOURCE_LINE=0084:\nDETAIL=SOURCE_LINE=0085:[ -r \"$ERROR_REGISTER\" ] || {\nDETAIL=SOURCE_LINE=0086: echo 'RESULT=FAIL'\nDETAIL=SOURCE_LINE=0087: echo 'REASON=ERROR_REGISTER_NOT_READABLE'\nDETAIL=SOURCE_LINE=0088: exit 70\nDETAIL=SOURCE_LINE=0089:}\nDETAIL=SOURCE_LINE=0090:\nDETAIL=SOURCE_LINE=0091:STATE_DIR=/var/lib/homelab-chat-run\nDETAIL=SOURCE_LINE=0092:RAW_DIR=\"$STATE_DIR/raw\"\nDETAIL=SOURCE_LINE=0093:PUBLIC_DIR=\"$STATE_DIR/public\"\nDETAIL=SOURCE_LINE=0094:LEDGER=\"$STATE_DIR/state/command-ledger.tsv\"\nDETAIL=SOURCE_LINE=0095:LOCK=\"$STATE_DIR/state/runner.lock\"\nDETAIL=SOURCE_LINE=0096:\nDETAIL=SOURCE_LINE=0097:mkdir -p \"$RAW_DIR\" \"$PUBLIC_DIR\" \"$(dirname \"$LEDGER\")\"\nDETAIL=SOURCE_LINE=0098:chmod 0700 \"$STATE_DIR\" \"$RAW_DIR\" \"$PUBLIC_DIR\" \"$(dirname \"$LEDGER\")\"\nDETAIL=SOURCE_LINE=0099:touch \"$LEDGER\"\nDETAIL=SOURCE_LINE=0100:chmod 0600 \"$LEDGER\"\nDETAIL=SOURCE_LINE=0101:\nDETAIL=SOURCE_LINE=0102:exec 9>\"$LOCK\"\nDETAIL=SOURCE_LINE=0103:\nDETAIL=SOURCE_LINE=0104:flock -w 60 9 || {\nDETAIL=SOURCE_LINE=0105: echo 'RESULT=FAIL'\nDETAIL=SOURCE_LINE=0106: echo 'REASON=RUNNER_LOCK_TIMEOUT'\nDETAIL=SOURCE_LINE=0107: exit 71\nDETAIL=SOURCE_LINE=0108:}\nDETAIL=SOURCE_LINE=0109:\nDETAIL=SOURCE_LINE=0110:STARTED_AT=\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"\nDETAIL=SOURCE_LINE=0111:STAMP=\"$(date -u +%Y%m%dT%H%M%SZ)\"\nDETAIL=SOURCE_LINE=0112:HOST_SHORT=\"$(hostname -s 2>/dev/null || hostname)\"\nDETAIL=SOURCE_LINE=0113:\nDETAIL=SOURCE_LINE=0114:RAW_FILE=\"$RAW_DIR/${COMMAND_ID}-${STAMP}.log\"\nDETAIL=SOURCE_LINE=0115:SANITIZED_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.txt\"\nDETAIL=SOURCE_LINE=0116:JSON_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.json\"\nDETAIL=SOURCE_LINE=0117:TXT_FILE=\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}-latest.txt\"\nDETAIL=SOURCE_LINE=0118:\nDETAIL=SOURCE_LINE=0119:REFERENCE_SHA256=\"$(sha256sum \"$REFERENCE\" | awk '{print $1}')\"\nDETAIL=SOURCE_LINE=0120:ERROR_REGISTER_SHA256=\"$(sha256sum \"$ERROR_REGISTER\" | awk '{print $1}')\"\nDETAIL=SOURCE_LINE=0121:\nDETAIL=SOURCE_LINE=0122:COMMAND_SHA256=\"$(\nDETAIL=SOURCE_LINE=0123: {\nDETAIL=SOURCE_LINE=0124: printf '%s\\0' \"$MODE\"\nDETAIL=SOURCE_LINE=0125: printf '%s\\0' \"$COMPONENT\"\nDETAIL=SOURCE_LINE=0126: printf '%s\\0' \"$@\"\nDETAIL=SOURCE_LINE=0127: } |\nDETAIL=SOURCE_LINE=0128: sha256sum |\nDETAIL=SOURCE_LINE=0129: awk '{print $1}'\nDETAIL=SOURCE_LINE=0130:)\"\nDETAIL=SOURCE_LINE=0131:\nDETAIL=SOURCE_LINE=0132:PREVIOUS_FAILED_RC=\"$(\nDETAIL=SOURCE_LINE=0133: awk -F '\\t' -v hash=\"$COMMAND_SHA256\" '\nDETAIL=SOURCE_LINE=0134: $3 == hash && $4 != \"0\" {\nDETAIL=SOURCE_LINE=0135: value=$4\nDETAIL=SOURCE_LINE=0136: }\nDETAIL=SOURCE_LINE=0137:\nDETAIL=SOURCE_LINE=0138: END {\nDETAIL=SOURCE_LINE=0139: print value\nDETAIL=SOURCE_LINE=0140: }\nDETAIL=SOURCE_LINE=0141: ' \"$LEDGER\"\nDETAIL=SOURCE_LINE=0142:)\"\nDETAIL=SOURCE_LINE=0143:\nDETAIL=SOURCE_LINE=0144:RUN_STARTED=true\nDETAIL=SOURCE_LINE=0145:REPEAT_BLOCKED=false\nDETAIL=SOURCE_LINE=0146:BLOCK_REASON=''\nDETAIL=SOURCE_LINE=0147:CHANGES_MADE=false\nDETAIL=SOURCE_LINE=0148:\nDETAIL=SOURCE_LINE=0149:case \"$MODE\" in\nDETAIL=SOURCE_LINE=0150: change)\nDETAIL=SOURCE_LINE=0151: CHANGES_MADE=true\nDETAIL=SOURCE_LINE=0152: ;;\nDETAIL=SOURCE_LINE=0153:esac\nDETAIL=SOURCE_LINE=0154:\nDETAIL=SOURCE_LINE=0155:if [ -n \"$PREVIOUS_FAILED_RC\" ] &&\nDETAIL=SOURCE_LINE=0156: [ \"${HOMELAB_ALLOW_REPEAT:-0}\" != 1 ]; then\nDETAIL=SOURCE_LINE=0157:\nDETAIL=SOURCE_LINE=0158: RUN_STARTED=false\nDETAIL=SOURCE_LINE=0159: REPEAT_BLOCKED=true\nDETAIL=SOURCE_LINE=0160: BLOCK_REASON='EXACT_FAILED_COMMAND_REPEAT'\nDETAIL=SOURCE_LINE=0161: RC=73\nDETAIL=SOURCE_LINE=0162: STATUS='BLOCKED'\nDETAIL=SOURCE_LINE=0163:\nDETAIL=SOURCE_LINE=0164: {\nDETAIL=SOURCE_LINE=0165: echo 'COMMAND_EXECUTION_BLOCKED=yes'\nDETAIL=SOURCE_LINE=0166: echo 'REASON=EXACT_FAILED_COMMAND_REPEAT'\nDETAIL=SOURCE_LINE=0167: echo \"PREVIOUS_RC=$PREVIOUS_FAILED_RC\"\nDETAIL=SOURCE_LINE=0168: echo \"COMMAND_SHA256=$COMMAND_SHA256\"\nDETAIL=SOURCE_LINE=0169: echo\nDETAIL=SOURCE_LINE=0170: echo 'Set HOMELAB_ALLOW_REPEAT=1 only after reviewing the previous failure.'\nDETAIL=SOURCE_LINE=0171: } >\"$RAW_FILE\"\nDETAIL=SOURCE_LINE=0172:else\nDETAIL=SOURCE_LINE=0173: set +e\nDETAIL=SOURCE_LINE=0174:\nDETAIL=SOURCE_LINE=0175: if [ -n \"${HOMELAB_TIMEOUT:-}\" ]; then\nDETAIL=SOURCE_LINE=0176: case \"$HOMELAB_TIMEOUT\" in\nDETAIL=SOURCE_LINE=0177: *[!0-9]*|'')\nDETAIL=SOURCE_LINE=0178: echo 'RESULT=FAIL'\nDETAIL=SOURCE_LINE=0179: echo 'REASON=INVALID_HOMELAB_TIMEOUT'\nDETAIL=SOURCE_LINE=0180: exit 74\nDETAIL=SOURCE_LINE=0181: ;;\nDETAIL=SOURCE_LINE=0182: esac\nDETAIL=SOURCE_LINE=0183:\nDETAIL=SOURCE_LINE=0184: timeout \\\nDETAIL=SOURCE_LINE=0185: --foreground \\\nDETAIL=SOURCE_LINE=0186: --preserve-status \\\nDETAIL=SOURCE_LINE=0187: \"$HOMELAB_TIMEOUT\" \\\nDETAIL=SOURCE_LINE=0188: \"$@\" >\"$RAW_FILE\" 2>&1\nDETAIL=SOURCE_LINE=0189: RC=$?\nDETAIL=SOURCE_LINE=0190: else\nDETAIL=SOURCE_LINE=0191: \"$@\" >\"$RAW_FILE\" 2>&1\nDETAIL=SOURCE_LINE=0192: RC=$?\nDETAIL=SOURCE_LINE=0193: fi\nDETAIL=SOURCE_LINE=0194:\nDETAIL=SOURCE_LINE=0195: set -e\nDETAIL=SOURCE_LINE=0196:\nDETAIL=SOURCE_LINE=0197: if [ \"$RC\" -eq 0 ]; then\nDETAIL=SOURCE_LINE=0198: STATUS='OK'\nDETAIL=SOURCE_LINE=0199: else\nDETAIL=SOURCE_LINE=0200: STATUS='FAIL'\nDETAIL=SOURCE_LINE=0201: fi\nDETAIL=SOURCE_LINE=0202:fi\nDETAIL=SOURCE_LINE=0203:\nDETAIL=SOURCE_LINE=0204:FINISHED_AT=\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"\nDETAIL=SOURCE_LINE=0205:RAW_SHA256=\"$(sha256sum \"$RAW_FILE\" | awk '{print $1}')\"\nDETAIL=SOURCE_LINE=0206:\nDETAIL=SOURCE_LINE=0207:python3 - \"$RAW_FILE\" \"$SANITIZED_FILE\" <<'PY'\nDETAIL=SOURCE_LINE=0208:import re\nDETAIL=SOURCE_LINE=0209:import sys\nDETAIL=SOURCE_LINE=0210:from pathlib import Path\nDETAIL=SOURCE_LINE=0211:\nDETAIL=SOURCE_LINE=0212:source = Path(sys.argv[1])\nDETAIL=SOURCE_LINE=0213:target = Path(sys.argv[2])\nDETAIL=SOURCE_LINE=0214:\nDETAIL=SOURCE_LINE=0215:text = source.read_bytes().decode(\"utf-8\", errors=\"replace\")\nDETAIL=SOURCE_LINE=0216:\nDETAIL=SOURCE_LINE=0217:patterns = [\nDETAIL=SOURCE_LINE=0218: (\nDETAIL=SOURCE_LINE=0219: re.compile(\nDETAIL=SOURCE_LINE=0220: r\"-----BEGIN (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----\"\nDETAIL=SOURCE_LINE=0221: r\".*?\"\nDETAIL=SOURCE_LINE=0222: r\"-----END (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----\",\nDETAIL=SOURCE_LINE=0223: re.IGNORECASE | re.DOTALL,\nDETAIL=SOURCE_LINE=0224: ),\nDETAIL=SOURCE_LINE=0225: \"[PRIVATE_KEY_REDACTED]\",\nDETAIL=SOURCE_LINE=0226: ),\nDETAIL=SOURCE_LINE=0227: (\nDETAIL=SOURCE_LINE=0228: re.compile(\nDETAIL=SOURCE_LINE=0229: r\"(?im)^(\\s*(?:password|passwd|passphrase|authorization|\"\nDETAIL=SOURCE_LINE=...\nDETAIL=SOURCE_LINE=0292:maximum = 900_000\nDETAIL=SOURCE_LINE=0293:\nDETAIL=SOURCE_LINE=0294:if len(encoded) > maximum:\nDETAIL=SOURCE_LINE=0295: first = encoded[:440_000].decode(\"utf-8\", errors=\"ignore\")\nDETAIL=SOURCE_LINE=0296: last = encoded[-440_000:].decode(\"utf-8\", errors=\"ignore\")\nDETAIL=SOURCE_LINE=0297:\nDETAIL=SOURCE_LINE=0298: text = (\nDETAIL=SOURCE_LINE=0299: first\nDETAIL=SOURCE_LINE=0300: + \"\\n\\n\"\nDETAIL=SOURCE_LINE=0301: + \"===== PUBLIC OUTPUT TRUNCATED; FULL RAW LOG RETAINED LOCALLY =====\"\nDETAIL=SOURCE_LINE=0302: + \"\\n\\n\"\nDETAIL=SOURCE_LINE=0303: + last\nDETAIL=SOURCE_LINE=0304: )\nDETAIL=SOURCE_LINE=0305:\nDETAIL=SOURCE_LINE=0306:target.write_text(text, encoding=\"utf-8\")\nDETAIL=SOURCE_LINE=0307:PY\nDETAIL=SOURCE_LINE=0308:\nDETAIL=SOURCE_LINE=0309:SANITIZED_SHA256=\"$(\nDETAIL=SOURCE_LINE=0310: sha256sum \"$SANITIZED_FILE\" |\nDETAIL=SOURCE_LINE=0311: awk '{print $1}'\nDETAIL=SOURCE_LINE=0312:)\"\nDETAIL=SOURCE_LINE=0313:\nDETAIL=SOURCE_LINE=0314:python3 - \\\nDETAIL=SOURCE_LINE=0315: \"$JSON_FILE\" \\\nDETAIL=SOURCE_LINE=0316: \"$SANITIZED_FILE\" \\\nDETAIL=SOURCE_LINE=0317: \"$COMMAND_ID\" \\\nDETAIL=SOURCE_LINE=0318: \"$STATUS\" \\\nDETAIL=SOURCE_LINE=0319: \"$RC\" \\\nDETAIL=SOURCE_LINE=0320: \"$HOST_SHORT\" \\\nDETAIL=SOURCE_LINE=0321: \"$MODE\" \\\nDETAIL=SOURCE_LINE=0322: \"$COMPONENT\" \\\nDETAIL=SOURCE_LINE=0323: \"$STARTED_AT\" \\\nDETAIL=SOURCE_LINE=0324: \"$FINISHED_AT\" \\\nDETAIL=SOURCE_LINE=0325: \"$REFERENCE_SHA256\" \\\nDETAIL=SOURCE_LINE=0326: \"$ERROR_REGISTER_SHA256\" \\\nDETAIL=SOURCE_LINE=0327: \"$COMMAND_SHA256\" \\\nDETAIL=SOURCE_LINE=0328: \"$RAW_SHA256\" \\\nDETAIL=SOURCE_LINE=0329: \"$SANITIZED_SHA256\" \\\nDETAIL=SOURCE_LINE=0330: \"$RUN_STARTED\" \\\nDETAIL=SOURCE_LINE=0331: \"$REPEAT_BLOCKED\" \\\nDETAIL=SOURCE_LINE=0332: \"$BLOCK_REASON\" \\\nDETAIL=SOURCE_LINE=0333: \"$CHANGES_MADE\" <<'PY'\nDETAIL=SOURCE_LINE=0334:import json\nDETAIL=SOURCE_LINE=0335:import sys\nDETAIL=SOURCE_LINE=0336:from pathlib import Path\nDETAIL=SOURCE_LINE=0337:\nDETAIL=SOURCE_LINE=0338:(\nDETAIL=SOURCE_LINE=0339: json_path,\nDETAIL=SOURCE_LINE=0340: output_path,\nDETAIL=SOURCE_LINE=0341: command_id,\nDETAIL=SOURCE_LINE=0342: status,\nDETAIL=SOURCE_LINE=0343: rc,\nDETAIL=SOURCE_LINE=0344: host,\nDETAIL=SOURCE_LINE=0345: mode,\nDETAIL=SOURCE_LINE=0346: component,\nDETAIL=SOURCE_LINE=0347: started,\nDETAIL=SOURCE_LINE=0348: finished,\nDETAIL=SOURCE_LINE=0349: reference_sha,\nDETAIL=SOURCE_LINE=0350: error_sha,\nDETAIL=SOURCE_LINE=0351: command_sha,\nDETAIL=SOURCE_LINE=0352: raw_sha,\nDETAIL=SOURCE_LINE=0353: sanitized_sha,\nDETAIL=SOURCE_LINE=0354: run_started,\nDETAIL=SOURCE_LINE=0355: repeat_blocked,\nDETAIL=SOURCE_LINE=...\nDETAIL=SOURCE_LINE=0416: )\nDETAIL=SOURCE_LINE=0417: + \"\\n\",\nDETAIL=SOURCE_LINE=0418: encoding=\"utf-8\",\nDETAIL=SOURCE_LINE=0419:)\nDETAIL=SOURCE_LINE=0420:PY\nDETAIL=SOURCE_LINE=0421:\nDETAIL=SOURCE_LINE=0422:{\nDETAIL=SOURCE_LINE=0423: echo 'CHAT_OUTPUT_BEGIN'\nDETAIL=SOURCE_LINE=0424: echo \"COMMAND_ID=$COMMAND_ID\"\nDETAIL=SOURCE_LINE=0425: echo \"STATUS=$STATUS\"\nDETAIL=SOURCE_LINE=0426: echo \"RC=$RC\"\nDETAIL=SOURCE_LINE=0427: echo \"HOST=$HOST_SHORT\"\nDETAIL=SOURCE_LINE=0428: echo \"MODE=$MODE\"\nDETAIL=SOURCE_LINE=0429: echo \"COMPONENT=$COMPONENT\"\nDETAIL=SOURCE_LINE=0430: echo 'REFERENCE_REGISTER_CHECK=OK'\nDETAIL=SOURCE_LINE=0431: echo \"REFERENCE_SHA256=$REFERENCE_SHA256\"\nDETAIL=SOURCE_LINE=0432: echo 'ERROR_REGISTER_CHECK=OK'\nDETAIL=SOURCE_LINE=0433: echo \"ERROR_REGISTER_SHA256=$ERROR_REGISTER_SHA256\"\nDETAIL=SOURCE_LINE=0434: echo \"COMMAND_SHA256=$COMMAND_SHA256\"\nDETAIL=SOURCE_LINE=0435: echo \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\"\nDETAIL=SOURCE_LINE=0436: echo \"EXECUTION_STARTED=$RUN_STARTED\"\nDETAIL=SOURCE_LINE=0437: echo \"CHANGES_MADE=$CHANGES_MADE\"\nDETAIL=SOURCE_LINE=0438: echo 'SANITIZED=yes'\nDETAIL=SOURCE_LINE=0439: echo 'SECRETS_INCLUDED=no'\nDETAIL=SOURCE_LINE=0440: echo 'PRIVATE_ADDRESSES_INCLUDED=no'\nDETAIL=SOURCE_LINE=0441: echo \"RAW_EVIDENCE_SHA256=$RAW_SHA256\"\nDETAIL=SOURCE_LINE=0442: echo \"SANITIZED_OUTPUT_SHA256=$SANITIZED_SHA256\"\nDETAIL=SOURCE_LINE=0443: echo 'OUTPUT_BEGIN'\nDETAIL=SOURCE_LINE=0444: cat \"$SANITIZED_FILE\"\nDETAIL=SOURCE_LINE=0445: echo\nDETAIL=SOURCE_LINE=0446: echo 'OUTPUT_END'\nDETAIL=SOURCE_LINE=0447: echo 'CHAT_OUTPUT_END'\nDETAIL=SOURCE_LINE=0448:} >\"$TXT_FILE\"\nDETAIL=SOURCE_LINE=0449:\nDETAIL=SOURCE_LINE=0450:chmod 0600 \\\nDETAIL=SOURCE_LINE=0451: \"$RAW_FILE\" \\\nDETAIL=SOURCE_LINE=0452: \"$SANITIZED_FILE\" \\\nDETAIL=SOURCE_LINE=0453: \"$JSON_FILE\" \\\nDETAIL=SOURCE_LINE=0454: \"$TXT_FILE\"\nDETAIL=SOURCE_LINE=0455:\nDETAIL=SOURCE_LINE=0456:TARGET=debian@[PRIVATE_IP]\nDETAIL=SOURCE_LINE=0457:REMOTE_PREFIX=\"/tmp/homelab-runtime-${COMMAND_ID}-$$\"\nDETAIL=SOURCE_LINE=0458:\nDETAIL=SOURCE_LINE=0459:SSH_OPTS=(\nDETAIL=SOURCE_LINE=...\nDETAIL=SOURCE_LINE=0509: PUBLIC_VISIBLE=true\nDETAIL=SOURCE_LINE=0510: break\nDETAIL=SOURCE_LINE=0511: fi\nDETAIL=SOURCE_LINE=0512:\nDETAIL=SOURCE_LINE=0513: sleep 2\nDETAIL=SOURCE_LINE=0514:done\nDETAIL=SOURCE_LINE=0515:\nDETAIL=SOURCE_LINE=0516:if [ \"$PUBLIC_VISIBLE\" != true ]; then\nDETAIL=SOURCE_LINE=0517: echo 'RESULT=FAIL'\nDETAIL=SOURCE_LINE=0518: echo 'REASON=PUBLIC_RUNTIME_RESULT_NOT_VISIBLE'\nDETAIL=SOURCE_LINE=0519: echo \"COMMAND_ID=$COMMAND_ID\"\nDETAIL=SOURCE_LINE=0520: echo \"LOCAL_RAW_FILE=$RAW_FILE\"\nDETAIL=SOURCE_LINE=0521: exit 75\nDETAIL=SOURCE_LINE=0522:fi\nDETAIL=SOURCE_LINE=0523:\nDETAIL=SOURCE_LINE=0524:printf '%s\\t%s\\t%s\\t%s\\t%s\\t%s\\n' \\\nDETAIL=SOURCE_LINE=0525: \"$FINISHED_AT\" \\\nDETAIL=SOURCE_LINE=0526: \"$COMMAND_ID\" \\\nDETAIL=SOURCE_LINE=0527: \"$COMMAND_SHA256\" \\\nDETAIL=SOURCE_LINE=0528: \"$RC\" \\\nDETAIL=SOURCE_LINE=0529: \"$STATUS\" \\\nDETAIL=SOURCE_LINE=0530: \"$COMPONENT\" >>\"$LEDGER\"\nDETAIL=SOURCE_LINE=0531:\nDETAIL=SOURCE_LINE=0532:echo\nDETAIL=SOURCE_LINE=0533:echo '===== HOMELAB CHAT RUN COMPLETE ====='\nDETAIL=SOURCE_LINE=0534:echo \"COMMAND_ID=$COMMAND_ID\"\nDETAIL=SOURCE_LINE=0535:echo \"STATUS=$STATUS\"\nDETAIL=SOURCE_LINE=0536:echo \"RC=$RC\"\nDETAIL=SOURCE_LINE=0537:echo 'REFERENCE_REGISTER_CHECK=OK'\nDETAIL=SOURCE_LINE=0538:echo 'ERROR_REGISTER_CHECK=OK'\nDETAIL=SOURCE_LINE=0539:echo \"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\"\nDETAIL=SOURCE_LINE=0540:echo 'GITEA_PUBLICATION=OK'\nDETAIL=SOURCE_LINE=0541:echo \"PUBLIC_URL=$PUBLIC_URL\"\nDETAIL=SOURCE_LINE=0542:echo \"LOCAL_RAW_FILE=$RAW_FILE\"\nDETAIL=SOURCE_LINE=0543:echo 'SHELL_SESSION_PRESERVED=yes'\nDETAIL=SOURCE_LINE=0544:\nDETAIL=SOURCE_LINE=0545:exit \"$RC\"\nDETAIL=TOTAL_LINES=545\nDETAIL=EXACT_LOGIC_END\nDETAIL=DUPLICATE_EXACT_LOGIC_AUDIT=PASS\nDETAIL=SECRET_VALUES_OUTPUT=NONE\nCHANGES_MADE=NO\n"
}