From 238d0e447935e1d9287f7afc80659997a449735b Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Wed, 5 Aug 2026 11:30:05 +0000 Subject: [PATCH] runtime: publish HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z --- ...SUMMARY-READ-ONLY-V2-20260805T112400Z.json | 38 +++++++++++++++++++ ...-SUMMARY-READ-ONLY-V2-20260805T112400Z.txt | 34 +++++++++++++++++ runtime/latest.json | 22 +++++------ runtime/latest.txt | 20 +++++----- 4 files changed, 93 insertions(+), 21 deletions(-) create mode 100644 runtime/history/HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z.json create mode 100644 runtime/history/HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z.txt diff --git a/runtime/history/HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z.json b/runtime/history/HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z.json new file mode 100644 index 0000000..d003e83 --- /dev/null +++ b/runtime/history/HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z", + "status": "FAIL", + "rc": 1, + "host": "pve01", + "mode": "verify", + "component": "skladchik-reauth-preflight-exact-summary-read-only-v2", + "started_at_utc": "2026-08-05T11:30:05Z", + "finished_at_utc": "2026-08-05T11:30:05Z", + "reference_register_checked": true, + "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", + "error_register_checked": true, + "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", + "command_sha256": "747ad38240c87207928cf0a38296c6533e98e5d5602002c592be539b38a01dd7", + "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": 1, + "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": "c69e2604663f43778d482479b6b5b8d19ac5aa7c015604fdffdc8f587f54f1ef", + "sanitized_output_sha256": "c69e2604663f43778d482479b6b5b8d19ac5aa7c015604fdffdc8f587f54f1ef", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z\",\"command_rc\":1,\"mutation_outcome\":\"NO_MUTATION\",\"output_truncated_in_json\":false,\"rc\":1,\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"FAIL\",\"version\":1}\n{\"changes_made\":false,\"command_id\":\"HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z\",\"command_rc\":1,\"error\":\"task payload JSON stream decode failed at offset=11967: Expecting value\",\"error_type\":\"RuntimeError\",\"mutation_outcome\":\"NO_MUTATION\",\"output_truncated_in_json\":false,\"rc\":1,\"read_only\":true,\"rollback_restored\":null,\"rollback_started\":false,\"schema\":1,\"status\":\"FAIL\"}\n" +} diff --git a/runtime/history/HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z.txt b/runtime/history/HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z.txt new file mode 100644 index 0000000..cd0cfa8 --- /dev/null +++ b/runtime/history/HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z.txt @@ -0,0 +1,34 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z +STATUS=FAIL +RC=1 +HOST=pve01 +MODE=verify +COMPONENT=skladchik-reauth-preflight-exact-summary-read-only-v2 +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 +COMMAND_SHA256=747ad38240c87207928cf0a38296c6533e98e5d5602002c592be539b38a01dd7 +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=1 +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=c69e2604663f43778d482479b6b5b8d19ac5aa7c015604fdffdc8f587f54f1ef +SANITIZED_OUTPUT_SHA256=c69e2604663f43778d482479b6b5b8d19ac5aa7c015604fdffdc8f587f54f1ef +OUTPUT_BEGIN +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z","command_rc":1,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":1,"rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1} +{"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z","command_rc":1,"error":"task payload JSON stream decode failed at offset=11967: Expecting value","error_type":"RuntimeError","mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":1,"read_only":true,"rollback_restored":null,"rollback_started":false,"schema":1,"status":"FAIL"} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 3b4ea09..d003e83 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "HOMELAB-CLUSTER-ADMIN-UPDATES-V12-EXACT-SOURCES-READ-ONLY-20260805T112600Z", - "status": "OK", - "rc": 0, + "command_id": "HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z", + "status": "FAIL", + "rc": 1, "host": "pve01", "mode": "verify", - "component": "homelab-cluster-admin-update-visibility", - "started_at_utc": "2026-08-05T11:29:26Z", - "finished_at_utc": "2026-08-05T11:29:27Z", + "component": "skladchik-reauth-preflight-exact-summary-read-only-v2", + "started_at_utc": "2026-08-05T11:30:05Z", + "finished_at_utc": "2026-08-05T11:30:05Z", "reference_register_checked": true, "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", "error_register_checked": true, "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", - "command_sha256": "4d9db09bb3348dda0505b55ec6f7557acc4d713b63fd53723330fc518f9d5b2d", + "command_sha256": "747ad38240c87207928cf0a38296c6533e98e5d5602002c592be539b38a01dd7", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -21,7 +21,7 @@ "result_contract_valid": true, "result_contract_status": null, "result_contract_error": null, - "command_rc": 0, + "command_rc": 1, "changes_made": false, "rollback_started": false, "rollback_restored": null, @@ -30,9 +30,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "fd1c004e8835b870b2232c2e20a1735688d171426ed97840dfbfd6d86f9c3852", - "sanitized_output_sha256": "fd1c004e8835b870b2232c2e20a1735688d171426ed97840dfbfd6d86f9c3852", + "raw_evidence_sha256": "c69e2604663f43778d482479b6b5b8d19ac5aa7c015604fdffdc8f587f54f1ef", + "sanitized_output_sha256": "c69e2604663f43778d482479b6b5b8d19ac5aa7c015604fdffdc8f587f54f1ef", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "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}\n{\"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@\\\"\",\"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\":\"\"}],\"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\":\"\"}],\"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@\\\"\"},{\"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\":\"\"},{\"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@\",\"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@\"},{\"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@ '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@ '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@ '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= 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@ '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= 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@:/tmp/\"},{\"line\":24,\"text\":\"ssh -n -o BatchMode=yes -o ConnectTimeout=8 debian@ '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@:/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@ '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= 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@:/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@ '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= 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\":\"\"},{\"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@ '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= 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@:/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@ '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= 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\"}}\n" + "output": "HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z\",\"command_rc\":1,\"mutation_outcome\":\"NO_MUTATION\",\"output_truncated_in_json\":false,\"rc\":1,\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"FAIL\",\"version\":1}\n{\"changes_made\":false,\"command_id\":\"HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z\",\"command_rc\":1,\"error\":\"task payload JSON stream decode failed at offset=11967: Expecting value\",\"error_type\":\"RuntimeError\",\"mutation_outcome\":\"NO_MUTATION\",\"output_truncated_in_json\":false,\"rc\":1,\"read_only\":true,\"rollback_restored\":null,\"rollback_started\":false,\"schema\":1,\"status\":\"FAIL\"}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 3010fb9..cd0cfa8 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,22 +1,22 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=HOMELAB-CLUSTER-ADMIN-UPDATES-V12-EXACT-SOURCES-READ-ONLY-20260805T112600Z -STATUS=OK -RC=0 +COMMAND_ID=HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z +STATUS=FAIL +RC=1 HOST=pve01 MODE=verify -COMPONENT=homelab-cluster-admin-update-visibility +COMPONENT=skladchik-reauth-preflight-exact-summary-read-only-v2 REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 -COMMAND_SHA256=4d9db09bb3348dda0505b55ec6f7557acc4d713b63fd53723330fc518f9d5b2d +COMMAND_SHA256=747ad38240c87207928cf0a38296c6533e98e5d5602002c592be539b38a01dd7 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 +COMMAND_RC=1 CHANGES_MADE=false ROLLBACK_STARTED=false ROLLBACK_RESTORED=null @@ -24,11 +24,11 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=fd1c004e8835b870b2232c2e20a1735688d171426ed97840dfbfd6d86f9c3852 -SANITIZED_OUTPUT_SHA256=fd1c004e8835b870b2232c2e20a1735688d171426ed97840dfbfd6d86f9c3852 +RAW_EVIDENCE_SHA256=c69e2604663f43778d482479b6b5b8d19ac5aa7c015604fdffdc8f587f54f1ef +SANITIZED_OUTPUT_SHA256=c69e2604663f43778d482479b6b5b8d19ac5aa7c015604fdffdc8f587f54f1ef 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@\"","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":""}],"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":""}],"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@\""},{"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":""},{"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@","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@"},{"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@ '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@ '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@ '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= 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@ '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= 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@:/tmp/"},{"line":24,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 debian@ '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@:/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@ '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= 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@:/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@ '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= 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":""},{"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@ '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= 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@:/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@ '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= 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"}} +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z","command_rc":1,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":1,"rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1} +{"changes_made":false,"command_id":"HOMELAB-SKLADCHIK-REAUTH-PREFLIGHT-EXACT-SUMMARY-READ-ONLY-V2-20260805T112400Z","command_rc":1,"error":"task payload JSON stream decode failed at offset=11967: Expecting value","error_type":"RuntimeError","mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":1,"read_only":true,"rollback_restored":null,"rollback_started":false,"schema":1,"status":"FAIL"} OUTPUT_END CHAT_OUTPUT_END