1
0
Files
homelab-public-context/runtime/latest.txt
T

35 lines
55 KiB
Plaintext

CHAT_OUTPUT_BEGIN
COMMAND_ID=HOMELAB-CLUSTER-ADMIN-UPDATES-V12-EXACT-SOURCES-READ-ONLY-20260805T112600Z
STATUS=OK
RC=0
HOST=pve01
MODE=verify
COMPONENT=homelab-cluster-admin-update-visibility
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83
COMMAND_SHA256=4d9db09bb3348dda0505b55ec6f7557acc4d713b63fd53723330fc518f9d5b2d
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
RESULT_CONTRACT_VALID=true
RESULT_CONTRACT_STATUS=NOT_APPLICABLE
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=0
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=fd1c004e8835b870b2232c2e20a1735688d171426ed97840dfbfd6d86f9c3852
SANITIZED_OUTPUT_SHA256=fd1c004e8835b870b2232c2e20a1735688d171426ed97840dfbfd6d86f9c3852
OUTPUT_BEGIN
HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V12-EXACT-SOURCES-READ-ONLY-20260805T112600Z","command_rc":0,"control_plane_error":null,"mutation_outcome":"NO_MUTATION","primary_script_count":4,"primary_script_sha256":{"homelab-cluster-admin-incident-engine-backup-run":"a79c2a72b1fbdc13506b6db8b0ea790376dc20db8003961c5b44935d28f0c5ae","homelab-cluster-admin-inventory-sync":"00814787de40176e025097b353a67c26edcd298a4126d2375333e83df4f37170","homelab-cluster-admin-pull":"00913dbf4ef82cddd82850be7f2445924b7e75e537e7e5f6cef5785b05307d23","homelab-cluster-admin-webpanel-sync":"2c57cca503cb0734e5114c2ab46b892a810bdc40c2baa7387b4094373db19276"},"publication_anchor_count":48,"rc":0,"ready_for_atomic_transaction":true,"report_bytes":53302,"report_sha256":"aa1895efb8a2578f48be1d3bba2776aca56aacaa737a58b0deac35bc5f45d807","rollback_restored":false,"rollback_started":false,"status":"OK","unit_count":8,"unit_sha256":{"homelab-cluster-admin-incident-engine-backup.service":"bc7f9010fd6e97dff3bbedd2fd2088d65836a1a842cbd6d465163251e2a7db31","homelab-cluster-admin-incident-engine-backup.timer":"7b34396b19b8d9139e3f59d7a03a5bbfe08440c95d6a1d85031057665a724d54","homelab-cluster-admin-inventory-sync.service":"5237b68c736e77ff0108c77321bbe9b9cb7285e3a23d135361a43cd2fcb74264","homelab-cluster-admin-inventory-sync.timer":"4c9f51447b5d8f75fa05b494390e74089b6a2880ce899325643d47be4ce2180e","homelab-cluster-admin-pull.service":"4a30f00113b7c68478f1cd2c8be959aed1931c55a0c7f7c99fda06cb742b914e","homelab-cluster-admin-pull.timer":"5e4936d1379c96088b17816a7aba42d77051009bd0938a253b3487bcb3b658a6","homelab-cluster-admin-webpanel-sync.service":"d8091d4bb52513929cd7df742532977f70e08ee60ab8762a8f027e5863612c3b","homelab-cluster-admin-webpanel-sync.timer":"ef420cea1b506ff7ea6dbd02c1b19167e5771030f4f52eb850aa05b7e3eed094"},"v11_exact_result_identity_confirmed":true,"v11_output_sha256":"5392567d03d9794b8d677b56843b620f0f15f5515e1b6d7707ea5ec3b602fda5","v11_runner_wrapper_matches_document":false,"version":1}
{"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V12-EXACT-SOURCES-READ-ONLY-20260805T112600Z","mutation_outcome":"NO_MUTATION","primary_scripts":[{"assignments":{"APP":"\"cluster-admin-incident-engine\"","ARCHIVE":"\"${JOB_ID}.tar.gz\"","BACKUP_PATH_REL":"\"$(homelab-backup-path job a \"$APP\" \"$SHORT_TS\")\"","DATE":"\"$(date -u +%Y%m%dT%H%M%SZ)\"","DUMP_SIZE":"\"$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n rm -f \\\"$REMOTE_DUMP\\\"; sudo -n -u clusteradmin pg_dump --format=custom --no-owner --no-privileges --file=\\\"$REMOTE_DUMP\\\" clusteradmin; sudo -n test -s \\\"$REMOTE_DUMP\\\"; sudo -n -u clusteradmin pg_restore --list \\\"$REMOTE_DUMP\\\" >/dev/null; sudo -n chown debian:debian \\\"$REMOTE_DUMP\\\"; sudo -n chmod 600 \\\"$REMOTE_DUMP\\\"; stat -c %s \\\"$REMOTE_DUMP\\\"\")\"","FILES":"\"$(find \"$STAGE/payload\" -type f | wc -l | tr -d \" \")\"","JOB_ID":"\"homelab-${NODE}-app-${APP}-${DATE}\"","NODE":"\"$(hostname -s)\"","REMOTE":"\"debian@<PRIVATE_IPV4>\"","REMOTE_DUMP":"\"/tmp/${JOB_ID}.pgdump\"","SHORT_TS":"\"${DATE:2:6}-${DATE:9:6}\"","STAGE":"\"${STAGING_ROOT}/${JOB_ID}\""},"bytes":2640,"commands":[{"line":15,"text":"DUMP_SIZE=\"$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n rm -f \\\"$REMOTE_DUMP\\\"; sudo -n -u clusteradmin pg_dump --format=custom --no-owner --no-privileges --file=\\\"$REMOTE_DUMP\\\" clusteradmin; sudo -n test -s \\\"$REMOTE_DUMP\\\"; sudo -n -u clusteradmin pg_restore --list \\\"$REMOTE_DUMP\\\" >/dev/null; sudo -n chown debian:debian \\\"$REMOTE_DUMP\\\"; sudo -n chmod 600 \\\"$REMOTE_DUMP\\\"; stat -c %s \\\"$REMOTE_DUMP\\\"\")\""},{"line":17,"text":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE:$REMOTE_DUMP\" \"$STAGE/payload/clusteradmin.pgdump\""},{"line":18,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"rm -f \\\"$REMOTE_DUMP\\\"\""},{"line":20,"text":"python3 -c \"import sys; assert open(sys.argv[1],\\\"rb\\\").read(5)==b\\\"PGDMP\\\"\" \"$STAGE/payload/clusteradmin.pgdump\""},{"line":21,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n tar -C / -czf - opt/cluster-admin-incident-engine etc/cluster-admin-incident-engine etc/systemd/system/cluster-admin-incident-engine.service etc/systemd/system/cluster-admin-incident-engine-collector.service etc/systemd/system/cluster-admin-incident-engine-collector.timer var/lib/cluster-admin-incident-engine\" > \"$STAGE/runtime.tgz\""},{"line":25,"text":"<REDACTED_SECRET_LINE>"}],"gid":0,"line_count":28,"mode":"0o750","path":"/usr/local/sbin/homelab-cluster-admin-incident-engine-backup-run","path_literals":["/${JOB_ID","/dev/null","/etc/cluster-admin-incident-engine","/etc/homelab-backup.env","/opt/cluster-admin-incident-engine","/tmp/${JOB_ID}.pgdump","/usr/bin/env","/var/lib/cluster-admin-incident-engine"],"publication_lines":[{"line":15,"text":"DUMP_SIZE=\"$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n rm -f \\\"$REMOTE_DUMP\\\"; sudo -n -u clusteradmin pg_dump --format=custom --no-owner --no-privileges --file=\\\"$REMOTE_DUMP\\\" clusteradmin; sudo -n test -s \\\"$REMOTE_DUMP\\\"; sudo -n -u clusteradmin pg_restore --list \\\"$REMOTE_DUMP\\\" >/dev/null; sudo -n chown debian:debian \\\"$REMOTE_DUMP\\\"; sudo -n chmod 600 \\\"$REMOTE_DUMP\\\"; stat -c %s \\\"$REMOTE_DUMP\\\"\")\""},{"line":17,"text":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE:$REMOTE_DUMP\" \"$STAGE/payload/clusteradmin.pgdump\""},{"line":18,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"rm -f \\\"$REMOTE_DUMP\\\"\""},{"line":21,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n tar -C / -czf - opt/cluster-admin-incident-engine etc/cluster-admin-incident-engine etc/systemd/system/cluster-admin-incident-engine.service etc/systemd/system/cluster-admin-incident-engine-collector.service etc/systemd/system/cluster-admin-incident-engine-collector.timer var/lib/cluster-admin-incident-engine\" > \"$STAGE/runtime.tgz\""},{"line":25,"text":"<REDACTED_SECRET_LINE>"}],"referenced_files":[],"sha256":"a79c2a72b1fbdc13506b6db8b0ea790376dc20db8003961c5b44935d28f0c5ae","source":[{"line":1,"text":"#!/usr/bin/env bash"},{"line":2,"text":"set -Eeuo pipefail"},{"line":3,"text":"source /etc/homelab-backup.env"},{"line":4,"text":"APP=\"cluster-admin-incident-engine\""},{"line":5,"text":"REMOTE=\"debian@<PRIVATE_IPV4>\""},{"line":6,"text":"NODE=\"$(hostname -s)\""},{"line":7,"text":"DATE=\"$(date -u +%Y%m%dT%H%M%SZ)\""},{"line":8,"text":"export JOB_ID=\"homelab-${NODE}-app-${APP}-${DATE}\""},{"line":9,"text":"SHORT_TS=\"${DATE:2:6}-${DATE:9:6}\""},{"line":10,"text":"export BACKUP_PATH_REL=\"$(homelab-backup-path job a \"$APP\" \"$SHORT_TS\")\""},{"line":11,"text":"STAGE=\"${STAGING_ROOT}/${JOB_ID}\""},{"line":12,"text":"ARCHIVE=\"${JOB_ID}.tar.gz\""},{"line":13,"text":"REMOTE_DUMP=\"/tmp/${JOB_ID}.pgdump\""},{"line":14,"text":"mkdir -p \"$STAGE/payload\""},{"line":15,"text":"DUMP_SIZE=\"$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n rm -f \\\"$REMOTE_DUMP\\\"; sudo -n -u clusteradmin pg_dump --format=custom --no-owner --no-privileges --file=\\\"$REMOTE_DUMP\\\" clusteradmin; sudo -n test -s \\\"$REMOTE_DUMP\\\"; sudo -n -u clusteradmin pg_restore --list \\\"$REMOTE_DUMP\\\" >/dev/null; sudo -n chown debian:debian \\\"$REMOTE_DUMP\\\"; sudo -n chmod 600 \\\"$REMOTE_DUMP\\\"; stat -c %s \\\"$REMOTE_DUMP\\\"\")\""},{"line":16,"text":"[ \"$DUMP_SIZE\" -gt 128 ]"},{"line":17,"text":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE:$REMOTE_DUMP\" \"$STAGE/payload/clusteradmin.pgdump\""},{"line":18,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"rm -f \\\"$REMOTE_DUMP\\\"\""},{"line":19,"text":"test -s \"$STAGE/payload/clusteradmin.pgdump\""},{"line":20,"text":"python3 -c \"import sys; assert open(sys.argv[1],\\\"rb\\\").read(5)==b\\\"PGDMP\\\"\" \"$STAGE/payload/clusteradmin.pgdump\""},{"line":21,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n tar -C / -czf - opt/cluster-admin-incident-engine etc/cluster-admin-incident-engine etc/systemd/system/cluster-admin-incident-engine.service etc/systemd/system/cluster-admin-incident-engine-collector.service etc/systemd/system/cluster-admin-incident-engine-collector.timer var/lib/cluster-admin-incident-engine\" > \"$STAGE/runtime.tgz\""},{"line":22,"text":"tar -C \"$STAGE/payload\" -xzf \"$STAGE/runtime.tgz\""},{"line":23,"text":"rm -f \"$STAGE/runtime.tgz\""},{"line":24,"text":"FILES=\"$(find \"$STAGE/payload\" -type f | wc -l | tr -d \" \")\""},{"line":25,"text":"<REDACTED_SECRET_LINE>"},{"line":26,"text":"tar -C \"$STAGE/payload\" -czf \"$STAGE/$ARCHIVE\" ."},{"line":27,"text":"homelab-stage-2cloud-flat \"$APP\" \"$STAGE\" \"$ARCHIVE\""},{"line":28,"text":"echo CLUSTER_ADMIN_INCIDENT_ENGINE_BACKUP_RUN=OK"}],"uid":0},{"assignments":{"LOCAL":"/var/lib/homelab-cluster-admin-export/inventory.json","LOCAL_SHA":"\"$(sha256sum \"$LOCAL\" | cut -d\" \" -f1)\"","LOCK":"/run/homelab-cluster-admin-inventory-sync.lock","REMOTE":"debian@<PRIVATE_IPV4>","REMOTE_FILE":"/var/lib/cluster-admin-incident-engine/incoming/inventory.json","REMOTE_SHA":"\"$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n sha256sum $REMOTE_FILE\" | cut -d\" \" -f1)\"","REMOTE_TMP":"\"/tmp/cluster-admin-inventory-${RANDOM}-$$.json\""},"bytes":1301,"commands":[{"line":10,"text":"/usr/bin/python3 /usr/local/sbin/homelab-cluster-admin-inventory-export"},{"line":11,"text":"/usr/bin/python3 -m json.tool \"$LOCAL\" >/dev/null"},{"line":13,"text":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$LOCAL\" \"$REMOTE:$REMOTE_TMP\""},{"line":14,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"python3 -m json.tool $REMOTE_TMP >/dev/null\""},{"line":15,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n install -d -o clusteradmin -g clusteradmin -m 750 /var/lib/cluster-admin-incident-engine/incoming && sudo -n install -o clusteradmin -g clusteradmin -m 640 $REMOTE_TMP $REMOTE_FILE\""},{"line":16,"text":"REMOTE_SHA=\"$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n sha256sum $REMOTE_FILE\" | cut -d\" \" -f1)\""},{"line":19,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"rm -f $REMOTE_TMP\""}],"gid":0,"line_count":22,"mode":"0o750","path":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","path_literals":["/dev/null","/run/homelab-cluster-admin-inventory-sync.lock","/tmp/cluster-admin-inventory-${RANDOM}-$$.json","/usr/bin/env","/usr/bin/python3","/usr/local/sbin/homelab-cluster-admin-inventory-export","/var/lib/cluster-admin-incident-engine/incoming","/var/lib/cluster-admin-incident-engine/incoming/inventory.json","/var/lib/homelab-cluster-admin-export/inventory.json"],"publication_lines":[{"line":3,"text":"LOCK=/run/homelab-cluster-admin-inventory-sync.lock"},{"line":6,"text":"LOCAL=/var/lib/homelab-cluster-admin-export/inventory.json"},{"line":8,"text":"REMOTE_FILE=/var/lib/cluster-admin-incident-engine/incoming/inventory.json"},{"line":9,"text":"REMOTE_TMP=\"/tmp/cluster-admin-inventory-${RANDOM}-$$.json\""},{"line":10,"text":"/usr/bin/python3 /usr/local/sbin/homelab-cluster-admin-inventory-export"},{"line":11,"text":"/usr/bin/python3 -m json.tool \"$LOCAL\" >/dev/null"},{"line":13,"text":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$LOCAL\" \"$REMOTE:$REMOTE_TMP\""},{"line":14,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"python3 -m json.tool $REMOTE_TMP >/dev/null\""},{"line":15,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n install -d -o clusteradmin -g clusteradmin -m 750 /var/lib/cluster-admin-incident-engine/incoming && sudo -n install -o clusteradmin -g clusteradmin -m 640 $REMOTE_TMP $REMOTE_FILE\""},{"line":16,"text":"REMOTE_SHA=\"$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n sha256sum $REMOTE_FILE\" | cut -d\" \" -f1)\""},{"line":19,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"rm -f $REMOTE_TMP\""},{"line":20,"text":"echo LOCAL_INVENTORY_SHA256=\"$LOCAL_SHA\""},{"line":21,"text":"echo REMOTE_INVENTORY_SHA256=\"$REMOTE_SHA\""},{"line":22,"text":"echo CLUSTER_ADMIN_INVENTORY_SYNC=OK"}],"referenced_files":[{"bytes":5290,"is_dir":false,"is_file":true,"literal":"/usr/local/sbin/homelab-cluster-admin-inventory-export","mode":"0o750","resolved":"/usr/local/sbin/homelab-cluster-admin-inventory-export","sha256":"725b7ad80f6a0ce11096bc4d3f8ae615865f6031a70123dd1890b0a3e114c04d"}],"sha256":"00814787de40176e025097b353a67c26edcd298a4126d2375333e83df4f37170","source":[{"line":1,"text":"#!/usr/bin/env bash"},{"line":2,"text":"set -Eeuo pipefail"},{"line":3,"text":"LOCK=/run/homelab-cluster-admin-inventory-sync.lock"},{"line":4,"text":"exec 9>\"$LOCK\""},{"line":5,"text":"flock -w 30 9"},{"line":6,"text":"LOCAL=/var/lib/homelab-cluster-admin-export/inventory.json"},{"line":7,"text":"REMOTE=debian@<PRIVATE_IPV4>"},{"line":8,"text":"REMOTE_FILE=/var/lib/cluster-admin-incident-engine/incoming/inventory.json"},{"line":9,"text":"REMOTE_TMP=\"/tmp/cluster-admin-inventory-${RANDOM}-$$.json\""},{"line":10,"text":"/usr/bin/python3 /usr/local/sbin/homelab-cluster-admin-inventory-export"},{"line":11,"text":"/usr/bin/python3 -m json.tool \"$LOCAL\" >/dev/null"},{"line":12,"text":"LOCAL_SHA=\"$(sha256sum \"$LOCAL\" | cut -d\" \" -f1)\""},{"line":13,"text":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$LOCAL\" \"$REMOTE:$REMOTE_TMP\""},{"line":14,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"python3 -m json.tool $REMOTE_TMP >/dev/null\""},{"line":15,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n install -d -o clusteradmin -g clusteradmin -m 750 /var/lib/cluster-admin-incident-engine/incoming && sudo -n install -o clusteradmin -g clusteradmin -m 640 $REMOTE_TMP $REMOTE_FILE\""},{"line":16,"text":"REMOTE_SHA=\"$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n sha256sum $REMOTE_FILE\" | cut -d\" \" -f1)\""},{"line":17,"text":"[ -n \"$LOCAL_SHA\" ]"},{"line":18,"text":"[ \"$LOCAL_SHA\" = \"$REMOTE_SHA\" ]"},{"line":19,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"rm -f $REMOTE_TMP\""},{"line":20,"text":"echo LOCAL_INVENTORY_SHA256=\"$LOCAL_SHA\""},{"line":21,"text":"echo REMOTE_INVENTORY_SHA256=\"$REMOTE_SHA\""},{"line":22,"text":"echo CLUSTER_ADMIN_INVENTORY_SYNC=OK"}],"uid":0},{"assignments":{"BAD":"$((OBS_BAD+FULL_BAD)); [ \"$RC\" -eq 0 ] || BAD=$((BAD+1))","FULL":"$(printf \"%s\\n\" \"$REMOTE\" | awk '/^__FULL__$/{f=1;next}f')","FULL_STATUS":"$([ \"$FULL_BAD\" -eq 0 ] && [ \"$RC\" -eq 0 ] && echo OK || echo WARN)","HEALTH_ROOT":"/var/lib/homelab-health","OBS":"$(printf \"%s\\n\" \"$REMOTE\" | awk '/^__OBS__$/{f=1;next}/^__FULL__$/{f=0}f')","OBS_BAD":"0; FULL_BAD=0","OBS_STATUS":"$([ \"$OBS_BAD\" -eq 0 ] && [ \"$RC\" -eq 0 ] && echo OK || echo WARN)","PROBE_BAD":"$(printf \"%s\\n\" \"$FULL\" | sed -n 's/.*PROBE_BAD=\\([0-9][0-9]*\\).*/\\1/p' | head -n1)","PROBE_OK":"$(printf \"%s\\n\" \"$FULL\" | sed -n 's/.*PROBE_OK=\\([0-9][0-9]*\\).*/\\1/p' | head -n1)","RC":"$?","REMOTE":"$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 debian@<PRIVATE_IPV4> 'sudo /opt/homelab-cluster-admin/cluster-observer.sh >/dev/null 2>&1 || true; sudo /opt/homelab-cluster-admin/full-observer.sh >/dev/null 2>&1 || true; printf \"__OBS__\\\\n\"; cat /var/lib/homelab-health/cluster-admin-observer.txt; printf \"__FULL__\\\\n\"; cat /var/lib/homelab-health/cluster-admin-full-observer.txt' 2>/tmp/homelab-cluster-admin-pull.err)","ROOT":"/var/lib/homelab-cluster-admin","TS":"$(date -u +%Y-%m-%dT%H:%M:%SZ)"},"bytes":2501,"commands":[{"line":7,"text":"REMOTE=$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 debian@<PRIVATE_IPV4> 'sudo /opt/homelab-cluster-admin/cluster-observer.sh >/dev/null 2>&1 || true; sudo /opt/homelab-cluster-admin/full-observer.sh >/dev/null 2>&1 || true; printf \"__OBS__\\\\n\"; cat /var/lib/homelab-health/cluster-admin-observer.txt; printf \"__FULL__\\\\n\"; cat /var/lib/homelab-health/cluster-admin-full-observer.txt' 2>/tmp/homelab-cluster-admin-pull.err)"},{"line":26,"text":"cat \"$HEALTH_ROOT/cluster-admin-observer.txt\""},{"line":27,"text":"cat \"$HEALTH_ROOT/cluster-admin-full-observer.txt\""},{"line":28,"text":"cat \"$HEALTH_ROOT/cluster-admin-restricted-probes.txt\""}],"gid":0,"line_count":29,"mode":"0o755","path":"/usr/local/sbin/homelab-cluster-admin-pull","path_literals":["/dev/null","/opt/homelab-cluster-admin/cluster-observer.sh","/opt/homelab-cluster-admin/full-observer.sh","/tmp/homelab-cluster-admin-pull.err","/usr/bin/env","/var/lib/homelab-cluster-admin","/var/lib/homelab-health","/var/lib/homelab-health/cluster-admin-full-observer.txt","/var/lib/homelab-health/cluster-admin-observer.txt","/{f=0}f","/{f=1"],"publication_lines":[{"line":5,"text":"HEALTH_ROOT=/var/lib/homelab-health"},{"line":6,"text":"mkdir -p \"$ROOT\" \"$HEALTH_ROOT\""},{"line":7,"text":"REMOTE=$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 debian@<PRIVATE_IPV4> 'sudo /opt/homelab-cluster-admin/cluster-observer.sh >/dev/null 2>&1 || true; sudo /opt/homelab-cluster-admin/full-observer.sh >/dev/null 2>&1 || true; printf \"__OBS__\\\\n\"; cat /var/lib/homelab-health/cluster-admin-observer.txt; printf \"__FULL__\\\\n\"; cat /var/lib/homelab-health/cluster-admin-full-observer.txt' 2>/tmp/homelab-cluster-admin-pull.err)"},{"line":12,"text":"printf \"%s\\n\" \"$OBS\" | grep -q \"^STATUS=OK\" || OBS_BAD=1"},{"line":13,"text":"printf \"%s\\n\" \"$FULL\" | grep -q \"^STATUS=OK\" || FULL_BAD=1"},{"line":21,"text":"OBS_STATUS=$([ \"$OBS_BAD\" -eq 0 ] && [ \"$RC\" -eq 0 ] && echo OK || echo WARN)"},{"line":22,"text":"FULL_STATUS=$([ \"$FULL_BAD\" -eq 0 ] && [ \"$RC\" -eq 0 ] && echo OK || echo WARN)"},{"line":23,"text":"echo \"STATUS=$OBS_STATUS TS=$TS TYPE=cluster-admin-central-pull BAD=$OBS_BAD VMID=180 IP=<PRIVATE_IPV4> SSH_RC=$RC OBSERVER_STATUS=$OBS_STATUS REPORT=$ROOT/observer-remote-latest.txt\" > \"$HEALTH_ROOT/cluster-admin-observer.txt\""},{"line":24,"text":"echo \"STATUS=$FULL_STATUS TS=$TS TYPE=cluster-admin-full-observer-central BAD=$FULL_BAD WARN=0 VMID=180 PULL_RC=$RC FULL_STATUS=$FULL_STATUS PROBE_OK=${PROBE_OK:-0} PROBE_BAD=${PROBE_BAD:-1} REPORT=$ROOT/full-observer-central-latest.md\" > \"$HEALTH_ROOT/cluster-admin-full-observer.txt\""},{"line":25,"text":"echo \"STATUS=$FULL_STATUS TS=$TS TYPE=cluster-admin-restricted-probes BAD=$FULL_BAD VMID=180 MODE=FORCED_COMMAND_READONLY_CURRENT PROBE_OK=${PROBE_OK:-0} PROBE_BAD=${PROBE_BAD:-1} TARGETS=pve01,pve02,pve03,edge SOURCE=full-observer\" > \"$HEALTH_ROOT/cluster-admin-restricted-probes.txt\""},{"line":26,"text":"cat \"$HEALTH_ROOT/cluster-admin-observer.txt\""},{"line":27,"text":"cat \"$HEALTH_ROOT/cluster-admin-full-observer.txt\""},{"line":28,"text":"cat \"$HEALTH_ROOT/cluster-admin-restricted-probes.txt\""}],"referenced_files":[],"sha256":"00913dbf4ef82cddd82850be7f2445924b7e75e537e7e5f6cef5785b05307d23","source":[{"line":1,"text":"#!/usr/bin/env bash"},{"line":2,"text":"set +e +u +o pipefail 2>/dev/null || true"},{"line":3,"text":"TS=$(date -u +%Y-%m-%dT%H:%M:%SZ)"},{"line":4,"text":"ROOT=/var/lib/homelab-cluster-admin"},{"line":5,"text":"HEALTH_ROOT=/var/lib/homelab-health"},{"line":6,"text":"mkdir -p \"$ROOT\" \"$HEALTH_ROOT\""},{"line":7,"text":"REMOTE=$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 debian@<PRIVATE_IPV4> 'sudo /opt/homelab-cluster-admin/cluster-observer.sh >/dev/null 2>&1 || true; sudo /opt/homelab-cluster-admin/full-observer.sh >/dev/null 2>&1 || true; printf \"__OBS__\\\\n\"; cat /var/lib/homelab-health/cluster-admin-observer.txt; printf \"__FULL__\\\\n\"; cat /var/lib/homelab-health/cluster-admin-full-observer.txt' 2>/tmp/homelab-cluster-admin-pull.err)"},{"line":8,"text":"RC=$?"},{"line":9,"text":"OBS=$(printf \"%s\\n\" \"$REMOTE\" | awk '/^__OBS__$/{f=1;next}/^__FULL__$/{f=0}f')"},{"line":10,"text":"FULL=$(printf \"%s\\n\" \"$REMOTE\" | awk '/^__FULL__$/{f=1;next}f')"},{"line":11,"text":"OBS_BAD=0; FULL_BAD=0"},{"line":12,"text":"printf \"%s\\n\" \"$OBS\" | grep -q \"^STATUS=OK\" || OBS_BAD=1"},{"line":13,"text":"printf \"%s\\n\" \"$FULL\" | grep -q \"^STATUS=OK\" || FULL_BAD=1"},{"line":14,"text":"printf \"%s\\n\" \"$FULL\" | grep -q \"BAD=0\" || FULL_BAD=1"},{"line":15,"text":"PROBE_OK=$(printf \"%s\\n\" \"$FULL\" | sed -n 's/.*PROBE_OK=\\([0-9][0-9]*\\).*/\\1/p' | head -n1)"},{"line":16,"text":"PROBE_BAD=$(printf \"%s\\n\" \"$FULL\" | sed -n 's/.*PROBE_BAD=\\([0-9][0-9]*\\).*/\\1/p' | head -n1)"},{"line":17,"text":"[ \"${PROBE_BAD:-1}\" = 0 ] || FULL_BAD=1"},{"line":18,"text":"BAD=$((OBS_BAD+FULL_BAD)); [ \"$RC\" -eq 0 ] || BAD=$((BAD+1))"},{"line":19,"text":"printf \"%s\\n\" \"$OBS\" > \"$ROOT/observer-remote-latest.txt\""},{"line":20,"text":"printf \"%s\\n\" \"$FULL\" > \"$ROOT/full-observer-central-latest.md\""},{"line":21,"text":"OBS_STATUS=$([ \"$OBS_BAD\" -eq 0 ] && [ \"$RC\" -eq 0 ] && echo OK || echo WARN)"},{"line":22,"text":"FULL_STATUS=$([ \"$FULL_BAD\" -eq 0 ] && [ \"$RC\" -eq 0 ] && echo OK || echo WARN)"},{"line":23,"text":"echo \"STATUS=$OBS_STATUS TS=$TS TYPE=cluster-admin-central-pull BAD=$OBS_BAD VMID=180 IP=<PRIVATE_IPV4> SSH_RC=$RC OBSERVER_STATUS=$OBS_STATUS REPORT=$ROOT/observer-remote-latest.txt\" > \"$HEALTH_ROOT/cluster-admin-observer.txt\""},{"line":24,"text":"echo \"STATUS=$FULL_STATUS TS=$TS TYPE=cluster-admin-full-observer-central BAD=$FULL_BAD WARN=0 VMID=180 PULL_RC=$RC FULL_STATUS=$FULL_STATUS PROBE_OK=${PROBE_OK:-0} PROBE_BAD=${PROBE_BAD:-1} REPORT=$ROOT/full-observer-central-latest.md\" > \"$HEALTH_ROOT/cluster-admin-full-observer.txt\""},{"line":25,"text":"echo \"STATUS=$FULL_STATUS TS=$TS TYPE=cluster-admin-restricted-probes BAD=$FULL_BAD VMID=180 MODE=FORCED_COMMAND_READONLY_CURRENT PROBE_OK=${PROBE_OK:-0} PROBE_BAD=${PROBE_BAD:-1} TARGETS=pve01,pve02,pve03,edge SOURCE=full-observer\" > \"$HEALTH_ROOT/cluster-admin-restricted-probes.txt\""},{"line":26,"text":"cat \"$HEALTH_ROOT/cluster-admin-observer.txt\""},{"line":27,"text":"cat \"$HEALTH_ROOT/cluster-admin-full-observer.txt\""},{"line":28,"text":"cat \"$HEALTH_ROOT/cluster-admin-restricted-probes.txt\""},{"line":29,"text":"[ \"$BAD\" -eq 0 ]"}],"uid":0},{"assignments":{"BAD":"$((BAD+1))","SCP_RC":"$?","SSH_RC":"$?","TMP":"/tmp/cluster-admin-webpanel-sync","TS":"$(date -u +%Y-%m-%dT%H:%M:%SZ)","dst":"\"$2\"","src":"\"$1\""},"bytes":1609,"commands":[{"line":11,"text":" cp \"$src\" \"$TMP/$dst\""},{"line":21,"text":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$TMP\"/*.txt debian@<PRIVATE_IPV4>:/tmp/"},{"line":24,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 debian@<PRIVATE_IPV4> 'sudo install -d -m 0755 /var/lib/homelab-health/pve01-pushed; for f in /tmp/cluster-admin-vm-mail-cloud-backup.txt /tmp/overall.txt /tmp/final-readiness.txt /tmp/cluster-admin-strict-final-seal.txt; do test -s \"$f\" && sudo install -m 0644 \"$f\" /var/lib/homelab-health/pve01-pushed/; done'"},{"line":29,"text":"cat /var/lib/homelab-health/cluster-admin-webpanel-sync.txt"}],"gid":0,"line_count":29,"mode":"0o755","path":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","path_literals":["/tmp/","/tmp/cluster-admin-strict-final-seal.txt","/tmp/cluster-admin-vm-mail-cloud-backup.txt","/tmp/cluster-admin-webpanel-sync","/tmp/final-readiness.txt","/tmp/overall.txt","/usr/bin/env","/var/lib/homelab-health/cluster-admin-strict-final-seal.txt","/var/lib/homelab-health/cluster-admin-vm-mail-cloud-backup.txt","/var/lib/homelab-health/cluster-admin-webpanel-sync.txt","/var/lib/homelab-health/final-readiness.txt","/var/lib/homelab-health/overall.txt","/var/lib/homelab-health/pve01-pushed","/var/lib/homelab-health/pve01-pushed/"],"publication_lines":[{"line":4,"text":"TMP=/tmp/cluster-admin-webpanel-sync"},{"line":7,"text":"copy_health() {"},{"line":13,"text":" echo \"STATUS=WARN TS=$TS TYPE=missing-health BAD=1 SRC=$src\" > \"$TMP/$dst\""},{"line":17,"text":"copy_health /var/lib/homelab-health/cluster-admin-vm-mail-cloud-backup.txt cluster-admin-vm-mail-cloud-backup.txt"},{"line":18,"text":"copy_health /var/lib/homelab-health/overall.txt overall.txt"},{"line":19,"text":"copy_health /var/lib/homelab-health/final-readiness.txt final-readiness.txt"},{"line":20,"text":"copy_health /var/lib/homelab-health/cluster-admin-strict-final-seal.txt cluster-admin-strict-final-seal.txt"},{"line":21,"text":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$TMP\"/*.txt debian@<PRIVATE_IPV4>:/tmp/"},{"line":22,"text":"SCP_RC=$?"},{"line":23,"text":"[ \"$SCP_RC\" = 0 ] || BAD=$((BAD+1))"},{"line":24,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 debian@<PRIVATE_IPV4> 'sudo install -d -m 0755 /var/lib/homelab-health/pve01-pushed; for f in /tmp/cluster-admin-vm-mail-cloud-backup.txt /tmp/overall.txt /tmp/final-readiness.txt /tmp/cluster-admin-strict-final-seal.txt; do test -s \"$f\" && sudo install -m 0644 \"$f\" /var/lib/homelab-health/pve01-pushed/; done'"},{"line":25,"text":"SSH_RC=$?"},{"line":26,"text":"[ \"$SSH_RC\" = 0 ] || BAD=$((BAD+1))"},{"line":27,"text":"if [ \"$BAD\" = 0 ]; then STATUS=OK; else STATUS=WARN; fi"},{"line":28,"text":"echo \"STATUS=$STATUS TS=$TS TYPE=cluster-admin-webpanel-sync BAD=$BAD VMID=180 IP=<PRIVATE_IPV4> SCP_RC=$SCP_RC SSH_RC=$SSH_RC PUSHED=cluster-admin-vm-mail-cloud-backup,overall,final-readiness,cluster-admin-strict-final-seal\" > /var/lib/homelab-health/cluster-admin-webpanel-sync.txt"},{"line":29,"text":"cat /var/lib/homelab-health/cluster-admin-webpanel-sync.txt"}],"referenced_files":[],"sha256":"2c57cca503cb0734e5114c2ab46b892a810bdc40c2baa7387b4094373db19276","source":[{"line":1,"text":"#!/usr/bin/env bash"},{"line":2,"text":"set +e"},{"line":3,"text":"TS=$(date -u +%Y-%m-%dT%H:%M:%SZ)"},{"line":4,"text":"TMP=/tmp/cluster-admin-webpanel-sync"},{"line":5,"text":"mkdir -p \"$TMP\""},{"line":6,"text":"BAD=0"},{"line":7,"text":"copy_health() {"},{"line":8,"text":" src=\"$1\""},{"line":9,"text":" dst=\"$2\""},{"line":10,"text":" if [ -s \"$src\" ]; then"},{"line":11,"text":" cp \"$src\" \"$TMP/$dst\""},{"line":12,"text":" else"},{"line":13,"text":" echo \"STATUS=WARN TS=$TS TYPE=missing-health BAD=1 SRC=$src\" > \"$TMP/$dst\""},{"line":14,"text":" BAD=$((BAD+1))"},{"line":15,"text":" fi"},{"line":16,"text":"}"},{"line":17,"text":"copy_health /var/lib/homelab-health/cluster-admin-vm-mail-cloud-backup.txt cluster-admin-vm-mail-cloud-backup.txt"},{"line":18,"text":"copy_health /var/lib/homelab-health/overall.txt overall.txt"},{"line":19,"text":"copy_health /var/lib/homelab-health/final-readiness.txt final-readiness.txt"},{"line":20,"text":"copy_health /var/lib/homelab-health/cluster-admin-strict-final-seal.txt cluster-admin-strict-final-seal.txt"},{"line":21,"text":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$TMP\"/*.txt debian@<PRIVATE_IPV4>:/tmp/"},{"line":22,"text":"SCP_RC=$?"},{"line":23,"text":"[ \"$SCP_RC\" = 0 ] || BAD=$((BAD+1))"},{"line":24,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 debian@<PRIVATE_IPV4> 'sudo install -d -m 0755 /var/lib/homelab-health/pve01-pushed; for f in /tmp/cluster-admin-vm-mail-cloud-backup.txt /tmp/overall.txt /tmp/final-readiness.txt /tmp/cluster-admin-strict-final-seal.txt; do test -s \"$f\" && sudo install -m 0644 \"$f\" /var/lib/homelab-health/pve01-pushed/; done'"},{"line":25,"text":"SSH_RC=$?"},{"line":26,"text":"[ \"$SSH_RC\" = 0 ] || BAD=$((BAD+1))"},{"line":27,"text":"if [ \"$BAD\" = 0 ]; then STATUS=OK; else STATUS=WARN; fi"},{"line":28,"text":"echo \"STATUS=$STATUS TS=$TS TYPE=cluster-admin-webpanel-sync BAD=$BAD VMID=180 IP=<PRIVATE_IPV4> SCP_RC=$SCP_RC SSH_RC=$SSH_RC PUSHED=cluster-admin-vm-mail-cloud-backup,overall,final-readiness,cluster-admin-strict-final-seal\" > /var/lib/homelab-health/cluster-admin-webpanel-sync.txt"},{"line":29,"text":"cat /var/lib/homelab-health/cluster-admin-webpanel-sync.txt"}],"uid":0}],"read_only":true,"rollback_restored":false,"rollback_started":false,"schema":12,"status":"OK","systemd_units":[{"bytes":235,"mode":"0o644","path":"/etc/systemd/system/homelab-cluster-admin-inventory-sync.service","sha256":"5237b68c736e77ff0108c77321bbe9b9cb7285e3a23d135361a43cd2fcb74264","source":[{"line":1,"text":"[Unit]"},{"line":2,"text":"Description=Export and securely sync nonsensitive cluster inventory to Cluster Admin"},{"line":3,"text":"After=network-online.target"},{"line":4,"text":"Wants=network-online.target"},{"line":5,"text":""},{"line":6,"text":"[Service]"},{"line":7,"text":"Type=oneshot"},{"line":8,"text":"ExecStart=/usr/local/sbin/homelab-cluster-admin-inventory-sync"}],"systemctl_show":"ExecStart={ path=/usr/local/sbin/homelab-cluster-admin-inventory-sync ; argv[]=/usr/local/sbin/homelab-cluster-admin-inventory-sync ; ignore_errors=no ; start_time=[Wed 2026-08-05 14:27:22 MSK] ; stop_time=[Wed 2026-08-05 14:27:24 MSK] ; pid=2627139 ; code=exited ; status=0 }\nWorkingDirectory=\nTriggers=\nTriggeredBy=homelab-cluster-admin-inventory-sync.timer\nLoadState=loaded\nActiveState=inactive\nSubState=dead\nFragmentPath=/etc/systemd/system/homelab-cluster-admin-inventory-sync.service\nDropInPaths=\nUnitFileState=static\n","systemctl_show_rc":0,"systemctl_show_stderr":"","systemd_verify_rc":0,"systemd_verify_stderr":"/etc/systemd/system/homelab-storage-capacity.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-evidence-catalog.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-docker-health.service:3: Invalid URL, ignoring: internal-homelab-evidence\n","systemd_verify_stdout":"","unit":"homelab-cluster-admin-inventory-sync.service"},{"bytes":235,"mode":"0o644","path":"/etc/systemd/system/homelab-cluster-admin-inventory-sync.timer","sha256":"4c9f51447b5d8f75fa05b494390e74089b6a2880ce899325643d47be4ce2180e","source":[{"line":1,"text":"[Unit]"},{"line":2,"text":"Description=Periodic Cluster Admin inventory synchronization"},{"line":3,"text":""},{"line":4,"text":"[Timer]"},{"line":5,"text":"OnBootSec=45s"},{"line":6,"text":"OnUnitActiveSec=2min"},{"line":7,"text":"RandomizedDelaySec=15s"},{"line":8,"text":"Persistent=true"},{"line":9,"text":"Unit=homelab-cluster-admin-inventory-sync.service"},{"line":10,"text":""},{"line":11,"text":"[Install]"},{"line":12,"text":"WantedBy=timers.target"}],"systemctl_show":"Triggers=homelab-cluster-admin-inventory-sync.service\nTriggeredBy=\nLoadState=loaded\nActiveState=active\nSubState=waiting\nFragmentPath=/etc/systemd/system/homelab-cluster-admin-inventory-sync.timer\nDropInPaths=\nUnitFileState=enabled\n","systemctl_show_rc":0,"systemctl_show_stderr":"","systemd_verify_rc":0,"systemd_verify_stderr":"/etc/systemd/system/homelab-storage-capacity.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-evidence-catalog.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-docker-health.service:3: Invalid URL, ignoring: internal-homelab-evidence\n","systemd_verify_stdout":"","unit":"homelab-cluster-admin-inventory-sync.timer"},{"bytes":162,"mode":"0o644","path":"/etc/systemd/system/homelab-cluster-admin-webpanel-sync.service","sha256":"d8091d4bb52513929cd7df742532977f70e08ee60ab8762a8f027e5863612c3b","source":[{"line":1,"text":"[Unit]"},{"line":2,"text":"Description=Push public pve01 health files to cluster-admin webpanel"},{"line":3,"text":""},{"line":4,"text":"[Service]"},{"line":5,"text":"Type=oneshot"},{"line":6,"text":"ExecStart=/usr/local/sbin/homelab-cluster-admin-webpanel-sync"}],"systemctl_show":"ExecStart={ path=/usr/local/sbin/homelab-cluster-admin-webpanel-sync ; argv[]=/usr/local/sbin/homelab-cluster-admin-webpanel-sync ; ignore_errors=no ; start_time=[Wed 2026-08-05 14:29:26 MSK] ; stop_time=[n/a] ; pid=2628024 ; code=(null) ; status=0/0 }\nWorkingDirectory=\nTriggers=\nTriggeredBy=homelab-cluster-admin-webpanel-sync.timer\nLoadState=loaded\nActiveState=activating\nSubState=start\nFragmentPath=/etc/systemd/system/homelab-cluster-admin-webpanel-sync.service\nDropInPaths=\nUnitFileState=static\n","systemctl_show_rc":0,"systemctl_show_stderr":"","systemd_verify_rc":0,"systemd_verify_stderr":"/etc/systemd/system/homelab-storage-capacity.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-evidence-catalog.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-docker-health.service:3: Invalid URL, ignoring: internal-homelab-evidence\n","systemd_verify_stdout":"","unit":"homelab-cluster-admin-webpanel-sync.service"},{"bytes":169,"mode":"0o644","path":"/etc/systemd/system/homelab-cluster-admin-webpanel-sync.timer","sha256":"ef420cea1b506ff7ea6dbd02c1b19167e5771030f4f52eb850aa05b7e3eed094","source":[{"line":1,"text":"[Unit]"},{"line":2,"text":"Description=Refresh pushed health files for cluster-admin webpanel"},{"line":3,"text":""},{"line":4,"text":"[Timer]"},{"line":5,"text":"OnBootSec=2min"},{"line":6,"text":"OnUnitActiveSec=1min"},{"line":7,"text":"Persistent=true"},{"line":8,"text":""},{"line":9,"text":"[Install]"},{"line":10,"text":"WantedBy=timers.target"}],"systemctl_show":"Triggers=homelab-cluster-admin-webpanel-sync.service\nTriggeredBy=\nLoadState=loaded\nActiveState=active\nSubState=running\nFragmentPath=/etc/systemd/system/homelab-cluster-admin-webpanel-sync.timer\nDropInPaths=\nUnitFileState=enabled\n","systemctl_show_rc":0,"systemctl_show_stderr":"","systemd_verify_rc":0,"systemd_verify_stderr":"/etc/systemd/system/homelab-storage-capacity.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-evidence-catalog.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-docker-health.service:3: Invalid URL, ignoring: internal-homelab-evidence\n","systemd_verify_stdout":"","unit":"homelab-cluster-admin-webpanel-sync.timer"},{"bytes":142,"mode":"0o644","path":"/etc/systemd/system/homelab-cluster-admin-pull.service","sha256":"4a30f00113b7c68478f1cd2c8be959aed1931c55a0c7f7c99fda06cb742b914e","source":[{"line":1,"text":"[Unit]"},{"line":2,"text":"Description=Pull cluster-admin observer health into pve01"},{"line":3,"text":""},{"line":4,"text":"[Service]"},{"line":5,"text":"Type=oneshot"},{"line":6,"text":"ExecStart=/usr/local/sbin/homelab-cluster-admin-pull"}],"systemctl_show":"ExecStart={ path=/usr/local/sbin/homelab-cluster-admin-pull ; argv[]=/usr/local/sbin/homelab-cluster-admin-pull ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\nWorkingDirectory=\nTriggers=\nTriggeredBy=\nLoadState=loaded\nActiveState=inactive\nSubState=dead\nFragmentPath=/etc/systemd/system/homelab-cluster-admin-pull.service\nDropInPaths=\nUnitFileState=static\n","systemctl_show_rc":0,"systemctl_show_stderr":"","systemd_verify_rc":0,"systemd_verify_stderr":"/etc/systemd/system/homelab-storage-capacity.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-evidence-catalog.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-docker-health.service:3: Invalid URL, ignoring: internal-homelab-evidence\n","systemd_verify_stdout":"","unit":"homelab-cluster-admin-pull.service"},{"bytes":145,"mode":"0o644","path":"/etc/systemd/system/homelab-cluster-admin-pull.timer","sha256":"5e4936d1379c96088b17816a7aba42d77051009bd0938a253b3487bcb3b658a6","source":[{"line":1,"text":"[Unit]"},{"line":2,"text":"Description=Run cluster-admin central pull"},{"line":3,"text":""},{"line":4,"text":"[Timer]"},{"line":5,"text":"OnBootSec=4min"},{"line":6,"text":"OnUnitActiveSec=5min"},{"line":7,"text":"Persistent=true"},{"line":8,"text":""},{"line":9,"text":"[Install]"},{"line":10,"text":"WantedBy=timers.target"}],"systemctl_show":"Triggers=homelab-cluster-admin-pull.service\nTriggeredBy=\nLoadState=loaded\nActiveState=inactive\nSubState=dead\nFragmentPath=/etc/systemd/system/homelab-cluster-admin-pull.timer\nDropInPaths=\nUnitFileState=disabled\n","systemctl_show_rc":0,"systemctl_show_stderr":"","systemd_verify_rc":0,"systemd_verify_stderr":"/etc/systemd/system/homelab-storage-capacity.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-evidence-catalog.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-docker-health.service:3: Invalid URL, ignoring: internal-homelab-evidence\n","systemd_verify_stdout":"","unit":"homelab-cluster-admin-pull.timer"},{"bytes":231,"mode":"0o644","path":"/etc/systemd/system/homelab-cluster-admin-incident-engine-backup.service","sha256":"bc7f9010fd6e97dff3bbedd2fd2088d65836a1a842cbd6d465163251e2a7db31","source":[{"line":1,"text":"[Unit]"},{"line":2,"text":"Description=Cluster Admin Incident Engine encrypted two-cloud backup"},{"line":3,"text":"After=network-online.target"},{"line":4,"text":"Wants=network-online.target"},{"line":5,"text":""},{"line":6,"text":"[Service]"},{"line":7,"text":"Type=oneshot"},{"line":8,"text":"ExecStart=/usr/local/sbin/homelab-cluster-admin-incident-engine-backup-run"}],"systemctl_show":"ExecStart={ path=/usr/local/sbin/homelab-cluster-admin-incident-engine-backup-run ; argv[]=/usr/local/sbin/homelab-cluster-admin-incident-engine-backup-run ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\nWorkingDirectory=\nTriggers=\nTriggeredBy=\nLoadState=loaded\nActiveState=inactive\nSubState=dead\nFragmentPath=/etc/systemd/system/homelab-cluster-admin-incident-engine-backup.service\nDropInPaths=\nUnitFileState=static\n","systemctl_show_rc":0,"systemctl_show_stderr":"","systemd_verify_rc":0,"systemd_verify_stderr":"/etc/systemd/system/homelab-storage-capacity.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-evidence-catalog.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-docker-health.service:3: Invalid URL, ignoring: internal-homelab-evidence\n","systemd_verify_stdout":"","unit":"homelab-cluster-admin-incident-engine-backup.service"},{"bytes":238,"mode":"0o644","path":"/etc/systemd/system/homelab-cluster-admin-incident-engine-backup.timer","sha256":"7b34396b19b8d9139e3f59d7a03a5bbfe08440c95d6a1d85031057665a724d54","source":[{"line":1,"text":"[Unit]"},{"line":2,"text":"Description=Daily Cluster Admin Incident Engine two-cloud backup"},{"line":3,"text":""},{"line":4,"text":"[Timer]"},{"line":5,"text":"OnCalendar=*-*-* 07:25:00"},{"line":6,"text":"RandomizedDelaySec=15m"},{"line":7,"text":"Persistent=true"},{"line":8,"text":"Unit=homelab-cluster-admin-incident-engine-backup.service"},{"line":9,"text":""},{"line":10,"text":"[Install]"},{"line":11,"text":"WantedBy=timers.target"}],"systemctl_show":"Triggers=homelab-cluster-admin-incident-engine-backup.service\nTriggeredBy=\nLoadState=loaded\nActiveState=inactive\nSubState=dead\nFragmentPath=/etc/systemd/system/homelab-cluster-admin-incident-engine-backup.timer\nDropInPaths=\nUnitFileState=disabled\n","systemctl_show_rc":0,"systemctl_show_stderr":"","systemd_verify_rc":0,"systemd_verify_stderr":"/etc/systemd/system/homelab-storage-capacity.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-evidence-catalog.service:3: Invalid URL, ignoring: internal-homelab-evidence\n/etc/systemd/system/homelab-docker-health.service:3: Invalid URL, ignoring: internal-homelab-evidence\n","systemd_verify_stdout":"","unit":"homelab-cluster-admin-incident-engine-backup.timer"}],"transaction_blueprint":{"candidate_components":["/usr/local/sbin/homelab-cluster-admin-update-visibility","/etc/systemd/system/homelab-cluster-admin-update-visibility.service","/etc/systemd/system/homelab-cluster-admin-update-visibility.timer","atomic patch to proven Cluster Admin publication/inventory anchor"],"exact_source_preconditions":{"/usr/local/sbin/homelab-cluster-admin-incident-engine-backup-run":"a79c2a72b1fbdc13506b6db8b0ea790376dc20db8003961c5b44935d28f0c5ae","/usr/local/sbin/homelab-cluster-admin-inventory-sync":"00814787de40176e025097b353a67c26edcd298a4126d2375333e83df4f37170","/usr/local/sbin/homelab-cluster-admin-pull":"00913dbf4ef82cddd82850be7f2445924b7e75e537e7e5f6cef5785b05307d23","/usr/local/sbin/homelab-cluster-admin-webpanel-sync":"2c57cca503cb0734e5114c2ab46b892a810bdc40c2baa7387b4094373db19276"},"publication_anchor_count":48,"publication_anchors":[{"line":15,"script":"/usr/local/sbin/homelab-cluster-admin-incident-engine-backup-run","text":"DUMP_SIZE=\"$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n rm -f \\\"$REMOTE_DUMP\\\"; sudo -n -u clusteradmin pg_dump --format=custom --no-owner --no-privileges --file=\\\"$REMOTE_DUMP\\\" clusteradmin; sudo -n test -s \\\"$REMOTE_DUMP\\\"; sudo -n -u clusteradmin pg_restore --list \\\"$REMOTE_DUMP\\\" >/dev/null; sudo -n chown debian:debian \\\"$REMOTE_DUMP\\\"; sudo -n chmod 600 \\\"$REMOTE_DUMP\\\"; stat -c %s \\\"$REMOTE_DUMP\\\"\")\""},{"line":17,"script":"/usr/local/sbin/homelab-cluster-admin-incident-engine-backup-run","text":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE:$REMOTE_DUMP\" \"$STAGE/payload/clusteradmin.pgdump\""},{"line":18,"script":"/usr/local/sbin/homelab-cluster-admin-incident-engine-backup-run","text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"rm -f \\\"$REMOTE_DUMP\\\"\""},{"line":21,"script":"/usr/local/sbin/homelab-cluster-admin-incident-engine-backup-run","text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n tar -C / -czf - opt/cluster-admin-incident-engine etc/cluster-admin-incident-engine etc/systemd/system/cluster-admin-incident-engine.service etc/systemd/system/cluster-admin-incident-engine-collector.service etc/systemd/system/cluster-admin-incident-engine-collector.timer var/lib/cluster-admin-incident-engine\" > \"$STAGE/runtime.tgz\""},{"line":25,"script":"/usr/local/sbin/homelab-cluster-admin-incident-engine-backup-run","text":"<REDACTED_SECRET_LINE>"},{"line":3,"script":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","text":"LOCK=/run/homelab-cluster-admin-inventory-sync.lock"},{"line":6,"script":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","text":"LOCAL=/var/lib/homelab-cluster-admin-export/inventory.json"},{"line":8,"script":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","text":"REMOTE_FILE=/var/lib/cluster-admin-incident-engine/incoming/inventory.json"},{"line":9,"script":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","text":"REMOTE_TMP=\"/tmp/cluster-admin-inventory-${RANDOM}-$$.json\""},{"line":10,"script":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","text":"/usr/bin/python3 /usr/local/sbin/homelab-cluster-admin-inventory-export"},{"line":11,"script":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","text":"/usr/bin/python3 -m json.tool \"$LOCAL\" >/dev/null"},{"line":13,"script":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","text":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$LOCAL\" \"$REMOTE:$REMOTE_TMP\""},{"line":14,"script":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"python3 -m json.tool $REMOTE_TMP >/dev/null\""},{"line":15,"script":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n install -d -o clusteradmin -g clusteradmin -m 750 /var/lib/cluster-admin-incident-engine/incoming && sudo -n install -o clusteradmin -g clusteradmin -m 640 $REMOTE_TMP $REMOTE_FILE\""},{"line":16,"script":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","text":"REMOTE_SHA=\"$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"sudo -n sha256sum $REMOTE_FILE\" | cut -d\" \" -f1)\""},{"line":19,"script":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 \"$REMOTE\" \"rm -f $REMOTE_TMP\""},{"line":20,"script":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","text":"echo LOCAL_INVENTORY_SHA256=\"$LOCAL_SHA\""},{"line":21,"script":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","text":"echo REMOTE_INVENTORY_SHA256=\"$REMOTE_SHA\""},{"line":22,"script":"/usr/local/sbin/homelab-cluster-admin-inventory-sync","text":"echo CLUSTER_ADMIN_INVENTORY_SYNC=OK"},{"line":5,"script":"/usr/local/sbin/homelab-cluster-admin-pull","text":"HEALTH_ROOT=/var/lib/homelab-health"},{"line":6,"script":"/usr/local/sbin/homelab-cluster-admin-pull","text":"mkdir -p \"$ROOT\" \"$HEALTH_ROOT\""},{"line":7,"script":"/usr/local/sbin/homelab-cluster-admin-pull","text":"REMOTE=$(ssh -n -o BatchMode=yes -o ConnectTimeout=8 debian@<PRIVATE_IPV4> 'sudo /opt/homelab-cluster-admin/cluster-observer.sh >/dev/null 2>&1 || true; sudo /opt/homelab-cluster-admin/full-observer.sh >/dev/null 2>&1 || true; printf \"__OBS__\\\\n\"; cat /var/lib/homelab-health/cluster-admin-observer.txt; printf \"__FULL__\\\\n\"; cat /var/lib/homelab-health/cluster-admin-full-observer.txt' 2>/tmp/homelab-cluster-admin-pull.err)"},{"line":12,"script":"/usr/local/sbin/homelab-cluster-admin-pull","text":"printf \"%s\\n\" \"$OBS\" | grep -q \"^STATUS=OK\" || OBS_BAD=1"},{"line":13,"script":"/usr/local/sbin/homelab-cluster-admin-pull","text":"printf \"%s\\n\" \"$FULL\" | grep -q \"^STATUS=OK\" || FULL_BAD=1"},{"line":21,"script":"/usr/local/sbin/homelab-cluster-admin-pull","text":"OBS_STATUS=$([ \"$OBS_BAD\" -eq 0 ] && [ \"$RC\" -eq 0 ] && echo OK || echo WARN)"},{"line":22,"script":"/usr/local/sbin/homelab-cluster-admin-pull","text":"FULL_STATUS=$([ \"$FULL_BAD\" -eq 0 ] && [ \"$RC\" -eq 0 ] && echo OK || echo WARN)"},{"line":23,"script":"/usr/local/sbin/homelab-cluster-admin-pull","text":"echo \"STATUS=$OBS_STATUS TS=$TS TYPE=cluster-admin-central-pull BAD=$OBS_BAD VMID=180 IP=<PRIVATE_IPV4> SSH_RC=$RC OBSERVER_STATUS=$OBS_STATUS REPORT=$ROOT/observer-remote-latest.txt\" > \"$HEALTH_ROOT/cluster-admin-observer.txt\""},{"line":24,"script":"/usr/local/sbin/homelab-cluster-admin-pull","text":"echo \"STATUS=$FULL_STATUS TS=$TS TYPE=cluster-admin-full-observer-central BAD=$FULL_BAD WARN=0 VMID=180 PULL_RC=$RC FULL_STATUS=$FULL_STATUS PROBE_OK=${PROBE_OK:-0} PROBE_BAD=${PROBE_BAD:-1} REPORT=$ROOT/full-observer-central-latest.md\" > \"$HEALTH_ROOT/cluster-admin-full-observer.txt\""},{"line":25,"script":"/usr/local/sbin/homelab-cluster-admin-pull","text":"echo \"STATUS=$FULL_STATUS TS=$TS TYPE=cluster-admin-restricted-probes BAD=$FULL_BAD VMID=180 MODE=FORCED_COMMAND_READONLY_CURRENT PROBE_OK=${PROBE_OK:-0} PROBE_BAD=${PROBE_BAD:-1} TARGETS=pve01,pve02,pve03,edge SOURCE=full-observer\" > \"$HEALTH_ROOT/cluster-admin-restricted-probes.txt\""},{"line":26,"script":"/usr/local/sbin/homelab-cluster-admin-pull","text":"cat \"$HEALTH_ROOT/cluster-admin-observer.txt\""},{"line":27,"script":"/usr/local/sbin/homelab-cluster-admin-pull","text":"cat \"$HEALTH_ROOT/cluster-admin-full-observer.txt\""},{"line":28,"script":"/usr/local/sbin/homelab-cluster-admin-pull","text":"cat \"$HEALTH_ROOT/cluster-admin-restricted-probes.txt\""},{"line":4,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"TMP=/tmp/cluster-admin-webpanel-sync"},{"line":7,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"copy_health() {"},{"line":13,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":" echo \"STATUS=WARN TS=$TS TYPE=missing-health BAD=1 SRC=$src\" > \"$TMP/$dst\""},{"line":17,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"copy_health /var/lib/homelab-health/cluster-admin-vm-mail-cloud-backup.txt cluster-admin-vm-mail-cloud-backup.txt"},{"line":18,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"copy_health /var/lib/homelab-health/overall.txt overall.txt"},{"line":19,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"copy_health /var/lib/homelab-health/final-readiness.txt final-readiness.txt"},{"line":20,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"copy_health /var/lib/homelab-health/cluster-admin-strict-final-seal.txt cluster-admin-strict-final-seal.txt"},{"line":21,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$TMP\"/*.txt debian@<PRIVATE_IPV4>:/tmp/"},{"line":22,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"SCP_RC=$?"},{"line":23,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"[ \"$SCP_RC\" = 0 ] || BAD=$((BAD+1))"},{"line":24,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 debian@<PRIVATE_IPV4> 'sudo install -d -m 0755 /var/lib/homelab-health/pve01-pushed; for f in /tmp/cluster-admin-vm-mail-cloud-backup.txt /tmp/overall.txt /tmp/final-readiness.txt /tmp/cluster-admin-strict-final-seal.txt; do test -s \"$f\" && sudo install -m 0644 \"$f\" /var/lib/homelab-health/pve01-pushed/; done'"},{"line":25,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"SSH_RC=$?"},{"line":26,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"[ \"$SSH_RC\" = 0 ] || BAD=$((BAD+1))"},{"line":27,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"if [ \"$BAD\" = 0 ]; then STATUS=OK; else STATUS=WARN; fi"},{"line":28,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"echo \"STATUS=$STATUS TS=$TS TYPE=cluster-admin-webpanel-sync BAD=$BAD VMID=180 IP=<PRIVATE_IPV4> SCP_RC=$SCP_RC SSH_RC=$SSH_RC PUSHED=cluster-admin-vm-mail-cloud-backup,overall,final-readiness,cluster-admin-strict-final-seal\" > /var/lib/homelab-health/cluster-admin-webpanel-sync.txt"},{"line":29,"script":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","text":"cat /var/lib/homelab-health/cluster-admin-webpanel-sync.txt"}],"publication_anchors_by_script":{"homelab-cluster-admin-incident-engine-backup-run":5,"homelab-cluster-admin-inventory-sync":14,"homelab-cluster-admin-pull":13,"homelab-cluster-admin-webpanel-sync":16},"ready_for_atomic_transaction":true,"referenced_existing_targets":[{"bytes":5290,"is_dir":false,"is_file":true,"literal":"/usr/local/sbin/homelab-cluster-admin-inventory-export","mode":"0o750","resolved":"/usr/local/sbin/homelab-cluster-admin-inventory-export","sha256":"725b7ad80f6a0ce11096bc4d3f8ae615865f6031a70123dd1890b0a3e114c04d"}],"required_transaction_properties":["re-read and re-hash all exact preconditions","build all candidates under one temporary directory","compile/check scripts and systemd-analyze verify units","run candidate collector in isolated temporary output directory","byte-for-byte backup every existing file before replacement","atomic os.replace for files and atomic symlink/unit enablement changes","daemon-reload only after all file replacements succeed","verify timer, service, generated JSON/HTML and Cluster Admin publication","restore every original byte and prior unit state on any failure"],"unit_preconditions":{"/etc/systemd/system/homelab-cluster-admin-incident-engine-backup.service":"bc7f9010fd6e97dff3bbedd2fd2088d65836a1a842cbd6d465163251e2a7db31","/etc/systemd/system/homelab-cluster-admin-incident-engine-backup.timer":"7b34396b19b8d9139e3f59d7a03a5bbfe08440c95d6a1d85031057665a724d54","/etc/systemd/system/homelab-cluster-admin-inventory-sync.service":"5237b68c736e77ff0108c77321bbe9b9cb7285e3a23d135361a43cd2fcb74264","/etc/systemd/system/homelab-cluster-admin-inventory-sync.timer":"4c9f51447b5d8f75fa05b494390e74089b6a2880ce899325643d47be4ce2180e","/etc/systemd/system/homelab-cluster-admin-pull.service":"4a30f00113b7c68478f1cd2c8be959aed1931c55a0c7f7c99fda06cb742b914e","/etc/systemd/system/homelab-cluster-admin-pull.timer":"5e4936d1379c96088b17816a7aba42d77051009bd0938a253b3487bcb3b658a6","/etc/systemd/system/homelab-cluster-admin-webpanel-sync.service":"d8091d4bb52513929cd7df742532977f70e08ee60ab8762a8f027e5863612c3b","/etc/systemd/system/homelab-cluster-admin-webpanel-sync.timer":"ef420cea1b506ff7ea6dbd02c1b19167e5771030f4f52eb850aa05b7e3eed094"}},"v11_exact_result":{"capsule_sha256":"c32730db30f2b2c16368ef4e4d873f75cf5ee3cf8a5b66aabf4636bf4173c706","changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V11-SOURCE-MAP-READ-ONLY-20260805T111000Z","control_plane_error":{"message":"existing runner returned a different rc after writing its public artifact; runtime publication or wrapper completion failed","type":"RunnerWrapperMismatch"},"identity_confirmed":true,"mutation_outcome":"NO_MUTATION","output_bytes":159415,"output_sha256":"5392567d03d9794b8d677b56843b620f0f15f5515e1b6d7707ea5ec3b602fda5","output_source":"runner_json","output_truncated_in_json":false,"result_contract":{"changes_made":false,"cluster_nodes_reachable":3,"cluster_nodes_total":3,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V11-SOURCE-MAP-READ-ONLY-20260805T111000Z","command_rc":0,"control_plane_error":null,"coverage_complete":true,"detected_sync_tools":["scp","ssh"],"existing_update_logic_detected":true,"mutation_outcome":"NO_MUTATION","primary_script_bytes":{"homelab-cluster-admin-incident-engine-backup-run":2640,"homelab-cluster-admin-inventory-sync":1301,"homelab-cluster-admin-pull":2501,"homelab-cluster-admin-webpanel-sync":1609},"primary_script_count":4,"primary_script_manifest_sha256":"9783967a04ca6f561d361c3b6a4a7ea45a32961f1e232303e279bfcae6c38921","primary_script_sha256":{"homelab-cluster-admin-incident-engine-backup-run":"a79c2a72b1fbdc13506b6db8b0ea790376dc20db8003961c5b44935d28f0c5ae","homelab-cluster-admin-inventory-sync":"00814787de40176e025097b353a67c26edcd298a4126d2375333e83df4f37170","homelab-cluster-admin-pull":"00913dbf4ef82cddd82850be7f2445924b7e75e537e7e5f6cef5785b05307d23","homelab-cluster-admin-webpanel-sync":"2c57cca503cb0734e5114c2ab46b892a810bdc40c2baa7387b4094373db19276"},"publication_write_path_count":16,"rc":0,"ready_for_atomic_candidate_build":true,"related_file_count":180,"related_file_manifest_sha256":"f05ca871862daed14a4d453e98bad2f8988eb9f59b48a1350189dc31e27db5e6","report_bytes":157189,"report_sha256":"2b6daa2459cfaabd9e5b24dd0386b096829cdb712a997670416fe4c42fbacfe0","rollback_restored":false,"rollback_started":false,"status":"OK","v10_exact_error_type":"JSONDecodeError","v10_exact_result_identity_confirmed":true,"v10_output_sha256":"8c93138303597fbbb8a579d7db343b32cfe3e7edf074d0425bd14844eb9967df","v10_runner_json_sha256":"7673962c52d217c1ee7b4173c07defbd43ab29a74ebc455d18b490fe386ca1c2","v10_runner_text_sha256":"b17921aa090892f1785523f8afd1796390d7bdc9521fab1ca9517d430d19c944","v9_exact_result_identity_confirmed":true,"v9_output_sha256":"4af4ea8924aa73eb833e6bca6bb6592947c9d182473c80829bcb0ab496cacf98","v9_runner_json_sha256":"ebb1f5b5f0ceec5e68b9c05ca0d86b6605a12fa2a5e4f1bd9322d00802290269","v9_runner_text_sha256":"71d9fcf01ced23dc2ad486e32d726e0dba1abf6038fec21793bed8282484e31d","version":1,"webpanel_source_candidate_count":0},"rollback_restored":null,"rollback_started":false,"runner_document_rc":0,"runner_json_sha256":"638b92d7dc399d0c274c36f0b386cfff227e31c8b248b758c784a7b1a694fd45","runner_rc":75,"runner_status":"OK","runner_text_sha256":"212049d3b95be8d32bc7a027be42632d3fef6c61f83882b917096221dd1a27e6","runner_wrapper_matches_document":false,"state_document_sha256":"5c48e6467b3483104b5c92368cba957269d67115acab9b053c56158dba4ab716","state_path_sha256":"0d1aa6df80ef33edf38f5267e9673940c5ea161e3802217236bd9130ea26c2ac","state_status":"FAIL"}}
OUTPUT_END
CHAT_OUTPUT_END