From a62c2ed336eea3af73aaf640d9f9254bd4fe40a9 Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Wed, 29 Jul 2026 07:17:03 +0000 Subject: [PATCH] runtime: publish CONTEXT-AUTO-20260729T071701Z --- .../CONTEXT-AUTO-20260729T071701Z.json | 1 + .../history/CONTEXT-AUTO-20260729T071701Z.txt | 163 ++++++++++++++++ runtime/latest.json | 39 +--- runtime/latest.txt | 181 +++++++++++++++--- 4 files changed, 320 insertions(+), 64 deletions(-) create mode 100644 runtime/history/CONTEXT-AUTO-20260729T071701Z.json create mode 100644 runtime/history/CONTEXT-AUTO-20260729T071701Z.txt diff --git a/runtime/history/CONTEXT-AUTO-20260729T071701Z.json b/runtime/history/CONTEXT-AUTO-20260729T071701Z.json new file mode 100644 index 0000000..b0e679f --- /dev/null +++ b/runtime/history/CONTEXT-AUTO-20260729T071701Z.json @@ -0,0 +1 @@ +{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260729T071701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-07-29T07:17:01Z","finished_at_utc":"2026-07-29T07: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-20260729T071701Z.txt b/runtime/history/CONTEXT-AUTO-20260729T071701Z.txt new file mode 100644 index 0000000..96bcead --- /dev/null +++ b/runtime/history/CONTEXT-AUTO-20260729T071701Z.txt @@ -0,0 +1,163 @@ +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]T07:17:01Z +Cluster information +------------------- +Name: homelab +Config Version: 3 +Transport: knet +Secure auth: on + +Quorum information +------------------ +Date: Wed Jul [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":72601,"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":72678,"vmid":111},{"cpu":0,"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":72646,"vmid":112},{"cpu":0,"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":72682,"vmid":113},{"cpu":[PRIVATE_IP]63747,"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":72630,"vmid":130},{"cpu":[PRIVATE_IP]18307,"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":72598,"vmid":150},{"cpu":[PRIVATE_IP]336384,"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":72675,"vmid":160},{"cpu":[PRIVATE_IP]47576,"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":72594,"vmid":170},{"cpu":[PRIVATE_IP]62154,"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":72591,"vmid":171},{"cpu":[PRIVATE_IP]19336,"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":72672,"vmid":180},{"cpu":[PRIVATE_IP]647986,"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":72626,"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]50235,"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":72715},{"cgroup-mode":2,"cpu":[PRIVATE_IP]73689,"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":72647},{"cgroup-mode":2,"cpu":[PRIVATE_IP]03923,"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":72703},{"content":"images,rootdir","disk":[PRIVATE_IP],"id":"storage/pve02/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"images,rootdir","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":"images,rootdir","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":"iso,backup,vztmpl,import","disk":[PRIVATE_IP],"id":"storage/pve02/local","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"iso,backup,vztmpl,import","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"iso,backup,vztmpl,import","disk":[PRIVATE_IP],"id":"storage/pve01/local","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"id":"network/pve02/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve02","status":"ok","type":"network"},{"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"}] +Name Type Status Total (KiB) Used (KiB) Available (KiB) % +local dir active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 13.07% +local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 27.25% + UNIT LOAD ACTIVE SUB DESCRIPTION +● homelab-backup-matrix-refresh.service loaded failed failed Generate unified homelab backup matrix state +● 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. + +2 loaded units listed. +NEXT LEFT LAST PASSED UNIT ACTIVATES +Wed [PRIVATE_IP] 10:17:09 MSK 6s Wed [PRIVATE_IP] 10:11:47 MSK 5min ago homelab-crypto-portfolio-chart-health.timer homelab-crypto-portfolio-chart-health.service +Wed [PRIVATE_IP] 10:17:09 MSK 6s Wed [PRIVATE_IP] 10:11:47 MSK 5min ago homelab-health-metrics.timer homelab-health-metrics.service +Wed [PRIVATE_IP] 10:17:14 MSK 11s Wed [PRIVATE_IP] 10:16:14 MSK 48s ago homelab-cluster-admin-webpanel-sync.timer homelab-cluster-admin-webpanel-sync.service +Wed [PRIVATE_IP] 10:17:14 MSK 11s Wed [PRIVATE_IP] 10:16:14 MSK 48s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service +Wed [PRIVATE_IP] 10:17:17 MSK 14s Wed [PRIVATE_IP] 10:16:14 MSK 48s ago homelab-router-watchdog.timer homelab-router-watchdog.service +Wed [PRIVATE_IP] 10:17:36 MSK 33s Wed [PRIVATE_IP] 10:15:24 MSK 1min 38s ago homelab-cluster-admin-inventory-sync.timer homelab-cluster-admin-inventory-sync.service +Wed [PRIVATE_IP] 10:18:14 MSK 1min 11s Wed [PRIVATE_IP] 10:13:14 MSK 3min 48s ago netbird-peers-health.timer netbird-peers-health.service +Wed [PRIVATE_IP] 10:18:24 MSK 1min 21s Wed [PRIVATE_IP] 10:13:24 MSK 3min 38s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service +Wed [PRIVATE_IP] 10:23:24 MSK 6min Wed [PRIVATE_IP] 10:08:24 MSK 8min ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service +Wed [PRIVATE_IP] 10:23:24 MSK 6min Wed [PRIVATE_IP] 10:08:24 MSK 8min ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service +Wed [PRIVATE_IP] 10:24:08 MSK 7min Wed [PRIVATE_IP] 09:49:54 MSK 27min ago homelab-reference-refresh.timer homelab-reference-refresh.service +Wed [PRIVATE_IP] 10:24:24 MSK 7min Wed [PRIVATE_IP] 10:14:24 MSK 2min 38s ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service +Wed [PRIVATE_IP] 10:25:24 MSK 8min Wed [PRIVATE_IP] 10:10:24 MSK 6min ago homelab-disk-space-health.timer homelab-disk-space-health.service +Wed [PRIVATE_IP] 10:25:24 MSK 8min Wed [PRIVATE_IP] 10:10:24 MSK 6min ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service +Wed [PRIVATE_IP] 10:28:39 MSK 11min Tue [PRIVATE_IP] 06:52:40 MSK - man-db.timer man-db.service +Wed [PRIVATE_IP] 10:30:00 MSK 12min Wed [PRIVATE_IP] 10:15:07 MSK 1min 55s ago homelab-incident-journal.timer homelab-incident-journal.service +Wed [PRIVATE_IP] 10:30:07 MSK 13min Wed [PRIVATE_IP] 10:15:50 MSK 1min 12s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service +Wed [PRIVATE_IP] 10:30:38 MSK 13min Wed [PRIVATE_IP] 10:16:38 MSK 24s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service +Wed [PRIVATE_IP] 10:31:01 MSK 13min Wed [PRIVATE_IP] 10:15:50 MSK 1min 12s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service +Wed [PRIVATE_IP] 10:34:25 MSK 17min Wed [PRIVATE_IP] 10:04:06 MSK 12min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service +Wed [PRIVATE_IP] 12:41:24 MSK 2h 24min Tue [PRIVATE_IP] 23:11:50 MSK 11h ago apt-daily.timer apt-daily.service +Wed [PRIVATE_IP] 14:08:22 MSK 3h 51min Wed [PRIVATE_IP] 08:08:22 MSK 2h 8min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service +Wed [PRIVATE_IP] 14:20:17 MSK 4h 3min Tue [PRIVATE_IP] 14:20:17 MSK 19h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service +Thu [PRIVATE_IP] 00:00:00 MSK 13h Wed [PRIVATE_IP] 00:00:14 MSK 10h ago dpkg-db-backup.timer dpkg-db-backup.service +Thu [PRIVATE_IP] 00:00:37 MSK 13h Wed [PRIVATE_IP] 00:19:14 MSK 9h ago homelab-docker-health.timer homelab-docker-health.service +Thu [PRIVATE_IP] 00:07:29 MSK 13h Wed [PRIVATE_IP] 00:07:07 MSK 10h ago homelab-quality-gate.timer homelab-quality-gate.service +Thu [PRIVATE_IP] 00:08:33 MSK 13h Wed [PRIVATE_IP] 00:05:21 MSK 10h ago homelab-evidence-catalog.timer homelab-evidence-catalog.service +Thu [PRIVATE_IP] 00:18:17 MSK 14h Wed [PRIVATE_IP] 00:09:48 MSK 10h ago homelab-storage-capacity.timer homelab-storage-capacity.service +Thu [PRIVATE_IP] 00:51:04 MSK 14h Wed [PRIVATE_IP] 00:11:07 MSK 10h ago logrotate.timer logrotate.service +Thu [PRIVATE_IP] 03:26:54 MSK 17h Wed [PRIVATE_IP] 04:51:29 MSK 5h 25min ago pve-daily-update.timer pve-daily-update.service +Thu [PRIVATE_IP] 03:50:00 MSK 17h Wed [PRIVATE_IP] 03:50:14 MSK 6h ago filebrowser-offhost-sync.timer filebrowser-offhost-sync.service +Thu [PRIVATE_IP] 04:49:09 MSK 18h Wed [PRIVATE_IP] 04:50:07 MSK 5h 26min ago homelab-edge-vm-offhost-freshness.timer homelab-edge-vm-offhost-freshness.service +Thu [PRIVATE_IP] 04:56:47 MSK 18h Wed [PRIVATE_IP] 04:55:50 MSK 5h 21min ago homelab-sops-edge-secret-coverage.timer homelab-sops-edge-secret-coverage.service +Thu [PRIVATE_IP] 06:24:25 MSK 20h Wed [PRIVATE_IP] 06:01:50 MSK 4h 15min ago apt-daily-upgrade.timer apt-daily-upgrade.service +Thu [PRIVATE_IP] 07:17:54 MSK 21h Wed [PRIVATE_IP] 07:17:50 MSK 2h 59min ago homelab-drift-check.timer homelab-drift-check.service +Thu [PRIVATE_IP] 07:22:08 MSK 21h Wed [PRIVATE_IP] 07:29:07 MSK 2h 47min ago homelab-service-registry-check.timer homelab-service-registry-check.service +Thu [PRIVATE_IP] 07:41:41 MSK 21h Wed [PRIVATE_IP] 07:39:14 MSK 2h 37min ago homelab-alerting-health.timer homelab-alerting-health.service +Thu [PRIVATE_IP] 07:45:05 MSK 21h Wed [PRIVATE_IP] 07:49:14 MSK 2h 27min ago homelab-dependency-map-check.timer homelab-dependency-map-check.service +Thu [PRIVATE_IP] 07:45:29 MSK 21h Wed [PRIVATE_IP] 07:43:20 MSK 2h 33min ago homelab-runbook-generate.timer homelab-runbook-generate.service +Thu [PRIVATE_IP] 07:49:11 MSK 21h Wed [PRIVATE_IP] 07:55:14 MSK 2h 21min ago homelab-desired-state-sync.timer homelab-desired-state-sync.service +Thu [PRIVATE_IP] 08:01:00 MSK 21h Wed [PRIVATE_IP] 08:06:08 MSK 2h 10min ago homelab-overall-health.timer homelab-overall-health.service +Thu [PRIVATE_IP] 08:06:37 MSK 21h Wed [PRIVATE_IP] 08:12:49 MSK 2h 4min ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service +Thu [PRIVATE_IP] 08:11:31 MSK 21h Wed [PRIVATE_IP] 08:05:20 MSK 2h 11min ago homelab-duty-admin-report.timer homelab-duty-admin-report.service +Thu [PRIVATE_IP] 08:27:34 MSK 22h Wed [PRIVATE_IP] 08:21:24 MSK 1h 55min ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service +Thu [PRIVATE_IP] 08:29:25 MSK 22h Wed [PRIVATE_IP] 08:24:48 MSK 1h 52min ago homelab-capacity-risk.timer homelab-capacity-risk.service +Thu [PRIVATE_IP] 08:35:40 MSK 22h Wed [PRIVATE_IP] 08:49:17 MSK 1h 27min ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service +Thu [PRIVATE_IP] 08:46:04 MSK 22h Wed [PRIVATE_IP] 08:53:25 MSK 1h 23min ago immich-media-offhost-sync.timer immich-media-offhost-sync.service +Thu [PRIVATE_IP] 08:46:44 MSK 22h Wed [PRIVATE_IP] 08:36:50 MSK 1h 40min ago homelab-cluster-passport.timer homelab-cluster-passport.service +Thu [PRIVATE_IP] 09:01:39 MSK 22h Wed [PRIVATE_IP] 08:57:16 MSK 1h 19min ago homelab-golden-state-index.timer homelab-golden-state-index.service +Thu [PRIVATE_IP] 09:19:46 MSK 23h Wed [PRIVATE_IP] 09:19:50 MSK 57min ago memos-offhost-sync.timer memos-offhost-sync.service +Thu [PRIVATE_IP] 10:15:00 MSK 23h Wed [PRIVATE_IP] 10:15:07 MSK 1min 55s ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service +Sun [PRIVATE_IP] 03:10:25 MSK 3 days Sun [PRIVATE_IP] 03:10:15 MSK - xfs_scrub_all.timer xfs_scrub_all.service +Sun [PRIVATE_IP] 03:10:49 MSK 3 days Sun [PRIVATE_IP] 03:10:15 MSK - e2scrub_all.timer e2scrub_all.service +Mon [PRIVATE_IP] 00:11:49 MSK 4 days Mon [PRIVATE_IP] 00:13:29 MSK - homelab-secret-sanity.timer homelab-secret-sanity.service +Mon [PRIVATE_IP] 01:17:32 MSK 4 days Mon [PRIVATE_IP] 01:18:15 MSK - 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 7cda5c4..b0e679f 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,38 +1 @@ -{ - "schema_version": 1, - "channel": "homelab-runtime", - "command_id": "AUTOMATIC-RESULT-SLOT-DIRECTORY-PLAN-FIX3-20260729T071133Z", - "status": "OK", - "rc": 0, - "host": "pve01", - "mode": "verify", - "component": "automatic-result-slot-directory-plan-fix3", - "started_at_utc": "2026-07-29T07:12:54Z", - "finished_at_utc": "2026-07-29T07:13:00Z", - "reference_register_checked": true, - "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", - "error_register_checked": true, - "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", - "command_sha256": "903320b8489f9acafdf80a0092d58b3818312efc0a21a139531dc8c5ee3d05bc", - "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": "77b4952e1bd4b713401cd59adb3c395abc756e6e6c3c43e7f23e1fd79b4e4a3d", - "sanitized_output_sha256": "77b4952e1bd4b713401cd59adb3c395abc756e6e6c3c43e7f23e1fd79b4e4a3d", - "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\":\"AUTOMATIC-RESULT-SLOT-DIRECTORY-PLAN-FIX3-20260729T071133Z\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"PLAN_SHA256\":\"4c54e5100700a1c495f3a30ff6807a8e91929f31f93adf713777370ecf71b215\",\"adapter_changed\":false,\"backup_changed\":false,\"changes_made\":false,\"cluster_changed\":false,\"command_id\":\"AUTOMATIC-RESULT-SLOT-DIRECTORY-PLAN-FIX3-20260729T071133Z\",\"current_lookup_sha256\":\"7b54030bf2c77dfe97e2751ed725c9a5ba4829e079d78a7ddd31afb04f879d2e\",\"current_unit_sha256\":\"4a2da42926ff1f8b9ce0d87ff037d2d02ecc9db0e896ef63150e96b6a2edd44a\",\"edge_changed\":false,\"gitea_changed\":false,\"minio_changed\":false,\"plan\":{\"acceptance_tests\":[\"every directory page exposes exactly 16 ordered relative links\",\"all 12 key levels and the final lane level are traversable\",\"two lanes for one capsule return the same exact result and different probes\",\"an older capsule-bound result remains readable after a newer unrelated result appears\",\"a new terminal fixture becomes visible without Lookup restart\",\"corrupting a matching result makes its capsule-bound slot return HTTP 409\",\"restoring the matching result restores its capsule-bound slot\",\"two terminal results sharing the 48-bit prefix return HTTP 409 ambiguous\",\"following the exact link returns full sanitized output and a valid contract\",\"candidate passes read-only against real production state\",\"local latest JSON identifies initial and dynamically newer fixture results\",\"local latest JSON returns 409 for corrupt newest and recovers after restoration\",\"real production latest identity uses local JSON without redirect regex\"],\"anti_regression\":{\"identity_endpoint\":\"/.well-known/homelab-runtime/latest.json\",\"observed_failure\":\"LATEST_POINTER_PATH\",\"redirect_regex_used\":false},\"apply_scope\":{\"forbidden\":[\"modify Adapter\",\"modify Portal\",\"modify edge Nginx\",\"modify Gitea\",\"modify MinIO\",\"modify backups\",\"create second runner\"],\"modify\":[\"/usr/local/sbin/homelab-result-lookup\"],\"restart_only\":[\"homelab-result-lookup.service\"],\"unit_change_expected\":false},\"bootstrap_url\":\"https://git.gram1.ru/.well-known/homelab-runtime/result/0000000000000000000000000000000000000000000000000000000000000000/slots/index.html\",\"current_lookup_sha256\":\"7b54030bf2c77dfe97e2751ed725c9a5ba4829e079d78a7ddd31afb04f879d2e\",\"current_unit_sha256\":\"4a2da42926ff1f8b9ce0d87ff037d2d02ecc9db0e896ef63150e96b6a2edd44a\",\"objective\":\"Provide a cache-independent and capsule-bound assistant readback path. The verifier obtains real latest identity from the local JSON latest endpoint and does not parse redirect paths.\",\"operation\":\"AUTOMATIC_RESULT_SLOT_DIRECTORY_FIX3\",\"read_only_plan\":true,\"schema\":1,\"selection_contract\":{\"global_newer_unrelated_result\":\"does not affect the capsule-bound slot\",\"matching_result_corrupt\":\"HTTP 409\",\"multiple_results_with_same_48bit_prefix\":\"HTTP 409\",\"no_matching_terminal_result\":\"HTTP 404\",\"one_valid_matching_result\":\"HTTP 200 slot page\"},\"slot_derivation\":{\"branching\":16,\"capsule_key\":\"first 12 hexadecimal characters of expected capsule_sha256\",\"capsule_prefix_bits\":48,\"independent_lanes_per_result\":16,\"key_levels\":12,\"lane\":\"13th capsule character by default; choose another lane if the browser has already opened that final URL\",\"lane_levels\":1,\"total_clicks_after_bootstrap\":13},\"target_lookup_sha256\":\"a14bea457cf474e8aae85f4b9785531373e93ae9363eb3c0bbabe65dedd75e30\"},\"portal_changed\":false,\"private_addresses_included\":false,\"real_state\":{\"exact_http\":200,\"fresh_lane_probe\":true,\"full_output_present\":true,\"latest_capsule_sha256\":\"1b881bebb959a4a852635db0f47bad770b780152f6815cfc41af8502e3a2b6a5\",\"latest_command_id\":\"AUTOMATIC-RESULT-SLOT-DIRECTORY-PLAN-FIX2-20260729T070228Z\",\"latest_runner_json_sha256\":\"c3128d56e321f0365ff2af80ddf3e985a752f52714ef847107c519b1b587e00b\",\"slot_capsule_sha256\":\"1b881bebb959a4a852635db0f47bad770b780152f6815cfc41af8502e3a2b6a5\",\"slot_command_id\":\"AUTOMATIC-RESULT-SLOT-DIRECTORY-PLAN-FIX2-20260729T070228Z\",\"slot_runner_json_sha256\":\"c3128d56e321f0365ff2af80ddf3e985a752f52714ef847107c519b1b587e00b\"},\"rollback_started\":false,\"sanitized\":true,\"schema\":1,\"secrets_included\":false,\"status\":\"PLAN_READY\",\"target_lookup_sha256\":\"a14bea457cf474e8aae85f4b9785531373e93ae9363eb3c0bbabe65dedd75e30\"}\n" -} +{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260729T071701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-07-29T07:17:01Z","finished_at_utc":"2026-07-29T07: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 1271a5a..96bcead 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,34 +1,163 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=AUTOMATIC-RESULT-SLOT-DIRECTORY-PLAN-FIX3-20260729T071133Z +COMMAND_ID=CONTEXT-AUTO-[PRIVATE_IP]701Z STATUS=OK RC=0 HOST=pve01 -MODE=verify -COMPONENT=automatic-result-slot-directory-plan-fix3 -REFERENCE_REGISTER_CHECK=OK -REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e -ERROR_REGISTER_CHECK=OK -ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 -COMMAND_SHA256=903320b8489f9acafdf80a0092d58b3818312efc0a21a139531dc8c5ee3d05bc -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=77b4952e1bd4b713401cd59adb3c395abc756e6e6c3c43e7f23e1fd79b4e4a3d -SANITIZED_OUTPUT_SHA256=77b4952e1bd4b713401cd59adb3c395abc756e6e6c3c43e7f23e1fd79b4e4a3d +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":"AUTOMATIC-RESULT-SLOT-DIRECTORY-PLAN-FIX3-20260729T071133Z","rollback_restored":null,"rollback_started":false,"status":"OK","version":1} -{"PLAN_SHA256":"4c54e5100700a1c495f3a30ff6807a8e91929f31f93adf713777370ecf71b215","adapter_changed":false,"backup_changed":false,"changes_made":false,"cluster_changed":false,"command_id":"AUTOMATIC-RESULT-SLOT-DIRECTORY-PLAN-FIX3-20260729T071133Z","current_lookup_sha256":"7b54030bf2c77dfe97e2751ed725c9a5ba4829e079d78a7ddd31afb04f879d2e","current_unit_sha256":"4a2da42926ff1f8b9ce0d87ff037d2d02ecc9db0e896ef63150e96b6a2edd44a","edge_changed":false,"gitea_changed":false,"minio_changed":false,"plan":{"acceptance_tests":["every directory page exposes exactly 16 ordered relative links","all 12 key levels and the final lane level are traversable","two lanes for one capsule return the same exact result and different probes","an older capsule-bound result remains readable after a newer unrelated result appears","a new terminal fixture becomes visible without Lookup restart","corrupting a matching result makes its capsule-bound slot return HTTP 409","restoring the matching result restores its capsule-bound slot","two terminal results sharing the 48-bit prefix return HTTP 409 ambiguous","following the exact link returns full sanitized output and a valid contract","candidate passes read-only against real production state","local latest JSON identifies initial and dynamically newer fixture results","local latest JSON returns 409 for corrupt newest and recovers after restoration","real production latest identity uses local JSON without redirect regex"],"anti_regression":{"identity_endpoint":"/.well-known/homelab-runtime/latest.json","observed_failure":"LATEST_POINTER_PATH","redirect_regex_used":false},"apply_scope":{"forbidden":["modify Adapter","modify Portal","modify edge Nginx","modify Gitea","modify MinIO","modify backups","create second runner"],"modify":["/usr/local/sbin/homelab-result-lookup"],"restart_only":["homelab-result-lookup.service"],"unit_change_expected":false},"bootstrap_url":"https://git.gram1.ru/.well-known/homelab-runtime/result/0000000000000000000000000000000000000000000000000000000000000000/slots/index.html","current_lookup_sha256":"7b54030bf2c77dfe97e2751ed725c9a5ba4829e079d78a7ddd31afb04f879d2e","current_unit_sha256":"4a2da42926ff1f8b9ce0d87ff037d2d02ecc9db0e896ef63150e96b6a2edd44a","objective":"Provide a cache-independent and capsule-bound assistant readback path. The verifier obtains real latest identity from the local JSON latest endpoint and does not parse redirect paths.","operation":"AUTOMATIC_RESULT_SLOT_DIRECTORY_FIX3","read_only_plan":true,"schema":1,"selection_contract":{"global_newer_unrelated_result":"does not affect the capsule-bound slot","matching_result_corrupt":"HTTP 409","multiple_results_with_same_48bit_prefix":"HTTP 409","no_matching_terminal_result":"HTTP 404","one_valid_matching_result":"HTTP 200 slot page"},"slot_derivation":{"branching":16,"capsule_key":"first 12 hexadecimal characters of expected capsule_sha256","capsule_prefix_bits":48,"independent_lanes_per_result":16,"key_levels":12,"lane":"13th capsule character by default; choose another lane if the browser has already opened that final URL","lane_levels":1,"total_clicks_after_bootstrap":13},"target_lookup_sha256":"a14bea457cf474e8aae85f4b9785531373e93ae9363eb3c0bbabe65dedd75e30"},"portal_changed":false,"private_addresses_included":false,"real_state":{"exact_http":200,"fresh_lane_probe":true,"full_output_present":true,"latest_capsule_sha256":"1b881bebb959a4a852635db0f47bad770b780152f6815cfc41af8502e3a2b6a5","latest_command_id":"AUTOMATIC-RESULT-SLOT-DIRECTORY-PLAN-FIX2-20260729T070228Z","latest_runner_json_sha256":"c3128d56e321f0365ff2af80ddf3e985a752f52714ef847107c519b1b587e00b","slot_capsule_sha256":"1b881bebb959a4a852635db0f47bad770b780152f6815cfc41af8502e3a2b6a5","slot_command_id":"AUTOMATIC-RESULT-SLOT-DIRECTORY-PLAN-FIX2-20260729T070228Z","slot_runner_json_sha256":"c3128d56e321f0365ff2af80ddf3e985a752f52714ef847107c519b1b587e00b"},"rollback_started":false,"sanitized":true,"schema":1,"secrets_included":false,"status":"PLAN_READY","target_lookup_sha256":"a14bea457cf474e8aae85f4b9785531373e93ae9363eb3c0bbabe65dedd75e30"} +GENERATED_AT_UTC=[PRIVATE_IP]T07:17:01Z +Cluster information +------------------- +Name: homelab +Config Version: 3 +Transport: knet +Secure auth: on +Quorum information +------------------ +Date: Wed Jul [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":72601,"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":72678,"vmid":111},{"cpu":0,"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":72646,"vmid":112},{"cpu":0,"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":72682,"vmid":113},{"cpu":[PRIVATE_IP]63747,"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":72630,"vmid":130},{"cpu":[PRIVATE_IP]18307,"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":72598,"vmid":150},{"cpu":[PRIVATE_IP]336384,"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":72675,"vmid":160},{"cpu":[PRIVATE_IP]47576,"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":72594,"vmid":170},{"cpu":[PRIVATE_IP]62154,"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":72591,"vmid":171},{"cpu":[PRIVATE_IP]19336,"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":72672,"vmid":180},{"cpu":[PRIVATE_IP]647986,"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":72626,"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]50235,"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":72715},{"cgroup-mode":2,"cpu":[PRIVATE_IP]73689,"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":72647},{"cgroup-mode":2,"cpu":[PRIVATE_IP]03923,"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":72703},{"content":"images,rootdir","disk":[PRIVATE_IP],"id":"storage/pve02/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"images,rootdir","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":"images,rootdir","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":"iso,backup,vztmpl,import","disk":[PRIVATE_IP],"id":"storage/pve02/local","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"iso,backup,vztmpl,import","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"iso,backup,vztmpl,import","disk":[PRIVATE_IP],"id":"storage/pve01/local","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"id":"network/pve02/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve02","status":"ok","type":"network"},{"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"}] +Name Type Status Total (KiB) Used (KiB) Available (KiB) % +local dir active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 13.07% +local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 27.25% + UNIT LOAD ACTIVE SUB DESCRIPTION +● homelab-backup-matrix-refresh.service loaded failed failed Generate unified homelab backup matrix state +● 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. + +2 loaded units listed. +NEXT LEFT LAST PASSED UNIT ACTIVATES +Wed [PRIVATE_IP] 10:17:09 MSK 6s Wed [PRIVATE_IP] 10:11:47 MSK 5min ago homelab-crypto-portfolio-chart-health.timer homelab-crypto-portfolio-chart-health.service +Wed [PRIVATE_IP] 10:17:09 MSK 6s Wed [PRIVATE_IP] 10:11:47 MSK 5min ago homelab-health-metrics.timer homelab-health-metrics.service +Wed [PRIVATE_IP] 10:17:14 MSK 11s Wed [PRIVATE_IP] 10:16:14 MSK 48s ago homelab-cluster-admin-webpanel-sync.timer homelab-cluster-admin-webpanel-sync.service +Wed [PRIVATE_IP] 10:17:14 MSK 11s Wed [PRIVATE_IP] 10:16:14 MSK 48s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service +Wed [PRIVATE_IP] 10:17:17 MSK 14s Wed [PRIVATE_IP] 10:16:14 MSK 48s ago homelab-router-watchdog.timer homelab-router-watchdog.service +Wed [PRIVATE_IP] 10:17:36 MSK 33s Wed [PRIVATE_IP] 10:15:24 MSK 1min 38s ago homelab-cluster-admin-inventory-sync.timer homelab-cluster-admin-inventory-sync.service +Wed [PRIVATE_IP] 10:18:14 MSK 1min 11s Wed [PRIVATE_IP] 10:13:14 MSK 3min 48s ago netbird-peers-health.timer netbird-peers-health.service +Wed [PRIVATE_IP] 10:18:24 MSK 1min 21s Wed [PRIVATE_IP] 10:13:24 MSK 3min 38s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service +Wed [PRIVATE_IP] 10:23:24 MSK 6min Wed [PRIVATE_IP] 10:08:24 MSK 8min ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service +Wed [PRIVATE_IP] 10:23:24 MSK 6min Wed [PRIVATE_IP] 10:08:24 MSK 8min ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service +Wed [PRIVATE_IP] 10:24:08 MSK 7min Wed [PRIVATE_IP] 09:49:54 MSK 27min ago homelab-reference-refresh.timer homelab-reference-refresh.service +Wed [PRIVATE_IP] 10:24:24 MSK 7min Wed [PRIVATE_IP] 10:14:24 MSK 2min 38s ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service +Wed [PRIVATE_IP] 10:25:24 MSK 8min Wed [PRIVATE_IP] 10:10:24 MSK 6min ago homelab-disk-space-health.timer homelab-disk-space-health.service +Wed [PRIVATE_IP] 10:25:24 MSK 8min Wed [PRIVATE_IP] 10:10:24 MSK 6min ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service +Wed [PRIVATE_IP] 10:28:39 MSK 11min Tue [PRIVATE_IP] 06:52:40 MSK - man-db.timer man-db.service +Wed [PRIVATE_IP] 10:30:00 MSK 12min Wed [PRIVATE_IP] 10:15:07 MSK 1min 55s ago homelab-incident-journal.timer homelab-incident-journal.service +Wed [PRIVATE_IP] 10:30:07 MSK 13min Wed [PRIVATE_IP] 10:15:50 MSK 1min 12s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service +Wed [PRIVATE_IP] 10:30:38 MSK 13min Wed [PRIVATE_IP] 10:16:38 MSK 24s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service +Wed [PRIVATE_IP] 10:31:01 MSK 13min Wed [PRIVATE_IP] 10:15:50 MSK 1min 12s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service +Wed [PRIVATE_IP] 10:34:25 MSK 17min Wed [PRIVATE_IP] 10:04:06 MSK 12min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service +Wed [PRIVATE_IP] 12:41:24 MSK 2h 24min Tue [PRIVATE_IP] 23:11:50 MSK 11h ago apt-daily.timer apt-daily.service +Wed [PRIVATE_IP] 14:08:22 MSK 3h 51min Wed [PRIVATE_IP] 08:08:22 MSK 2h 8min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service +Wed [PRIVATE_IP] 14:20:17 MSK 4h 3min Tue [PRIVATE_IP] 14:20:17 MSK 19h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service +Thu [PRIVATE_IP] 00:00:00 MSK 13h Wed [PRIVATE_IP] 00:00:14 MSK 10h ago dpkg-db-backup.timer dpkg-db-backup.service +Thu [PRIVATE_IP] 00:00:37 MSK 13h Wed [PRIVATE_IP] 00:19:14 MSK 9h ago homelab-docker-health.timer homelab-docker-health.service +Thu [PRIVATE_IP] 00:07:29 MSK 13h Wed [PRIVATE_IP] 00:07:07 MSK 10h ago homelab-quality-gate.timer homelab-quality-gate.service +Thu [PRIVATE_IP] 00:08:33 MSK 13h Wed [PRIVATE_IP] 00:05:21 MSK 10h ago homelab-evidence-catalog.timer homelab-evidence-catalog.service +Thu [PRIVATE_IP] 00:18:17 MSK 14h Wed [PRIVATE_IP] 00:09:48 MSK 10h ago homelab-storage-capacity.timer homelab-storage-capacity.service +Thu [PRIVATE_IP] 00:51:04 MSK 14h Wed [PRIVATE_IP] 00:11:07 MSK 10h ago logrotate.timer logrotate.service +Thu [PRIVATE_IP] 03:26:54 MSK 17h Wed [PRIVATE_IP] 04:51:29 MSK 5h 25min ago pve-daily-update.timer pve-daily-update.service +Thu [PRIVATE_IP] 03:50:00 MSK 17h Wed [PRIVATE_IP] 03:50:14 MSK 6h ago filebrowser-offhost-sync.timer filebrowser-offhost-sync.service +Thu [PRIVATE_IP] 04:49:09 MSK 18h Wed [PRIVATE_IP] 04:50:07 MSK 5h 26min ago homelab-edge-vm-offhost-freshness.timer homelab-edge-vm-offhost-freshness.service +Thu [PRIVATE_IP] 04:56:47 MSK 18h Wed [PRIVATE_IP] 04:55:50 MSK 5h 21min ago homelab-sops-edge-secret-coverage.timer homelab-sops-edge-secret-coverage.service +Thu [PRIVATE_IP] 06:24:25 MSK 20h Wed [PRIVATE_IP] 06:01:50 MSK 4h 15min ago apt-daily-upgrade.timer apt-daily-upgrade.service +Thu [PRIVATE_IP] 07:17:54 MSK 21h Wed [PRIVATE_IP] 07:17:50 MSK 2h 59min ago homelab-drift-check.timer homelab-drift-check.service +Thu [PRIVATE_IP] 07:22:08 MSK 21h Wed [PRIVATE_IP] 07:29:07 MSK 2h 47min ago homelab-service-registry-check.timer homelab-service-registry-check.service +Thu [PRIVATE_IP] 07:41:41 MSK 21h Wed [PRIVATE_IP] 07:39:14 MSK 2h 37min ago homelab-alerting-health.timer homelab-alerting-health.service +Thu [PRIVATE_IP] 07:45:05 MSK 21h Wed [PRIVATE_IP] 07:49:14 MSK 2h 27min ago homelab-dependency-map-check.timer homelab-dependency-map-check.service +Thu [PRIVATE_IP] 07:45:29 MSK 21h Wed [PRIVATE_IP] 07:43:20 MSK 2h 33min ago homelab-runbook-generate.timer homelab-runbook-generate.service +Thu [PRIVATE_IP] 07:49:11 MSK 21h Wed [PRIVATE_IP] 07:55:14 MSK 2h 21min ago homelab-desired-state-sync.timer homelab-desired-state-sync.service +Thu [PRIVATE_IP] 08:01:00 MSK 21h Wed [PRIVATE_IP] 08:06:08 MSK 2h 10min ago homelab-overall-health.timer homelab-overall-health.service +Thu [PRIVATE_IP] 08:06:37 MSK 21h Wed [PRIVATE_IP] 08:12:49 MSK 2h 4min ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service +Thu [PRIVATE_IP] 08:11:31 MSK 21h Wed [PRIVATE_IP] 08:05:20 MSK 2h 11min ago homelab-duty-admin-report.timer homelab-duty-admin-report.service +Thu [PRIVATE_IP] 08:27:34 MSK 22h Wed [PRIVATE_IP] 08:21:24 MSK 1h 55min ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service +Thu [PRIVATE_IP] 08:29:25 MSK 22h Wed [PRIVATE_IP] 08:24:48 MSK 1h 52min ago homelab-capacity-risk.timer homelab-capacity-risk.service +Thu [PRIVATE_IP] 08:35:40 MSK 22h Wed [PRIVATE_IP] 08:49:17 MSK 1h 27min ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service +Thu [PRIVATE_IP] 08:46:04 MSK 22h Wed [PRIVATE_IP] 08:53:25 MSK 1h 23min ago immich-media-offhost-sync.timer immich-media-offhost-sync.service +Thu [PRIVATE_IP] 08:46:44 MSK 22h Wed [PRIVATE_IP] 08:36:50 MSK 1h 40min ago homelab-cluster-passport.timer homelab-cluster-passport.service +Thu [PRIVATE_IP] 09:01:39 MSK 22h Wed [PRIVATE_IP] 08:57:16 MSK 1h 19min ago homelab-golden-state-index.timer homelab-golden-state-index.service +Thu [PRIVATE_IP] 09:19:46 MSK 23h Wed [PRIVATE_IP] 09:19:50 MSK 57min ago memos-offhost-sync.timer memos-offhost-sync.service +Thu [PRIVATE_IP] 10:15:00 MSK 23h Wed [PRIVATE_IP] 10:15:07 MSK 1min 55s ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service +Sun [PRIVATE_IP] 03:10:25 MSK 3 days Sun [PRIVATE_IP] 03:10:15 MSK - xfs_scrub_all.timer xfs_scrub_all.service +Sun [PRIVATE_IP] 03:10:49 MSK 3 days Sun [PRIVATE_IP] 03:10:15 MSK - e2scrub_all.timer e2scrub_all.service +Mon [PRIVATE_IP] 00:11:49 MSK 4 days Mon [PRIVATE_IP] 00:13:29 MSK - homelab-secret-sanity.timer homelab-secret-sanity.service +Mon [PRIVATE_IP] 01:17:32 MSK 4 days Mon [PRIVATE_IP] 01:18:15 MSK - 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