diff --git a/runtime/history/HOMELAB-CLUSTER-ADMIN-UPDATES-V14-PUBLICATION-ROOT-READ-ONLY-20260805T123800Z.json b/runtime/history/HOMELAB-CLUSTER-ADMIN-UPDATES-V14-PUBLICATION-ROOT-READ-ONLY-20260805T123800Z.json
new file mode 100644
index 0000000..522ce51
--- /dev/null
+++ b/runtime/history/HOMELAB-CLUSTER-ADMIN-UPDATES-V14-PUBLICATION-ROOT-READ-ONLY-20260805T123800Z.json
@@ -0,0 +1,38 @@
+{
+ "schema_version": 1,
+ "channel": "homelab-runtime",
+ "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",
+ "started_at_utc": "2026-08-05T12:46:39Z",
+ "finished_at_utc": "2026-08-05T12:46:39Z",
+ "reference_register_checked": true,
+ "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
+ "error_register_checked": true,
+ "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83",
+ "command_sha256": "1e53329d0c6dba95372ad989224a229a943173336501ab6a6925bac0600bcc55",
+ "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": 0,
+ "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": "cc30d7f4e6be0ab5e78545d4537a39178b59e9f1a79227efaec134b78f6fc233",
+ "sanitized_output_sha256": "cc30d7f4e6be0ab5e78545d4537a39178b59e9f1a79227efaec134b78f6fc233",
+ "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-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\"}\n{\"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\":[\"
Домен припаркован\",\" PARKED_PAGE_OK · homelab
\"]}],\"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@:/tmp/\",\"line\":21,\"operands\":[\"/tmp/cluster-admin-webpanel-sync/*.txt\",\"debian@:/tmp/\"],\"raw\":\"scp -q -o BatchMode=yes -o ConnectTimeout=8 \\\"$TMP\\\"/*.txt debian@:/tmp/\",\"tokens\":[\"scp\",\"-q\",\"-o\",\"BatchMode=yes\",\"-o\",\"ConnectTimeout=8\",\"/tmp/cluster-admin-webpanel-sync/*.txt\",\"debian@:/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@:/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\"}]}}\n"
+}
diff --git a/runtime/history/HOMELAB-CLUSTER-ADMIN-UPDATES-V14-PUBLICATION-ROOT-READ-ONLY-20260805T123800Z.txt b/runtime/history/HOMELAB-CLUSTER-ADMIN-UPDATES-V14-PUBLICATION-ROOT-READ-ONLY-20260805T123800Z.txt
new file mode 100644
index 0000000..8573e9e
--- /dev/null
+++ b/runtime/history/HOMELAB-CLUSTER-ADMIN-UPDATES-V14-PUBLICATION-ROOT-READ-ONLY-20260805T123800Z.txt
@@ -0,0 +1,34 @@
+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":[" Домен припаркован"," PARKED_PAGE_OK · homelab
"]}],"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@:/tmp/","line":21,"operands":["/tmp/cluster-admin-webpanel-sync/*.txt","debian@:/tmp/"],"raw":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$TMP\"/*.txt debian@:/tmp/","tokens":["scp","-q","-o","BatchMode=yes","-o","ConnectTimeout=8","/tmp/cluster-admin-webpanel-sync/*.txt","debian@:/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@:/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"}]}}
+
+OUTPUT_END
+CHAT_OUTPUT_END
diff --git a/runtime/latest.json b/runtime/latest.json
index 6ef8437..522ce51 100644
--- a/runtime/latest.json
+++ b/runtime/latest.json
@@ -1,19 +1,19 @@
{
"schema_version": 1,
"channel": "homelab-runtime",
- "command_id": "HOMELAB-CLUSTER-KB-V1-GITEA-REPOSITORY-CONTENT-DEEP-ANALYSIS-READ-ONLY-20260805T124500Z",
+ "command_id": "HOMELAB-CLUSTER-ADMIN-UPDATES-V14-PUBLICATION-ROOT-READ-ONLY-20260805T123800Z",
"status": "OK",
"rc": 0,
"host": "pve01",
"mode": "verify",
- "component": "cluster-knowledge-base-error-system",
- "started_at_utc": "2026-08-05T12:45:52Z",
- "finished_at_utc": "2026-08-05T12:45:58Z",
+ "component": "homelab-cluster-admin-update-visibility",
+ "started_at_utc": "2026-08-05T12:46:39Z",
+ "finished_at_utc": "2026-08-05T12:46:39Z",
"reference_register_checked": true,
"reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
"error_register_checked": true,
"error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83",
- "command_sha256": "a73337de80d4bf0faa78c0f4be64072650ac089cab790ed3fa130e2302ea5ceb",
+ "command_sha256": "1e53329d0c6dba95372ad989224a229a943173336501ab6a6925bac0600bcc55",
"duplicate_failed_command_blocked": false,
"block_reason": null,
"execution_started": true,
@@ -30,9 +30,9 @@
"secrets_included": false,
"private_addresses_included": false,
"raw_evidence_retained_locally": true,
- "raw_evidence_sha256": "ead28fd156e646c27f6e988c12ea1e89a498882f07071faacba670e87c8a7983",
- "sanitized_output_sha256": "ead28fd156e646c27f6e988c12ea1e89a498882f07071faacba670e87c8a7983",
+ "raw_evidence_sha256": "cc30d7f4e6be0ab5e78545d4537a39178b59e9f1a79227efaec134b78f6fc233",
+ "sanitized_output_sha256": "cc30d7f4e6be0ab5e78545d4537a39178b59e9f1a79227efaec134b78f6fc233",
"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-KB-V1-GITEA-REPOSITORY-CONTENT-DEEP-ANALYSIS-READ-ONLY-20260805T124500Z\",\"command_rc\":0,\"mutation_outcome\":\"NO_MUTATION\",\"output_truncated_in_json\":false,\"rc\":0,\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"api\":{\"candidate_file_count\":50,\"fetch_failure_count\":0,\"fetched_file_count\":50,\"fetched_total_bytes\":173536,\"tree_blob_count\":125,\"tree_complete\":true,\"tree_directory_count\":36,\"tree_entry_count\":161,\"tree_method\":\"swagger_contents_recursive\",\"tree_probes\":[{\"body_emitted\":false,\"entry_count\":161,\"json_parse_ok\":true,\"kind\":\"swagger_tree_recursive\",\"ok\":true,\"status\":200,\"truncated\":false},{\"entry_count\":17,\"kind\":\"swagger_contents_dir\",\"ok\":true,\"path_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"status\":200},{\"entry_count\":1,\"kind\":\"swagger_contents_dir\",\"ok\":true,\"path_sha256\":\"b6bb94ab5634af92972c209ea962d4ef4ad8b8a59a640973efd161498a8910ef\",\"status\":200},{\"entry_count\":11,\"kind\":\"swagger_contents_dir\",\"ok\":true,\"path_sha256\":\"d0b4ba2311b3e84977dc4bb320fe72cd85426f5cf14b487a4c5352ae3ad8cb37\",\"status\":200},{\"entry_count\":4,\"kind\":\"swagger_contents_dir\",\"ok\":true,\"path_sha256\":\"46b42b4229cd7a39c564e780bb665a8bde4fdf722007e8473f167fe53ed4b995\",\"status\":200},{\"entry_count\":1,\"kind\":\"swagger_contents_dir\",\"ok\":true,\"path_sha256\":\"be4bd56772770471b639574d919a92de16c0e522ea5601e2892461691bdf9545\",\"status\":200},{\"entry_count\":2,\"kind\":\"swagger_contents_dir\",\"ok\":true,\"path_sha256\":\"b11a85b296a90afc460430434a504e7acb04b064575b7277724688af0e59d189\",\"status\":200},{\"entry_count\":4,\"kind\":\"swagger_contents_dir\",\"ok\":true,\"path_sha256\":\"604cee807f644af47487bf2bbab442b94212ac5119f36f995f78e9e4694dae8c\",\"status\":200},{\"entry_count\":2,\"kind\":\"swagger_contents_dir\",\"ok\":true,\"path_sha256\":\"5b3a02e57af9b55aae545b599baa6a6798a364d8d2798a38536249f77e30fe5f\",\"status\":200}]},\"auth_attempts\":[{\"authorization_value_emitted\":false,\"body_emitted\":false,\"exact_repository_identity\":true,\"json_parse_ok\":true,\"source\":\"git_credentials_store\",\"status\":200}],\"auth_context\":{\"accepted_candidate_count\":1,\"checked_path_count\":2,\"home_paths_emitted\":false,\"matching_entry_count\":1,\"readable_path_count\":1,\"secret_hashes_emitted\":false,\"secret_values_emitted\":false,\"source\":\"git_credentials_store\"},\"authorization_header_sent\":true,\"authorization_values_emitted\":false,\"branch\":{\"available\":true,\"body_emitted\":false,\"commit_sha\":\"fe1221b06643db3b00a621b0230f92a46a4edc2b\",\"json_parse_ok\":true,\"status\":200},\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-KB-V1-GITEA-REPOSITORY-CONTENT-DEEP-ANALYSIS-READ-ONLY-20260805T124500Z\",\"command_rc\":0,\"credential_values_emitted\":false,\"dns\":{\"address_count\":1,\"addresses\":[{\"family\":4,\"scope\":\"private\",\"sha256\":\"bc517b4af3298846906234d3d697d3820b0b652ade1880c937c9d71cd802c834\"}],\"available\":true,\"duration_seconds\":0.001,\"error_count\":0,\"errors\":[],\"raw_addresses_emitted\":false},\"endpoint_probes\":[{\"address\":{\"family\":4,\"scope\":\"private\",\"sha256\":\"bc517b4af3298846906234d3d697d3820b0b652ade1880c937c9d71cd802c834\"},\"body_emitted\":false,\"status\":200,\"tls\":{\"certificate_sha256\":\"3167a6916d6fad2e15d1c19af823f314e5e4abfc08e3ba20ee2cd79557897ff9\",\"cipher\":\"TLS_AES_256_GCM_SHA384\",\"san_dns_count\":1,\"target_san_present\":true,\"tls_version\":\"TLSv1.3\"},\"valid_gitea\":true}],\"error_fingerprint\":\"26d65952ac8f64197a6fd76ec56e3b5ffda8c4838efe2af2947a603d01270b92\",\"http_methods\":[\"GET\"],\"mutation_outcome\":\"NO_MUTATION\",\"network_requests_made\":true,\"next_action\":\"RUN_ONE_READ_ONLY_GITEA_DEFINED_CLUSTER_FACT_AND_DOCUMENT_GAP_ANALYSIS\",\"output_truncated_in_json\":false,\"pre_command_known_error_gate\":{\"checked\":true,\"count\":27,\"ids\":[\"candidate-scan-limit-20260805\",\"runner-wrapper-mismatch-20260805\",\"gitea-owner-hardcoded-20260805\",\"gitea-git-auth-unavailable-20260805\",\"pvesh-adapter-context-unreadable-20260805\",\"gitea-process-self-match-20260805\",\"sanitize-non-string-attributeerror-20260805\",\"reader-path-env-misclassified-as-route-20260805\",\"reader-loopback-only-probe-20260805\",\"reader-capability-not-secret-20260805\",\"reader-systemd-unit-parsed-as-python-20260805\",\"reader-helper-contract-coverage-gap-20260805\",\"reader-capability-root-empty-suffix-404-20260805\",\"reader-generic-suffix-missed-exact-operation-20260805\",\"reader-feed-500-without-origin-20260805\",\"reader-sandbox-global-binding-undefined-20260805\",\"reader-negative-control-exception-polluted-classification-20260805\",\"reader-result-regex-candidate-not-proven-20260805\",\"reader-fake-dependency-contract-incomplete-20260805\",\"reader-manifest-alias-dataflow-gap-20260805\",\"reader-result-output-bound-after-compaction-20260805\",\"reader-result-reference-invalid-json-assumption-20260805\",\"reader-file-backed-feed-serves-manifest-only-20260805\",\"reader-exact-text-gitea-marker-context-unmapped-20260805\",\"reader-gitea-marker-detail-false-positive-pve-no-candidate-20260805\",\"reverse-proxy-runtime-not-host-visible-20260805\",\"external-gitea-repository-not-anonymous-20260805\"]},\"prevention_test\":{\"must_run_before_future_cluster_commands\":true,\"name\":\"gitea_cluster_reference_and_error_registry_preflight\",\"requirements\":[\"verify the exact previous result and repository identity\",\"use the instance swagger contract before constructing API paths\",\"read the canonical handbook and active error registry at the exact default-branch commit\",\"block any command that repeats a known fingerprint or bypasses a prevention test\",\"never emit credentials, response bodies, private addresses or repository secrets\",\"bound tree, file and output sizes deterministically\"]},\"previous_exact_result_basis\":{\"capsule_sha256\":\"85d1d47f0c57a57de2cb4864d15b9f365b309561304cf5491dc1682fa0d1d6d0\",\"changes_made\":false,\"command_id\":\"HOMELAB-CLUSTER-KB-V1-GITEA-PUBLIC-OWNER-AUTH-CONTEXT-DISCOVERY-READ-ONLY-20260805T122500Z\",\"command_rc\":0,\"control_plane_error\":null,\"mutation_outcome\":\"NO_MUTATION\",\"next_action\":\"RUN_ONE_READ_ONLY_EXACT_GITEA_REPOSITORY_CONTENT_ANALYSIS\",\"output_complete\":true,\"output_sha256\":\"76115dd10a58d162f41eae4b8367997a47b6abc9550004138f260e0551c2af1d\",\"output_truncated_in_json\":false,\"rc\":0,\"repository_default_branch\":\"main\",\"repository_full_name\":\"homelab-admin/homelab-ops\",\"repository_private\":true,\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"AUTHENTICATED_GITEA_REPOSITORY_DISCOVERED_BY_EXACT_API_MATCH\",\"runner_document_rc\":0,\"runner_json_sha256\":\"76c58ac249a687ad743cdf97d2b3c0f04c927153779f21ccf9d4c02215f12cea\",\"runner_rc\":0,\"runner_text_sha256\":\"d743e02c31599df0999b2facf8879f49d147f9978561dde031703ee0847294a7\",\"runner_wrapper_matches_document\":true,\"status\":\"OK\"},\"private_addresses_emitted\":false,\"raw_response_bodies_emitted\":false,\"rc\":0,\"read_only\":true,\"ready_for_gitea_defined_cluster_fact_analysis\":true,\"real_file_mutations_made\":false,\"recommended_error_system_v2\":{\"acceptance_criteria\":[\"zero hard-coded owner/path/host/version unless proven by exact prior evidence or current Gitea content\",\"zero mutation without byte-for-byte backup and tested rollback\",\"zero repeated known error fingerprint\",\"all command outputs bounded and non-truncated\",\"all new errors recorded before any subsequent command\"],\"components\":[{\"component\":\"machine_error_registry\",\"requirement\":\"one append-only machine-readable record per proven failure with stable id, normalized fingerprint, exact command/capsule/result SHA, root cause, correction and prevention test\"},{\"component\":\"pre_command_gate\",\"requirement\":\"before every .hcmd, read canonical cluster reference and entire active error registry; block duplicate failed fingerprints and commands that violate a prevention test\"},{\"component\":\"transaction_manifest\",\"requirement\":\"every mutation declares exact source SHA, candidate SHA, byte backup SHA, preconditions, atomic apply, verification and deterministic rollback\"},{\"component\":\"post_result_ingestion\",\"requirement\":\"after exact-result verification, automatically classify the outcome, append new proven failures, close corrected cases and link superseded commands\"},{\"component\":\"regression_suite\",\"requirement\":\"positive and negative fixtures for every recorded error; payload self-test and repository CI must pass before command publication\"},{\"component\":\"knowledge_freshness\",\"requirement\":\"canonical handbook stores last verified fact source, verification time, source SHA and stale/unknown markers; commands may not rely on stale or unknown values\"}],\"grounded_in_detected_gaps\":[\"no_static_evidence_error_fingerprint_gate\"],\"minimum_gate_order\":[\"verify previous exact result identity\",\"read canonical handbook at exact branch commit\",\"read active errors and prevention tests\",\"validate target facts from authoritative source\",\"run payload regression tests\",\"only then publish or execute the next command\"],\"name\":\"Error System V2: evidence-first command gate\",\"reuse_existing_error_root\":\"changes/CR-2026-0018\"},\"regression_tests\":{\"checks\":{\"exact_repo_identity\":true,\"http_method_read_only\":true,\"known_error_gate_complete\":true,\"output_projection_worst_case\":true,\"previous_exact_identity_complete\":true,\"registry_parser\":true,\"reject_wrong_owner\":true,\"sanitizer_redacts\":true,\"sanitizer_type_safe\":true,\"swagger_routes_exact\":true,\"swagger_template_encodes_path\":true,\"tree_parser\":true},\"passed\":true},\"repository\":{\"archived\":false,\"default_branch\":\"main\",\"empty\":false,\"full_name\":\"homelab-admin/homelab-ops\",\"identity_safe\":true,\"mirror\":false,\"name\":\"homelab-ops\",\"owner\":\"homelab-admin\",\"private\":true,\"size\":3837},\"repository_analysis\":{\"analyzed_file_count\":50,\"canonical_handbook\":{\"candidates\":[{\"blob_sha\":\"7a8cb9e2dd5bc1235937aa211293b47ed4e26263\",\"bytes\":29485,\"canonical_phrase_hits\":3,\"canonical_score\":227,\"content_sha256\":\"8051e3e761493a1b7088a0f3ed7e0aa9218673f453ca88171178364d26701f64\",\"headings\":[],\"inbound_reference_count\":8,\"path\":\"errors/regression-cases.json\"},{\"blob_sha\":\"d2adf1bf345063da2b02040697f4358ba4ca4ae1\",\"bytes\":4667,\"canonical_phrase_hits\":0,\"canonical_score\":74,\"content_sha256\":\"a49bcb32ac7212d7fb9768db8a277cb5525c873c84dd6fb633edae35dc6de532\",\"headings\":[],\"inbound_reference_count\":0,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\"},{\"blob_sha\":\"c42de139cdf529611d50ad86291fb40df5bc0d09\",\"bytes\":1652,\"canonical_phrase_hits\":1,\"canonical_score\":56,\"content_sha256\":\"ac5dc881dcd9fcb72644bc893e866f463c9c2b9b4544e32434e21b5d34168fb5\",\"headings\":[],\"inbound_reference_count\":1,\"path\":\"inventory/access-paths.json\"},{\"blob_sha\":\"a1528e7cbc2b1027bfd7faa220bf1f096cdde1f5\",\"bytes\":3665,\"canonical_phrase_hits\":0,\"canonical_score\":55,\"content_sha256\":\"666072447ba11d346772f62f274dadc974c4463e20f67e67f82f228f1fcf2ce8\",\"headings\":[],\"inbound_reference_count\":0,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh\"},{\"blob_sha\":\"c6f94aa845bc4cd8fc061e5e03e0fd7771a01bc6\",\"bytes\":7440,\"canonical_phrase_hits\":0,\"canonical_score\":54,\"content_sha256\":\"636254d2526f0f62184d47cdb4c30c2831b11869c2000c557666f60b55d7691b\",\"headings\":[],\"inbound_reference_count\":0,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\"},{\"blob_sha\":\"774e2b0e591c9ada9aac9700a1b8427645284f1e\",\"bytes\":4665,\"canonical_phrase_hits\":0,\"canonical_score\":53,\"content_sha256\":\"34de7dd0cc60c90c1b74e7a91334cb737d33c761882d1483d5b39f15b439c6f1\",\"headings\":[],\"inbound_reference_count\":0,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh\"}],\"path\":\"errors/regression-cases.json\",\"status\":\"UNIQUE_CONFIRMED\"},\"documentation_coverage\":{\"access\":{\"file_count\":22,\"paths\":[\"changes/CR-2026-0018/regression-cases-draft.json\",\"docs/planned/skladchik-moderator-assistant.md\",\"errors/regression-cases.json\",\"inventory/access-paths.json\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/dry-run.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/prepare.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/seal.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/verify.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\",\"tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh\",\"tasks/skladchik-reports-monitor-controlled-reauth-v1/README.txt\",\"tests/test_cr_2026_0005.py\",\"tests/test_cr_2026_0006_vm160_task.py\",\"tests/test_cr_2026_0007_skladchik_reauth.py\",\"tests/test_cr_2026_0007_skladchik_semantic_repair.py\",\"tests/test_cr_2026_0009_skladchik_concurrency_guard.py\",\"tests/test_cr_2026_0013_vm160_worker_bootstrap_transition.py\",\"tests/test_cr_2026_0018_execution_boundary_preparation.py\",\"tests/test_repository.py\"]},\"backup\":{\"file_count\":29,\"paths\":[\"docs/ARCHITECTURE.md\",\"docs/skladchik-cookie-refresh.md\",\"errors/regression-cases.json\",\"observed/cluster-guests.json\",\"policies/cluster-cloud-quorum.json\",\"schemas/change.schema.json\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/assets/pve02-vm160-preflight-probe.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/assets/vm160-cloud-quorum-worker.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/prepare.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/seal.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/verify.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/README.txt\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\",\"tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh\",\"tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh\",\"tasks/skladchik-reports-monitor-controlled-reauth-v1/README.txt\",\"tests/test_cr_2026_0005.py\",\"tests/test_cr_2026_0006.py\",\"tests/test_cr_2026_0006_vm160_task.py\",\"tests/test_cr_2026_0007_skladchik_reauth.py\",\"tests/test_cr_2026_0007_skladchik_semantic_repair.py\",\"tests/test_cr_2026_0008_skladchik_snapshot_integrity.py\",\"tests/test_cr_2026_0009_skladchik_concurrency_guard.py\",\"tests/test_cr_2026_0011_skladchik_cookie_jar_reset.py\",\"tests/test_cr_2026_0012_skladchik_cookie_refresh_runbook.py\",\"tests/test_cr_2026_0018_execution_boundary_preparation.py\"]},\"error_system\":{\"file_count\":44,\"paths\":[\".gitea/workflows/ci.yml\",\"changes/CR-2026-0018/caller-inventory-requirements.md\",\"changes/CR-2026-0018/regression-cases-draft.json\",\"changes/README.md\",\"docs/ARCHITECTURE.md\",\"docs/skladchik-cookie-refresh.md\",\"docs/WORKFLOW.md\",\"errors/regression-cases.json\",\"inventory/cluster-nodes.json\",\"policies/cluster-cloud-quorum.json\",\"policies/operating-policy.json\",\"README.md\",\"schemas/change.schema.json\",\"schemas/context.schema.json\",\"sources/README.md\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/assets/pve02-vm160-preflight-probe.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/assets/vm160-cloud-quorum-worker.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/dry-run.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/prepare.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/seal.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/verify.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/README.txt\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\",\"tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh\",\"tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/edge-preflight.sh\",\"tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh\",\"tasks/skladchik-reports-monitor-controlled-reauth-v1/README.txt\"]},\"internal_external\":{\"file_count\":7,\"paths\":[\"changes/CR-2026-0018/regression-cases-draft.json\",\"errors/regression-cases.json\",\"policies/operating-policy.json\",\"tasks/homelab-logrotate-namespace-latch-clearance-v1/README.txt\",\"tests/test_cr_2026_0005.py\",\"tests/test_cr_2026_0011_skladchik_cookie_jar_reset.py\",\"tests/test_cr_2026_0012_skladchik_cookie_refresh_runbook.py\"]},\"repair\":{\"file_count\":31,\"paths\":[\"changes/CR-2026-0018/caller-inventory-requirements.md\",\"changes/README.md\",\"docs/ARCHITECTURE.md\",\"docs/skladchik-cookie-refresh.md\",\"docs/WORKFLOW.md\",\"errors/regression-cases.json\",\"policies/cluster-cloud-quorum.json\",\"policies/operating-policy.json\",\"README.md\",\"schemas/change.schema.json\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/assets/vm160-cloud-quorum-worker.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/dry-run.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/prepare.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/seal.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/verify.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\",\"tasks/skladchik-reports-monitor-controlled-reauth-v1/README.txt\",\"tests/test_cr_2026_0005.py\",\"tests/test_cr_2026_0006.py\",\"tests/test_cr_2026_0006_vm160_task.py\",\"tests/test_cr_2026_0007_skladchik_reauth.py\",\"tests/test_cr_2026_0007_skladchik_semantic_repair.py\",\"tests/test_cr_2026_0008_skladchik_snapshot_integrity.py\",\"tests/test_cr_2026_0009_skladchik_concurrency_guard.py\",\"tests/test_cr_2026_0011_skladchik_cookie_jar_reset.py\",\"tests/test_cr_2026_0012_skladchik_cookie_refresh_runbook.py\",\"tests/test_cr_2026_0018_execution_boundary_preparation.py\"]},\"services\":{\"file_count\":21,\"paths\":[\"changes/CR-2026-0018/caller-inventory-requirements.md\",\"docs/ARCHITECTURE.md\",\"docs/planned/skladchik-moderator-assistant.md\",\"errors/regression-cases.json\",\"observed/cluster-guests.json\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/assets/vm160-cloud-quorum-worker.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/dry-run.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/prepare.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/seal.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/verify.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\",\"tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh\",\"tasks/homelab-logrotate-namespace-latch-clearance-v1/README.txt\",\"tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/edge-preflight.sh\",\"tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh\",\"tests/fixtures/gitea-legacy-auth-permission.json\",\"tests/test_cr_2026_0005.py\",\"tests/test_reg_014_015.py\"]}},\"error_system\":{\"duplicate_error_ids\":[],\"duplicate_fingerprints\":[],\"enforcement_path_count\":7,\"enforcement_paths\":[\"schemas/change.schema.json\",\"schemas/context.schema.json\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/assets/pve02-vm160-preflight-probe.sh\",\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\",\"tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh\",\"tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/edge-preflight.sh\",\"tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh\"],\"gate_signals\":{\"ci_workflow_present\":true,\"duplicate_failed_command_block_signal\":false,\"error_register_checked_signal\":false,\"fingerprint_signal\":false,\"preflight_references_error_register\":true,\"reference_register_checked_signal\":false,\"schema_validation_signal\":true,\"tests_present\":true},\"machine_parseable_registry_file_count\":2,\"prevention_evidence_count\":0,\"registry_path_count\":2,\"registry_paths\":[\"changes/CR-2026-0018/regression-cases-draft.json\",\"errors/regression-cases.json\"],\"regression_path_count\":2,\"regression_paths\":[\"changes/CR-2026-0018/regression-cases-draft.json\",\"errors/regression-cases.json\"],\"superseded_path_count\":0,\"superseded_paths\":[],\"test_path_count\":14,\"test_paths\":[\"tests/fixtures/gitea-legacy-auth-permission.json\",\"tests/test_cr_2026_0005.py\",\"tests/test_cr_2026_0006.py\",\"tests/test_cr_2026_0006_vm160_task.py\",\"tests/test_cr_2026_0007_skladchik_reauth.py\",\"tests/test_cr_2026_0007_skladchik_semantic_repair.py\",\"tests/test_cr_2026_0008_skladchik_snapshot_integrity.py\",\"tests/test_cr_2026_0009_skladchik_concurrency_guard.py\",\"tests/test_cr_2026_0011_skladchik_cookie_jar_reset.py\",\"tests/test_cr_2026_0012_skladchik_cookie_refresh_runbook.py\",\"tests/test_cr_2026_0013_vm160_worker_bootstrap_transition.py\",\"tests/test_cr_2026_0018_execution_boundary_preparation.py\",\"tests/test_reg_014_015.py\",\"tests/test_repository.py\"],\"unique_error_id_count\":61,\"unique_fingerprint_count\":0,\"workflow_path_count\":1,\"workflow_paths\":[\".gitea/workflows/ci.yml\"]},\"gaps\":[\"no_static_evidence_error_fingerprint_gate\"],\"top_analyzed_files\":[{\"blob_sha\":\"7a8cb9e2dd5bc1235937aa211293b47ed4e26263\",\"bytes\":29485,\"canonical_score\":227,\"content_sha256\":\"8051e3e761493a1b7088a0f3ed7e0aa9218673f453ca88171178364d26701f64\",\"headings\":[],\"hits\":{\"access\":9,\"backup\":29,\"canonical\":3,\"error\":49,\"repair\":40,\"scope\":1,\"service\":8},\"inbound_reference_count\":8,\"lines\":360,\"path\":\"errors/regression-cases.json\",\"path_score\":71,\"path_tags\":[\"error_registry\",\"error_system\"],\"repo_reference_count\":0},{\"blob_sha\":\"d2adf1bf345063da2b02040697f4358ba4ca4ae1\",\"bytes\":4667,\"canonical_score\":74,\"content_sha256\":\"a49bcb32ac7212d7fb9768db8a277cb5525c873c84dd6fb633edae35dc6de532\",\"headings\":[],\"hits\":{\"access\":8,\"backup\":20,\"canonical\":0,\"error\":9,\"repair\":1,\"scope\":0,\"service\":10},\"inbound_reference_count\":0,\"lines\":54,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh\",\"path_score\":41,\"path_tags\":[\"cluster_docs\",\"enforcement\",\"error_system\"],\"repo_reference_count\":0},{\"blob_sha\":\"c42de139cdf529611d50ad86291fb40df5bc0d09\",\"bytes\":1652,\"canonical_score\":56,\"content_sha256\":\"ac5dc881dcd9fcb72644bc893e866f463c9c2b9b4544e32434e21b5d34168fb5\",\"headings\":[],\"hits\":{\"access\":8,\"backup\":0,\"canonical\":1,\"error\":0,\"repair\":0,\"scope\":0,\"service\":0},\"inbound_reference_count\":1,\"lines\":70,\"path\":\"inventory/access-paths.json\",\"path_score\":20,\"path_tags\":[\"cluster_docs\"],\"repo_reference_count\":0},{\"blob_sha\":\"a1528e7cbc2b1027bfd7faa220bf1f096cdde1f5\",\"bytes\":3665,\"canonical_score\":55,\"content_sha256\":\"666072447ba11d346772f62f274dadc974c4463e20f67e67f82f228f1fcf2ce8\",\"headings\":[],\"hits\":{\"access\":20,\"backup\":27,\"canonical\":0,\"error\":4,\"repair\":3,\"scope\":0,\"service\":7},\"inbound_reference_count\":0,\"lines\":39,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh\",\"path_score\":18,\"path_tags\":[\"cluster_docs\"],\"repo_reference_count\":0},{\"blob_sha\":\"c6f94aa845bc4cd8fc061e5e03e0fd7771a01bc6\",\"bytes\":7440,\"canonical_score\":54,\"content_sha256\":\"636254d2526f0f62184d47cdb4c30c2831b11869c2000c557666f60b55d7691b\",\"headings\":[],\"hits\":{\"access\":13,\"backup\":28,\"canonical\":0,\"error\":22,\"repair\":12,\"scope\":0,\"service\":8},\"inbound_reference_count\":0,\"lines\":194,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/task.json\",\"path_score\":18,\"path_tags\":[\"cluster_docs\"],\"repo_reference_count\":0},{\"blob_sha\":\"774e2b0e591c9ada9aac9700a1b8427645284f1e\",\"bytes\":4665,\"canonical_score\":53,\"content_sha256\":\"34de7dd0cc60c90c1b74e7a91334cb737d33c761882d1483d5b39f15b439c6f1\",\"headings\":[],\"hits\":{\"access\":13,\"backup\":19,\"canonical\":0,\"error\":2,\"repair\":1,\"scope\":0,\"service\":7},\"inbound_reference_count\":0,\"lines\":46,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh\",\"path_score\":18,\"path_tags\":[\"cluster_docs\"],\"repo_reference_count\":0},{\"blob_sha\":\"9cc7d2fa3bc044d311500a5cf798273c79e39c35\",\"bytes\":4233,\"canonical_score\":52,\"content_sha256\":\"ac0885c9762b99f360256ad3b3894f9cbcc4a8deab529a19ef264fe446bff029\",\"headings\":[],\"hits\":{\"access\":8,\"backup\":16,\"canonical\":0,\"error\":9,\"repair\":7,\"scope\":0,\"service\":11},\"inbound_reference_count\":0,\"lines\":42,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/verify.sh\",\"path_score\":18,\"path_tags\":[\"cluster_docs\"],\"repo_reference_count\":0},{\"blob_sha\":\"b83d0e532e28ce926b61de16a50b721c48d59acb\",\"bytes\":569,\"canonical_score\":46,\"content_sha256\":\"330f35202bc0779778e22e16947bbfa19969f9c288ae9f7d273276bea7990970\",\"headings\":[],\"hits\":{\"access\":0,\"backup\":5,\"canonical\":0,\"error\":4,\"repair\":0,\"scope\":0,\"service\":0},\"inbound_reference_count\":0,\"lines\":16,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/assets/pve02-vm160-preflight-probe.sh\",\"path_score\":41,\"path_tags\":[\"cluster_docs\",\"enforcement\",\"error_system\"],\"repo_reference_count\":0},{\"blob_sha\":\"5aec8827ca6132a8c9f49257c31aba9a65010982\",\"bytes\":1206,\"canonical_score\":43,\"content_sha256\":\"d9cb129e009176a7dde2a07f59760acddd9e17237eef563e97a55b3e62838bd1\",\"headings\":[\"homelab-ops\",\"Порядок работы\",\"Локальная проверка\"],\"hits\":{\"access\":0,\"backup\":0,\"canonical\":1,\"error\":1,\"repair\":1,\"scope\":0,\"service\":0},\"inbound_reference_count\":0,\"lines\":28,\"path\":\"README.md\",\"path_score\":15,\"path_tags\":[\"index\"],\"repo_reference_count\":0},{\"blob_sha\":\"92e011792d7153636e52ea44ad2a8648e2771a96\",\"bytes\":1869,\"canonical_score\":41,\"content_sha256\":\"21802253966e8d94e8404fd6a217c8248004091dc9dd3b4c03193e3c81af4609\",\"headings\":[],\"hits\":{\"access\":0,\"backup\":1,\"canonical\":0,\"error\":6,\"repair\":0,\"scope\":0,\"service\":11},\"inbound_reference_count\":0,\"lines\":20,\"path\":\"tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh\",\"path_score\":29,\"path_tags\":[\"cluster_docs\",\"enforcement\",\"error_system\"],\"repo_reference_count\":0},{\"blob_sha\":\"bad7037197f12ce9ce0b8be3b5723345699680b5\",\"bytes\":2289,\"canonical_score\":40,\"content_sha256\":\"e07ccfac39f862c2bce2da0d31112e8e055ca9d3f23a01a8f33302863239203a\",\"headings\":[],\"hits\":{\"access\":1,\"backup\":0,\"canonical\":0,\"error\":0,\"repair\":0,\"scope\":2,\"service\":0},\"inbound_reference_count\":0,\"lines\":92,\"path\":\"changes/CR-2026-0018/regression-cases-draft.json\",\"path_score\":39,\"path_tags\":[\"error_registry\",\"error_system\"],\"repo_reference_count\":0},{\"blob_sha\":\"00a8ee1a1a4a937e36141d0ee8d607c1e9b7c266\",\"bytes\":2622,\"canonical_score\":40,\"content_sha256\":\"ae589aaad30d2f062fd3455c54b880c4a7c2790f4b3919f4c30cb07de76e6765\",\"headings\":[],\"hits\":{\"access\":8,\"backup\":11,\"canonical\":0,\"error\":2,\"repair\":1,\"scope\":0,\"service\":3},\"inbound_reference_count\":0,\"lines\":31,\"path\":\"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/prepare.sh\",\"path_score\":18,\"path_tags\":[\"cluster_docs\"],\"repo_reference_count\":0}]},\"repository_file_contents_emitted\":false,\"result_projection\":{\"budget_bytes\":29232,\"bytes\":26771,\"max_bytes\":30000,\"steps\":[\"top_analyzed_files_12\",\"handbook_candidates_6\"]},\"rollback_restored\":null,\"rollback_started\":false,\"root_cause_classification\":\"GITEA_CLUSTER_HANDBOOK_AND_ERROR_SYSTEM_DEEPLY_ANALYZED\",\"schema\":1,\"secret_hashes_emitted\":false,\"status\":\"OK\",\"swagger\":{\"available\":true,\"base_path\":\"/api/v1\",\"meta\":{\"body_bytes\":839152,\"body_emitted\":false,\"body_sha256\":\"5cf3d367ba1e073177421344d82490f226e044999c90e5b336d5ccdf21c9b027\",\"json_parse_ok\":true,\"status\":200},\"route_coverage\":{\"blob\":true,\"branch\":true,\"contents_path\":true,\"repo\":true}}}\n"
+ "output": "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\"}\n{\"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\":[\" Домен припаркован\",\" PARKED_PAGE_OK · homelab
\"]}],\"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@:/tmp/\",\"line\":21,\"operands\":[\"/tmp/cluster-admin-webpanel-sync/*.txt\",\"debian@:/tmp/\"],\"raw\":\"scp -q -o BatchMode=yes -o ConnectTimeout=8 \\\"$TMP\\\"/*.txt debian@:/tmp/\",\"tokens\":[\"scp\",\"-q\",\"-o\",\"BatchMode=yes\",\"-o\",\"ConnectTimeout=8\",\"/tmp/cluster-admin-webpanel-sync/*.txt\",\"debian@:/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@:/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\"}]}}\n"
}
diff --git a/runtime/latest.txt b/runtime/latest.txt
index 27100d2..8573e9e 100644
--- a/runtime/latest.txt
+++ b/runtime/latest.txt
@@ -1,15 +1,15 @@
CHAT_OUTPUT_BEGIN
-COMMAND_ID=HOMELAB-CLUSTER-KB-V1-GITEA-REPOSITORY-CONTENT-DEEP-ANALYSIS-READ-ONLY-20260805T124500Z
+COMMAND_ID=HOMELAB-CLUSTER-ADMIN-UPDATES-V14-PUBLICATION-ROOT-READ-ONLY-20260805T123800Z
STATUS=OK
RC=0
HOST=pve01
MODE=verify
-COMPONENT=cluster-knowledge-base-error-system
+COMPONENT=homelab-cluster-admin-update-visibility
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83
-COMMAND_SHA256=a73337de80d4bf0faa78c0f4be64072650ac089cab790ed3fa130e2302ea5ceb
+COMMAND_SHA256=1e53329d0c6dba95372ad989224a229a943173336501ab6a6925bac0600bcc55
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
@@ -24,11 +24,11 @@ MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
-RAW_EVIDENCE_SHA256=ead28fd156e646c27f6e988c12ea1e89a498882f07071faacba670e87c8a7983
-SANITIZED_OUTPUT_SHA256=ead28fd156e646c27f6e988c12ea1e89a498882f07071faacba670e87c8a7983
+RAW_EVIDENCE_SHA256=cc30d7f4e6be0ab5e78545d4537a39178b59e9f1a79227efaec134b78f6fc233
+SANITIZED_OUTPUT_SHA256=cc30d7f4e6be0ab5e78545d4537a39178b59e9f1a79227efaec134b78f6fc233
OUTPUT_BEGIN
-HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-GITEA-REPOSITORY-CONTENT-DEEP-ANALYSIS-READ-ONLY-20260805T124500Z","command_rc":0,"mutation_outcome":"NO_MUTATION","output_truncated_in_json":false,"rc":0,"rollback_restored":null,"rollback_started":false,"status":"OK","version":1}
-{"api":{"candidate_file_count":50,"fetch_failure_count":0,"fetched_file_count":50,"fetched_total_bytes":173536,"tree_blob_count":125,"tree_complete":true,"tree_directory_count":36,"tree_entry_count":161,"tree_method":"swagger_contents_recursive","tree_probes":[{"body_emitted":false,"entry_count":161,"json_parse_ok":true,"kind":"swagger_tree_recursive","ok":true,"status":200,"truncated":false},{"entry_count":17,"kind":"swagger_contents_dir","ok":true,"path_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","status":200},{"entry_count":1,"kind":"swagger_contents_dir","ok":true,"path_sha256":"b6bb94ab5634af92972c209ea962d4ef4ad8b8a59a640973efd161498a8910ef","status":200},{"entry_count":11,"kind":"swagger_contents_dir","ok":true,"path_sha256":"d0b4ba2311b3e84977dc4bb320fe72cd85426f5cf14b487a4c5352ae3ad8cb37","status":200},{"entry_count":4,"kind":"swagger_contents_dir","ok":true,"path_sha256":"46b42b4229cd7a39c564e780bb665a8bde4fdf722007e8473f167fe53ed4b995","status":200},{"entry_count":1,"kind":"swagger_contents_dir","ok":true,"path_sha256":"be4bd56772770471b639574d919a92de16c0e522ea5601e2892461691bdf9545","status":200},{"entry_count":2,"kind":"swagger_contents_dir","ok":true,"path_sha256":"b11a85b296a90afc460430434a504e7acb04b064575b7277724688af0e59d189","status":200},{"entry_count":4,"kind":"swagger_contents_dir","ok":true,"path_sha256":"604cee807f644af47487bf2bbab442b94212ac5119f36f995f78e9e4694dae8c","status":200},{"entry_count":2,"kind":"swagger_contents_dir","ok":true,"path_sha256":"5b3a02e57af9b55aae545b599baa6a6798a364d8d2798a38536249f77e30fe5f","status":200}]},"auth_attempts":[{"authorization_value_emitted":false,"body_emitted":false,"exact_repository_identity":true,"json_parse_ok":true,"source":"git_credentials_store","status":200}],"auth_context":{"accepted_candidate_count":1,"checked_path_count":2,"home_paths_emitted":false,"matching_entry_count":1,"readable_path_count":1,"secret_hashes_emitted":false,"secret_values_emitted":false,"source":"git_credentials_store"},"authorization_header_sent":true,"authorization_values_emitted":false,"branch":{"available":true,"body_emitted":false,"commit_sha":"fe1221b06643db3b00a621b0230f92a46a4edc2b","json_parse_ok":true,"status":200},"changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-GITEA-REPOSITORY-CONTENT-DEEP-ANALYSIS-READ-ONLY-20260805T124500Z","command_rc":0,"credential_values_emitted":false,"dns":{"address_count":1,"addresses":[{"family":4,"scope":"private","sha256":"bc517b4af3298846906234d3d697d3820b0b652ade1880c937c9d71cd802c834"}],"available":true,"duration_seconds":0.001,"error_count":0,"errors":[],"raw_addresses_emitted":false},"endpoint_probes":[{"address":{"family":4,"scope":"private","sha256":"bc517b4af3298846906234d3d697d3820b0b652ade1880c937c9d71cd802c834"},"body_emitted":false,"status":200,"tls":{"certificate_sha256":"3167a6916d6fad2e15d1c19af823f314e5e4abfc08e3ba20ee2cd79557897ff9","cipher":"TLS_AES_256_GCM_SHA384","san_dns_count":1,"target_san_present":true,"tls_version":"TLSv1.3"},"valid_gitea":true}],"error_fingerprint":"26d65952ac8f64197a6fd76ec56e3b5ffda8c4838efe2af2947a603d01270b92","http_methods":["GET"],"mutation_outcome":"NO_MUTATION","network_requests_made":true,"next_action":"RUN_ONE_READ_ONLY_GITEA_DEFINED_CLUSTER_FACT_AND_DOCUMENT_GAP_ANALYSIS","output_truncated_in_json":false,"pre_command_known_error_gate":{"checked":true,"count":27,"ids":["candidate-scan-limit-20260805","runner-wrapper-mismatch-20260805","gitea-owner-hardcoded-20260805","gitea-git-auth-unavailable-20260805","pvesh-adapter-context-unreadable-20260805","gitea-process-self-match-20260805","sanitize-non-string-attributeerror-20260805","reader-path-env-misclassified-as-route-20260805","reader-loopback-only-probe-20260805","reader-capability-not-secret-20260805","reader-systemd-unit-parsed-as-python-20260805","reader-helper-contract-coverage-gap-20260805","reader-capability-root-empty-suffix-404-20260805","reader-generic-suffix-missed-exact-operation-20260805","reader-feed-500-without-origin-20260805","reader-sandbox-global-binding-undefined-20260805","reader-negative-control-exception-polluted-classification-20260805","reader-result-regex-candidate-not-proven-20260805","reader-fake-dependency-contract-incomplete-20260805","reader-manifest-alias-dataflow-gap-20260805","reader-result-output-bound-after-compaction-20260805","reader-result-reference-invalid-json-assumption-20260805","reader-file-backed-feed-serves-manifest-only-20260805","reader-exact-text-gitea-marker-context-unmapped-20260805","reader-gitea-marker-detail-false-positive-pve-no-candidate-20260805","reverse-proxy-runtime-not-host-visible-20260805","external-gitea-repository-not-anonymous-20260805"]},"prevention_test":{"must_run_before_future_cluster_commands":true,"name":"gitea_cluster_reference_and_error_registry_preflight","requirements":["verify the exact previous result and repository identity","use the instance swagger contract before constructing API paths","read the canonical handbook and active error registry at the exact default-branch commit","block any command that repeats a known fingerprint or bypasses a prevention test","never emit credentials, response bodies, private addresses or repository secrets","bound tree, file and output sizes deterministically"]},"previous_exact_result_basis":{"capsule_sha256":"85d1d47f0c57a57de2cb4864d15b9f365b309561304cf5491dc1682fa0d1d6d0","changes_made":false,"command_id":"HOMELAB-CLUSTER-KB-V1-GITEA-PUBLIC-OWNER-AUTH-CONTEXT-DISCOVERY-READ-ONLY-20260805T122500Z","command_rc":0,"control_plane_error":null,"mutation_outcome":"NO_MUTATION","next_action":"RUN_ONE_READ_ONLY_EXACT_GITEA_REPOSITORY_CONTENT_ANALYSIS","output_complete":true,"output_sha256":"76115dd10a58d162f41eae4b8367997a47b6abc9550004138f260e0551c2af1d","output_truncated_in_json":false,"rc":0,"repository_default_branch":"main","repository_full_name":"homelab-admin/homelab-ops","repository_private":true,"rollback_restored":null,"rollback_started":false,"root_cause_classification":"AUTHENTICATED_GITEA_REPOSITORY_DISCOVERED_BY_EXACT_API_MATCH","runner_document_rc":0,"runner_json_sha256":"76c58ac249a687ad743cdf97d2b3c0f04c927153779f21ccf9d4c02215f12cea","runner_rc":0,"runner_text_sha256":"d743e02c31599df0999b2facf8879f49d147f9978561dde031703ee0847294a7","runner_wrapper_matches_document":true,"status":"OK"},"private_addresses_emitted":false,"raw_response_bodies_emitted":false,"rc":0,"read_only":true,"ready_for_gitea_defined_cluster_fact_analysis":true,"real_file_mutations_made":false,"recommended_error_system_v2":{"acceptance_criteria":["zero hard-coded owner/path/host/version unless proven by exact prior evidence or current Gitea content","zero mutation without byte-for-byte backup and tested rollback","zero repeated known error fingerprint","all command outputs bounded and non-truncated","all new errors recorded before any subsequent command"],"components":[{"component":"machine_error_registry","requirement":"one append-only machine-readable record per proven failure with stable id, normalized fingerprint, exact command/capsule/result SHA, root cause, correction and prevention test"},{"component":"pre_command_gate","requirement":"before every .hcmd, read canonical cluster reference and entire active error registry; block duplicate failed fingerprints and commands that violate a prevention test"},{"component":"transaction_manifest","requirement":"every mutation declares exact source SHA, candidate SHA, byte backup SHA, preconditions, atomic apply, verification and deterministic rollback"},{"component":"post_result_ingestion","requirement":"after exact-result verification, automatically classify the outcome, append new proven failures, close corrected cases and link superseded commands"},{"component":"regression_suite","requirement":"positive and negative fixtures for every recorded error; payload self-test and repository CI must pass before command publication"},{"component":"knowledge_freshness","requirement":"canonical handbook stores last verified fact source, verification time, source SHA and stale/unknown markers; commands may not rely on stale or unknown values"}],"grounded_in_detected_gaps":["no_static_evidence_error_fingerprint_gate"],"minimum_gate_order":["verify previous exact result identity","read canonical handbook at exact branch commit","read active errors and prevention tests","validate target facts from authoritative source","run payload regression tests","only then publish or execute the next command"],"name":"Error System V2: evidence-first command gate","reuse_existing_error_root":"changes/CR-2026-0018"},"regression_tests":{"checks":{"exact_repo_identity":true,"http_method_read_only":true,"known_error_gate_complete":true,"output_projection_worst_case":true,"previous_exact_identity_complete":true,"registry_parser":true,"reject_wrong_owner":true,"sanitizer_redacts":true,"sanitizer_type_safe":true,"swagger_routes_exact":true,"swagger_template_encodes_path":true,"tree_parser":true},"passed":true},"repository":{"archived":false,"default_branch":"main","empty":false,"full_name":"homelab-admin/homelab-ops","identity_safe":true,"mirror":false,"name":"homelab-ops","owner":"homelab-admin","private":true,"size":3837},"repository_analysis":{"analyzed_file_count":50,"canonical_handbook":{"candidates":[{"blob_sha":"7a8cb9e2dd5bc1235937aa211293b47ed4e26263","bytes":29485,"canonical_phrase_hits":3,"canonical_score":227,"content_sha256":"8051e3e761493a1b7088a0f3ed7e0aa9218673f453ca88171178364d26701f64","headings":[],"inbound_reference_count":8,"path":"errors/regression-cases.json"},{"blob_sha":"d2adf1bf345063da2b02040697f4358ba4ca4ae1","bytes":4667,"canonical_phrase_hits":0,"canonical_score":74,"content_sha256":"a49bcb32ac7212d7fb9768db8a277cb5525c873c84dd6fb633edae35dc6de532","headings":[],"inbound_reference_count":0,"path":"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh"},{"blob_sha":"c42de139cdf529611d50ad86291fb40df5bc0d09","bytes":1652,"canonical_phrase_hits":1,"canonical_score":56,"content_sha256":"ac5dc881dcd9fcb72644bc893e866f463c9c2b9b4544e32434e21b5d34168fb5","headings":[],"inbound_reference_count":1,"path":"inventory/access-paths.json"},{"blob_sha":"a1528e7cbc2b1027bfd7faa220bf1f096cdde1f5","bytes":3665,"canonical_phrase_hits":0,"canonical_score":55,"content_sha256":"666072447ba11d346772f62f274dadc974c4463e20f67e67f82f228f1fcf2ce8","headings":[],"inbound_reference_count":0,"path":"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh"},{"blob_sha":"c6f94aa845bc4cd8fc061e5e03e0fd7771a01bc6","bytes":7440,"canonical_phrase_hits":0,"canonical_score":54,"content_sha256":"636254d2526f0f62184d47cdb4c30c2831b11869c2000c557666f60b55d7691b","headings":[],"inbound_reference_count":0,"path":"tasks/cluster-cloud-quorum-vm160-canary-v1/task.json"},{"blob_sha":"774e2b0e591c9ada9aac9700a1b8427645284f1e","bytes":4665,"canonical_phrase_hits":0,"canonical_score":53,"content_sha256":"34de7dd0cc60c90c1b74e7a91334cb737d33c761882d1483d5b39f15b439c6f1","headings":[],"inbound_reference_count":0,"path":"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh"}],"path":"errors/regression-cases.json","status":"UNIQUE_CONFIRMED"},"documentation_coverage":{"access":{"file_count":22,"paths":["changes/CR-2026-0018/regression-cases-draft.json","docs/planned/skladchik-moderator-assistant.md","errors/regression-cases.json","inventory/access-paths.json","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/dry-run.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/prepare.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/seal.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/verify.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/task.json","tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh","tasks/skladchik-reports-monitor-controlled-reauth-v1/README.txt","tests/test_cr_2026_0005.py","tests/test_cr_2026_0006_vm160_task.py","tests/test_cr_2026_0007_skladchik_reauth.py","tests/test_cr_2026_0007_skladchik_semantic_repair.py","tests/test_cr_2026_0009_skladchik_concurrency_guard.py","tests/test_cr_2026_0013_vm160_worker_bootstrap_transition.py","tests/test_cr_2026_0018_execution_boundary_preparation.py","tests/test_repository.py"]},"backup":{"file_count":29,"paths":["docs/ARCHITECTURE.md","docs/skladchik-cookie-refresh.md","errors/regression-cases.json","observed/cluster-guests.json","policies/cluster-cloud-quorum.json","schemas/change.schema.json","tasks/cluster-cloud-quorum-vm160-canary-v1/assets/pve02-vm160-preflight-probe.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/assets/vm160-cloud-quorum-worker.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/prepare.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/seal.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/verify.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/README.txt","tasks/cluster-cloud-quorum-vm160-canary-v1/task.json","tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh","tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh","tasks/skladchik-reports-monitor-controlled-reauth-v1/README.txt","tests/test_cr_2026_0005.py","tests/test_cr_2026_0006.py","tests/test_cr_2026_0006_vm160_task.py","tests/test_cr_2026_0007_skladchik_reauth.py","tests/test_cr_2026_0007_skladchik_semantic_repair.py","tests/test_cr_2026_0008_skladchik_snapshot_integrity.py","tests/test_cr_2026_0009_skladchik_concurrency_guard.py","tests/test_cr_2026_0011_skladchik_cookie_jar_reset.py","tests/test_cr_2026_0012_skladchik_cookie_refresh_runbook.py","tests/test_cr_2026_0018_execution_boundary_preparation.py"]},"error_system":{"file_count":44,"paths":[".gitea/workflows/ci.yml","changes/CR-2026-0018/caller-inventory-requirements.md","changes/CR-2026-0018/regression-cases-draft.json","changes/README.md","docs/ARCHITECTURE.md","docs/skladchik-cookie-refresh.md","docs/WORKFLOW.md","errors/regression-cases.json","inventory/cluster-nodes.json","policies/cluster-cloud-quorum.json","policies/operating-policy.json","README.md","schemas/change.schema.json","schemas/context.schema.json","sources/README.md","tasks/cluster-cloud-quorum-vm160-canary-v1/assets/pve02-vm160-preflight-probe.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/assets/vm160-cloud-quorum-worker.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/dry-run.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/prepare.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/seal.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/verify.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/README.txt","tasks/cluster-cloud-quorum-vm160-canary-v1/task.json","tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh","tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/edge-preflight.sh","tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh","tasks/skladchik-reports-monitor-controlled-reauth-v1/README.txt"]},"internal_external":{"file_count":7,"paths":["changes/CR-2026-0018/regression-cases-draft.json","errors/regression-cases.json","policies/operating-policy.json","tasks/homelab-logrotate-namespace-latch-clearance-v1/README.txt","tests/test_cr_2026_0005.py","tests/test_cr_2026_0011_skladchik_cookie_jar_reset.py","tests/test_cr_2026_0012_skladchik_cookie_refresh_runbook.py"]},"repair":{"file_count":31,"paths":["changes/CR-2026-0018/caller-inventory-requirements.md","changes/README.md","docs/ARCHITECTURE.md","docs/skladchik-cookie-refresh.md","docs/WORKFLOW.md","errors/regression-cases.json","policies/cluster-cloud-quorum.json","policies/operating-policy.json","README.md","schemas/change.schema.json","tasks/cluster-cloud-quorum-vm160-canary-v1/assets/vm160-cloud-quorum-worker.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/dry-run.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/prepare.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/seal.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/verify.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/task.json","tasks/skladchik-reports-monitor-controlled-reauth-v1/README.txt","tests/test_cr_2026_0005.py","tests/test_cr_2026_0006.py","tests/test_cr_2026_0006_vm160_task.py","tests/test_cr_2026_0007_skladchik_reauth.py","tests/test_cr_2026_0007_skladchik_semantic_repair.py","tests/test_cr_2026_0008_skladchik_snapshot_integrity.py","tests/test_cr_2026_0009_skladchik_concurrency_guard.py","tests/test_cr_2026_0011_skladchik_cookie_jar_reset.py","tests/test_cr_2026_0012_skladchik_cookie_refresh_runbook.py","tests/test_cr_2026_0018_execution_boundary_preparation.py"]},"services":{"file_count":21,"paths":["changes/CR-2026-0018/caller-inventory-requirements.md","docs/ARCHITECTURE.md","docs/planned/skladchik-moderator-assistant.md","errors/regression-cases.json","observed/cluster-guests.json","tasks/cluster-cloud-quorum-vm160-canary-v1/assets/vm160-cloud-quorum-worker.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/dry-run.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/prepare.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/seal.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/verify.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/task.json","tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh","tasks/homelab-logrotate-namespace-latch-clearance-v1/README.txt","tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/edge-preflight.sh","tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh","tests/fixtures/gitea-legacy-auth-permission.json","tests/test_cr_2026_0005.py","tests/test_reg_014_015.py"]}},"error_system":{"duplicate_error_ids":[],"duplicate_fingerprints":[],"enforcement_path_count":7,"enforcement_paths":["schemas/change.schema.json","schemas/context.schema.json","tasks/cluster-cloud-quorum-vm160-canary-v1/assets/pve02-vm160-preflight-probe.sh","tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh","tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh","tasks/skladchik-reports-monitor-controlled-reauth-v1/assets/edge-preflight.sh","tasks/skladchik-reports-monitor-controlled-reauth-v1/phases/preflight.sh"],"gate_signals":{"ci_workflow_present":true,"duplicate_failed_command_block_signal":false,"error_register_checked_signal":false,"fingerprint_signal":false,"preflight_references_error_register":true,"reference_register_checked_signal":false,"schema_validation_signal":true,"tests_present":true},"machine_parseable_registry_file_count":2,"prevention_evidence_count":0,"registry_path_count":2,"registry_paths":["changes/CR-2026-0018/regression-cases-draft.json","errors/regression-cases.json"],"regression_path_count":2,"regression_paths":["changes/CR-2026-0018/regression-cases-draft.json","errors/regression-cases.json"],"superseded_path_count":0,"superseded_paths":[],"test_path_count":14,"test_paths":["tests/fixtures/gitea-legacy-auth-permission.json","tests/test_cr_2026_0005.py","tests/test_cr_2026_0006.py","tests/test_cr_2026_0006_vm160_task.py","tests/test_cr_2026_0007_skladchik_reauth.py","tests/test_cr_2026_0007_skladchik_semantic_repair.py","tests/test_cr_2026_0008_skladchik_snapshot_integrity.py","tests/test_cr_2026_0009_skladchik_concurrency_guard.py","tests/test_cr_2026_0011_skladchik_cookie_jar_reset.py","tests/test_cr_2026_0012_skladchik_cookie_refresh_runbook.py","tests/test_cr_2026_0013_vm160_worker_bootstrap_transition.py","tests/test_cr_2026_0018_execution_boundary_preparation.py","tests/test_reg_014_015.py","tests/test_repository.py"],"unique_error_id_count":61,"unique_fingerprint_count":0,"workflow_path_count":1,"workflow_paths":[".gitea/workflows/ci.yml"]},"gaps":["no_static_evidence_error_fingerprint_gate"],"top_analyzed_files":[{"blob_sha":"7a8cb9e2dd5bc1235937aa211293b47ed4e26263","bytes":29485,"canonical_score":227,"content_sha256":"8051e3e761493a1b7088a0f3ed7e0aa9218673f453ca88171178364d26701f64","headings":[],"hits":{"access":9,"backup":29,"canonical":3,"error":49,"repair":40,"scope":1,"service":8},"inbound_reference_count":8,"lines":360,"path":"errors/regression-cases.json","path_score":71,"path_tags":["error_registry","error_system"],"repo_reference_count":0},{"blob_sha":"d2adf1bf345063da2b02040697f4358ba4ca4ae1","bytes":4667,"canonical_score":74,"content_sha256":"a49bcb32ac7212d7fb9768db8a277cb5525c873c84dd6fb633edae35dc6de532","headings":[],"hits":{"access":8,"backup":20,"canonical":0,"error":9,"repair":1,"scope":0,"service":10},"inbound_reference_count":0,"lines":54,"path":"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/preflight.sh","path_score":41,"path_tags":["cluster_docs","enforcement","error_system"],"repo_reference_count":0},{"blob_sha":"c42de139cdf529611d50ad86291fb40df5bc0d09","bytes":1652,"canonical_score":56,"content_sha256":"ac5dc881dcd9fcb72644bc893e866f463c9c2b9b4544e32434e21b5d34168fb5","headings":[],"hits":{"access":8,"backup":0,"canonical":1,"error":0,"repair":0,"scope":0,"service":0},"inbound_reference_count":1,"lines":70,"path":"inventory/access-paths.json","path_score":20,"path_tags":["cluster_docs"],"repo_reference_count":0},{"blob_sha":"a1528e7cbc2b1027bfd7faa220bf1f096cdde1f5","bytes":3665,"canonical_score":55,"content_sha256":"666072447ba11d346772f62f274dadc974c4463e20f67e67f82f228f1fcf2ce8","headings":[],"hits":{"access":20,"backup":27,"canonical":0,"error":4,"repair":3,"scope":0,"service":7},"inbound_reference_count":0,"lines":39,"path":"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/rollback.sh","path_score":18,"path_tags":["cluster_docs"],"repo_reference_count":0},{"blob_sha":"c6f94aa845bc4cd8fc061e5e03e0fd7771a01bc6","bytes":7440,"canonical_score":54,"content_sha256":"636254d2526f0f62184d47cdb4c30c2831b11869c2000c557666f60b55d7691b","headings":[],"hits":{"access":13,"backup":28,"canonical":0,"error":22,"repair":12,"scope":0,"service":8},"inbound_reference_count":0,"lines":194,"path":"tasks/cluster-cloud-quorum-vm160-canary-v1/task.json","path_score":18,"path_tags":["cluster_docs"],"repo_reference_count":0},{"blob_sha":"774e2b0e591c9ada9aac9700a1b8427645284f1e","bytes":4665,"canonical_score":53,"content_sha256":"34de7dd0cc60c90c1b74e7a91334cb737d33c761882d1483d5b39f15b439c6f1","headings":[],"hits":{"access":13,"backup":19,"canonical":0,"error":2,"repair":1,"scope":0,"service":7},"inbound_reference_count":0,"lines":46,"path":"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/apply.sh","path_score":18,"path_tags":["cluster_docs"],"repo_reference_count":0},{"blob_sha":"9cc7d2fa3bc044d311500a5cf798273c79e39c35","bytes":4233,"canonical_score":52,"content_sha256":"ac0885c9762b99f360256ad3b3894f9cbcc4a8deab529a19ef264fe446bff029","headings":[],"hits":{"access":8,"backup":16,"canonical":0,"error":9,"repair":7,"scope":0,"service":11},"inbound_reference_count":0,"lines":42,"path":"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/verify.sh","path_score":18,"path_tags":["cluster_docs"],"repo_reference_count":0},{"blob_sha":"b83d0e532e28ce926b61de16a50b721c48d59acb","bytes":569,"canonical_score":46,"content_sha256":"330f35202bc0779778e22e16947bbfa19969f9c288ae9f7d273276bea7990970","headings":[],"hits":{"access":0,"backup":5,"canonical":0,"error":4,"repair":0,"scope":0,"service":0},"inbound_reference_count":0,"lines":16,"path":"tasks/cluster-cloud-quorum-vm160-canary-v1/assets/pve02-vm160-preflight-probe.sh","path_score":41,"path_tags":["cluster_docs","enforcement","error_system"],"repo_reference_count":0},{"blob_sha":"5aec8827ca6132a8c9f49257c31aba9a65010982","bytes":1206,"canonical_score":43,"content_sha256":"d9cb129e009176a7dde2a07f59760acddd9e17237eef563e97a55b3e62838bd1","headings":["homelab-ops","Порядок работы","Локальная проверка"],"hits":{"access":0,"backup":0,"canonical":1,"error":1,"repair":1,"scope":0,"service":0},"inbound_reference_count":0,"lines":28,"path":"README.md","path_score":15,"path_tags":["index"],"repo_reference_count":0},{"blob_sha":"92e011792d7153636e52ea44ad2a8648e2771a96","bytes":1869,"canonical_score":41,"content_sha256":"21802253966e8d94e8404fd6a217c8248004091dc9dd3b4c03193e3c81af4609","headings":[],"hits":{"access":0,"backup":1,"canonical":0,"error":6,"repair":0,"scope":0,"service":11},"inbound_reference_count":0,"lines":20,"path":"tasks/homelab-logrotate-namespace-latch-clearance-v1/phases/preflight.sh","path_score":29,"path_tags":["cluster_docs","enforcement","error_system"],"repo_reference_count":0},{"blob_sha":"bad7037197f12ce9ce0b8be3b5723345699680b5","bytes":2289,"canonical_score":40,"content_sha256":"e07ccfac39f862c2bce2da0d31112e8e055ca9d3f23a01a8f33302863239203a","headings":[],"hits":{"access":1,"backup":0,"canonical":0,"error":0,"repair":0,"scope":2,"service":0},"inbound_reference_count":0,"lines":92,"path":"changes/CR-2026-0018/regression-cases-draft.json","path_score":39,"path_tags":["error_registry","error_system"],"repo_reference_count":0},{"blob_sha":"00a8ee1a1a4a937e36141d0ee8d607c1e9b7c266","bytes":2622,"canonical_score":40,"content_sha256":"ae589aaad30d2f062fd3455c54b880c4a7c2790f4b3919f4c30cb07de76e6765","headings":[],"hits":{"access":8,"backup":11,"canonical":0,"error":2,"repair":1,"scope":0,"service":3},"inbound_reference_count":0,"lines":31,"path":"tasks/cluster-cloud-quorum-vm160-canary-v1/phases/prepare.sh","path_score":18,"path_tags":["cluster_docs"],"repo_reference_count":0}]},"repository_file_contents_emitted":false,"result_projection":{"budget_bytes":29232,"bytes":26771,"max_bytes":30000,"steps":["top_analyzed_files_12","handbook_candidates_6"]},"rollback_restored":null,"rollback_started":false,"root_cause_classification":"GITEA_CLUSTER_HANDBOOK_AND_ERROR_SYSTEM_DEEPLY_ANALYZED","schema":1,"secret_hashes_emitted":false,"status":"OK","swagger":{"available":true,"base_path":"/api/v1","meta":{"body_bytes":839152,"body_emitted":false,"body_sha256":"5cf3d367ba1e073177421344d82490f226e044999c90e5b336d5ccdf21c9b027","json_parse_ok":true,"status":200},"route_coverage":{"blob":true,"branch":true,"contents_path":true,"repo":true}}}
+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":[" Домен припаркован"," PARKED_PAGE_OK · homelab
"]}],"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@:/tmp/","line":21,"operands":["/tmp/cluster-admin-webpanel-sync/*.txt","debian@:/tmp/"],"raw":"scp -q -o BatchMode=yes -o ConnectTimeout=8 \"$TMP\"/*.txt debian@:/tmp/","tokens":["scp","-q","-o","BatchMode=yes","-o","ConnectTimeout=8","/tmp/cluster-admin-webpanel-sync/*.txt","debian@:/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@:/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"}]}}
OUTPUT_END
CHAT_OUTPUT_END