39 lines
59 KiB
JSON
39 lines
59 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"channel": "homelab-runtime",
|
|
"command_id": "SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-789-RUNNER-DUPLICATE-RCA-READONLY-790R1",
|
|
"status": "FAIL",
|
|
"rc": 3,
|
|
"host": "pve01",
|
|
"mode": "read-only",
|
|
"component": "pvepro-homepage-portal-789-runner-duplicate-rca-readonly",
|
|
"started_at_utc": "2026-09-20T17:20:56Z",
|
|
"finished_at_utc": "2026-09-20T17:22:34Z",
|
|
"reference_register_checked": true,
|
|
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
|
|
"error_register_checked": true,
|
|
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
|
|
"command_sha256": "a38301defa26ee67a8bb0dc8227f645b6dcaccada08b26232bc8216c628fd1ef",
|
|
"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": "7038052a6bbf990f44df906709727240385ac1cc38588e070b544977c2209965",
|
|
"sanitized_output_sha256": "0b8d0544ef9d63aa9d2130266a604f965e250bebcbbc626ad09fca81ecdcbb8b",
|
|
"output_truncated_in_json": false,
|
|
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
|
|
"output": "COMMAND_ID=SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-789-RUNNER-DUPLICATE-RCA-READONLY-790R1\nMODE=read-only\nCOMPONENT=pvepro-homepage-portal-789-runner-duplicate-rca-readonly\nWINDOW_MODE=VISIBLE_SYNCHRONOUS_WAIT\nPRODUCTION_HOST={\"all_link_down\":false,\"config_sha256\":\"ebd2b7d44ab58a222b4fd5a7dcd9358d3082e593bd70fb07c2331c70f22e82ab\",\"name\":\"pvepro-prod\",\"snapshots\":[],\"status\":\"running\"}\nSTAGING_HOST={\"all_link_down\":true,\"config_sha256\":\"27a4e57f09dfd93c374ff9597651cade264a9b10f13302dbf2b8345a9d40dd76\",\"name\":\"pvepro-staging-v1\",\"snapshots\":[\"w2-pre-portal-cutover-787r1\"],\"status\":\"stopped\"}\nRUNNER_SOURCE={\"absolute_paths\":[\"/etc/pve/31_HOMELAB_REFERENCE.md\",\"/etc/pve/HOMELAB_ASSISTANT_ERROR_REGISTER.md\",\"[SENSITIVE_PATH] bash\"},{\"line\":2,\"text\":\"set -Eeuo pipefail\"},{\"line\":3,\"text\":\"umask 077\"},{\"line\":4,\"text\":\"\"},{\"line\":5,\"text\":\"read_mutation_contract() {\"},{\"line\":6,\"text\":\" python3 - \\\"$1\\\" \\\"$2\\\" \\\"$3\\\" \\\"$4\\\" <<'PY_CONTRACT'\"},{\"line\":7,\"text\":\"import json\"},{\"line\":8,\"text\":\"import sys\"},{\"line\":9,\"text\":\"from pathlib import Path\"},{\"line\":10,\"text\":\"\"},{\"line\":11,\"text\":\"raw_path, command_id, mode, command_rc = sys.argv[1:]\"},{\"line\":12,\"text\":\"command_rc = int(command_rc)\"},{\"line\":13,\"text\":\"\"},{\"line\":14,\"text\":\"result = {\"},{\"line\":15,\"text\":\" \\\"valid\\\": True,\"},{\"line\":16,\"text\":\" \\\"status\\\": \\\"NOT_APPLICABLE\\\",\"},{\"line\":17,\"text\":\" \\\"changes_made\\\": \\\"false\\\",\"},{\"line\":18,\"text\":\" \\\"rollback_started\\\": \\\"false\\\",\"},{\"line\":19,\"text\":\" \\\"rollback_restored\\\": \\\"null\\\",\"},{\"line\":20,\"text\":\" \\\"mutation_outcome\\\": \\\"NO_MUTATION\\\",\"},{\"line\":21,\"text\":\" \\\"error\\\": \\\"NONE\\\",\"},{\"line\":22,\"text\":\"}\"},{\"line\":23,\"text\":\"\"},{\"line\":24,\"text\":\"if mode == \\\"change\\\":\"},{\"line\":25,\"text\":\" result = {\"},{\"line\":26,\"text\":\" \\\"valid\\\": False,\"},{\"line\":27,\"text\":\" \\\"status\\\": \\\"UNKNOWN\\\",\"},{\"line\":28,\"text\":\" \\\"changes_made\\\": \\\"unknown\\\",\"},{\"line\":29,\"text\":\" \\\"rollback_started\\\": \\\"unknown\\\",\"},{\"line\":30,\"text\":\" \\\"rollback_restored\\\": \\\"null\\\",\"},{\"line\":31,\"text\":\" \\\"mutation_outcome\\\": \\\"UNKNOWN\\\",\"},{\"line\":32,\"text\":\" \\\"error\\\": \\\"MISSING_CONTRACT\\\",\"},{\"line\":33,\"text\":\" }\"},{\"line\":34,\"text\":\" marker = \\\"HOMELAB_RESULT_CONTRACT=\\\"\"},{\"line\":35,\"text\":\" lines = Path(raw_path).read_bytes().decode(\"},{\"line\":36,\"text\":\" \\\"utf-8\\\",\"},{\"line\":37,\"text\":\" errors=\\\"replace\\\",\"},{\"line\":38,\"text\":\" ).splitlines()\"},{\"line\":39,\"text\":\" payloads = [\"}],\"match\":\"raw_path, command_id, mode, command_rc = sys.argv[1:]\",\"match_line\":11},{\"context\":[{\"line\":17,\"text\":\" \\\"changes_made\\\": \\\"false\\\",\"},{\"line\":18,\"text\":\" \\\"rollback_started\\\": \\\"false\\\",\"},{\"line\":19,\"text\":\" \\\"rollback_restored\\\": \\\"null\\\",\"},{\"line\":20,\"text\":\" \\\"mutation_outcome\\\": \\\"NO_MUTATION\\\",\"},{\"line\":21,\"text\":\" \\\"error\\\": \\\"NONE\\\",\"},{\"line\":22,\"text\":\"}\"},{\"line\":23,\"text\":\"\"},{\"line\":24,\"text\":\"if mode == \\\"change\\\":\"},{\"line\":25,\"text\":\" result = {\"},{\"line\":26,\"text\":\" \\\"valid\\\": False,\"},{\"line\":27,\"text\":\" \\\"status\\\": \\\"UNKNOWN\\\",\"},{\"line\":28,\"text\":\" \\\"changes_made\\\": \\\"unknown\\\",\"},{\"line\":29,\"text\":\" \\\"rollback_started\\\": \\\"unknown\\\",\"},{\"line\":30,\"text\":\" \\\"rollback_restored\\\": \\\"null\\\",\"},{\"line\":31,\"text\":\" \\\"mutation_outcome\\\": \\\"UNKNOWN\\\",\"},{\"line\":32,\"text\":\" \\\"error\\\": \\\"MISSING_CONTRACT\\\",\"},{\"line\":33,\"text\":\" }\"},{\"line\":34,\"text\":\" marker = \\\"HOMELAB_RESULT_CONTRACT=\\\"\"},{\"line\":35,\"text\":\" lines = Path(raw_path).read_bytes().decode(\"},{\"line\":36,\"text\":\" \\\"utf-8\\\",\"},{\"line\":37,\"text\":\" errors=\\\"replace\\\",\"},{\"line\":38,\"text\":\" ).splitlines()\"},{\"line\":39,\"text\":\" payloads = [\"},{\"line\":40,\"text\":\" line[len(marker):]\"},{\"line\":41,\"text\":\" for line in lines\"},{\"line\":42,\"text\":\" if line.startswith(marker)\"},{\"line\":43,\"text\":\" ]\"},{\"line\":44,\"text\":\" if len(payloads) == 1:\"},{\"line\":45,\"text\":\" try:\"},{\"line\":46,\"text\":\" document = json.loads(payloads[0])\"},{\"line\":47,\"text\":\" if not isinstance(document, dict):\"},{\"line\":48,\"text\":\" raise ValueError(\\\"contract root is not object\\\")\"},{\"line\":49,\"text\":\" if document.get(\\\"version\\\") != 1:\"},{\"line\":50,\"text\":\" raise ValueError(\\\"unsupported version\\\")\"},{\"line\":51,\"text\":\" if document.get(\\\"command_id\\\") != command_id:\"},{\"line\":52,\"text\":\" raise ValueError(\\\"command_id mismatch\\\")\"},{\"line\":53,\"text\":\" status = document.get(\\\"status\\\")\"},{\"line\":54,\"text\":\" if status not in {\\\"OK\\\", \\\"BLOCKED\\\", \\\"FAIL\\\"}:\"},{\"line\":55,\"text\":\" raise ValueError(\\\"invalid status\\\")\"},{\"line\":56,\"text\":\" changes = document.get(\\\"changes_made\\\")\"},{\"line\":57,\"text\":\" rollback_started = document.get(\\\"rollback_started\\\")\"},{\"line\":58,\"text\":\" rollback_restored = document.get(\\\"rollback_restored\\\")\"},{\"line\":59,\"text\":\" if not isinstance(changes, bool):\"},{\"line\":60,\"text\":\" raise ValueError(\\\"changes_made must be boolean\\\")\"},{\"line\":61,\"text\":\" if not isinstance(rollback_started, bool):\"},{\"line\":62,\"text\":\" raise ValueError(\\\"rollback_started must be boolean\\\")\"},{\"line\":63,\"text\":\" if rollback_restored is not None and not isinstance(\"}],\"match\":\" lines = Path(raw_path).read_bytes().decode(\",\"match_line\":35},{\"context\":[{\"line\":80,\"text\":\" or rollback_started\"},{\"line\":81,\"text\":\" or command_rc != 2\"},{\"line\":82,\"text\":\" ):\"},{\"line\":83,\"text\":\" raise ValueError(\"},{\"line\":84,\"text\":\" \\\"BLOCKED contract inconsistent with rc/mutation\\\"\"},{\"line\":85,\"text\":\" )\"},{\"line\":86,\"text\":\" if status == \\\"OK\\\" and command_rc != 0:\"},{\"line\":87,\"text\":\" raise ValueError(\\\"OK contract inconsistent with rc\\\")\"},{\"line\":88,\"text\":\" if status == \\\"FAIL\\\" and command_rc == 0:\"},{\"line\":89,\"text\":\" raise ValueError(\\\"FAIL contract inconsistent with rc\\\")\"},{\"line\":90,\"text\":\"\"},{\"line\":91,\"text\":\" if not changes:\"},{\"line\":92,\"text\":\" outcome = \\\"NO_MUTATION\\\"\"},{\"line\":93,\"text\":\" elif not rollback_started:\"},{\"line\":94,\"text\":\" outcome = \\\"MUTATED\\\"\"},{\"line\":95,\"text\":\" elif rollback_restored is True:\"},{\"line\":96,\"text\":\" outcome = \\\"ROLLED_BACK\\\"\"},{\"line\":97,\"text\":\" elif rollback_restored is False:\"},{\"line\":98,\"text\":\" outcome = \\\"ROLLBACK_FAILED\\\"\"},{\"line\":99,\"text\":\" else:\"},{\"line\":100,\"text\":\" outcome = \\\"ROLLBACK_UNKNOWN\\\"\"},{\"line\":101,\"text\":\"\"},{\"line\":102,\"text\":\" result = {\"},{\"line\":103,\"text\":\" \\\"valid\\\": True,\"},{\"line\":104,\"text\":\" \\\"status\\\": status,\"},{\"line\":105,\"text\":\" \\\"changes_made\\\": str(changes).lower(),\"},{\"line\":106,\"text\":\" \\\"rollback_started\\\": str(\"},{\"line\":107,\"text\":\" rollback_started\"},{\"line\":108,\"text\":\" ).lower(),\"},{\"line\":109,\"text\":\" \\\"rollback_restored\\\": (\"},{\"line\":110,\"text\":\" \\\"null\\\"\"},{\"line\":111,\"text\":\" if rollback_restored is None\"},{\"line\":112,\"text\":\" else str(rollback_restored).lower()\"},{\"line\":113,\"text\":\" ),\"},{\"line\":114,\"text\":\" \\\"mutation_outcome\\\": outcome,\"},{\"line\":115,\"text\":\" \\\"error\\\": \\\"NONE\\\",\"},{\"line\":116,\"text\":\" }\"},{\"line\":117,\"text\":\" except Exception as exc:\"},{\"line\":118,\"text\":\" result[\\\"error\\\"] = (\"},{\"line\":119,\"text\":\" \\\"INVALID_CONTRACT:\\\" + type(exc).__name__\"},{\"line\":120,\"text\":\" )\"},{\"line\":121,\"text\":\" elif len(payloads) > 1:\"},{\"line\":122,\"text\":\" result[\\\"error\\\"] = \\\"MULTIPLE_CONTRACTS\\\"\"},{\"line\":123,\"text\":\"\"},{\"line\":124,\"text\":\"print(\\\"\\\\t\\\".join([\"},{\"line\":125,\"text\":\" str(result[\\\"valid\\\"]).lower(),\"},{\"line\":126,\"text\":\" result[\\\"status\\\"],\"}],\"match\":\" outcome = \\\"ROLLBACK_FAILED\\\"\",\"match_line\":98},{\"context\":[{\"line\":182,\"text\":\"\"},{\"line\":183,\"text\":\"if [ \\\"${1:-}\\\" = '--self-test' ]; then\"},{\"line\":184,\"text\":\" runner_self_test\"},{\"line\":185,\"text\":\" exit 0\"},{\"line\":186,\"text\":\"fi\"},{\"line\":187,\"text\":\"\"},{\"line\":188,\"text\":\"usage() {\"},{\"line\":189,\"text\":\" cat >&2 <<'USAGE'\"},{\"line\":190,\"text\":\"Usage:\"},{\"line\":191,\"text\":\" homelab-chat-run COMMAND_ID MODE COMPONENT -- command [arguments...]\"},{\"line\":192,\"text\":\"\"},{\"line\":193,\"text\":\"MODE:\"},{\"line\":194,\"text\":\" read-only\"},{\"line\":195,\"text\":\" verify\"},{\"line\":196,\"text\":\" change\"},{\"line\":197,\"text\":\" transport-test\"},{\"line\":198,\"text\":\"\"},{\"line\":199,\"text\":\"Environment:\"},{\"line\":200,\"text\":\" HOMELAB_ALLOW_REPEAT=1 Allow exact repeat of a previously failed command.\"},{\"line\":201,\"text\":\" HOMELAB_TIMEOUT=SECONDS Optional command timeout.\"},{\"line\":202,\"text\":\"USAGE\"},{\"line\":203,\"text\":\" exit 64\"},{\"line\":204,\"text\":\"}\"},{\"line\":205,\"text\":\"\"},{\"line\":206,\"text\":\"[ \\\"$#\\\" -ge 5 ] || usage\"},{\"line\":207,\"text\":\"\"},{\"line\":208,\"text\":\"COMMAND_ID=\\\"$1\\\"\"},{\"line\":209,\"text\":\"MODE=\\\"$2\\\"\"},{\"line\":210,\"text\":\"COMPONENT=\\\"$3\\\"\"},{\"line\":211,\"text\":\"shift 3\"},{\"line\":212,\"text\":\"\"},{\"line\":213,\"text\":\"[ \\\"${1:-}\\\" = '--' ] || usage\"},{\"line\":214,\"text\":\"shift\"},{\"line\":215,\"text\":\"[ \\\"$#\\\" -ge 1 ] || usage\"},{\"line\":216,\"text\":\"\"},{\"line\":217,\"text\":\"case \\\"$COMMAND_ID\\\" in\"},{\"line\":218,\"text\":\" ''|*[!A-Za-z0-9._-]*)\"},{\"line\":219,\"text\":\" echo 'RESULT=FAIL'\"},{\"line\":220,\"text\":\" echo 'REASON=INVALID_COMMAND_ID'\"},{\"line\":221,\"text\":\" exit 65\"},{\"line\":222,\"text\":\" ;;\"},{\"line\":223,\"text\":\"esac\"},{\"line\":224,\"text\":\"\"},{\"line\":225,\"text\":\"case \\\"$COMPONENT\\\" in\"},{\"line\":226,\"text\":\" ''|*[!A-Za-z0-9._-]*)\"},{\"line\":227,\"text\":\" echo 'RESULT=FAIL'\"},{\"line\":228,\"text\":\" echo 'REASON=INVALID_COMPONENT'\"}],\"match\":\" HOMELAB_ALLOW_REPEAT=1 Allow exact repeat of a previously failed command.\",\"match_line\":200},{\"context\":[{\"line\":256,\"text\":\" }\"},{\"line\":257,\"text\":\"done\"},{\"line\":258,\"text\":\"\"},{\"line\":259,\"text\":\"REFERENCE=/etc/pve/31_HOMELAB_REFERENCE.md\"},{\"line\":260,\"text\":\"ERROR_REGISTER=/etc/pve/HOMELAB_ASSISTANT_ERROR_REGISTER.md\"},{\"line\":261,\"text\":\"\"},{\"line\":262,\"text\":\"[ -r \\\"$REFERENCE\\\" ] || {\"},{\"line\":263,\"text\":\" echo 'RESULT=FAIL'\"},{\"line\":264,\"text\":\" echo 'REASON=REFERENCE_NOT_READABLE'\"},{\"line\":265,\"text\":\" exit 69\"},{\"line\":266,\"text\":\"}\"},{\"line\":267,\"text\":\"\"},{\"line\":268,\"text\":\"[ -r \\\"$ERROR_REGISTER\\\" ] || {\"},{\"line\":269,\"text\":\" echo 'RESULT=FAIL'\"},{\"line\":270,\"text\":\" echo 'REASON=ERROR_REGISTER_NOT_READABLE'\"},{\"line\":271,\"text\":\" exit 70\"},{\"line\":272,\"text\":\"}\"},{\"line\":273,\"text\":\"\"},{\"line\":274,\"text\":\"STATE_DIR=/var/lib/homelab-chat-run\"},{\"line\":275,\"text\":\"RAW_DIR=\\\"$STATE_DIR/raw\\\"\"},{\"line\":276,\"text\":\"PUBLIC_DIR=\\\"$STATE_DIR/public\\\"\"},{\"line\":277,\"text\":\"LEDGER=\\\"$STATE_DIR/state/command-ledger.tsv\\\"\"},{\"line\":278,\"text\":\"LOCK=\\\"$STATE_DIR/state/runner.lock\\\"\"},{\"line\":279,\"text\":\"\"},{\"line\":280,\"text\":\"mkdir -p \\\"$RAW_DIR\\\" \\\"$PUBLIC_DIR\\\" \\\"$(dirname \\\"$LEDGER\\\")\\\"\"},{\"line\":281,\"text\":\"chmod 0700 \\\"$STATE_DIR\\\" \\\"$RAW_DIR\\\" \\\"$PUBLIC_DIR\\\" \\\"$(dirname \\\"$LEDGER\\\")\\\"\"},{\"line\":282,\"text\":\"touch \\\"$LEDGER\\\"\"},{\"line\":283,\"text\":\"chmod 0600 \\\"$LEDGER\\\"\"},{\"line\":284,\"text\":\"\"},{\"line\":285,\"text\":\"exec 9>\\\"$LOCK\\\"\"},{\"line\":286,\"text\":\"\"},{\"line\":287,\"text\":\"flock -w 60 9 || {\"},{\"line\":288,\"text\":\" echo 'RESULT=FAIL'\"},{\"line\":289,\"text\":\" echo 'REASON=RUNNER_LOCK_TIMEOUT'\"},{\"line\":290,\"text\":\" exit 71\"},{\"line\":291,\"text\":\"}\"},{\"line\":292,\"text\":\"\"},{\"line\":293,\"text\":\"STARTED_AT=\\\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\\\"\"},{\"line\":294,\"text\":\"STAMP=\\\"$(date -u +%Y%m%dT%H%M%SZ)\\\"\"},{\"line\":295,\"text\":\"HOST_SHORT=\\\"$(hostname -s 2>/dev/null || hostname)\\\"\"},{\"line\":296,\"text\":\"\"},{\"line\":297,\"text\":\"RAW_FILE=\\\"$RAW_DIR/${COMMAND_ID}-${STAMP}.log\\\"\"},{\"line\":298,\"text\":\"SANITIZED_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.txt\\\"\"},{\"line\":299,\"text\":\"JSON_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.json\\\"\"},{\"line\":300,\"text\":\"TXT_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}-latest.txt\\\"\"},{\"line\":301,\"text\":\"\"},{\"line\":302,\"text\":\"REFERENCE_SHA256=\\\"$(sha256sum \\\"$REFERENCE\\\" | awk '{print $1}')\\\"\"}],\"match\":\"STATE_DIR=/var/lib/homelab-chat-run\",\"match_line\":274},{\"context\":[{\"line\":263,\"text\":\" echo 'RESULT=FAIL'\"},{\"line\":264,\"text\":\" echo 'REASON=REFERENCE_NOT_READABLE'\"},{\"line\":265,\"text\":\" exit 69\"},{\"line\":266,\"text\":\"}\"},{\"line\":267,\"text\":\"\"},{\"line\":268,\"text\":\"[ -r \\\"$ERROR_REGISTER\\\" ] || {\"},{\"line\":269,\"text\":\" echo 'RESULT=FAIL'\"},{\"line\":270,\"text\":\" echo 'REASON=ERROR_REGISTER_NOT_READABLE'\"},{\"line\":271,\"text\":\" exit 70\"},{\"line\":272,\"text\":\"}\"},{\"line\":273,\"text\":\"\"},{\"line\":274,\"text\":\"STATE_DIR=/var/lib/homelab-chat-run\"},{\"line\":275,\"text\":\"RAW_DIR=\\\"$STATE_DIR/raw\\\"\"},{\"line\":276,\"text\":\"PUBLIC_DIR=\\\"$STATE_DIR/public\\\"\"},{\"line\":277,\"text\":\"LEDGER=\\\"$STATE_DIR/state/command-ledger.tsv\\\"\"},{\"line\":278,\"text\":\"LOCK=\\\"$STATE_DIR/state/runner.lock\\\"\"},{\"line\":279,\"text\":\"\"},{\"line\":280,\"text\":\"mkdir -p \\\"$RAW_DIR\\\" \\\"$PUBLIC_DIR\\\" \\\"$(dirname \\\"$LEDGER\\\")\\\"\"},{\"line\":281,\"text\":\"chmod 0700 \\\"$STATE_DIR\\\" \\\"$RAW_DIR\\\" \\\"$PUBLIC_DIR\\\" \\\"$(dirname \\\"$LEDGER\\\")\\\"\"},{\"line\":282,\"text\":\"touch \\\"$LEDGER\\\"\"},{\"line\":283,\"text\":\"chmod 0600 \\\"$LEDGER\\\"\"},{\"line\":284,\"text\":\"\"},{\"line\":285,\"text\":\"exec 9>\\\"$LOCK\\\"\"},{\"line\":286,\"text\":\"\"},{\"line\":287,\"text\":\"flock -w 60 9 || {\"},{\"line\":288,\"text\":\" echo 'RESULT=FAIL'\"},{\"line\":289,\"text\":\" echo 'REASON=RUNNER_LOCK_TIMEOUT'\"},{\"line\":290,\"text\":\" exit 71\"},{\"line\":291,\"text\":\"}\"},{\"line\":292,\"text\":\"\"},{\"line\":293,\"text\":\"STARTED_AT=\\\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\\\"\"},{\"line\":294,\"text\":\"STAMP=\\\"$(date -u +%Y%m%dT%H%M%SZ)\\\"\"},{\"line\":295,\"text\":\"HOST_SHORT=\\\"$(hostname -s 2>/dev/null || hostname)\\\"\"},{\"line\":296,\"text\":\"\"},{\"line\":297,\"text\":\"RAW_FILE=\\\"$RAW_DIR/${COMMAND_ID}-${STAMP}.log\\\"\"},{\"line\":298,\"text\":\"SANITIZED_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.txt\\\"\"},{\"line\":299,\"text\":\"JSON_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.json\\\"\"},{\"line\":300,\"text\":\"TXT_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}-latest.txt\\\"\"},{\"line\":301,\"text\":\"\"},{\"line\":302,\"text\":\"REFERENCE_SHA256=\\\"$(sha256sum \\\"$REFERENCE\\\" | awk '{print $1}')\\\"\"},{\"line\":303,\"text\":\"ERROR_REGISTER_SHA256=\\\"$(sha256sum \\\"$ERROR_REGISTER\\\" | awk '{print $1}')\\\"\"},{\"line\":304,\"text\":\"\"},{\"line\":305,\"text\":\"COMMAND_SHA256=\\\"$(\"},{\"line\":306,\"text\":\" {\"},{\"line\":307,\"text\":\" printf '%s\\\\0' \\\"$MODE\\\"\"},{\"line\":308,\"text\":\" printf '%s\\\\0' \\\"$COMPONENT\\\"\"},{\"line\":309,\"text\":\" printf '%s\\\\0' \\\"$@\\\"\"}],\"match\":\"chmod 0700 \\\"$STATE_DIR\\\" \\\"$RAW_DIR\\\" \\\"$PUBLIC_DIR\\\" \\\"$(dirname \\\"$LEDGER\\\")\\\"\",\"match_line\":281},{\"context\":[{\"line\":287,\"text\":\"flock -w 60 9 || {\"},{\"line\":288,\"text\":\" echo 'RESULT=FAIL'\"},{\"line\":289,\"text\":\" echo 'REASON=RUNNER_LOCK_TIMEOUT'\"},{\"line\":290,\"text\":\" exit 71\"},{\"line\":291,\"text\":\"}\"},{\"line\":292,\"text\":\"\"},{\"line\":293,\"text\":\"STARTED_AT=\\\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\\\"\"},{\"line\":294,\"text\":\"STAMP=\\\"$(date -u +%Y%m%dT%H%M%SZ)\\\"\"},{\"line\":295,\"text\":\"HOST_SHORT=\\\"$(hostname -s 2>/dev/null || hostname)\\\"\"},{\"line\":296,\"text\":\"\"},{\"line\":297,\"text\":\"RAW_FILE=\\\"$RAW_DIR/${COMMAND_ID}-${STAMP}.log\\\"\"},{\"line\":298,\"text\":\"SANITIZED_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.txt\\\"\"},{\"line\":299,\"text\":\"JSON_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}.json\\\"\"},{\"line\":300,\"text\":\"TXT_FILE=\\\"$PUBLIC_DIR/${COMMAND_ID}-${STAMP}-latest.txt\\\"\"},{\"line\":301,\"text\":\"\"},{\"line\":302,\"text\":\"REFERENCE_SHA256=\\\"$(sha256sum \\\"$REFERENCE\\\" | awk '{print $1}')\\\"\"},{\"line\":303,\"text\":\"ERROR_REGISTER_SHA256=\\\"$(sha256sum \\\"$ERROR_REGISTER\\\" | awk '{print $1}')\\\"\"},{\"line\":304,\"text\":\"\"},{\"line\":305,\"text\":\"COMMAND_SHA256=\\\"$(\"},{\"line\":306,\"text\":\" {\"},{\"line\":307,\"text\":\" printf '%s\\\\0' \\\"$MODE\\\"\"},{\"line\":308,\"text\":\" printf '%s\\\\0' \\\"$COMPONENT\\\"\"},{\"line\":309,\"text\":\" printf '%s\\\\0' \\\"$@\\\"\"},{\"line\":310,\"text\":\" } |\"},{\"line\":311,\"text\":\" sha256sum |\"},{\"line\":312,\"text\":\" awk '{print $1}'\"},{\"line\":313,\"text\":\")\\\"\"},{\"line\":314,\"text\":\"\"},{\"line\":315,\"text\":\"PREVIOUS_FAILED_RC=\\\"$(\"},{\"line\":316,\"text\":\" awk -F '\\\\t' -v hash=\\\"$COMMAND_SHA256\\\" '\"},{\"line\":317,\"text\":\" $3 == hash && $4 != \\\"0\\\" {\"},{\"line\":318,\"text\":\" value=$4\"},{\"line\":319,\"text\":\" }\"},{\"line\":320,\"text\":\"\"},{\"line\":321,\"text\":\" END {\"},{\"line\":322,\"text\":\" print value\"},{\"line\":323,\"text\":\" }\"},{\"line\":324,\"text\":\" ' \\\"$LEDGER\\\"\"},{\"line\":325,\"text\":\")\\\"\"},{\"line\":326,\"text\":\"\"},{\"line\":327,\"text\":\"RUN_STARTED=true\"},{\"line\":328,\"text\":\"REPEAT_BLOCKED=false\"},{\"line\":329,\"text\":\"BLOCK_REASON=''\"},{\"line\":330,\"text\":\"CHANGE_DECLARED=false\"},{\"line\":331,\"text\":\"RESULT_CONTRACT_VALID=true\"},{\"line\":332,\"text\":\"CONTRACT_STATUS='NOT_APPLICABLE'\"},{\"line\":333,\"text\":\"CHANGES_MADE=false\"}],\"match\":\"COMMAND_SHA256=\\\"$(\",\"match_line\":305},{\"context\":[{\"line\":333,\"text\":\"CHANGES_MADE=false\"},{\"line\":334,\"text\":\"ROLLBACK_STARTED=false\"},{\"line\":335,\"text\":\"ROLLBACK_RESTORED=null\"},{\"line\":336,\"text\":\"MUTATION_OUTCOME='NO_MUTATION'\"},{\"line\":337,\"text\":\"RESULT_CONTRACT_ERROR='NONE'\"},{\"line\":338,\"text\":\"COMMAND_RC=''\"},{\"line\":339,\"text\":\"\"},{\"line\":340,\"text\":\"if [ \\\"$MODE\\\" = change ]; then\"},{\"line\":341,\"text\":\" CHANGE_DECLARED=true\"},{\"line\":342,\"text\":\" RESULT_CONTRACT_VALID=false\"},{\"line\":343,\"text\":\" CONTRACT_STATUS='UNKNOWN'\"},{\"line\":344,\"text\":\" CHANGES_MADE=unknown\"},{\"line\":345,\"text\":\" ROLLBACK_STARTED=unknown\"},{\"line\":346,\"text\":\" ROLLBACK_RESTORED=null\"},{\"line\":347,\"text\":\" MUTATION_OUTCOME='UNKNOWN'\"},{\"line\":348,\"text\":\" RESULT_CONTRACT_ERROR='MISSING_CONTRACT'\"},{\"line\":349,\"text\":\"fi\"},{\"line\":350,\"text\":\"\"},{\"line\":351,\"text\":\"if [ -n \\\"$PREVIOUS_FAILED_RC\\\" ] &&\"},{\"line\":352,\"text\":\" [ \\\"${HOMELAB_ALLOW_REPEAT:-0}\\\" != 1 ]; then\"},{\"line\":353,\"text\":\"\"},{\"line\":354,\"text\":\" RUN_STARTED=false\"},{\"line\":355,\"text\":\" REPEAT_BLOCKED=true\"},{\"line\":356,\"text\":\" BLOCK_REASON='EXACT_FAILED_COMMAND_REPEAT'\"},{\"line\":357,\"text\":\" RC=73\"},{\"line\":358,\"text\":\" STATUS='BLOCKED'\"},{\"line\":359,\"text\":\" RESULT_CONTRACT_VALID=true\"},{\"line\":360,\"text\":\" CONTRACT_STATUS='BLOCKED'\"},{\"line\":361,\"text\":\" CHANGES_MADE=false\"},{\"line\":362,\"text\":\" ROLLBACK_STARTED=false\"},{\"line\":363,\"text\":\" ROLLBACK_RESTORED=null\"},{\"line\":364,\"text\":\" MUTATION_OUTCOME='NO_MUTATION'\"},{\"line\":365,\"text\":\" RESULT_CONTRACT_ERROR='RUNNER_PREEXECUTION_BLOCK'\"},{\"line\":366,\"text\":\"\"},{\"line\":367,\"text\":\" {\"},{\"line\":368,\"text\":\" echo 'COMMAND_EXECUTION_BLOCKED=yes'\"},{\"line\":369,\"text\":\" echo 'REASON=EXACT_FAILED_COMMAND_REPEAT'\"},{\"line\":370,\"text\":\" echo \\\"PREVIOUS_RC=$PREVIOUS_FAILED_RC\\\"\"},{\"line\":371,\"text\":\" echo \\\"COMMAND_SHA256=$COMMAND_SHA256\\\"\"},{\"line\":372,\"text\":\" echo\"},{\"line\":373,\"text\":\" echo 'Set HOMELAB_ALLOW_REPEAT=1 only after reviewing the previous failure.'\"},{\"line\":374,\"text\":\" } >\\\"$RAW_FILE\\\"\"},{\"line\":375,\"text\":\"else\"},{\"line\":376,\"text\":\" set +e\"},{\"line\":377,\"text\":\"\"},{\"line\":378,\"text\":\" if [ -n \\\"${HOMELAB_TIMEOUT:-}\\\" ]; then\"},{\"line\":379,\"text\":\" case \\\"$HOMELAB_TIMEOUT\\\" in\"}],\"match\":\"if [ -n \\\"$PREVIOUS_FAILED_RC\\\" ] &&\",\"match_line\":351},{\"context\":[{\"line\":351,\"text\":\"if [ -n \\\"$PREVIOUS_FAILED_RC\\\" ] &&\"},{\"line\":352,\"text\":\" [ \\\"${HOMELAB_ALLOW_REPEAT:-0}\\\" != 1 ]; then\"},{\"line\":353,\"text\":\"\"},{\"line\":354,\"text\":\" RUN_STARTED=false\"},{\"line\":355,\"text\":\" REPEAT_BLOCKED=true\"},{\"line\":356,\"text\":\" BLOCK_REASON='EXACT_FAILED_COMMAND_REPEAT'\"},{\"line\":357,\"text\":\" RC=73\"},{\"line\":358,\"text\":\" STATUS='BLOCKED'\"},{\"line\":359,\"text\":\" RESULT_CONTRACT_VALID=true\"},{\"line\":360,\"text\":\" CONTRACT_STATUS='BLOCKED'\"},{\"line\":361,\"text\":\" CHANGES_MADE=false\"},{\"line\":362,\"text\":\" ROLLBACK_STARTED=false\"},{\"line\":363,\"text\":\" ROLLBACK_RESTORED=null\"},{\"line\":364,\"text\":\" MUTATION_OUTCOME='NO_MUTATION'\"},{\"line\":365,\"text\":\" RESULT_CONTRACT_ERROR='RUNNER_PREEXECUTION_BLOCK'\"},{\"line\":366,\"text\":\"\"},{\"line\":367,\"text\":\" {\"},{\"line\":368,\"text\":\" echo 'COMMAND_EXECUTION_BLOCKED=yes'\"},{\"line\":369,\"text\":\" echo 'REASON=EXACT_FAILED_COMMAND_REPEAT'\"},{\"line\":370,\"text\":\" echo \\\"PREVIOUS_RC=$PREVIOUS_FAILED_RC\\\"\"},{\"line\":371,\"text\":\" echo \\\"COMMAND_SHA256=$COMMAND_SHA256\\\"\"},{\"line\":372,\"text\":\" echo\"},{\"line\":373,\"text\":\" echo 'Set HOMELAB_ALLOW_REPEAT=1 only after reviewing the previous failure.'\"},{\"line\":374,\"text\":\" } >\\\"$RAW_FILE\\\"\"},{\"line\":375,\"text\":\"else\"},{\"line\":376,\"text\":\" set +e\"},{\"line\":377,\"text\":\"\"},{\"line\":378,\"text\":\" if [ -n \\\"${HOMELAB_TIMEOUT:-}\\\" ]; then\"},{\"line\":379,\"text\":\" case \\\"$HOMELAB_TIMEOUT\\\" in\"},{\"line\":380,\"text\":\" *[!0-9]*|'')\"},{\"line\":381,\"text\":\" echo 'RESULT=FAIL'\"},{\"line\":382,\"text\":\" echo 'REASON=INVALID_HOMELAB_TIMEOUT'\"},{\"line\":383,\"text\":\" exit 74\"},{\"line\":384,\"text\":\" ;;\"},{\"line\":385,\"text\":\" esac\"},{\"line\":386,\"text\":\"\"},{\"line\":387,\"text\":\" timeout \\\\\"},{\"line\":388,\"text\":\" --foreground \\\\\"},{\"line\":389,\"text\":\" --preserve-status \\\\\"},{\"line\":390,\"text\":\" \\\"$HOMELAB_TIMEOUT\\\" \\\\\"},{\"line\":391,\"text\":\" \\\"$@\\\" >\\\"$RAW_FILE\\\" 2>&1\"},{\"line\":392,\"text\":\" RC=$?\"},{\"line\":393,\"text\":\" else\"},{\"line\":394,\"text\":\" \\\"$@\\\" >\\\"$RAW_FILE\\\" 2>&1\"},{\"line\":395,\"text\":\" RC=$?\"},{\"line\":396,\"text\":\" fi\"},{\"line\":397,\"text\":\"\"}],\"match\":\" echo 'REASON=EXACT_FAILED_COMMAND_REPEAT'\",\"match_line\":369},{\"context\":[{\"line\":373,\"text\":\" echo 'Set HOMELAB_ALLOW_REPEAT=1 only after reviewing the previous failure.'\"},{\"line\":374,\"text\":\" } >\\\"$RAW_FILE\\\"\"},{\"line\":375,\"text\":\"else\"},{\"line\":376,\"text\":\" set +e\"},{\"line\":377,\"text\":\"\"},{\"line\":378,\"text\":\" if [ -n \\\"${HOMELAB_TIMEOUT:-}\\\" ]; then\"},{\"line\":379,\"text\":\" case \\\"$HOMELAB_TIMEOUT\\\" in\"},{\"line\":380,\"text\":\" *[!0-9]*|'')\"},{\"line\":381,\"text\":\" echo 'RESULT=FAIL'\"},{\"line\":382,\"text\":\" echo 'REASON=INVALID_HOMELAB_TIMEOUT'\"},{\"line\":383,\"text\":\" exit 74\"},{\"line\":384,\"text\":\" ;;\"},{\"line\":385,\"text\":\" esac\"},{\"line\":386,\"text\":\"\"},{\"line\":387,\"text\":\" timeout \\\\\"},{\"line\":388,\"text\":\" --foreground \\\\\"},{\"line\":389,\"text\":\" --preserve-status \\\\\"},{\"line\":390,\"text\":\" \\\"$HOMELAB_TIMEOUT\\\" \\\\\"},{\"line\":391,\"text\":\" \\\"$@\\\" >\\\"$RAW_FILE\\\" 2>&1\"},{\"line\":392,\"text\":\" RC=$?\"},{\"line\":393,\"text\":\" else\"},{\"line\":394,\"text\":\" \\\"$@\\\" >\\\"$RAW_FILE\\\" 2>&1\"},{\"line\":395,\"text\":\" RC=$?\"},{\"line\":396,\"text\":\" fi\"},{\"line\":397,\"text\":\"\"},{\"line\":398,\"text\":\" set -e\"},{\"line\":399,\"text\":\"\"},{\"line\":400,\"text\":\" COMMAND_RC=\\\"$RC\\\"\"},{\"line\":401,\"text\":\"\"},{\"line\":402,\"text\":\" if [ \\\"$RC\\\" -eq 0 ]; then\"},{\"line\":403,\"text\":\" STATUS='OK'\"},{\"line\":404,\"text\":\" else\"},{\"line\":405,\"text\":\" STATUS='FAIL'\"},{\"line\":406,\"text\":\" fi\"},{\"line\":407,\"text\":\"\"},{\"line\":408,\"text\":\" IFS=$'\\\\t' read -r \\\\\"},{\"line\":409,\"text\":\" RESULT_CONTRACT_VALID \\\\\"},{\"line\":410,\"text\":\" CONTRACT_STATUS \\\\\"},{\"line\":411,\"text\":\" CHANGES_MADE \\\\\"},{\"line\":412,\"text\":\" ROLLBACK_STARTED \\\\\"},{\"line\":413,\"text\":\" ROLLBACK_RESTORED \\\\\"},{\"line\":414,\"text\":\" MUTATION_OUTCOME \\\\\"},{\"line\":415,\"text\":\" RESULT_CONTRACT_ERROR < <(\"},{\"line\":416,\"text\":\" read_mutation_contract \\\\\"},{\"line\":417,\"text\":\" \\\"$RAW_FILE\\\" \\\\\"},{\"line\":418,\"text\":\" \\\"$COMMAND_ID\\\" \\\\\"},{\"line\":419,\"text\":\" \\\"$MODE\\\" \\\\\"}],\"match\":\" \\\"$@\\\" >\\\"$RAW_FILE\\\" 2>&1\",\"match_line\":391},{\"context\":[{\"line\":399,\"text\":\"\"},{\"line\":400,\"text\":\" COMMAND_RC=\\\"$RC\\\"\"},{\"line\":401,\"text\":\"\"},{\"line\":402,\"text\":\" if [ \\\"$RC\\\" -eq 0 ]; then\"},{\"line\":403,\"text\":\" STATUS='OK'\"},{\"line\":404,\"text\":\" else\"},{\"line\":405,\"text\":\" STATUS='FAIL'\"},{\"line\":406,\"text\":\" fi\"},{\"line\":407,\"text\":\"\"},{\"line\":408,\"text\":\" IFS=$'\\\\t' read -r \\\\\"},{\"line\":409,\"text\":\" RESULT_CONTRACT_VALID \\\\\"},{\"line\":410,\"text\":\" CONTRACT_STATUS \\\\\"},{\"line\":411,\"text\":\" CHANGES_MADE \\\\\"},{\"line\":412,\"text\":\" ROLLBACK_STARTED \\\\\"},{\"line\":413,\"text\":\" ROLLBACK_RESTORED \\\\\"},{\"line\":414,\"text\":\" MUTATION_OUTCOME \\\\\"},{\"line\":415,\"text\":\" RESULT_CONTRACT_ERROR < <(\"},{\"line\":416,\"text\":\" read_mutation_contract \\\\\"},{\"line\":417,\"text\":\" \\\"$RAW_FILE\\\" \\\\\"},{\"line\":418,\"text\":\" \\\"$COMMAND_ID\\\" \\\\\"},{\"line\":419,\"text\":\" \\\"$MODE\\\" \\\\\"},{\"line\":420,\"text\":\" \\\"$COMMAND_RC\\\"\"},{\"line\":421,\"text\":\" )\"},{\"line\":422,\"text\":\"\"},{\"line\":423,\"text\":\" if [ \\\"$MODE\\\" = change ]; then\"},{\"line\":424,\"text\":\" if [ \\\"$RESULT_CONTRACT_VALID\\\" != true ]; then\"},{\"line\":425,\"text\":\" RC=76\"},{\"line\":426,\"text\":\" STATUS='FAIL'\"},{\"line\":427,\"text\":\" else\"},{\"line\":428,\"text\":\" STATUS=\\\"$CONTRACT_STATUS\\\"\"},{\"line\":429,\"text\":\" fi\"},{\"line\":430,\"text\":\" fi\"},{\"line\":431,\"text\":\"fi\"},{\"line\":432,\"text\":\"\"},{\"line\":433,\"text\":\"FINISHED_AT=\\\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\\\"\"},{\"line\":434,\"text\":\"RAW_SHA256=\\\"$(sha256sum \\\"$RAW_FILE\\\" | awk '{print $1}')\\\"\"},{\"line\":435,\"text\":\"\"},{\"line\":436,\"text\":\"python3 - \\\"$RAW_FILE\\\" \\\"$SANITIZED_FILE\\\" <<'PY'\"},{\"line\":437,\"text\":\"import re\"},{\"line\":438,\"text\":\"import sys\"},{\"line\":439,\"text\":\"from pathlib import Path\"},{\"line\":440,\"text\":\"\"},{\"line\":441,\"text\":\"source = Path(sys.argv[1])\"},{\"line\":442,\"text\":\"target = Path(sys.argv[2])\"},{\"line\":443,\"text\":\"\"},{\"line\":444,\"text\":\"text = source.read_bytes().decode(\\\"utf-8\\\", errors=\\\"replace\\\")\"},{\"line\":445,\"text\":\"\"}],\"match\":\" \\\"$RAW_FILE\\\" \\\\\",\"match_line\":417},{\"context\":[{\"line\":416,\"text\":\" read_mutation_contract \\\\\"},{\"line\":417,\"text\":\" \\\"$RAW_FILE\\\" \\\\\"},{\"line\":418,\"text\":\" \\\"$COMMAND_ID\\\" \\\\\"},{\"line\":419,\"text\":\" \\\"$MODE\\\" \\\\\"},{\"line\":420,\"text\":\" \\\"$COMMAND_RC\\\"\"},{\"line\":421,\"text\":\" )\"},{\"line\":422,\"text\":\"\"},{\"line\":423,\"text\":\" if [ \\\"$MODE\\\" = change ]; then\"},{\"line\":424,\"text\":\" if [ \\\"$RESULT_CONTRACT_VALID\\\" != true ]; then\"},{\"line\":425,\"text\":\" RC=76\"},{\"line\":426,\"text\":\" STATUS='FAIL'\"},{\"line\":427,\"text\":\" else\"},{\"line\":428,\"text\":\" STATUS=\\\"$CONTRACT_STATUS\\\"\"},{\"line\":429,\"text\":\" fi\"},{\"line\":430,\"text\":\" fi\"},{\"line\":431,\"text\":\"fi\"},{\"line\":432,\"text\":\"\"},{\"line\":433,\"text\":\"FINISHED_AT=\\\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\\\"\"},{\"line\":434,\"text\":\"RAW_SHA256=\\\"$(sha256sum \\\"$RAW_FILE\\\" | awk '{print $1}')\\\"\"},{\"line\":435,\"text\":\"\"},{\"line\":436,\"text\":\"python3 - \\\"$RAW_FILE\\\" \\\"$SANITIZED_FILE\\\" <<'PY'\"},{\"line\":437,\"text\":\"import re\"},{\"line\":438,\"text\":\"import sys\"},{\"line\":439,\"text\":\"from pathlib import Path\"},{\"line\":440,\"text\":\"\"},{\"line\":441,\"text\":\"source = Path(sys.argv[1])\"},{\"line\":442,\"text\":\"target = Path(sys.argv[2])\"},{\"line\":443,\"text\":\"\"},{\"line\":444,\"text\":\"text = source.read_bytes().decode(\\\"utf-8\\\", errors=\\\"replace\\\")\"},{\"line\":445,\"text\":\"\"},{\"line\":446,\"text\":\"patterns = [\"},{\"line\":447,\"text\":\" (\"},{\"line\":448,\"text\":\" re.compile(\"},{\"line\":449,\"text\":\" r\\\"-----BEGIN (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----\\\"\"},{\"line\":450,\"text\":\" r\\\".*?\\\"\"},{\"line\":451,\"text\":\" r\\\"-----END (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----\\\",\"},{\"line\":452,\"text\":\" re.IGNORECASE | re.DOTALL,\"},{\"line\":453,\"text\":\" ),\"},{\"line\":454,\"text\":\" \\\"[PRIVATE_KEY_REDACTED]\\\",\"},{\"line\":455,\"text\":\" ),\"},{\"line\":456,\"text\":\" (\"},{\"line\":457,\"text\":\" re.compile(\"},{\"line\":458,\"text\":\" r\\\"(?im)^(\\\\s*(?:password|passwd|passphrase|authorization|\\\"\"},{\"line\":459,\"text\":\" r\\\"api[_-]?key|access[_-]?token|refresh[_-]?token|\\\"\"},{\"line\":460,\"text\":\" r\\\"private[_-]?key|secret)\\\\s*[:=]\\\\s*).*$\\\"\"},{\"line\":461,\"text\":\" ),\"},{\"line\":462,\"text\":\" r\\\"\\\\1[REDACTED]\\\",\"}],\"match\":\"RAW_SHA256=\\\"$(sha256sum \\\"$RAW_FILE\\\" | awk '{print $1}')\\\"\",\"match_line\":434},{\"context\":[{\"line\":512,\"text\":\"\"},{\"line\":513,\"text\":\"text = \\\"\\\".join(\"},{\"line\":514,\"text\":\" char\"},{\"line\":515,\"text\":\" for char in text\"},{\"line\":516,\"text\":\" if char in \\\"\\\\n\\\\r\\\\t\\\" or ord(char) >= 32\"},{\"line\":517,\"text\":\")\"},{\"line\":518,\"text\":\"\"},{\"line\":519,\"text\":\"encoded = text.encode(\\\"utf-8\\\")\"},{\"line\":520,\"text\":\"\"},{\"line\":521,\"text\":\"maximum = 900_000\"},{\"line\":522,\"text\":\"\"},{\"line\":523,\"text\":\"if len(encoded) > maximum:\"},{\"line\":524,\"text\":\" first = encoded[:440_000].decode(\\\"utf-8\\\", errors=\\\"ignore\\\")\"},{\"line\":525,\"text\":\" last = encoded[-440_000:].decode(\\\"utf-8\\\", errors=\\\"ignore\\\")\"},{\"line\":526,\"text\":\"\"},{\"line\":527,\"text\":\" text = (\"},{\"line\":528,\"text\":\" first\"},{\"line\":529,\"text\":\" + \\\"\\\\n\\\\n\\\"\"},{\"line\":530,\"text\":\" + \\\"===== PUBLIC OUTPUT TRUNCATED; FULL RAW LOG RETAINED LOCALLY =====\\\"\"},{\"line\":531,\"text\":\" + \\\"\\\\n\\\\n\\\"\"},{\"line\":532,\"text\":\" + last\"},{\"line\":533,\"text\":\" )\"},{\"line\":534,\"text\":\"\"},{\"line\":535,\"text\":\"target.write_text(text, encoding=\\\"utf-8\\\")\"},{\"line\":536,\"text\":\"PY\"},{\"line\":537,\"text\":\"\"},{\"line\":538,\"text\":\"SANITIZED_SHA256=\\\"$(\"},{\"line\":539,\"text\":\" sha256sum \\\"$SANITIZED_FILE\\\" |\"},{\"line\":540,\"text\":\" awk '{print $1}'\"},{\"line\":541,\"text\":\")\\\"\"},{\"line\":542,\"text\":\"\"},{\"line\":543,\"text\":\"python3 - \\\\\"},{\"line\":544,\"text\":\" \\\"$JSON_FILE\\\" \\\\\"},{\"line\":545,\"text\":\" \\\"$SANITIZED_FILE\\\" \\\\\"},{\"line\":546,\"text\":\" \\\"$COMMAND_ID\\\" \\\\\"},{\"line\":547,\"text\":\" \\\"$STATUS\\\" \\\\\"},{\"line\":548,\"text\":\" \\\"$RC\\\" \\\\\"},{\"line\":549,\"text\":\" \\\"$HOST_SHORT\\\" \\\\\"},{\"line\":550,\"text\":\" \\\"$MODE\\\" \\\\\"},{\"line\":551,\"text\":\" \\\"$COMPONENT\\\" \\\\\"},{\"line\":552,\"text\":\" \\\"$STARTED_AT\\\" \\\\\"},{\"line\":553,\"text\":\" \\\"$FINISHED_AT\\\" \\\\\"},{\"line\":554,\"text\":\" \\\"$REFERENCE_SHA256\\\" \\\\\"},{\"line\":555,\"text\":\" \\\"$ERROR_REGISTER_SHA256\\\" \\\\\"},{\"line\":556,\"text\":\" \\\"$COMMAND_SHA256\\\" \\\\\"},{\"line\":557,\"text\":\" \\\"$RAW_SHA256\\\" \\\\\"},{\"line\":558,\"text\":\" \\\"$SANITIZED_SHA256\\\" \\\\\"}],\"match\":\" + \\\"===== PUBLIC OUTPUT TRUNCATED; FULL RAW LOG RETAINED LOCALLY =====\\\"\",\"match_line\":530},{\"context\":[{\"line\":538,\"text\":\"SANITIZED_SHA256=\\\"$(\"},{\"line\":539,\"text\":\" sha256sum \\\"$SANITIZED_FILE\\\" |\"},{\"line\":540,\"text\":\" awk '{print $1}'\"},{\"line\":541,\"text\":\")\\\"\"},{\"line\":542,\"text\":\"\"},{\"line\":543,\"text\":\"python3 - \\\\\"},{\"line\":544,\"text\":\" \\\"$JSON_FILE\\\" \\\\\"},{\"line\":545,\"text\":\" \\\"$SANITIZED_FILE\\\" \\\\\"},{\"line\":546,\"text\":\" \\\"$COMMAND_ID\\\" \\\\\"},{\"line\":547,\"text\":\" \\\"$STATUS\\\" \\\\\"},{\"line\":548,\"text\":\" \\\"$RC\\\" \\\\\"},{\"line\":549,\"text\":\" \\\"$HOST_SHORT\\\" \\\\\"},{\"line\":550,\"text\":\" \\\"$MODE\\\" \\\\\"},{\"line\":551,\"text\":\" \\\"$COMPONENT\\\" \\\\\"},{\"line\":552,\"text\":\" \\\"$STARTED_AT\\\" \\\\\"},{\"line\":553,\"text\":\" \\\"$FINISHED_AT\\\" \\\\\"},{\"line\":554,\"text\":\" \\\"$REFERENCE_SHA256\\\" \\\\\"},{\"line\":555,\"text\":\" \\\"$ERROR_REGISTER_SHA256\\\" \\\\\"},{\"line\":556,\"text\":\" \\\"$COMMAND_SHA256\\\" \\\\\"},{\"line\":557,\"text\":\" \\\"$RAW_SHA256\\\" \\\\\"},{\"line\":558,\"text\":\" \\\"$SANITIZED_SHA256\\\" \\\\\"},{\"line\":559,\"text\":\" \\\"$RUN_STARTED\\\" \\\\\"},{\"line\":560,\"text\":\" \\\"$REPEAT_BLOCKED\\\" \\\\\"},{\"line\":561,\"text\":\" \\\"$BLOCK_REASON\\\" \\\\\"},{\"line\":562,\"text\":\" \\\"$CHANGE_DECLARED\\\" \\\\\"},{\"line\":563,\"text\":\" \\\"$RESULT_CONTRACT_VALID\\\" \\\\\"},{\"line\":564,\"text\":\" \\\"$CONTRACT_STATUS\\\" \\\\\"},{\"line\":565,\"text\":\" \\\"$CHANGES_MADE\\\" \\\\\"},{\"line\":566,\"text\":\" \\\"$ROLLBACK_STARTED\\\" \\\\\"},{\"line\":567,\"text\":\" \\\"$ROLLBACK_RESTORED\\\" \\\\\"},{\"line\":568,\"text\":\" \\\"$MUTATION_OUTCOME\\\" \\\\\"},{\"line\":569,\"text\":\" \\\"$RESULT_CONTRACT_ERROR\\\" \\\\\"},{\"line\":570,\"text\":\" \\\"$COMMAND_RC\\\" <<'PY'\"},{\"line\":571,\"text\":\"import json\"},{\"line\":572,\"text\":\"import sys\"},{\"line\":573,\"text\":\"from pathlib import Path\"},{\"line\":574,\"text\":\"\"},{\"line\":575,\"text\":\"(\"},{\"line\":576,\"text\":\" json_path,\"},{\"line\":577,\"text\":\" output_path,\"},{\"line\":578,\"text\":\" command_id,\"},{\"line\":579,\"text\":\" status,\"},{\"line\":580,\"text\":\" rc,\"},{\"line\":581,\"text\":\" host,\"},{\"line\":582,\"text\":\" mode,\"},{\"line\":583,\"text\":\" component,\"},{\"line\":584,\"text\":\" started,\"}],\"match\":\" \\\"$COMMAND_SHA256\\\" \\\\\",\"match_line\":556},{\"context\":[{\"line\":570,\"text\":\" \\\"$COMMAND_RC\\\" <<'PY'\"},{\"line\":571,\"text\":\"import json\"},{\"line\":572,\"text\":\"import sys\"},{\"line\":573,\"text\":\"from pathlib import Path\"},{\"line\":574,\"text\":\"\"},{\"line\":575,\"text\":\"(\"},{\"line\":576,\"text\":\" json_path,\"},{\"line\":577,\"text\":\" output_path,\"},{\"line\":578,\"text\":\" command_id,\"},{\"line\":579,\"text\":\" status,\"},{\"line\":580,\"text\":\" rc,\"},{\"line\":581,\"text\":\" host,\"},{\"line\":582,\"text\":\" mode,\"},{\"line\":583,\"text\":\" component,\"},{\"line\":584,\"text\":\" started,\"},{\"line\":585,\"text\":\" finished,\"},{\"line\":586,\"text\":\" reference_sha,\"},{\"line\":587,\"text\":\" error_sha,\"},{\"line\":588,\"text\":\" command_sha,\"},{\"line\":589,\"text\":\" raw_sha,\"},{\"line\":590,\"text\":\" sanitized_sha,\"},{\"line\":591,\"text\":\" run_started,\"},{\"line\":592,\"text\":\" repeat_blocked,\"},{\"line\":593,\"text\":\" block_reason,\"},{\"line\":594,\"text\":\" change_declared,\"},{\"line\":595,\"text\":\" result_contract_valid,\"},{\"line\":596,\"text\":\" contract_status,\"},{\"line\":597,\"text\":\" changes_made,\"},{\"line\":598,\"text\":\" rollback_started,\"},{\"line\":599,\"text\":\" rollback_restored,\"},{\"line\":600,\"text\":\" mutation_outcome,\"},{\"line\":601,\"text\":\" result_contract_error,\"},{\"line\":602,\"text\":\" command_rc,\"},{\"line\":603,\"text\":\") = sys.argv[1:]\"},{\"line\":604,\"text\":\"\"},{\"line\":605,\"text\":\"\"},{\"line\":606,\"text\":\"def optional_bool(value: str):\"},{\"line\":607,\"text\":\" if value == \\\"true\\\":\"},{\"line\":608,\"text\":\" return True\"},{\"line\":609,\"text\":\" if value == \\\"false\\\":\"},{\"line\":610,\"text\":\" return False\"},{\"line\":611,\"text\":\" return None\"},{\"line\":612,\"text\":\"\"},{\"line\":613,\"text\":\"output = Path(output_path).read_text(\"},{\"line\":614,\"text\":\" encoding=\\\"utf-8\\\",\"},{\"line\":615,\"text\":\" errors=\\\"replace\\\",\"},{\"line\":616,\"text\":\")\"}],\"match\":\" command_sha,\",\"match_line\":588},{\"context\":[{\"line\":627,\"text\":\"else:\"},{\"line\":628,\"text\":\" output_preview = output\"},{\"line\":629,\"text\":\"\"},{\"line\":630,\"text\":\"document = {\"},{\"line\":631,\"text\":\" \\\"schema_version\\\": 1,\"},{\"line\":632,\"text\":\" \\\"channel\\\": \\\"homelab-runtime\\\",\"},{\"line\":633,\"text\":\" \\\"command_id\\\": command_id,\"},{\"line\":634,\"text\":\" \\\"status\\\": status,\"},{\"line\":635,\"text\":\" \\\"rc\\\": int(rc),\"},{\"line\":636,\"text\":\" \\\"host\\\": host,\"},{\"line\":637,\"text\":\" \\\"mode\\\": mode,\"},{\"line\":638,\"text\":\" \\\"component\\\": component,\"},{\"line\":639,\"text\":\" \\\"started_at_utc\\\": started,\"},{\"line\":640,\"text\":\" \\\"finished_at_utc\\\": finished,\"},{\"line\":641,\"text\":\" \\\"reference_register_checked\\\": True,\"},{\"line\":642,\"text\":\" \\\"reference_sha256\\\": reference_sha,\"},{\"line\":643,\"text\":\" \\\"error_register_checked\\\": True,\"},{\"line\":644,\"text\":\" \\\"error_register_sha256\\\": error_sha,\"},{\"line\":645,\"text\":\" \\\"command_sha256\\\": command_sha,\"},{\"line\":646,\"text\":\" \\\"duplicate_failed_command_blocked\\\": repeat_blocked == \\\"true\\\",\"},{\"line\":647,\"text\":\" \\\"block_reason\\\": block_reason or None,\"},{\"line\":648,\"text\":\" \\\"execution_started\\\": run_started == \\\"true\\\",\"},{\"line\":649,\"text\":\" \\\"change_declared\\\": change_declared == \\\"true\\\",\"},{\"line\":650,\"text\":\" \\\"result_contract_valid\\\": result_contract_valid == \\\"true\\\",\"},{\"line\":651,\"text\":\" \\\"result_contract_status\\\": (\"},{\"line\":652,\"text\":\" None\"},{\"line\":653,\"text\":\" if contract_status in {\\\"\\\", \\\"UNKNOWN\\\", \\\"NOT_APPLICABLE\\\"}\"},{\"line\":654,\"text\":\" else contract_status\"},{\"line\":655,\"text\":\" ),\"},{\"line\":656,\"text\":\" \\\"result_contract_error\\\": (\"},{\"line\":657,\"text\":\" None\"},{\"line\":658,\"text\":\" if result_contract_error == \\\"NONE\\\"\"},{\"line\":659,\"text\":\" else result_contract_error\"},{\"line\":660,\"text\":\" ),\"},{\"line\":661,\"text\":\" \\\"command_rc\\\": int(command_rc) if command_rc else None,\"},{\"line\":662,\"text\":\" \\\"changes_made\\\": optional_bool(changes_made),\"},{\"line\":663,\"text\":\" \\\"rollback_started\\\": optional_bool(rollback_started),\"},{\"line\":664,\"text\":\" \\\"rollback_restored\\\": optional_bool(rollback_restored),\"},{\"line\":665,\"text\":\" \\\"mutation_outcome\\\": mutation_outcome,\"},{\"line\":666,\"text\":\" \\\"sanitized\\\": True,\"},{\"line\":667,\"text\":\" \\\"secrets_included\\\": False,\"},{\"line\":668,\"text\":\" \\\"private_addresses_included\\\": False,\"},{\"line\":669,\"text\":\" \\\"raw_evidence_retained_locally\\\": True,\"},{\"line\":670,\"text\":\" \\\"raw_evidence_sha256\\\": raw_sha,\"},{\"line\":671,\"text\":\" \\\"sanitized_output_sha256\\\": sanitized_sha,\"},{\"line\":672,\"text\":\" \\\"output_truncated_in_json\\\": output_truncated,\"},{\"line\":673,\"text\":\" \\\"full_sanitized_output_url\\\": (\"}],\"match\":\" \\\"command_sha256\\\": command_sha,\",\"match_line\":645},{\"context\":[{\"line\":651,\"text\":\" \\\"result_contract_status\\\": (\"},{\"line\":652,\"text\":\" None\"},{\"line\":653,\"text\":\" if contract_status in {\\\"\\\", \\\"UNKNOWN\\\", \\\"NOT_APPLICABLE\\\"}\"},{\"line\":654,\"text\":\" else contract_status\"},{\"line\":655,\"text\":\" ),\"},{\"line\":656,\"text\":\" \\\"result_contract_error\\\": (\"},{\"line\":657,\"text\":\" None\"},{\"line\":658,\"text\":\" if result_contract_error == \\\"NONE\\\"\"},{\"line\":659,\"text\":\" else result_contract_error\"},{\"line\":660,\"text\":\" ),\"},{\"line\":661,\"text\":\" \\\"command_rc\\\": int(command_rc) if command_rc else None,\"},{\"line\":662,\"text\":\" \\\"changes_made\\\": optional_bool(changes_made),\"},{\"line\":663,\"text\":\" \\\"rollback_started\\\": optional_bool(rollback_started),\"},{\"line\":664,\"text\":\" \\\"rollback_restored\\\": optional_bool(rollback_restored),\"},{\"line\":665,\"text\":\" \\\"mutation_outcome\\\": mutation_outcome,\"},{\"line\":666,\"text\":\" \\\"sanitized\\\": True,\"},{\"line\":667,\"text\":\" \\\"secrets_included\\\": False,\"},{\"line\":668,\"text\":\" \\\"private_addresses_included\\\": False,\"},{\"line\":669,\"text\":\" \\\"raw_evidence_retained_locally\\\": True,\"},{\"line\":670,\"text\":\" \\\"raw_evidence_sha256\\\": raw_sha,\"},{\"line\":671,\"text\":\" \\\"sanitized_output_sha256\\\": sanitized_sha,\"},{\"line\":672,\"text\":\" \\\"output_truncated_in_json\\\": output_truncated,\"},{\"line\":673,\"text\":\" \\\"full_sanitized_output_url\\\": (\"},{\"line\":674,\"text\":\" \\\"https://git.gram1.ru/.well-known/\\\"\"},{\"line\":675,\"text\":\" \\\"homelab-runtime/latest.txt\\\"\"},{\"line\":676,\"text\":\" ),\"},{\"line\":677,\"text\":\" \\\"output\\\": output_preview,\"},{\"line\":678,\"text\":\"}\"},{\"line\":679,\"text\":\"\"},{\"line\":680,\"text\":\"Path(json_path).write_text(\"},{\"line\":681,\"text\":\" json.dumps(\"},{\"line\":682,\"text\":\" document,\"},{\"line\":683,\"text\":\" ensure_ascii=False,\"},{\"line\":684,\"text\":\" indent=2,\"},{\"line\":685,\"text\":\" )\"},{\"line\":686,\"text\":\" + \\\"\\\\n\\\",\"},{\"line\":687,\"text\":\" encoding=\\\"utf-8\\\",\"},{\"line\":688,\"text\":\")\"},{\"line\":689,\"text\":\"PY\"},{\"line\":690,\"text\":\"\"},{\"line\":691,\"text\":\"{\"},{\"line\":692,\"text\":\" echo 'CHAT_OUTPUT_BEGIN'\"},{\"line\":693,\"text\":\" echo \\\"COMMAND_ID=$COMMAND_ID\\\"\"},{\"line\":694,\"text\":\" echo \\\"STATUS=$STATUS\\\"\"},{\"line\":695,\"text\":\" echo \\\"RC=$RC\\\"\"},{\"line\":696,\"text\":\" echo \\\"HOST=$HOST_SHORT\\\"\"},{\"line\":697,\"text\":\" echo \\\"MODE=$MODE\\\"\"}],\"match\":\" \\\"raw_evidence_retained_locally\\\": True,\",\"match_line\":669},{\"context\":[{\"line\":685,\"text\":\" )\"},{\"line\":686,\"text\":\" + \\\"\\\\n\\\",\"},{\"line\":687,\"text\":\" encoding=\\\"utf-8\\\",\"},{\"line\":688,\"text\":\")\"},{\"line\":689,\"text\":\"PY\"},{\"line\":690,\"text\":\"\"},{\"line\":691,\"text\":\"{\"},{\"line\":692,\"text\":\" echo 'CHAT_OUTPUT_BEGIN'\"},{\"line\":693,\"text\":\" echo \\\"COMMAND_ID=$COMMAND_ID\\\"\"},{\"line\":694,\"text\":\" echo \\\"STATUS=$STATUS\\\"\"},{\"line\":695,\"text\":\" echo \\\"RC=$RC\\\"\"},{\"line\":696,\"text\":\" echo \\\"HOST=$HOST_SHORT\\\"\"},{\"line\":697,\"text\":\" echo \\\"MODE=$MODE\\\"\"},{\"line\":698,\"text\":\" echo \\\"COMPONENT=$COMPONENT\\\"\"},{\"line\":699,\"text\":\" echo 'REFERENCE_REGISTER_CHECK=OK'\"},{\"line\":700,\"text\":\" echo \\\"REFERENCE_SHA256=$REFERENCE_SHA256\\\"\"},{\"line\":701,\"text\":\" echo 'ERROR_REGISTER_CHECK=OK'\"},{\"line\":702,\"text\":\" echo \\\"ERROR_REGISTER_SHA256=$ERROR_REGISTER_SHA256\\\"\"},{\"line\":703,\"text\":\" echo \\\"COMMAND_SHA256=$COMMAND_SHA256\\\"\"},{\"line\":704,\"text\":\" echo \\\"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\\\"\"},{\"line\":705,\"text\":\" echo \\\"EXECUTION_STARTED=$RUN_STARTED\\\"\"},{\"line\":706,\"text\":\" echo \\\"CHANGE_DECLARED=$CHANGE_DECLARED\\\"\"},{\"line\":707,\"text\":\" echo \\\"RESULT_CONTRACT_VALID=$RESULT_CONTRACT_VALID\\\"\"},{\"line\":708,\"text\":\" echo \\\"RESULT_CONTRACT_STATUS=$CONTRACT_STATUS\\\"\"},{\"line\":709,\"text\":\" echo \\\"RESULT_CONTRACT_ERROR=$RESULT_CONTRACT_ERROR\\\"\"},{\"line\":710,\"text\":\" echo \\\"COMMAND_RC=${COMMAND_RC:-}\\\"\"},{\"line\":711,\"text\":\" echo \\\"CHANGES_MADE=$CHANGES_MADE\\\"\"},{\"line\":712,\"text\":\" echo \\\"ROLLBACK_STARTED=$ROLLBACK_STARTED\\\"\"},{\"line\":713,\"text\":\" echo \\\"ROLLBACK_RESTORED=$ROLLBACK_RESTORED\\\"\"},{\"line\":714,\"text\":\" echo \\\"MUTATION_OUTCOME=$MUTATION_OUTCOME\\\"\"},{\"line\":715,\"text\":\" echo 'SANITIZED=yes'\"},{\"line\":716,\"text\":\" echo 'SECRETS_INCLUDED=no'\"},{\"line\":717,\"text\":\" echo 'PRIVATE_ADDRESSES_INCLUDED=no'\"},{\"line\":718,\"text\":\" echo \\\"RAW_EVIDENCE_SHA256=$RAW_SHA256\\\"\"},{\"line\":719,\"text\":\" echo \\\"SANITIZED_OUTPUT_SHA256=$SANITIZED_SHA256\\\"\"},{\"line\":720,\"text\":\" echo 'OUTPUT_BEGIN'\"},{\"line\":721,\"text\":\" cat \\\"$SANITIZED_FILE\\\"\"},{\"line\":722,\"text\":\" echo\"},{\"line\":723,\"text\":\" echo 'OUTPUT_END'\"},{\"line\":724,\"text\":\" echo 'CHAT_OUTPUT_END'\"},{\"line\":725,\"text\":\"} >\\\"$TXT_FILE\\\"\"},{\"line\":726,\"text\":\"\"},{\"line\":727,\"text\":\"chmod 0600 \\\\\"},{\"line\":728,\"text\":\" \\\"$RAW_FILE\\\" \\\\\"},{\"line\":729,\"text\":\" \\\"$SANITIZED_FILE\\\" \\\\\"},{\"line\":730,\"text\":\" \\\"$JSON_FILE\\\" \\\\\"},{\"line\":731,\"text\":\" \\\"$TXT_FILE\\\"\"}],\"match\":\" echo \\\"COMMAND_SHA256=$COMMAND_SHA256\\\"\",\"match_line\":703},{\"context\":[{\"line\":710,\"text\":\" echo \\\"COMMAND_RC=${COMMAND_RC:-}\\\"\"},{\"line\":711,\"text\":\" echo \\\"CHANGES_MADE=$CHANGES_MADE\\\"\"},{\"line\":712,\"text\":\" echo \\\"ROLLBACK_STARTED=$ROLLBACK_STARTED\\\"\"},{\"line\":713,\"text\":\" echo \\\"ROLLBACK_RESTORED=$ROLLBACK_RESTORED\\\"\"},{\"line\":714,\"text\":\" echo \\\"MUTATION_OUTCOME=$MUTATION_OUTCOME\\\"\"},{\"line\":715,\"text\":\" echo 'SANITIZED=yes'\"},{\"line\":716,\"text\":\" echo 'SECRETS_INCLUDED=no'\"},{\"line\":717,\"text\":\" echo 'PRIVATE_ADDRESSES_INCLUDED=no'\"},{\"line\":718,\"text\":\" echo \\\"RAW_EVIDENCE_SHA256=$RAW_SHA256\\\"\"},{\"line\":719,\"text\":\" echo \\\"SANITIZED_OUTPUT_SHA256=$SANITIZED_SHA256\\\"\"},{\"line\":720,\"text\":\" echo 'OUTPUT_BEGIN'\"},{\"line\":721,\"text\":\" cat \\\"$SANITIZED_FILE\\\"\"},{\"line\":722,\"text\":\" echo\"},{\"line\":723,\"text\":\" echo 'OUTPUT_END'\"},{\"line\":724,\"text\":\" echo 'CHAT_OUTPUT_END'\"},{\"line\":725,\"text\":\"} >\\\"$TXT_FILE\\\"\"},{\"line\":726,\"text\":\"\"},{\"line\":727,\"text\":\"chmod 0600 \\\\\"},{\"line\":728,\"text\":\" \\\"$RAW_FILE\\\" \\\\\"},{\"line\":729,\"text\":\" \\\"$SANITIZED_FILE\\\" \\\\\"},{\"line\":730,\"text\":\" \\\"$JSON_FILE\\\" \\\\\"},{\"line\":731,\"text\":\" \\\"$TXT_FILE\\\"\"},{\"line\":732,\"text\":\"\"},{\"line\":733,\"text\":\"TARGET=debian@[PRIVATE_IP]\"},{\"line\":734,\"text\":\"REMOTE_PREFIX=\\\"/tmp/homelab-runtime-${COMMAND_ID}-$$\\\"\"},{\"line\":735,\"text\":\"\"},{\"line\":736,\"text\":\"SSH_OPTS=(\"},{\"line\":737,\"text\":\" -o BatchMode=yes\"},{\"line\":738,\"text\":\" -o ConnectTimeout=10\"},{\"line\":739,\"text\":\" -o ConnectionAttempts=1\"},{\"line\":740,\"text\":\" -o StrictHostKeyChecking=yes\"},{\"line\":741,\"text\":\" -o UserKnownHostsFile=[SENSITIVE_PATH] \\\\\"},{\"line\":745,\"text\":\" -q \\\\\"},{\"line\":746,\"text\":\" \\\"${SSH_OPTS[@]}\\\" \\\\\"},{\"line\":747,\"text\":\" \\\"$JSON_FILE\\\" \\\\\"},{\"line\":748,\"text\":\" \\\"${TARGET}:${REMOTE_PREFIX}.json\\\"\"},{\"line\":749,\"text\":\"\"},{\"line\":750,\"text\":\"scp \\\\\"},{\"line\":751,\"text\":\" -q \\\\\"},{\"line\":752,\"text\":\" \\\"${SSH_OPTS[@]}\\\" \\\\\"},{\"line\":753,\"text\":\" \\\"$TXT_FILE\\\" \\\\\"},{\"line\":754,\"text\":\" \\\"${TARGET}:${REMOTE_PREFIX}.txt\\\"\"},{\"line\":755,\"text\":\"\"},{\"line\":756,\"text\":\"ssh \\\"${SSH_OPTS[@]}\\\" \\\"$TARGET\\\" \\\"\"}],\"match\":\" \\\"$RAW_FILE\\\" \\\\\",\"match_line\":728},{\"context\":[{\"line\":779,\"text\":\" --max-time 15 \\\\\"},{\"line\":780,\"text\":\" \\\"$PUBLIC_URL\\\" 2>/dev/null ||\"},{\"line\":781,\"text\":\" true\"},{\"line\":782,\"text\":\" )\\\"\"},{\"line\":783,\"text\":\"\"},{\"line\":784,\"text\":\" if printf '%s\\\\n' \\\"$CONTENT\\\" |\"},{\"line\":785,\"text\":\" grep -Fq \\\"\\\\\\\"command_id\\\\\\\": \\\\\\\"$COMMAND_ID\\\\\\\"\\\"; then\"},{\"line\":786,\"text\":\" PUBLIC_VISIBLE=true\"},{\"line\":787,\"text\":\" break\"},{\"line\":788,\"text\":\" fi\"},{\"line\":789,\"text\":\"\"},{\"line\":790,\"text\":\" sleep 2\"},{\"line\":791,\"text\":\"done\"},{\"line\":792,\"text\":\"\"},{\"line\":793,\"text\":\"if [ \\\"$PUBLIC_VISIBLE\\\" != true ]; then\"},{\"line\":794,\"text\":\" echo 'RESULT=FAIL'\"},{\"line\":795,\"text\":\" echo 'REASON=PUBLIC_RUNTIME_RESULT_NOT_VISIBLE'\"},{\"line\":796,\"text\":\" echo \\\"COMMAND_ID=$COMMAND_ID\\\"\"},{\"line\":797,\"text\":\" echo \\\"LOCAL_RAW_FILE=$RAW_FILE\\\"\"},{\"line\":798,\"text\":\" exit 75\"},{\"line\":799,\"text\":\"fi\"},{\"line\":800,\"text\":\"\"},{\"line\":801,\"text\":\"printf '%s\\\\t%s\\\\t%s\\\\t%s\\\\t%s\\\\t%s\\\\n' \\\\\"},{\"line\":802,\"text\":\" \\\"$FINISHED_AT\\\" \\\\\"},{\"line\":803,\"text\":\" \\\"$COMMAND_ID\\\" \\\\\"},{\"line\":804,\"text\":\" \\\"$COMMAND_SHA256\\\" \\\\\"},{\"line\":805,\"text\":\" \\\"$RC\\\" \\\\\"},{\"line\":806,\"text\":\" \\\"$STATUS\\\" \\\\\"},{\"line\":807,\"text\":\" \\\"$COMPONENT\\\" >>\\\"$LEDGER\\\"\"},{\"line\":808,\"text\":\"\"},{\"line\":809,\"text\":\"echo\"},{\"line\":810,\"text\":\"echo '===== HOMELAB CHAT RUN COMPLETE ====='\"},{\"line\":811,\"text\":\"echo \\\"COMMAND_ID=$COMMAND_ID\\\"\"},{\"line\":812,\"text\":\"echo \\\"STATUS=$STATUS\\\"\"},{\"line\":813,\"text\":\"echo \\\"RC=$RC\\\"\"},{\"line\":814,\"text\":\"echo 'REFERENCE_REGISTER_CHECK=OK'\"},{\"line\":815,\"text\":\"echo 'ERROR_REGISTER_CHECK=OK'\"},{\"line\":816,\"text\":\"echo \\\"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\\\"\"},{\"line\":817,\"text\":\"echo 'GITEA_PUBLICATION=OK'\"},{\"line\":818,\"text\":\"echo \\\"PUBLIC_URL=$PUBLIC_URL\\\"\"},{\"line\":819,\"text\":\"echo \\\"LOCAL_RAW_FILE=$RAW_FILE\\\"\"},{\"line\":820,\"text\":\"echo 'SHELL_SESSION_PRESERVED=yes'\"},{\"line\":821,\"text\":\"\"},{\"line\":822,\"text\":\"exit \\\"$RC\\\"\"}],\"match\":\" echo \\\"LOCAL_RAW_FILE=$RAW_FILE\\\"\",\"match_line\":797},{\"context\":[{\"line\":786,\"text\":\" PUBLIC_VISIBLE=true\"},{\"line\":787,\"text\":\" break\"},{\"line\":788,\"text\":\" fi\"},{\"line\":789,\"text\":\"\"},{\"line\":790,\"text\":\" sleep 2\"},{\"line\":791,\"text\":\"done\"},{\"line\":792,\"text\":\"\"},{\"line\":793,\"text\":\"if [ \\\"$PUBLIC_VISIBLE\\\" != true ]; then\"},{\"line\":794,\"text\":\" echo 'RESULT=FAIL'\"},{\"line\":795,\"text\":\" echo 'REASON=PUBLIC_RUNTIME_RESULT_NOT_VISIBLE'\"},{\"line\":796,\"text\":\" echo \\\"COMMAND_ID=$COMMAND_ID\\\"\"},{\"line\":797,\"text\":\" echo \\\"LOCAL_RAW_FILE=$RAW_FILE\\\"\"},{\"line\":798,\"text\":\" exit 75\"},{\"line\":799,\"text\":\"fi\"},{\"line\":800,\"text\":\"\"},{\"line\":801,\"text\":\"printf '%s\\\\t%s\\\\t%s\\\\t%s\\\\t%s\\\\t%s\\\\n' \\\\\"},{\"line\":802,\"text\":\" \\\"$FINISHED_AT\\\" \\\\\"},{\"line\":803,\"text\":\" \\\"$COMMAND_ID\\\" \\\\\"},{\"line\":804,\"text\":\" \\\"$COMMAND_SHA256\\\" \\\\\"},{\"line\":805,\"text\":\" \\\"$RC\\\" \\\\\"},{\"line\":806,\"text\":\" \\\"$STATUS\\\" \\\\\"},{\"line\":807,\"text\":\" \\\"$COMPONENT\\\" >>\\\"$LEDGER\\\"\"},{\"line\":808,\"text\":\"\"},{\"line\":809,\"text\":\"echo\"},{\"line\":810,\"text\":\"echo '===== HOMELAB CHAT RUN COMPLETE ====='\"},{\"line\":811,\"text\":\"echo \\\"COMMAND_ID=$COMMAND_ID\\\"\"},{\"line\":812,\"text\":\"echo \\\"STATUS=$STATUS\\\"\"},{\"line\":813,\"text\":\"echo \\\"RC=$RC\\\"\"},{\"line\":814,\"text\":\"echo 'REFERENCE_REGISTER_CHECK=OK'\"},{\"line\":815,\"text\":\"echo 'ERROR_REGISTER_CHECK=OK'\"},{\"line\":816,\"text\":\"echo \\\"DUPLICATE_FAILED_COMMAND_BLOCKED=$REPEAT_BLOCKED\\\"\"},{\"line\":817,\"text\":\"echo 'GITEA_PUBLICATION=OK'\"},{\"line\":818,\"text\":\"echo \\\"PUBLIC_URL=$PUBLIC_URL\\\"\"},{\"line\":819,\"text\":\"echo \\\"LOCAL_RAW_FILE=$RAW_FILE\\\"\"},{\"line\":820,\"text\":\"echo 'SHELL_SESSION_PRESERVED=yes'\"},{\"line\":821,\"text\":\"\"},{\"line\":822,\"text\":\"exit \\\"$RC\\\"\"}],\"match\":\" \\\"$COMMAND_SHA256\\\" \\\\\",\"match_line\":804}],\"sha256\":\"b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\"}\nRUNNER_CANDIDATE_ROOTS=[\"/etc/pve/31_HOMELAB_REFERENCE.md\",\"/etc/pve/HOMELAB_ASSISTANT_ERROR_REGISTER.md\",\"/var/lib/homelab-chat-run\",\"/var/log/homelab\"]\nTARGET_SHA_SEARCH=[{\"files\":[],\"rc\":1,\"root\":\"/etc/pve/31_HOMELAB_REFERENCE.md\",\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"},{\"files\":[],\"rc\":1,\"root\":\"/etc/pve/HOMELAB_ASSISTANT_ERROR_REGISTER.md\",\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"},{\"files\":[\"/var/lib/homelab-chat-run/state/command-ledger.tsv\",\"/var/lib/homelab-chat-run/raw/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171713Z.log\",\"/var/lib/homelab-chat-run/public/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171713Z.txt\",\"/var/lib/homelab-chat-run/public/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171441Z.json\",\"/var/lib/homelab-chat-run/public/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171713Z.json\",\"/var/lib/homelab-chat-run/public/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171441Z-latest.txt\",\"/var/lib/homelab-chat-run/public/SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-SOURCE-PERSISTENCE-RECOVERY-789R1-20260920T171713Z-latest.txt\"],\"rc\":0,\"root\":\"/var/lib/homelab-chat-run\",\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"},{\"files\":[],\"rc\":1,\"root\":\"/var/log/homelab\",\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"}]\nRCA_ERROR_CLASS=TimeoutExpired\nRCA_ERROR_SHA256=47027a3fd2fcca9dbfcae4c4ea66f79d2512e2d04aa00889dc8893508b183cc9\nNO_MUTATION=True\nTASK_RESULT=PVEPRO_HOMEPAGE_PORTAL_789_RUNNER_DUPLICATE_RCA_FAILED\nHOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"SUPPORT-260920-PVEPRO-HOMEPAGE-PORTAL-789-RUNNER-DUPLICATE-RCA-READONLY-790R1\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"FAIL\",\"version\":1}\n"
|
|
}
|