{
  "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"
}
