From 79f55ec35c4dc93f44428b4be4d7773496d79e2c Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Tue, 4 Aug 2026 11:17:03 +0000 Subject: [PATCH] runtime: publish CONTEXT-AUTO-20260804T111701Z --- .../CONTEXT-AUTO-20260804T111701Z.json | 1 + .../history/CONTEXT-AUTO-20260804T111701Z.txt | 164 +++++++++++++++ runtime/latest.json | 39 +--- runtime/latest.txt | 186 +++++++++++++++--- 4 files changed, 324 insertions(+), 66 deletions(-) create mode 100644 runtime/history/CONTEXT-AUTO-20260804T111701Z.json create mode 100644 runtime/history/CONTEXT-AUTO-20260804T111701Z.txt diff --git a/runtime/history/CONTEXT-AUTO-20260804T111701Z.json b/runtime/history/CONTEXT-AUTO-20260804T111701Z.json new file mode 100644 index 0000000..68f6f5e --- /dev/null +++ b/runtime/history/CONTEXT-AUTO-20260804T111701Z.json @@ -0,0 +1 @@ +{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260804T111701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-08-04T11:17:01Z","finished_at_utc":"2026-08-04T11:17:02Z","reference_register_checked":true,"reference_sha256":"5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e","error_register_checked":true,"error_register_sha256":"24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83","changes_made":false,"sanitized":true,"secrets_included":false,"private_addresses_included":false,"output":"AUTOMATIC_CLUSTER_CONTEXT_REFRESH=OK"} diff --git a/runtime/history/CONTEXT-AUTO-20260804T111701Z.txt b/runtime/history/CONTEXT-AUTO-20260804T111701Z.txt new file mode 100644 index 0000000..1864c44 --- /dev/null +++ b/runtime/history/CONTEXT-AUTO-20260804T111701Z.txt @@ -0,0 +1,164 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=CONTEXT-AUTO-[PRIVATE_IP]701Z +STATUS=OK +RC=0 +HOST=pve01 +COMPONENT=cluster-context +REFERENCE_SHA[PRIVATE_IP]f8edc75fcf[PRIVATE_IP]c[PRIVATE_IP]cc112ceccb6cf[PRIVATE_IP]a4deb8e +ERROR_REGISTER_SHA[PRIVATE_IP]c7fa[PRIVATE_IP]583c4aefac[PRIVATE_IP]1736ed[PRIVATE_IP]ab83 +OUTPUT_BEGIN +GENERATED_AT_UTC=[PRIVATE_IP]T11:17:01Z +Cluster information +------------------- +Name: homelab +Config Version: 3 +Transport: knet +Secure auth: on + +Quorum information +------------------ +Date: Tue Aug [PRIVATE_IP] 2026 +Quorum provider: corosync_votequorum +Nodes: 3 +Node ID: [PRIVATE_IP] +Ring ID: 1.db +Quorate: Yes + +Votequorum information +---------------------- +Expected votes: 3 +Highest expected: 3 +Total votes: 3 +Quorum: 2 +Flags: Quorate + +Membership information +---------------------- + Nodeid Votes Name +[PRIVATE_IP] [PRIVATE_IP].11 (local) +[PRIVATE_IP] [PRIVATE_IP].13 +[PRIVATE_IP] [PRIVATE_IP].12 + +Membership information +---------------------- + Nodeid Votes Name + 1 1 pve01 (local) + 2 1 pve03 + 3 1 pve02 +[{"cpu":[PRIVATE_IP][PRIVATE_IP],"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/110","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":605401,"vmid":110},{"cpu":[PRIVATE_IP][PRIVATE_IP],"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/111","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns2","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"lxc","uptime":605484,"vmid":111},{"cpu":[PRIVATE_IP]937e-05,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/112","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"unbound1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":605446,"vmid":112},{"cpu":[PRIVATE_IP]381e-05,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/113","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"unbound2","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"lxc","uptime":605488,"vmid":113},{"cpu":[PRIVATE_IP]12488,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/130","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"edge-vm","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":605425,"vmid":130},{"cpu":[PRIVATE_IP]42083,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/150","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"nextcloud","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":605398,"vmid":150},{"cpu":[PRIVATE_IP]227865,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/160","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"forum-prod","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"qemu","uptime":605481,"vmid":160},{"cpu":[PRIVATE_IP]08911,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/170","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"core-apps","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":605394,"vmid":170},{"cpu":[PRIVATE_IP]83769,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/171","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"monitoring","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":605391,"vmid":171},{"cpu":[PRIVATE_IP]30472,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/180","maxcpu":2,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"cluster-admin","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"qemu","uptime":605478,"vmid":180},{"cpu":[PRIVATE_IP]255975,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/190","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"homelab-ops-worker","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":605421,"vmid":190},{"cpu":0,"disk":0,"diskread":0,"diskwrite":0,"id":"qemu/9130","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":0,"memhost":0,"name":"edge-cold-standby","netin":0,"netout":0,"node":"pve02","status":"stopped","template":0,"type":"qemu","uptime":0,"vmid":9130},{"cgroup-mode":2,"cpu":[PRIVATE_IP]10338,"disk":[PRIVATE_IP],"id":"node/pve03","level":"","maxcpu":8,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve03","status":"online","type":"node","uptime":605442},{"cgroup-mode":2,"cpu":[PRIVATE_IP]31131,"disk":[PRIVATE_IP],"id":"node/pve01","level":"","maxcpu":24,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve01","status":"online","type":"node","uptime":605503},{"cgroup-mode":2,"cpu":[PRIVATE_IP]0734,"disk":[PRIVATE_IP],"id":"node/pve02","level":"","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve02","status":"online","type":"node","uptime":605521},{"content":"vztmpl,import,backup,iso","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"vztmpl,import,backup,iso","disk":[PRIVATE_IP],"id":"storage/pve01/local","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"vztmpl,import,backup,iso","disk":[PRIVATE_IP],"id":"storage/pve02/local","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve03/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve01/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve02/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"id":"network/pve03/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve03","status":"ok","type":"network"},{"id":"network/pve01/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve01","status":"ok","type":"network"},{"id":"network/pve02/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve02","status":"ok","type":"network"}] +Name Type Status Total (KiB) Used (KiB) Available (KiB) % +local dir active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 14.16% +local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 27.36% + UNIT LOAD ACTIVE SUB DESCRIPTION +● homelab-backup-matrix-refresh.service loaded failed failed Generate unified homelab backup matrix state +● homelab-crypto-portfolio-chart-health.service loaded failed failed Crypto portfolio chart health check +● skladchik-reports-monitor-supervisor.service loaded failed failed Skladchik reports monitor full supervisor + +Legend: LOAD → Reflects whether the unit definition was properly loaded. + ACTIVE → The high-level unit activation state, i.e. generalization of SUB. + SUB → The low-level unit activation state, values depend on unit type. + +3 loaded units listed. +NEXT LEFT LAST PASSED UNIT ACTIVATES +Tue [PRIVATE_IP] 14:17:19 MSK 16s Tue [PRIVATE_IP] 14:16:17 MSK 45s ago homelab-router-watchdog.timer homelab-router-watchdog.service +Tue [PRIVATE_IP] 14:17:26 MSK 23s Tue [PRIVATE_IP] 14:12:26 MSK 4min 36s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service +Tue [PRIVATE_IP] 14:17:39 MSK 37s Tue [PRIVATE_IP] 14:12:26 MSK 4min 36s ago homelab-health-metrics.timer homelab-health-metrics.service +Tue [PRIVATE_IP] 14:17:48 MSK 45s Tue [PRIVATE_IP] 14:16:48 MSK 14s ago homelab-cluster-admin-webpanel-sync.timer homelab-cluster-admin-webpanel-sync.service +Tue [PRIVATE_IP] 14:17:48 MSK 45s Tue [PRIVATE_IP] 14:16:48 MSK 14s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service +Tue [PRIVATE_IP] 14:17:49 MSK 47s Tue [PRIVATE_IP] 14:15:47 MSK 1min 14s ago homelab-cluster-admin-inventory-sync.timer homelab-cluster-admin-inventory-sync.service +Tue [PRIVATE_IP] 14:18:14 MSK 1min 12s Tue [PRIVATE_IP] 14:13:14 MSK 3min 47s ago netbird-peers-health.timer netbird-peers-health.service +Tue [PRIVATE_IP] 14:19:26 MSK 2min 23s Tue [PRIVATE_IP] 14:04:26 MSK 12min ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service +Tue [PRIVATE_IP] 14:20:24 MSK 3min 21s Tue [PRIVATE_IP] 14:15:07 MSK 1min 55s ago homelab-crypto-portfolio-chart-health.timer homelab-crypto-portfolio-chart-health.service +Tue [PRIVATE_IP] 14:20:26 MSK 3min 23s Mon [PRIVATE_IP] 14:20:26 MSK 23h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service +Tue [PRIVATE_IP] 14:21:24 MSK 4min 21s Tue [PRIVATE_IP] 14:11:24 MSK 5min ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service +Tue [PRIVATE_IP] 14:22:07 MSK 5min Tue [PRIVATE_IP] 14:07:07 MSK 9min ago homelab-disk-space-health.timer homelab-disk-space-health.service +Tue [PRIVATE_IP] 14:22:26 MSK 5min Tue [PRIVATE_IP] 14:07:26 MSK 9min ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service +Tue [PRIVATE_IP] 14:24:26 MSK 7min Tue [PRIVATE_IP] 14:09:26 MSK 7min ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service +Tue [PRIVATE_IP] 14:30:00 MSK 12min Tue [PRIVATE_IP] 14:15:07 MSK 1min 55s ago homelab-incident-journal.timer homelab-incident-journal.service +Tue [PRIVATE_IP] 14:30:55 MSK 13min Tue [PRIVATE_IP] 14:16:07 MSK 55s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service +Tue [PRIVATE_IP] 14:31:22 MSK 14min Tue [PRIVATE_IP] 14:16:14 MSK 47s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service +Tue [PRIVATE_IP] 14:31:22 MSK 14min Tue [PRIVATE_IP] 14:16:07 MSK 55s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service +Tue [PRIVATE_IP] 14:34:16 MSK 17min Tue [PRIVATE_IP] 14:01:50 MSK 15min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service +Tue [PRIVATE_IP] 14:40:02 MSK 23min Tue [PRIVATE_IP] 14:08:14 MSK 8min ago homelab-reference-refresh.timer homelab-reference-refresh.service +Tue [PRIVATE_IP] 20:08:26 MSK 5h 51min Tue [PRIVATE_IP] 14:08:26 MSK 8min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service +Wed [PRIVATE_IP] 00:00:00 MSK 9h Tue [PRIVATE_IP] 00:00:07 MSK 14h ago dpkg-db-backup.timer dpkg-db-backup.service +Wed [PRIVATE_IP] 00:08:04 MSK 9h Tue [PRIVATE_IP] 00:05:08 MSK 14h ago homelab-storage-capacity.timer homelab-storage-capacity.service +Wed [PRIVATE_IP] 00:08:47 MSK 9h Tue [PRIVATE_IP] 00:08:07 MSK 14h ago homelab-evidence-catalog.timer homelab-evidence-catalog.service +Wed [PRIVATE_IP] 00:13:19 MSK 9h Tue [PRIVATE_IP] 00:13:28 MSK 14h ago homelab-docker-health.timer homelab-docker-health.service +Wed [PRIVATE_IP] 00:18:54 MSK 10h Tue [PRIVATE_IP] 00:08:14 MSK 14h ago homelab-quality-gate.timer homelab-quality-gate.service +Wed [PRIVATE_IP] 00:51:16 MSK 10h Tue [PRIVATE_IP] 00:08:36 MSK 14h ago logrotate.timer logrotate.service +Wed [PRIVATE_IP] 01:56:09 MSK 11h Tue [PRIVATE_IP] 00:14:22 MSK 14h ago man-db.timer man-db.service +Wed [PRIVATE_IP] 03:50:00 MSK 13h Tue [PRIVATE_IP] 03:50:02 MSK 10h ago filebrowser-offhost-sync.timer filebrowser-offhost-sync.service +Wed [PRIVATE_IP] 04:05:55 MSK 13h Tue [PRIVATE_IP] 01:23:47 MSK 12h ago pve-daily-update.timer pve-daily-update.service +Wed [PRIVATE_IP] 04:48:13 MSK 14h Tue [PRIVATE_IP] 04:42:07 MSK 9h ago homelab-edge-vm-offhost-freshness.timer homelab-edge-vm-offhost-freshness.service +Wed [PRIVATE_IP] 04:58:15 MSK 14h Tue [PRIVATE_IP] 05:15:14 MSK 9h ago homelab-sops-edge-secret-coverage.timer homelab-sops-edge-secret-coverage.service +Wed [PRIVATE_IP] 05:30:03 MSK 15h Tue [PRIVATE_IP] 12:02:37 MSK 2h 14min ago apt-daily.timer apt-daily.service +Wed [PRIVATE_IP] 06:01:06 MSK 15h Tue [PRIVATE_IP] 06:53:08 MSK 7h ago apt-daily-upgrade.timer apt-daily-upgrade.service +Wed [PRIVATE_IP] 07:16:56 MSK 16h Tue [PRIVATE_IP] 07:03:50 MSK 7h ago homelab-drift-check.timer homelab-drift-check.service +Wed [PRIVATE_IP] 07:32:01 MSK 17h Tue [PRIVATE_IP] 07:39:26 MSK 6h ago homelab-service-registry-check.timer homelab-service-registry-check.service +Wed [PRIVATE_IP] 07:48:22 MSK 17h Tue [PRIVATE_IP] 07:54:17 MSK 6h ago homelab-desired-state-sync.timer homelab-desired-state-sync.service +Wed [PRIVATE_IP] 07:53:58 MSK 17h Tue [PRIVATE_IP] 07:46:07 MSK 6h ago homelab-alerting-health.timer homelab-alerting-health.service +Wed [PRIVATE_IP] 07:56:28 MSK 17h Tue [PRIVATE_IP] 07:56:07 MSK 6h ago homelab-dependency-map-check.timer homelab-dependency-map-check.service +Wed [PRIVATE_IP] 07:56:57 MSK 17h Tue [PRIVATE_IP] 07:56:50 MSK 6h ago homelab-runbook-generate.timer homelab-runbook-generate.service +Wed [PRIVATE_IP] 08:06:21 MSK 17h Tue [PRIVATE_IP] 07:59:39 MSK 6h ago homelab-duty-admin-report.timer homelab-duty-admin-report.service +Wed [PRIVATE_IP] 08:11:00 MSK 17h Tue [PRIVATE_IP] 08:03:50 MSK 6h ago homelab-overall-health.timer homelab-overall-health.service +Wed [PRIVATE_IP] 08:16:53 MSK 17h Tue [PRIVATE_IP] 08:16:35 MSK 6h ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service +Wed [PRIVATE_IP] 08:21:31 MSK 18h Tue [PRIVATE_IP] 08:12:26 MSK 6h ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service +Wed [PRIVATE_IP] 08:30:08 MSK 18h Tue [PRIVATE_IP] 08:36:50 MSK 5h 40min ago homelab-capacity-risk.timer homelab-capacity-risk.service +Wed [PRIVATE_IP] 08:37:04 MSK 18h Tue [PRIVATE_IP] 08:52:38 MSK 5h 24min ago homelab-cluster-passport.timer homelab-cluster-passport.service +Wed [PRIVATE_IP] 08:40:47 MSK 18h Tue [PRIVATE_IP] 08:36:17 MSK 5h 40min ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service +Wed [PRIVATE_IP] 08:47:05 MSK 18h Tue [PRIVATE_IP] 08:54:47 MSK 5h 22min ago immich-media-offhost-sync.timer immich-media-offhost-sync.service +Wed [PRIVATE_IP] 08:55:12 MSK 18h Tue [PRIVATE_IP] 08:50:07 MSK 5h 26min ago homelab-golden-state-index.timer homelab-golden-state-index.service +Wed [PRIVATE_IP] 09:20:57 MSK 19h Tue [PRIVATE_IP] 09:06:50 MSK 5h 10min ago memos-offhost-sync.timer memos-offhost-sync.service +Wed [PRIVATE_IP] 10:15:00 MSK 19h Tue [PRIVATE_IP] 10:15:14 MSK 4h 1min ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service +Sun [PRIVATE_IP] 03:10:38 MSK 4 days Sun [PRIVATE_IP] 03:10:25 MSK 2 days ago xfs_scrub_all.timer xfs_scrub_all.service +Sun [PRIVATE_IP] 03:10:48 MSK 4 days Sun [PRIVATE_IP] 03:10:50 MSK 2 days ago e2scrub_all.timer e2scrub_all.service +Mon [PRIVATE_IP] 00:03:56 MSK 5 days Mon [PRIVATE_IP] 00:11:50 MSK 1 day 14h ago homelab-secret-sanity.timer homelab-secret-sanity.service +Mon [PRIVATE_IP] 01:11:21 MSK 5 days Mon [PRIVATE_IP] 01:17:56 MSK 1 day 12h ago fstrim.timer fstrim.service +- - - - prometheus-node-exporter-ipmitool-sensor.timer prometheus-node-exporter-ipmitool-sensor.service +- - - - prometheus-node-exporter-mellanox-hca-temp.timer prometheus-node-exporter-mellanox-hca-temp.service +- - - - prometheus-node-exporter-smartmon.timer prometheus-node-exporter-smartmon.service + +58 timers listed. +- Обрезанная, повреждённая или частично вставленная команда считается невыполненной; сначала проводится side-effect audit. +- Хвост parse-ошибки закрывается только после доказательства отсутствия изменений и временных артефактов. +- Proof: /var/lib/homelab-change-sets/operator-command-size-guard-v[PRIVATE_IP]T182653Z/report.txt + +## HOMELAB_ADMIN_CLI_CONTRACT_[PRIVATE_IP] +- Поддерживаемые команды: version, status, lint TASK_DIR, validate TASK_DIR, run TASK_DIR PHASE. +- Отдельная команда --help отсутствует. Неизвестный аргумент печатает usage и штатно возвращает RC=64. +- Нельзя трактовать RC=64 от --help как неисправность runner. +- Для проверки доступности runner использовать homelab-admin version; для структуры CLI использовать зафиксированную usage-строку. +- Proof: /var/lib/homelab-change-sets/homelab-admin-cli-contract-fix-v[PRIVATE_IP]T183338Z/report.txt + +AUTOMATIC_CLUSTER_CONTEXT_REFRESH_[PRIVATE_IP] +Collector: /usr/local/sbin/homelab-context-collect +Scheduler: hourly at minute 17 via /etc/cron.d/homelab-context-refresh +Destination: immutable Gitea runtime history with CONTEXT-AUTO UTC command IDs. + +AUTOMATIC_CLUSTER_CONTEXT_REFRESH_DIRECT_[PRIVATE_IP] +Publisher: /usr/local/sbin/homelab-context-refresh-direct +Schedule: hourly at minute 17. +Destination: immutable assistant-runtime history with CONTEXT-AUTO UTC IDs. +ANTI_REGRESSION_TOKEN=HOMELAB_VM_2CLOUD_444_OUTER_LAUNCHER_BOUNDARY_REQUIRED +- Anti-regression: validate the complete outer launcher with a shell syntax check and verify the wrapper argument boundary before issuing it. +- Infrastructure action executed: none. +- Backup payload impact: none. +- Production impact: none. +- Status: CLOSED; UNRESOLVED_TAIL_COUNT=0. +- Registered at: [PRIVATE_IP]T11:20:32Z + +## ERROR_[PRIVATE_IP]_HOMELAB_VM_2CLOUD_DRAIN_CLOSURE_PREFLIGHT_446 +COMMAND_ID=HOMELAB-VM-2CLOUD-DRAIN-CLOSURE-PREFLIGHT-446 +- Symptom: homelab-chat-run-linked printed Usage and skipped result-feed publication as invalid input. +- Root cause: the diagnostic script was piped to wrapper stdin and the mandatory double-dash command separator was omitted. +- Correction: invoke homelab-chat-run-linked as COMMAND_ID MODE COMPONENT -- command arguments; stdin is not its command interface. +ANTI_REGRESSION_TOKEN=HOMELAB_CHAT_RUN_COMMAND_REQUIRES_DOUBLE_DASH +- Anti-regression: treat wrapper Usage as the authoritative CLI contract and syntax-check the complete launcher, not only its inner payload. +- Infrastructure action executed: none. +- Backup payload impact: none. +- Production impact: none. +- Status: CLOSED; UNRESOLVED_TAIL_COUNT=0. +- Registered at: [PRIVATE_IP]T11:20:32Z +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 7fb6a33..68f6f5e 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,38 +1 @@ -{ - "schema_version": 1, - "channel": "homelab-runtime", - "command_id": "HOMEPAGE-NEWFILYA-UPSTREAM-READ-ONLY-DISCOVERY-V13-20260804T102000Z", - "status": "FAIL", - "rc": 1, - "host": "pve01", - "mode": "verify", - "component": "homepage-newfilya-upstream-read-only-discovery-v13", - "started_at_utc": "2026-08-04T11:15:33Z", - "finished_at_utc": "2026-08-04T11:15:34Z", - "reference_register_checked": true, - "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", - "error_register_checked": true, - "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", - "command_sha256": "10aff25da35bbe9e7bf92b770ffeead54a1246ea947abc7501673c297bfa5af6", - "duplicate_failed_command_blocked": false, - "block_reason": null, - "execution_started": true, - "change_declared": false, - "result_contract_valid": true, - "result_contract_status": null, - "result_contract_error": null, - "command_rc": 1, - "changes_made": false, - "rollback_started": false, - "rollback_restored": null, - "mutation_outcome": "NO_MUTATION", - "sanitized": true, - "secrets_included": false, - "private_addresses_included": false, - "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "f70f5685e28f5b83652086203bbcd3b40ab0db97c3b5ff13de91816c054dc930", - "sanitized_output_sha256": "f70f5685e28f5b83652086203bbcd3b40ab0db97c3b5ff13de91816c054dc930", - "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\":\"HOMEPAGE-NEWFILYA-UPSTREAM-READ-ONLY-DISCOVERY-V13-20260804T102000Z\",\"mutation_outcome\":\"NO_MUTATION\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"FAIL\",\"version\":1}\n{\"PLAN_SHA256\":null,\"action\":null,\"blockers\":[\"EDGE_UPSTREAM_DISCOVERY_CANDIDATE_INCONSISTENT\",\"EDGE_UPSTREAM_DISCOVERY_INCOMPLETE\",\"EDGE_UPSTREAM_DISCOVERY_OUTCOME_INVALID\",\"EDGE_UPSTREAM_DISCOVERY_PRIVACY_INVALID\"],\"body_returned\":false,\"certificate_changed\":false,\"certificate_contents_returned\":false,\"changes_made\":false,\"command_id\":\"HOMEPAGE-NEWFILYA-UPSTREAM-READ-ONLY-DISCOVERY-V13-20260804T102000Z\",\"container_restarted\":false,\"control_plane_error\":null,\"desired_state_changed\":false,\"diagnosis\":\"NEWFILYA_UPSTREAM_DISCOVERY_BLOCKED\",\"dns_changed\":false,\"duration_ms\":1483,\"edge\":{\"candidate\":{},\"container_env_read\":false,\"database\":{\"complete\":null,\"database_contents_returned\":null,\"database_count\":null,\"database_path_sha256\":null,\"database_state\":null,\"error_code\":null,\"exact_domain_match_count\":null,\"invalid_domain_row_count\":null,\"matches\":null,\"private_addresses_returned\":null,\"proxy_column_count\":null,\"proxy_column_set_sha256\":null,\"proxy_row_count\":null,\"query_only\":null,\"secret_columns_read\":null,\"table_count\":null,\"table_set_sha256\":null,\"write_attempted\":null},\"database_contents_returned\":false,\"diagnosis\":\"NEWFILYA_UPSTREAM_DISCOVERY_EXCEPTION\",\"discovery_complete\":false,\"docker\":{\"candidates\":null,\"complete\":null,\"compose_project_count\":null,\"compose_project_set_sha256\":null,\"container_count\":null,\"container_env_read\":null,\"container_id_set_sha256\":null,\"private_addresses_returned\":null,\"server_version_sha256\":null,\"strong_candidate_count\":null,\"weak_candidate_count\":null},\"ok\":false,\"private_addresses_included\":false,\"secret_files_read\":false,\"secrets_included\":false,\"source_contents_returned\":false,\"stacks\":{\"candidates\":null,\"complete\":null,\"file_contents_read\":null,\"private_addresses_returned\":null,\"project_name_count\":null,\"project_name_set_sha256\":null,\"root_states\":null,\"strong_candidate_count\":null,\"weak_candidate_count\":null},\"status\":\"FAIL\",\"write_attempted\":false},\"gate\":\"BLOCKED\",\"gitea_changed\":false,\"homepage\":{\"backup_bytes\":12005,\"backup_mode\":\"0o600\",\"backup_sha256\":\"6468974ef09b3d9899bae5df4d8a7fa711d6cf16edda00b116747192277dcb2c\",\"card_count\":65,\"contains_private_dispatch_material\":false,\"failed_checks\":[],\"group_count\":7,\"hbarhub_card_exact\":true,\"homepage_api_sha256\":\"a1ece968406ec5ce5ba02197d5270d1e3ce34da451a69cc3cc5f38b6081ada0d\",\"homepage_api_target_href_counts\":{\"hbarhub.ru\":1,\"newfilya.ru\":1},\"homepage_image_id_sha256\":\"242e6332e372aaffcf7c821cff66dcbc12c42b2cd4ae282db9533b640892ac79\",\"homepage_image_reference_sha256\":\"b0c046cffbc1a48af0e6b240575c63b6f405debba0b2c50fa190616b5ea62808\",\"homepage_mount_exact\":true,\"homepage_restart_count\":0,\"newfilya_card_exact\":true,\"newfilya_monitor_enabled\":false,\"ok\":true,\"secret_file_read\":false,\"secrets_included\":false,\"services_bytes\":12308,\"services_sha256\":\"0b7360dc34b9bd3e25073eae449f3c0c5a6609f7eb9f4bb2feca72b6e04fc928\",\"services_structure_sha256\":\"eff9a7e610218ffdd092d704d2fcfad357db5d3b75ee0cc584c606ae4ee61f82\",\"source_contents_returned\":false,\"status\":\"OK\",\"target_href_counts\":{\"hbarhub.ru\":1,\"newfilya.ru\":1}},\"homepage_changed\":false,\"mutation_outcome\":\"NO_MUTATION\",\"next_stage\":\"NEWFILYA_UPSTREAM_DISCOVERY_FIX\",\"npmplus_reloaded\":false,\"operator_input_required\":false,\"parent_v12_evidence\":{\"PLAN_SHA256\":null,\"capsule_bytes\":93497,\"capsule_sha256\":\"2646700d3b164edb9540d39d332d4c6fda9cc0de26d49942f9c11b0704ae6231\",\"card_count\":65,\"changes_made\":false,\"command_id\":\"HOMEPAGE-NEWFILYA-PUBLIC-TLS-READ-ONLY-PLAN-FIX3-V12-20260804T100000Z\",\"command_sha256\":\"54ecaf5977858caa5a64e76d6acafabe9618d9e28181f4e7f4854bce969e07c7\",\"diagnosis\":\"NEWFILYA_PUBLIC_TLS_PLAN_BLOCKED\",\"edge_certbot_available\":true,\"edge_domain_match_count\":0,\"edge_persistent_acme_http_route_present\":true,\"edge_primary_certificate_paths_absent\":true,\"edge_remote_stdout_sha256\":\"d7f9bd738cf4abb3b7e0caa18b98f57883fea0e3eefff7cffbcb5dfc74f27723\",\"gate\":\"BLOCKED\",\"group_count\":7,\"homepage_restart_count\":0,\"mutation_outcome\":\"NO_MUTATION\",\"newfilya_monitor_enabled\":false,\"output_sha256\":\"9f9ba05a451c9a7f4b2ff4426e3c26380738d212c6071fc73585177ed5dcda29\",\"public_acme_route_proven\":true,\"public_https_npmplus_default\":true,\"public_leaf_certificate_sha256\":\"c14d6f3eda27dcd7e8c8a44c18844f8009b4f23a74ab82d49475f138ddef0b93\",\"public_tls_verify_codes\":{\"18\":1},\"rc\":1,\"ready_for_apply\":false,\"rollback_restored\":null,\"rollback_started\":false,\"services_bytes\":12308,\"services_sha256\":\"0b7360dc34b9bd3e25073eae449f3c0c5a6609f7eb9f4bb2feca72b6e04fc928\",\"services_structure_sha256\":\"eff9a7e610218ffdd092d704d2fcfad357db5d3b75ee0cc584c606ae4ee61f82\",\"status\":\"FAIL\",\"tls_state\":\"SELF_SIGNED\"},\"plan\":null,\"private_addresses_included\":false,\"private_keys_read\":false,\"production_site_changed\":false,\"public_proxy_changed\":false,\"rc\":1,\"read_only\":true,\"ready_for_route_plan\":false,\"rollback_restored\":null,\"rollback_started\":false,\"sanitized\":true,\"schema\":1,\"secret_files_read\":false,\"secrets_included\":false,\"source_contents_returned\":false,\"status\":\"FAIL\",\"transport\":{\"core\":{\"config_view\":\"service-view\",\"mode\":\"DIRECT_QGA\",\"private_addresses_returned\":false,\"qga_step_count\":6,\"qga_step_set_sha256\":\"7e03c98a289dc5cb362372ddca7bd0e0a908fc881900b3491a03e3528bd730bb\",\"remote_rc\":0,\"remote_stdout_bytes\":2804,\"remote_stdout_sha256\":\"e0879b948553afd4f8bdd4eea0ea07780ed2229372120e35f6136d9c4a719fed\",\"socket_view\":\"service-view\",\"vm_name\":\"core-apps\",\"vmid\":170},\"edge\":{\"config_view\":\"service-view\",\"mode\":\"STRICT_SSH_TO_OWNING_NODE_THEN_DIRECT_QGA\",\"node\":\"pve03\",\"private_addresses_returned\":false,\"qga_step_count\":7,\"qga_step_set_sha256\":\"6270f221997891d810eb9da3d4a1cff0011859e6929ea1e139c1076acaa2ad63\",\"remote_rc\":1,\"remote_stdout_bytes\":669,\"remote_stdout_sha256\":\"28cabc71738ea6beb1923d449c13cef3be61caeb6f6fe181b7eeb89d3931ba22\",\"socket_view\":\"service-view\",\"ssh_rc\":0,\"vm_name\":\"edge-vm\",\"vmid\":130}}}\n" -} +{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260804T111701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-08-04T11:17:01Z","finished_at_utc":"2026-08-04T11:17:02Z","reference_register_checked":true,"reference_sha256":"5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e","error_register_checked":true,"error_register_sha256":"24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83","changes_made":false,"sanitized":true,"secrets_included":false,"private_addresses_included":false,"output":"AUTOMATIC_CLUSTER_CONTEXT_REFRESH=OK"} diff --git a/runtime/latest.txt b/runtime/latest.txt index 3ca9614..1864c44 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,34 +1,164 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=HOMEPAGE-NEWFILYA-UPSTREAM-READ-ONLY-DISCOVERY-V13-20260804T102000Z -STATUS=FAIL -RC=1 +COMMAND_ID=CONTEXT-AUTO-[PRIVATE_IP]701Z +STATUS=OK +RC=0 HOST=pve01 -MODE=verify -COMPONENT=homepage-newfilya-upstream-read-only-discovery-v13 -REFERENCE_REGISTER_CHECK=OK -REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e -ERROR_REGISTER_CHECK=OK -ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 -COMMAND_SHA256=10aff25da35bbe9e7bf92b770ffeead54a1246ea947abc7501673c297bfa5af6 -DUPLICATE_FAILED_COMMAND_BLOCKED=false -EXECUTION_STARTED=true -CHANGE_DECLARED=false -RESULT_CONTRACT_VALID=true -RESULT_CONTRACT_STATUS=NOT_APPLICABLE -RESULT_CONTRACT_ERROR=NONE -COMMAND_RC=1 -CHANGES_MADE=false -ROLLBACK_STARTED=false -ROLLBACK_RESTORED=null -MUTATION_OUTCOME=NO_MUTATION -SANITIZED=yes -SECRETS_INCLUDED=no -PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=f70f5685e28f5b83652086203bbcd3b40ab0db97c3b5ff13de91816c054dc930 -SANITIZED_OUTPUT_SHA256=f70f5685e28f5b83652086203bbcd3b40ab0db97c3b5ff13de91816c054dc930 +COMPONENT=cluster-context +REFERENCE_SHA[PRIVATE_IP]f8edc75fcf[PRIVATE_IP]c[PRIVATE_IP]cc112ceccb6cf[PRIVATE_IP]a4deb8e +ERROR_REGISTER_SHA[PRIVATE_IP]c7fa[PRIVATE_IP]583c4aefac[PRIVATE_IP]1736ed[PRIVATE_IP]ab83 OUTPUT_BEGIN -HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMEPAGE-NEWFILYA-UPSTREAM-READ-ONLY-DISCOVERY-V13-20260804T102000Z","mutation_outcome":"NO_MUTATION","rollback_restored":null,"rollback_started":false,"status":"FAIL","version":1} -{"PLAN_SHA256":null,"action":null,"blockers":["EDGE_UPSTREAM_DISCOVERY_CANDIDATE_INCONSISTENT","EDGE_UPSTREAM_DISCOVERY_INCOMPLETE","EDGE_UPSTREAM_DISCOVERY_OUTCOME_INVALID","EDGE_UPSTREAM_DISCOVERY_PRIVACY_INVALID"],"body_returned":false,"certificate_changed":false,"certificate_contents_returned":false,"changes_made":false,"command_id":"HOMEPAGE-NEWFILYA-UPSTREAM-READ-ONLY-DISCOVERY-V13-20260804T102000Z","container_restarted":false,"control_plane_error":null,"desired_state_changed":false,"diagnosis":"NEWFILYA_UPSTREAM_DISCOVERY_BLOCKED","dns_changed":false,"duration_ms":1483,"edge":{"candidate":{},"container_env_read":false,"database":{"complete":null,"database_contents_returned":null,"database_count":null,"database_path_sha256":null,"database_state":null,"error_code":null,"exact_domain_match_count":null,"invalid_domain_row_count":null,"matches":null,"private_addresses_returned":null,"proxy_column_count":null,"proxy_column_set_sha256":null,"proxy_row_count":null,"query_only":null,"secret_columns_read":null,"table_count":null,"table_set_sha256":null,"write_attempted":null},"database_contents_returned":false,"diagnosis":"NEWFILYA_UPSTREAM_DISCOVERY_EXCEPTION","discovery_complete":false,"docker":{"candidates":null,"complete":null,"compose_project_count":null,"compose_project_set_sha256":null,"container_count":null,"container_env_read":null,"container_id_set_sha256":null,"private_addresses_returned":null,"server_version_sha256":null,"strong_candidate_count":null,"weak_candidate_count":null},"ok":false,"private_addresses_included":false,"secret_files_read":false,"secrets_included":false,"source_contents_returned":false,"stacks":{"candidates":null,"complete":null,"file_contents_read":null,"private_addresses_returned":null,"project_name_count":null,"project_name_set_sha256":null,"root_states":null,"strong_candidate_count":null,"weak_candidate_count":null},"status":"FAIL","write_attempted":false},"gate":"BLOCKED","gitea_changed":false,"homepage":{"backup_bytes":12005,"backup_mode":"0o600","backup_sha256":"6468974ef09b3d9899bae5df4d8a7fa711d6cf16edda00b116747192277dcb2c","card_count":65,"contains_private_dispatch_material":false,"failed_checks":[],"group_count":7,"hbarhub_card_exact":true,"homepage_api_sha256":"a1ece968406ec5ce5ba02197d5270d1e3ce34da451a69cc3cc5f38b6081ada0d","homepage_api_target_href_counts":{"hbarhub.ru":1,"newfilya.ru":1},"homepage_image_id_sha256":"242e6332e372aaffcf7c821cff66dcbc12c42b2cd4ae282db9533b640892ac79","homepage_image_reference_sha256":"b0c046cffbc1a48af0e6b240575c63b6f405debba0b2c50fa190616b5ea62808","homepage_mount_exact":true,"homepage_restart_count":0,"newfilya_card_exact":true,"newfilya_monitor_enabled":false,"ok":true,"secret_file_read":false,"secrets_included":false,"services_bytes":12308,"services_sha256":"0b7360dc34b9bd3e25073eae449f3c0c5a6609f7eb9f4bb2feca72b6e04fc928","services_structure_sha256":"eff9a7e610218ffdd092d704d2fcfad357db5d3b75ee0cc584c606ae4ee61f82","source_contents_returned":false,"status":"OK","target_href_counts":{"hbarhub.ru":1,"newfilya.ru":1}},"homepage_changed":false,"mutation_outcome":"NO_MUTATION","next_stage":"NEWFILYA_UPSTREAM_DISCOVERY_FIX","npmplus_reloaded":false,"operator_input_required":false,"parent_v12_evidence":{"PLAN_SHA256":null,"capsule_bytes":93497,"capsule_sha256":"2646700d3b164edb9540d39d332d4c6fda9cc0de26d49942f9c11b0704ae6231","card_count":65,"changes_made":false,"command_id":"HOMEPAGE-NEWFILYA-PUBLIC-TLS-READ-ONLY-PLAN-FIX3-V12-20260804T100000Z","command_sha256":"54ecaf5977858caa5a64e76d6acafabe9618d9e28181f4e7f4854bce969e07c7","diagnosis":"NEWFILYA_PUBLIC_TLS_PLAN_BLOCKED","edge_certbot_available":true,"edge_domain_match_count":0,"edge_persistent_acme_http_route_present":true,"edge_primary_certificate_paths_absent":true,"edge_remote_stdout_sha256":"d7f9bd738cf4abb3b7e0caa18b98f57883fea0e3eefff7cffbcb5dfc74f27723","gate":"BLOCKED","group_count":7,"homepage_restart_count":0,"mutation_outcome":"NO_MUTATION","newfilya_monitor_enabled":false,"output_sha256":"9f9ba05a451c9a7f4b2ff4426e3c26380738d212c6071fc73585177ed5dcda29","public_acme_route_proven":true,"public_https_npmplus_default":true,"public_leaf_certificate_sha256":"c14d6f3eda27dcd7e8c8a44c18844f8009b4f23a74ab82d49475f138ddef0b93","public_tls_verify_codes":{"18":1},"rc":1,"ready_for_apply":false,"rollback_restored":null,"rollback_started":false,"services_bytes":12308,"services_sha256":"0b7360dc34b9bd3e25073eae449f3c0c5a6609f7eb9f4bb2feca72b6e04fc928","services_structure_sha256":"eff9a7e610218ffdd092d704d2fcfad357db5d3b75ee0cc584c606ae4ee61f82","status":"FAIL","tls_state":"SELF_SIGNED"},"plan":null,"private_addresses_included":false,"private_keys_read":false,"production_site_changed":false,"public_proxy_changed":false,"rc":1,"read_only":true,"ready_for_route_plan":false,"rollback_restored":null,"rollback_started":false,"sanitized":true,"schema":1,"secret_files_read":false,"secrets_included":false,"source_contents_returned":false,"status":"FAIL","transport":{"core":{"config_view":"service-view","mode":"DIRECT_QGA","private_addresses_returned":false,"qga_step_count":6,"qga_step_set_sha256":"7e03c98a289dc5cb362372ddca7bd0e0a908fc881900b3491a03e3528bd730bb","remote_rc":0,"remote_stdout_bytes":2804,"remote_stdout_sha256":"e0879b948553afd4f8bdd4eea0ea07780ed2229372120e35f6136d9c4a719fed","socket_view":"service-view","vm_name":"core-apps","vmid":170},"edge":{"config_view":"service-view","mode":"STRICT_SSH_TO_OWNING_NODE_THEN_DIRECT_QGA","node":"pve03","private_addresses_returned":false,"qga_step_count":7,"qga_step_set_sha256":"6270f221997891d810eb9da3d4a1cff0011859e6929ea1e139c1076acaa2ad63","remote_rc":1,"remote_stdout_bytes":669,"remote_stdout_sha256":"28cabc71738ea6beb1923d449c13cef3be61caeb6f6fe181b7eeb89d3931ba22","socket_view":"service-view","ssh_rc":0,"vm_name":"edge-vm","vmid":130}}} +GENERATED_AT_UTC=[PRIVATE_IP]T11:17:01Z +Cluster information +------------------- +Name: homelab +Config Version: 3 +Transport: knet +Secure auth: on +Quorum information +------------------ +Date: Tue Aug [PRIVATE_IP] 2026 +Quorum provider: corosync_votequorum +Nodes: 3 +Node ID: [PRIVATE_IP] +Ring ID: 1.db +Quorate: Yes + +Votequorum information +---------------------- +Expected votes: 3 +Highest expected: 3 +Total votes: 3 +Quorum: 2 +Flags: Quorate + +Membership information +---------------------- + Nodeid Votes Name +[PRIVATE_IP] [PRIVATE_IP].11 (local) +[PRIVATE_IP] [PRIVATE_IP].13 +[PRIVATE_IP] [PRIVATE_IP].12 + +Membership information +---------------------- + Nodeid Votes Name + 1 1 pve01 (local) + 2 1 pve03 + 3 1 pve02 +[{"cpu":[PRIVATE_IP][PRIVATE_IP],"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/110","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":605401,"vmid":110},{"cpu":[PRIVATE_IP][PRIVATE_IP],"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/111","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns2","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"lxc","uptime":605484,"vmid":111},{"cpu":[PRIVATE_IP]937e-05,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/112","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"unbound1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":605446,"vmid":112},{"cpu":[PRIVATE_IP]381e-05,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/113","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"unbound2","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"lxc","uptime":605488,"vmid":113},{"cpu":[PRIVATE_IP]12488,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/130","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"edge-vm","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":605425,"vmid":130},{"cpu":[PRIVATE_IP]42083,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/150","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"nextcloud","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":605398,"vmid":150},{"cpu":[PRIVATE_IP]227865,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/160","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"forum-prod","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"qemu","uptime":605481,"vmid":160},{"cpu":[PRIVATE_IP]08911,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/170","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"core-apps","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":605394,"vmid":170},{"cpu":[PRIVATE_IP]83769,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/171","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"monitoring","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":605391,"vmid":171},{"cpu":[PRIVATE_IP]30472,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/180","maxcpu":2,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"cluster-admin","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"qemu","uptime":605478,"vmid":180},{"cpu":[PRIVATE_IP]255975,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/190","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"homelab-ops-worker","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":605421,"vmid":190},{"cpu":0,"disk":0,"diskread":0,"diskwrite":0,"id":"qemu/9130","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":0,"memhost":0,"name":"edge-cold-standby","netin":0,"netout":0,"node":"pve02","status":"stopped","template":0,"type":"qemu","uptime":0,"vmid":9130},{"cgroup-mode":2,"cpu":[PRIVATE_IP]10338,"disk":[PRIVATE_IP],"id":"node/pve03","level":"","maxcpu":8,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve03","status":"online","type":"node","uptime":605442},{"cgroup-mode":2,"cpu":[PRIVATE_IP]31131,"disk":[PRIVATE_IP],"id":"node/pve01","level":"","maxcpu":24,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve01","status":"online","type":"node","uptime":605503},{"cgroup-mode":2,"cpu":[PRIVATE_IP]0734,"disk":[PRIVATE_IP],"id":"node/pve02","level":"","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve02","status":"online","type":"node","uptime":605521},{"content":"vztmpl,import,backup,iso","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"vztmpl,import,backup,iso","disk":[PRIVATE_IP],"id":"storage/pve01/local","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"vztmpl,import,backup,iso","disk":[PRIVATE_IP],"id":"storage/pve02/local","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve03/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve01/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve02/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"id":"network/pve03/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve03","status":"ok","type":"network"},{"id":"network/pve01/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve01","status":"ok","type":"network"},{"id":"network/pve02/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve02","status":"ok","type":"network"}] +Name Type Status Total (KiB) Used (KiB) Available (KiB) % +local dir active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 14.16% +local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 27.36% + UNIT LOAD ACTIVE SUB DESCRIPTION +● homelab-backup-matrix-refresh.service loaded failed failed Generate unified homelab backup matrix state +● homelab-crypto-portfolio-chart-health.service loaded failed failed Crypto portfolio chart health check +● skladchik-reports-monitor-supervisor.service loaded failed failed Skladchik reports monitor full supervisor + +Legend: LOAD → Reflects whether the unit definition was properly loaded. + ACTIVE → The high-level unit activation state, i.e. generalization of SUB. + SUB → The low-level unit activation state, values depend on unit type. + +3 loaded units listed. +NEXT LEFT LAST PASSED UNIT ACTIVATES +Tue [PRIVATE_IP] 14:17:19 MSK 16s Tue [PRIVATE_IP] 14:16:17 MSK 45s ago homelab-router-watchdog.timer homelab-router-watchdog.service +Tue [PRIVATE_IP] 14:17:26 MSK 23s Tue [PRIVATE_IP] 14:12:26 MSK 4min 36s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service +Tue [PRIVATE_IP] 14:17:39 MSK 37s Tue [PRIVATE_IP] 14:12:26 MSK 4min 36s ago homelab-health-metrics.timer homelab-health-metrics.service +Tue [PRIVATE_IP] 14:17:48 MSK 45s Tue [PRIVATE_IP] 14:16:48 MSK 14s ago homelab-cluster-admin-webpanel-sync.timer homelab-cluster-admin-webpanel-sync.service +Tue [PRIVATE_IP] 14:17:48 MSK 45s Tue [PRIVATE_IP] 14:16:48 MSK 14s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service +Tue [PRIVATE_IP] 14:17:49 MSK 47s Tue [PRIVATE_IP] 14:15:47 MSK 1min 14s ago homelab-cluster-admin-inventory-sync.timer homelab-cluster-admin-inventory-sync.service +Tue [PRIVATE_IP] 14:18:14 MSK 1min 12s Tue [PRIVATE_IP] 14:13:14 MSK 3min 47s ago netbird-peers-health.timer netbird-peers-health.service +Tue [PRIVATE_IP] 14:19:26 MSK 2min 23s Tue [PRIVATE_IP] 14:04:26 MSK 12min ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service +Tue [PRIVATE_IP] 14:20:24 MSK 3min 21s Tue [PRIVATE_IP] 14:15:07 MSK 1min 55s ago homelab-crypto-portfolio-chart-health.timer homelab-crypto-portfolio-chart-health.service +Tue [PRIVATE_IP] 14:20:26 MSK 3min 23s Mon [PRIVATE_IP] 14:20:26 MSK 23h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service +Tue [PRIVATE_IP] 14:21:24 MSK 4min 21s Tue [PRIVATE_IP] 14:11:24 MSK 5min ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service +Tue [PRIVATE_IP] 14:22:07 MSK 5min Tue [PRIVATE_IP] 14:07:07 MSK 9min ago homelab-disk-space-health.timer homelab-disk-space-health.service +Tue [PRIVATE_IP] 14:22:26 MSK 5min Tue [PRIVATE_IP] 14:07:26 MSK 9min ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service +Tue [PRIVATE_IP] 14:24:26 MSK 7min Tue [PRIVATE_IP] 14:09:26 MSK 7min ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service +Tue [PRIVATE_IP] 14:30:00 MSK 12min Tue [PRIVATE_IP] 14:15:07 MSK 1min 55s ago homelab-incident-journal.timer homelab-incident-journal.service +Tue [PRIVATE_IP] 14:30:55 MSK 13min Tue [PRIVATE_IP] 14:16:07 MSK 55s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service +Tue [PRIVATE_IP] 14:31:22 MSK 14min Tue [PRIVATE_IP] 14:16:14 MSK 47s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service +Tue [PRIVATE_IP] 14:31:22 MSK 14min Tue [PRIVATE_IP] 14:16:07 MSK 55s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service +Tue [PRIVATE_IP] 14:34:16 MSK 17min Tue [PRIVATE_IP] 14:01:50 MSK 15min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service +Tue [PRIVATE_IP] 14:40:02 MSK 23min Tue [PRIVATE_IP] 14:08:14 MSK 8min ago homelab-reference-refresh.timer homelab-reference-refresh.service +Tue [PRIVATE_IP] 20:08:26 MSK 5h 51min Tue [PRIVATE_IP] 14:08:26 MSK 8min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service +Wed [PRIVATE_IP] 00:00:00 MSK 9h Tue [PRIVATE_IP] 00:00:07 MSK 14h ago dpkg-db-backup.timer dpkg-db-backup.service +Wed [PRIVATE_IP] 00:08:04 MSK 9h Tue [PRIVATE_IP] 00:05:08 MSK 14h ago homelab-storage-capacity.timer homelab-storage-capacity.service +Wed [PRIVATE_IP] 00:08:47 MSK 9h Tue [PRIVATE_IP] 00:08:07 MSK 14h ago homelab-evidence-catalog.timer homelab-evidence-catalog.service +Wed [PRIVATE_IP] 00:13:19 MSK 9h Tue [PRIVATE_IP] 00:13:28 MSK 14h ago homelab-docker-health.timer homelab-docker-health.service +Wed [PRIVATE_IP] 00:18:54 MSK 10h Tue [PRIVATE_IP] 00:08:14 MSK 14h ago homelab-quality-gate.timer homelab-quality-gate.service +Wed [PRIVATE_IP] 00:51:16 MSK 10h Tue [PRIVATE_IP] 00:08:36 MSK 14h ago logrotate.timer logrotate.service +Wed [PRIVATE_IP] 01:56:09 MSK 11h Tue [PRIVATE_IP] 00:14:22 MSK 14h ago man-db.timer man-db.service +Wed [PRIVATE_IP] 03:50:00 MSK 13h Tue [PRIVATE_IP] 03:50:02 MSK 10h ago filebrowser-offhost-sync.timer filebrowser-offhost-sync.service +Wed [PRIVATE_IP] 04:05:55 MSK 13h Tue [PRIVATE_IP] 01:23:47 MSK 12h ago pve-daily-update.timer pve-daily-update.service +Wed [PRIVATE_IP] 04:48:13 MSK 14h Tue [PRIVATE_IP] 04:42:07 MSK 9h ago homelab-edge-vm-offhost-freshness.timer homelab-edge-vm-offhost-freshness.service +Wed [PRIVATE_IP] 04:58:15 MSK 14h Tue [PRIVATE_IP] 05:15:14 MSK 9h ago homelab-sops-edge-secret-coverage.timer homelab-sops-edge-secret-coverage.service +Wed [PRIVATE_IP] 05:30:03 MSK 15h Tue [PRIVATE_IP] 12:02:37 MSK 2h 14min ago apt-daily.timer apt-daily.service +Wed [PRIVATE_IP] 06:01:06 MSK 15h Tue [PRIVATE_IP] 06:53:08 MSK 7h ago apt-daily-upgrade.timer apt-daily-upgrade.service +Wed [PRIVATE_IP] 07:16:56 MSK 16h Tue [PRIVATE_IP] 07:03:50 MSK 7h ago homelab-drift-check.timer homelab-drift-check.service +Wed [PRIVATE_IP] 07:32:01 MSK 17h Tue [PRIVATE_IP] 07:39:26 MSK 6h ago homelab-service-registry-check.timer homelab-service-registry-check.service +Wed [PRIVATE_IP] 07:48:22 MSK 17h Tue [PRIVATE_IP] 07:54:17 MSK 6h ago homelab-desired-state-sync.timer homelab-desired-state-sync.service +Wed [PRIVATE_IP] 07:53:58 MSK 17h Tue [PRIVATE_IP] 07:46:07 MSK 6h ago homelab-alerting-health.timer homelab-alerting-health.service +Wed [PRIVATE_IP] 07:56:28 MSK 17h Tue [PRIVATE_IP] 07:56:07 MSK 6h ago homelab-dependency-map-check.timer homelab-dependency-map-check.service +Wed [PRIVATE_IP] 07:56:57 MSK 17h Tue [PRIVATE_IP] 07:56:50 MSK 6h ago homelab-runbook-generate.timer homelab-runbook-generate.service +Wed [PRIVATE_IP] 08:06:21 MSK 17h Tue [PRIVATE_IP] 07:59:39 MSK 6h ago homelab-duty-admin-report.timer homelab-duty-admin-report.service +Wed [PRIVATE_IP] 08:11:00 MSK 17h Tue [PRIVATE_IP] 08:03:50 MSK 6h ago homelab-overall-health.timer homelab-overall-health.service +Wed [PRIVATE_IP] 08:16:53 MSK 17h Tue [PRIVATE_IP] 08:16:35 MSK 6h ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service +Wed [PRIVATE_IP] 08:21:31 MSK 18h Tue [PRIVATE_IP] 08:12:26 MSK 6h ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service +Wed [PRIVATE_IP] 08:30:08 MSK 18h Tue [PRIVATE_IP] 08:36:50 MSK 5h 40min ago homelab-capacity-risk.timer homelab-capacity-risk.service +Wed [PRIVATE_IP] 08:37:04 MSK 18h Tue [PRIVATE_IP] 08:52:38 MSK 5h 24min ago homelab-cluster-passport.timer homelab-cluster-passport.service +Wed [PRIVATE_IP] 08:40:47 MSK 18h Tue [PRIVATE_IP] 08:36:17 MSK 5h 40min ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service +Wed [PRIVATE_IP] 08:47:05 MSK 18h Tue [PRIVATE_IP] 08:54:47 MSK 5h 22min ago immich-media-offhost-sync.timer immich-media-offhost-sync.service +Wed [PRIVATE_IP] 08:55:12 MSK 18h Tue [PRIVATE_IP] 08:50:07 MSK 5h 26min ago homelab-golden-state-index.timer homelab-golden-state-index.service +Wed [PRIVATE_IP] 09:20:57 MSK 19h Tue [PRIVATE_IP] 09:06:50 MSK 5h 10min ago memos-offhost-sync.timer memos-offhost-sync.service +Wed [PRIVATE_IP] 10:15:00 MSK 19h Tue [PRIVATE_IP] 10:15:14 MSK 4h 1min ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service +Sun [PRIVATE_IP] 03:10:38 MSK 4 days Sun [PRIVATE_IP] 03:10:25 MSK 2 days ago xfs_scrub_all.timer xfs_scrub_all.service +Sun [PRIVATE_IP] 03:10:48 MSK 4 days Sun [PRIVATE_IP] 03:10:50 MSK 2 days ago e2scrub_all.timer e2scrub_all.service +Mon [PRIVATE_IP] 00:03:56 MSK 5 days Mon [PRIVATE_IP] 00:11:50 MSK 1 day 14h ago homelab-secret-sanity.timer homelab-secret-sanity.service +Mon [PRIVATE_IP] 01:11:21 MSK 5 days Mon [PRIVATE_IP] 01:17:56 MSK 1 day 12h ago fstrim.timer fstrim.service +- - - - prometheus-node-exporter-ipmitool-sensor.timer prometheus-node-exporter-ipmitool-sensor.service +- - - - prometheus-node-exporter-mellanox-hca-temp.timer prometheus-node-exporter-mellanox-hca-temp.service +- - - - prometheus-node-exporter-smartmon.timer prometheus-node-exporter-smartmon.service + +58 timers listed. +- Обрезанная, повреждённая или частично вставленная команда считается невыполненной; сначала проводится side-effect audit. +- Хвост parse-ошибки закрывается только после доказательства отсутствия изменений и временных артефактов. +- Proof: /var/lib/homelab-change-sets/operator-command-size-guard-v[PRIVATE_IP]T182653Z/report.txt + +## HOMELAB_ADMIN_CLI_CONTRACT_[PRIVATE_IP] +- Поддерживаемые команды: version, status, lint TASK_DIR, validate TASK_DIR, run TASK_DIR PHASE. +- Отдельная команда --help отсутствует. Неизвестный аргумент печатает usage и штатно возвращает RC=64. +- Нельзя трактовать RC=64 от --help как неисправность runner. +- Для проверки доступности runner использовать homelab-admin version; для структуры CLI использовать зафиксированную usage-строку. +- Proof: /var/lib/homelab-change-sets/homelab-admin-cli-contract-fix-v[PRIVATE_IP]T183338Z/report.txt + +AUTOMATIC_CLUSTER_CONTEXT_REFRESH_[PRIVATE_IP] +Collector: /usr/local/sbin/homelab-context-collect +Scheduler: hourly at minute 17 via /etc/cron.d/homelab-context-refresh +Destination: immutable Gitea runtime history with CONTEXT-AUTO UTC command IDs. + +AUTOMATIC_CLUSTER_CONTEXT_REFRESH_DIRECT_[PRIVATE_IP] +Publisher: /usr/local/sbin/homelab-context-refresh-direct +Schedule: hourly at minute 17. +Destination: immutable assistant-runtime history with CONTEXT-AUTO UTC IDs. +ANTI_REGRESSION_TOKEN=HOMELAB_VM_2CLOUD_444_OUTER_LAUNCHER_BOUNDARY_REQUIRED +- Anti-regression: validate the complete outer launcher with a shell syntax check and verify the wrapper argument boundary before issuing it. +- Infrastructure action executed: none. +- Backup payload impact: none. +- Production impact: none. +- Status: CLOSED; UNRESOLVED_TAIL_COUNT=0. +- Registered at: [PRIVATE_IP]T11:20:32Z + +## ERROR_[PRIVATE_IP]_HOMELAB_VM_2CLOUD_DRAIN_CLOSURE_PREFLIGHT_446 +COMMAND_ID=HOMELAB-VM-2CLOUD-DRAIN-CLOSURE-PREFLIGHT-446 +- Symptom: homelab-chat-run-linked printed Usage and skipped result-feed publication as invalid input. +- Root cause: the diagnostic script was piped to wrapper stdin and the mandatory double-dash command separator was omitted. +- Correction: invoke homelab-chat-run-linked as COMMAND_ID MODE COMPONENT -- command arguments; stdin is not its command interface. +ANTI_REGRESSION_TOKEN=HOMELAB_CHAT_RUN_COMMAND_REQUIRES_DOUBLE_DASH +- Anti-regression: treat wrapper Usage as the authoritative CLI contract and syntax-check the complete launcher, not only its inner payload. +- Infrastructure action executed: none. +- Backup payload impact: none. +- Production impact: none. +- Status: CLOSED; UNRESOLVED_TAIL_COUNT=0. +- Registered at: [PRIVATE_IP]T11:20:32Z OUTPUT_END CHAT_OUTPUT_END