CHAT_OUTPUT_BEGIN
COMMAND_ID=HOMELAB-CLUSTER-ADMIN-UPDATES-V14-PUBLICATION-ROOT-READ-ONLY-20260805T123800Z
STATUS=OK
RC=0
HOST=pve01
MODE=verify
COMPONENT=homelab-cluster-admin-update-visibility
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83
COMMAND_SHA256=1e53329d0c6dba95372ad989224a229a943173336501ab6a6925bac0600bcc55
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
RESULT_CONTRACT_VALID=true
RESULT_CONTRACT_STATUS=NOT_APPLICABLE
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=0
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=cc30d7f4e6be0ab5e78545d4537a39178b59e9f1a79227efaec134b78f6fc233
SANITIZED_OUTPUT_SHA256=cc30d7f4e6be0ab5e78545d4537a39178b59e9f1a79227efaec134b78f6fc233
OUTPUT_BEGIN
HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V14-PUBLICATION-ROOT-READ-ONLY-20260805T123800Z","command_rc":0,"control_plane_error":null,"index_candidate_count":1,"literal_path_count":14,"mutation_outcome":"NO_MUTATION","publication_index_sha256":null,"publication_root":null,"publication_root_unique":false,"rc":0,"ready_for_corrected_transaction":false,"report_bytes":9909,"report_sha256":"fe300b0680f335cddc570f2fdafc350eab247fe9e5a0f5c2db71f7d9e2292156","rollback_restored":false,"rollback_started":false,"status":"OK","sync_line_count":1,"top_candidate_count":1,"top_candidate_score":17,"v13_exact_error":"webpanel publication root not found from exact script","v13_exact_result_identity_confirmed":true,"version":1,"webpanel_script_sha256":"2c57cca503cb0734e5114c2ab46b892a810bdc40c2baa7387b4094373db19276"}
{"changes_made":false,"command_id":"HOMELAB-CLUSTER-ADMIN-UPDATES-V14-PUBLICATION-ROOT-READ-ONLY-20260805T123800Z","index_scan":{"allowed_roots":["/var/lib/homelab","/var/www","/srv","/opt","/root","/usr/local/share"],"candidate_count":1,"candidates":[{"evidence":["cluster-admin-content"],"index":"/root/parked-domains-kit/site/index.html","index_bytes":4129,"index_sha256":"20f756af0324ae2e97156808bd4260ae641d9c805468ae063cf8d2e80211b940","mode":"0o644","root":"/root/parked-domains-kit/site","score":17,"siblings":["index.html"],"title_lines":["  <title>Домен припаркован</title>","    <div class=\"badge\"><span class=\"dot\"></span><span>PARKED_PAGE_OK · homelab</span></div>"]}],"directories_scanned":2209},"literal_paths":[{"allowed":false,"bytes":56144,"exists":true,"expanded":"/usr/bin/env","is_dir":false,"is_file":true,"is_symlink":false,"raw":"/usr/bin/env","sha256":"eb1c64bbc9908afcdf8cb48524f17112d8dd76a249f80dee2f01da14747b3b6e"},{"allowed":null,"exists":false,"expanded":"/tmp/cluster-admin-webpanel-sync","is_dir":false,"is_file":false,"is_symlink":false,"raw":"/tmp/cluster-admin-webpanel-sync"},{"allowed":false,"bytes":217,"exists":true,"expanded":"/var/lib/homelab-health/cluster-admin-vm-mail-cloud-backup.txt","is_dir":false,"is_file":true,"is_symlink":false,"raw":"/var/lib/homelab-health/cluster-admin-vm-mail-cloud-backup.txt","sha256":"e03b236f41f8d66f070ecd3234b3ff0836a44d972fd6f6abc721b9683fa22053"},{"allowed":false,"bytes":1535,"exists":true,"expanded":"/var/lib/homelab-health/overall.txt","is_dir":false,"is_file":true,"is_symlink":false,"raw":"/var/lib/homelab-health/overall.txt","sha256":"0ec7f8bcad6d2578f209b222be1135e7fa03f801e1e07bdbb634ba5f536a101b"},{"allowed":false,"bytes":128,"exists":true,"expanded":"/var/lib/homelab-health/final-readiness.txt","is_dir":false,"is_file":true,"is_symlink":false,"raw":"/var/lib/homelab-health/final-readiness.txt","sha256":"a15ee89bc9826b84a5b52e81f63a133b127bd7e263223eabf6b9ec62930e35ac"},{"allowed":false,"bytes":380,"exists":true,"expanded":"/var/lib/homelab-health/cluster-admin-strict-final-seal.txt","is_dir":false,"is_file":true,"is_symlink":false,"raw":"/var/lib/homelab-health/cluster-admin-strict-final-seal.txt","sha256":"03a07c2be6dd4900c328c05aded594879117efbc02a8d2a7e89ae2d9847dfe8e"},{"allowed":false,"exists":true,"expanded":"/tmp/","is_dir":true,"is_file":false,"is_symlink":false,"raw":"/tmp/"},{"allowed":null,"exists":false,"expanded":"/var/lib/homelab-health/pve01-pushed","is_dir":false,"is_file":false,"is_symlink":false,"raw":"/var/lib/homelab-health/pve01-pushed"},{"allowed":null,"exists":false,"expanded":"/tmp/cluster-admin-vm-mail-cloud-backup.txt","is_dir":false,"is_file":false,"is_symlink":false,"raw":"/tmp/cluster-admin-vm-mail-cloud-backup.txt"},{"allowed":null,"exists":false,"expanded":"/tmp/overall.txt","is_dir":false,"is_file":false,"is_symlink":false,"raw":"/tmp/overall.txt"},{"allowed":null,"exists":false,"expanded":"/tmp/final-readiness.txt","is_dir":false,"is_file":false,"is_symlink":false,"raw":"/tmp/final-readiness.txt"},{"allowed":null,"exists":false,"expanded":"/tmp/cluster-admin-strict-final-seal.txt","is_dir":false,"is_file":false,"is_symlink":false,"raw":"/tmp/cluster-admin-strict-final-seal.txt"},{"allowed":null,"exists":false,"expanded":"/var/lib/homelab-health/pve01-pushed/","is_dir":false,"is_file":false,"is_symlink":false,"raw":"/var/lib/homelab-health/pve01-pushed/"},{"allowed":false,"bytes":215,"exists":true,"expanded":"/var/lib/homelab-health/cluster-admin-webpanel-sync.txt","is_dir":false,"is_file":true,"is_symlink":false,"raw":"/var/lib/homelab-health/cluster-admin-webpanel-sync.txt","sha256":"c7a363c1a68111eb09de7911e5ae66a28f4d6abbd16cfcde89b39dbde850b56d"}],"mutation_outcome":"NO_MUTATION","publication_root_gate":{"next_required_action":"resolve only remaining publication-root ambiguity","ready_for_corrected_transaction":false,"top_candidate_count":1,"top_score":17,"unique_candidate":null},"read_only":true,"rollback_restored":false,"rollback_started":false,"schema":14,"status":"OK","sync_lines":[{"command":"scp","expanded":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"/tmp/cluster-admin-webpanel-sync\"/*.txt debian@<PRIVATE_IPV4>:/tmp/","line":21,"operands":["/tmp/cluster-admin-webpanel-sync/*.txt","debian@<PRIVATE_IPV4>:/tmp/"],"raw":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$TMP\"/*.txt debian@<PRIVATE_IPV4>:/tmp/","tokens":["scp","-q","-o","BatchMode=yes","-o","ConnectTimeout=8","/tmp/cluster-admin-webpanel-sync/*.txt","debian@<PRIVATE_IPV4>:/tmp/"]}],"systemd":{"homelab-cluster-admin-webpanel-sync.service":{"cat_rc":0,"cat_stderr":"","show":{"ActiveState":"inactive","DropInPaths":"","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 15:46:26 MSK] ; stop_time=[Wed 2026-08-05 15:46:27 MSK] ; pid=2863599 ; code=exited ; status=0 }","FragmentPath":"/etc/systemd/system/homelab-cluster-admin-webpanel-sync.service","Group":"","LoadState":"loaded","SubState":"dead","TriggeredBy":"homelab-cluster-admin-webpanel-sync.timer","Triggers":"","UnitFileState":"static","User":"","WorkingDirectory":""},"show_rc":0,"show_stderr":"","unit_text":"# /etc/systemd/system/homelab-cluster-admin-webpanel-sync.service\n[Unit]\nDescription=Push public pve01 health files to cluster-admin webpanel\n\n[Service]\nType=oneshot\nExecStart=/usr/local/sbin/homelab-cluster-admin-webpanel-sync"},"homelab-cluster-admin-webpanel-sync.timer":{"cat_rc":0,"cat_stderr":"","show":{"ActiveState":"active","DropInPaths":"","FragmentPath":"/etc/systemd/system/homelab-cluster-admin-webpanel-sync.timer","LoadState":"loaded","SubState":"waiting","TriggeredBy":"","Triggers":"homelab-cluster-admin-webpanel-sync.service","UnitFileState":"enabled"},"show_rc":0,"show_stderr":"","unit_text":"# /etc/systemd/system/homelab-cluster-admin-webpanel-sync.timer\n[Unit]\nDescription=Refresh pushed health files for cluster-admin webpanel\n\n[Timer]\nOnBootSec=2min\nOnUnitActiveSec=1min\nPersistent=true\n\n[Install]\nWantedBy=timers.target"}},"v13_exact_result":{"changes_made":false,"control_plane_error":null,"exact_error":"webpanel publication root not found from exact script","identity_confirmed":true,"mutation_outcome":"NO_MUTATION","output_bytes":731,"output_sha256":"a331f7d1e8d501d6295505a832d4717c5eef1246780789980ea20c5670370e62","output_source":"runner_json","rollback_restored":false,"rollback_started":false,"runner_document_rc":1,"runner_json_sha256":"a210a7acf0f14396a3d55864beb0e1a43e28d5ba83bb9f2e774b9669166a6b01","runner_rc":1,"runner_status":"FAIL","runner_text_sha256":"b5883d67631c9988a99eb6c2a5200da012c08b123c7f7baac7d69b914a5cee5f","runner_wrapper_matches_document":true,"state_document_sha256":"95bfb7834ba65882a7843a3acd4c8b0d9a5fd4487439d05c959af677223fa17b","state_path_sha256":"258275b227d6092dfba94f821359a125ed44d0f39043749d79868071551327d3","state_status":"FAIL"},"variables":{"0":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","BAD":"$((BAD+1))","BASH_SOURCE":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","BASH_SOURCE[0]":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","SCP_RC":"$?","SCRIPT_DIR":"/usr/local/sbin","SCRIPT_PATH":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","SSH_RC":"$?","TMP":"/tmp/cluster-admin-webpanel-sync","TS":"$(date -u +%Y-%m-%dT%H:%M:%SZ)","dst":"$2","src":"$1"},"webpanel_script":{"bash_n_rc":0,"bytes":1609,"mode":"0o755","path":"/usr/local/sbin/homelab-cluster-admin-webpanel-sync","sha256":"2c57cca503cb0734e5114c2ab46b892a810bdc40c2baa7387b4094373db19276","source":[{"line":1,"text":"#!/usr/bin/env bash"},{"line":2,"text":"set +e"},{"line":3,"text":"TS=$(date -u +%Y-%m-%dT%H:%M:%SZ)"},{"line":4,"text":"TMP=/tmp/cluster-admin-webpanel-sync"},{"line":5,"text":"mkdir -p \"$TMP\""},{"line":6,"text":"BAD=0"},{"line":7,"text":"copy_health() {"},{"line":8,"text":"  src=\"$1\""},{"line":9,"text":"  dst=\"$2\""},{"line":10,"text":"  if [ -s \"$src\" ]; then"},{"line":11,"text":"    cp \"$src\" \"$TMP/$dst\""},{"line":12,"text":"  else"},{"line":13,"text":"    echo \"STATUS=WARN TS=$TS TYPE=missing-health BAD=1 SRC=$src\" > \"$TMP/$dst\""},{"line":14,"text":"    BAD=$((BAD+1))"},{"line":15,"text":"  fi"},{"line":16,"text":"}"},{"line":17,"text":"copy_health /var/lib/homelab-health/cluster-admin-vm-mail-cloud-backup.txt cluster-admin-vm-mail-cloud-backup.txt"},{"line":18,"text":"copy_health /var/lib/homelab-health/overall.txt overall.txt"},{"line":19,"text":"copy_health /var/lib/homelab-health/final-readiness.txt final-readiness.txt"},{"line":20,"text":"copy_health /var/lib/homelab-health/cluster-admin-strict-final-seal.txt cluster-admin-strict-final-seal.txt"},{"line":21,"text":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$TMP\"/*.txt debian@<PRIVATE_IPV4>:/tmp/"},{"line":22,"text":"SCP_RC=$?"},{"line":23,"text":"[ \"$SCP_RC\" = 0 ] || BAD=$((BAD+1))"},{"line":24,"text":"ssh -n -o BatchMode=yes -o ConnectTimeout=8 debian@<PRIVATE_IPV4> 'sudo install -d -m 0755 /var/lib/homelab-health/pve01-pushed; for f in /tmp/cluster-admin-vm-mail-cloud-backup.txt /tmp/overall.txt /tmp/final-readiness.txt /tmp/cluster-admin-strict-final-seal.txt; do test -s \"$f\" && sudo install -m 0644 \"$f\" /var/lib/homelab-health/pve01-pushed/; done'"},{"line":25,"text":"SSH_RC=$?"},{"line":26,"text":"[ \"$SSH_RC\" = 0 ] || BAD=$((BAD+1))"},{"line":27,"text":"if [ \"$BAD\" = 0 ]; then STATUS=OK; else STATUS=WARN; fi"},{"line":28,"text":"echo \"STATUS=$STATUS TS=$TS TYPE=cluster-admin-webpanel-sync BAD=$BAD VMID=180 IP=<PRIVATE_IPV4> SCP_RC=$SCP_RC SSH_RC=$SSH_RC PUSHED=cluster-admin-vm-mail-cloud-backup,overall,final-readiness,cluster-admin-strict-final-seal\" > /var/lib/homelab-health/cluster-admin-webpanel-sync.txt"},{"line":29,"text":"cat /var/lib/homelab-health/cluster-admin-webpanel-sync.txt"}]}}

OUTPUT_END
CHAT_OUTPUT_END
