diff --git a/runtime/history/CONTEXT-AUTO-20260726T201701Z.json b/runtime/history/CONTEXT-AUTO-20260726T201701Z.json new file mode 100644 index 0000000..f866c48 --- /dev/null +++ b/runtime/history/CONTEXT-AUTO-20260726T201701Z.json @@ -0,0 +1 @@ +{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260726T201701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-07-26T20:17:01Z","finished_at_utc":"2026-07-26T20: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-20260726T201701Z.txt b/runtime/history/CONTEXT-AUTO-20260726T201701Z.txt new file mode 100644 index 0000000..393d5f5 --- /dev/null +++ b/runtime/history/CONTEXT-AUTO-20260726T201701Z.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]T20:17:01Z +Cluster information +------------------- +Name: homelab +Config Version: 3 +Transport: knet +Secure auth: on + +Quorum information +------------------ +Date: Sun Jul [PRIVATE_IP] 2026 +Quorum provider: corosync_votequorum +Nodes: 3 +Node ID: [PRIVATE_IP] +Ring ID: 1.c6 +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":284150,"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":283992,"vmid":111},{"cpu":[PRIVATE_IP][PRIVATE_IP],"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":284153,"vmid":112},{"cpu":[PRIVATE_IP][PRIVATE_IP],"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":283995,"vmid":113},{"cpu":[PRIVATE_IP]86502,"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":284090,"vmid":130},{"cpu":[PRIVATE_IP]53685,"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":284147,"vmid":150},{"cpu":[PRIVATE_IP]816651,"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":283989,"vmid":160},{"cpu":[PRIVATE_IP]46738,"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":284143,"vmid":170},{"cpu":[PRIVATE_IP]12597,"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":284140,"vmid":171},{"cpu":[PRIVATE_IP]177735,"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":283986,"vmid":180},{"cpu":[PRIVATE_IP]515569,"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":284086,"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]81463,"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":284181},{"cgroup-mode":2,"cpu":[PRIVATE_IP]96292,"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":284056},{"cgroup-mode":2,"cpu":[PRIVATE_IP]68159,"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":284108},{"content":"iso,import,vztmpl,backup","disk":[PRIVATE_IP],"id":"storage/pve01/local","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"iso,import,vztmpl,backup","disk":[PRIVATE_IP],"id":"storage/pve02/local","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"iso,import,vztmpl,backup","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","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":"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"},{"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"},{"id":"network/pve03/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve03","status":"ok","type":"network"}] +Name Type Status Total (KiB) Used (KiB) Available (KiB) % +local dir active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 12.72% +local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 38.44% + 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 +Sun [PRIVATE_IP] 23:17:15 MSK 12s Sun [PRIVATE_IP] 23:16:15 MSK 47s ago homelab-cluster-admin-webpanel-sync.timer homelab-cluster-admin-webpanel-sync.service +Sun [PRIVATE_IP] 23:17:15 MSK 12s Sun [PRIVATE_IP] 23:12:15 MSK 4min 47s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service +Sun [PRIVATE_IP] 23:17:15 MSK 12s Sun [PRIVATE_IP] 23:16:15 MSK 47s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service +Sun [PRIVATE_IP] 23:17:15 MSK 12s Sun [PRIVATE_IP] 23:12:15 MSK 4min 47s ago netbird-peers-health.timer netbird-peers-health.service +Sun [PRIVATE_IP] 23:17:38 MSK 35s Sun [PRIVATE_IP] 23:07:38 MSK 9min ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service +Sun [PRIVATE_IP] 23:18:02 MSK 59s Sun [PRIVATE_IP] 23:16:58 MSK 4s ago homelab-router-watchdog.timer homelab-router-watchdog.service +Sun [PRIVATE_IP] 23:18:37 MSK 1min 34s Sun [PRIVATE_IP] 23:16:29 MSK 33s ago homelab-cluster-admin-inventory-sync.timer homelab-cluster-admin-inventory-sync.service +Sun [PRIVATE_IP] 23:19:55 MSK 2min 52s Sun [PRIVATE_IP] 23:14:51 MSK 2min 11s ago homelab-health-metrics.timer homelab-health-metrics.service +Sun [PRIVATE_IP] 23:20:00 MSK 2min 57s Sun [PRIVATE_IP] 23:14:50 MSK 2min 12s ago homelab-crypto-portfolio-chart-health.timer homelab-crypto-portfolio-chart-health.service +Sun [PRIVATE_IP] 23:28:29 MSK 11min Sun [PRIVATE_IP] 23:13:29 MSK 3min 33s ago homelab-disk-space-health.timer homelab-disk-space-health.service +Sun [PRIVATE_IP] 23:28:29 MSK 11min Sun [PRIVATE_IP] 23:13:29 MSK 3min 33s ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service +Sun [PRIVATE_IP] 23:28:29 MSK 11min Sun [PRIVATE_IP] 23:13:29 MSK 3min 33s ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service +Sun [PRIVATE_IP] 23:28:29 MSK 11min Sun [PRIVATE_IP] 23:13:29 MSK 3min 33s ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service +Sun [PRIVATE_IP] 23:30:00 MSK 12min Sun [PRIVATE_IP] 23:15:04 MSK 1min 58s ago homelab-incident-journal.timer homelab-incident-journal.service +Sun [PRIVATE_IP] 23:30:32 MSK 13min Sun [PRIVATE_IP] 23:16:21 MSK 41s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service +Sun [PRIVATE_IP] 23:30:58 MSK 13min Sun [PRIVATE_IP] 23:16:15 MSK 47s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service +Sun [PRIVATE_IP] 23:31:01 MSK 13min Sun [PRIVATE_IP] 23:15:48 MSK 1min 14s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service +Sun [PRIVATE_IP] 23:31:30 MSK 14min Sun [PRIVATE_IP] 23:04:04 MSK 12min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service +Sun [PRIVATE_IP] 23:34:25 MSK 17min Sun [PRIVATE_IP] 23:01:21 MSK 15min ago homelab-reference-refresh.timer homelab-reference-refresh.service +Mon [PRIVATE_IP] 00:00:00 MSK 42min Sun [PRIVATE_IP] 00:00:04 MSK 23h ago dpkg-db-backup.timer dpkg-db-backup.service +Mon [PRIVATE_IP] 00:01:56 MSK 44min Sun [PRIVATE_IP] 00:00:15 MSK 23h ago homelab-docker-health.timer homelab-docker-health.service +Mon [PRIVATE_IP] 00:03:49 MSK 46min Sun [PRIVATE_IP] 00:38:29 MSK 22h ago logrotate.timer logrotate.service +Mon [PRIVATE_IP] 00:03:54 MSK 46min Sun [PRIVATE_IP] 00:06:04 MSK 23h ago homelab-storage-capacity.timer homelab-storage-capacity.service +Mon [PRIVATE_IP] 00:11:38 MSK 54min Sun [PRIVATE_IP] 00:09:29 MSK 23h ago homelab-evidence-catalog.timer homelab-evidence-catalog.service +Mon [PRIVATE_IP] 00:13:25 MSK 56min Mon [PRIVATE_IP] 00:00:29 MSK - homelab-secret-sanity.timer homelab-secret-sanity.service +Mon [PRIVATE_IP] 00:15:18 MSK 58min Sun [PRIVATE_IP] 00:11:04 MSK 23h ago homelab-quality-gate.timer homelab-quality-gate.service +Mon [PRIVATE_IP] 01:17:55 MSK 2h 0min Mon [PRIVATE_IP] 00:51:14 MSK - fstrim.timer fstrim.service +Mon [PRIVATE_IP] 02:36:56 MSK 3h 19min Sun [PRIVATE_IP] 05:58:48 MSK 17h ago pve-daily-update.timer pve-daily-update.service +Mon [PRIVATE_IP] 03:50:00 MSK 4h 32min Sun [PRIVATE_IP] 03:50:04 MSK 19h ago filebrowser-offhost-sync.timer filebrowser-offhost-sync.service +Mon [PRIVATE_IP] 04:24:18 MSK 5h 7min Sun [PRIVATE_IP] 22:24:18 MSK 52min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service +Mon [PRIVATE_IP] 04:52:03 MSK 5h 35min Sun [PRIVATE_IP] 04:44:28 MSK 18h ago homelab-edge-vm-offhost-freshness.timer homelab-edge-vm-offhost-freshness.service +Mon [PRIVATE_IP] 05:04:46 MSK 5h 47min Sun [PRIVATE_IP] 05:14:37 MSK 18h ago homelab-sops-edge-secret-coverage.timer homelab-sops-edge-secret-coverage.service +Mon [PRIVATE_IP] 05:04:47 MSK 5h 47min Sun [PRIVATE_IP] 06:05:19 MSK 17h ago man-db.timer man-db.service +Mon [PRIVATE_IP] 06:01:10 MSK 6h Sun [PRIVATE_IP] 06:15:38 MSK 17h ago apt-daily-upgrade.timer apt-daily-upgrade.service +Mon [PRIVATE_IP] 07:10:05 MSK 7h Sun [PRIVATE_IP] 07:04:15 MSK 16h ago homelab-drift-check.timer homelab-drift-check.service +Mon [PRIVATE_IP] 07:39:10 MSK 8h Sun [PRIVATE_IP] 07:33:28 MSK 15h ago homelab-service-registry-check.timer homelab-service-registry-check.service +Mon [PRIVATE_IP] 07:44:00 MSK 8h Sun [PRIVATE_IP] 21:07:04 MSK 2h 9min ago apt-daily.timer apt-daily.service +Mon [PRIVATE_IP] 07:52:53 MSK 8h Sun [PRIVATE_IP] 07:54:04 MSK 15h ago homelab-alerting-health.timer homelab-alerting-health.service +Mon [PRIVATE_IP] 07:57:55 MSK 8h Sun [PRIVATE_IP] 07:49:31 MSK 15h ago homelab-dependency-map-check.timer homelab-dependency-map-check.service +Mon [PRIVATE_IP] 07:59:28 MSK 8h Sun [PRIVATE_IP] 07:42:29 MSK 15h ago homelab-runbook-generate.timer homelab-runbook-generate.service +Mon [PRIVATE_IP] 08:00:53 MSK 8h Sun [PRIVATE_IP] 08:14:04 MSK 15h ago homelab-duty-admin-report.timer homelab-duty-admin-report.service +Mon [PRIVATE_IP] 08:03:36 MSK 8h Sun [PRIVATE_IP] 08:02:37 MSK 15h ago homelab-overall-health.timer homelab-overall-health.service +Mon [PRIVATE_IP] 08:07:41 MSK 8h Sun [PRIVATE_IP] 07:51:04 MSK 15h ago homelab-desired-state-sync.timer homelab-desired-state-sync.service +Mon [PRIVATE_IP] 08:09:45 MSK 8h Sun [PRIVATE_IP] 08:16:38 MSK 15h ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service +Mon [PRIVATE_IP] 08:17:59 MSK 9h Sun [PRIVATE_IP] 08:24:58 MSK 14h ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service +Mon [PRIVATE_IP] 08:26:42 MSK 9h Sun [PRIVATE_IP] 08:29:26 MSK 14h ago homelab-capacity-risk.timer homelab-capacity-risk.service +Mon [PRIVATE_IP] 08:39:35 MSK 9h Sun [PRIVATE_IP] 08:38:04 MSK 14h ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service +Mon [PRIVATE_IP] 08:47:05 MSK 9h Sun [PRIVATE_IP] 08:43:29 MSK 14h ago homelab-cluster-passport.timer homelab-cluster-passport.service +Mon [PRIVATE_IP] 08:52:59 MSK 9h Sun [PRIVATE_IP] 08:48:08 MSK 14h ago immich-media-offhost-sync.timer immich-media-offhost-sync.service +Mon [PRIVATE_IP] 09:01:44 MSK 9h Sun [PRIVATE_IP] 09:01:04 MSK 14h ago homelab-golden-state-index.timer homelab-golden-state-index.service +Mon [PRIVATE_IP] 09:15:59 MSK 9h Sun [PRIVATE_IP] 09:09:04 MSK 14h ago memos-offhost-sync.timer memos-offhost-sync.service +Mon [PRIVATE_IP] 10:15:00 MSK 10h Sun [PRIVATE_IP] 10:15:04 MSK 13h ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service +Mon [PRIVATE_IP] 16:35:54 MSK 17h Sun [PRIVATE_IP] 16:35:54 MSK 6h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service +Sun [PRIVATE_IP] 03:10:03 MSK 6 days Sun [PRIVATE_IP] 03:10:15 MSK 20h ago e2scrub_all.timer e2scrub_all.service +Sun [PRIVATE_IP] 03:10:09 MSK 6 days Sun [PRIVATE_IP] 03:10:15 MSK 20h ago xfs_scrub_all.timer xfs_scrub_all.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 386ae92..f866c48 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,30 +1 @@ -{ - "schema_version": 1, - "channel": "homelab-runtime", - "command_id": "RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z", - "status": "OK", - "rc": 0, - "host": "pve01", - "mode": "verify", - "component": "runner", - "started_at_utc": "2026-07-26T20:09:58Z", - "finished_at_utc": "2026-07-26T20:09:58Z", - "reference_register_checked": true, - "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", - "error_register_checked": true, - "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", - "command_sha256": "1524c3bd78c1ad70a1388eac6823fa70babf465bf01494e8e29b1633eea023ca", - "duplicate_failed_command_blocked": false, - "block_reason": null, - "execution_started": true, - "changes_made": false, - "sanitized": true, - "secrets_included": false, - "private_addresses_included": false, - "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "28c62a8739557f52c670c53980379fa6bea3b97baf3a90cf44695b75a65e5abf", - "sanitized_output_sha256": "28c62a8739557f52c670c53980379fa6bea3b97baf3a90cf44695b75a65e5abf", - "output_truncated_in_json": false, - "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "RUNNER_LINKED_REMOVAL_PLAN=PASS\nPLAN_SHA256=8cb775587817330dd12296c2f17665110353bcd090330d9bef36e4b61a23541e\n{\"PLAN_SHA256\":\"8cb775587817330dd12296c2f17665110353bcd090330d9bef36e4b61a23541e\",\"anti_regression\":{\"status\":\"PASS\",\"tests\":{\"canonical_not_linked\":true,\"exact_linked_token_detected\":true,\"historical_reference_not_live\":true,\"redactor_line_boundary\":true}},\"backup_changed\":false,\"canonical_callers\":{\"/usr/local/sbin/homelab-command-adapter\":{\"references_canonical\":true,\"references_linked\":false,\"sha256\":\"f2410cd328e2837b99e8ce4a28e25cb031a6bdd596d0286ac77a1822ef1cecd0\"},\"/usr/local/sbin/homelab-context-refresh\":{\"references_canonical\":true,\"references_linked\":false,\"sha256\":\"98faa546f7a612f0d1f439d637c1293355371592afbcadf6cae0ee05b3552ef8\"}},\"changes_made\":false,\"checked_at_utc\":\"2026-07-26T20:09:58.563384+00:00\",\"cluster_changed\":false,\"command_id\":\"RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z\",\"file_state\":{\"canonical\":{\"device\":64513,\"group\":\"root\",\"inode\":5148520,\"mode\":\"0750\",\"nlink\":1,\"owner\":\"root\",\"path\":\"/usr/local/sbin/homelab-chat-run\",\"regular\":true,\"sha256\":\"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\",\"size\":11864},\"linked\":{\"device\":64513,\"group\":\"root\",\"inode\":5148536,\"mode\":\"0755\",\"nlink\":1,\"owner\":\"root\",\"path\":\"/usr/local/sbin/homelab-chat-run-linked\",\"regular\":true,\"sha256\":\"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1\",\"size\":1901}},\"gitea_changed\":false,\"historical_references\":{\"/root/_1\":{\"errors\":0,\"matched_files\":7,\"occurrences\":31,\"visited\":355},\"/var/lib/homelab-chat-run\":{\"errors\":0,\"matched_files\":60,\"occurrences\":1052,\"visited\":1922},\"/var/lib/homelab-command-adapter/capsules\":{\"errors\":0,\"matched_files\":4,\"occurrences\":33,\"visited\":30},\"overflow\":false,\"total_files\":2307},\"live_references\":{\"match_count\":0,\"matches\":[],\"overflow\":false,\"roots\":{\"/etc/bash.bashrc\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/cron.d\":{\"errors\":0,\"matched_files\":0,\"read\":8,\"visited\":8},\"/etc/cron.daily\":{\"errors\":0,\"matched_files\":0,\"read\":5,\"visited\":5},\"/etc/cron.hourly\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/cron.monthly\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/cron.weekly\":{\"errors\":0,\"matched_files\":0,\"read\":2,\"visited\":2},\"/etc/crontab\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/profile\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/profile.d\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/sudoers\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/etc/sudoers.d\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/etc/systemd/system\":{\"errors\":0,\"matched_files\":0,\"read\":252,\"visited\":252},\"/lib/systemd/system\":{\"errors\":0,\"matched_files\":0,\"read\":389,\"visited\":389},\"/opt\":{\"errors\":0,\"matched_files\":0,\"read\":294,\"visited\":294},\"/root/.bash_profile\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/root/.bashrc\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/root/.config/systemd/user\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/root/.profile\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/run/systemd/system\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/usr/lib/systemd/system\":{\"errors\":0,\"matched_files\":0,\"read\":389,\"visited\":389},\"/usr/local/bin\":{\"errors\":0,\"matched_files\":0,\"read\":1,\"visited\":1},\"/usr/local/sbin\":{\"errors\":0,\"matched_files\":0,\"read\":182,\"visited\":182},\"/var/spool/cron/atjobs\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0},\"/var/spool/cron/crontabs\":{\"errors\":0,\"matched_files\":0,\"read\":0,\"visited\":0}}},\"package_state\":{\"alternative_registered\":false,\"alternatives_rc\":2,\"diversion_rc\":0,\"diverted\":false,\"package_owned\":false,\"query_rc\":1},\"plan\":{\"acceptance\":[\"static exact live-reference rescan\",\"Adapter and Portal identity self-tests\",\"Portal healthz\",\"separate new-PC .hcmd end-to-end verify through canonical runner\",\"evidence SHA verification\"],\"anti_regression\":[\"historical evidence and /root/_1 references do not count as live callers\",\"any exact linked-wrapper reference in live roots blocks APPLY\",\"any linked process or open FD blocks APPLY\",\"canonical runner and all current callers must retain exact SHA\"],\"blocking_preconditions\":[],\"cleanup\":[\"no temporary executable remains\",\"rollback artifact remains non-executable until final acceptance seal\"],\"declared_change_flags\":{\"backup\":false,\"cluster\":false,\"gitea\":false,\"production\":true},\"exact_diff_scope\":{\"modify\":[],\"preserve\":[\"/usr/local/sbin/homelab-chat-run\",\"/usr/local/sbin/homelab-command-adapter\",\"/usr/local/sbin/homelab-command-portal\",\"/usr/local/sbin/homelab-context-refresh\"],\"remove\":[\"/usr/local/sbin/homelab-chat-run-linked\"],\"service_restart\":false},\"expected_postconditions\":[\"/usr/local/sbin/homelab-chat-run-linked is absent\",\"canonical runner SHA remains 2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\",\"Adapter and Portal remain active/enabled\",\"NRestarts remains 0\",\"zero live references to linked wrapper\",\"no undeclared file changes\"],\"next_after_seal\":\"rerun corrected RUN7P2 immutable-result PLAN with fresh source lock\",\"operation\":\"REMOVE_UNUSED_LINKED_RUNNER_WRAPPER\",\"preconditions\":[\"adapter_active_enabled\",\"adapter_self_test\",\"adapter_uses_canonical\",\"context_refresh_uses_canonical\",\"current_capsule_state\",\"live_reference_scan_complete\",\"no_unresolved_mutating\",\"not_package_managed\",\"portal_active_enabled\",\"portal_identity_self_test\",\"source_lock\",\"wrapper_bash_syntax\",\"wrapper_calls_canonical\",\"zero_linked_open_fds\",\"zero_linked_processes\",\"zero_live_linked_references\"],\"risk\":\"LOW: remove one unreferenced wrapper after exact live-caller, process, FD and package checks\",\"rollback\":{\"before_mutation\":\"copy exact linked file and metadata to /var/lib/homelab-change-rollback/{APPLY_COMMAND_ID}/\",\"diagnostics_before_rollback\":[\"file state\",\"systemd state\",\"journal hashes\",\"listeners\",\"processes and open FDs\",\"exact return code\"],\"restore\":\"atomically restore exact file, root:root 0755, then verify SHA-256\",\"restore_condition\":\"any failed postcondition or acceptance\",\"verify_copy_sha256\":\"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1\"},\"schema\":1,\"service_identity_test\":[\"Adapter self-test as root\",\"Portal self-test as homelab-command-portal\"],\"source\":{\"capsule_sha256\":\"89641d4e5131d345ad56b5774e5b16dc05fd27b33f618b2f5c0883ea81839688\",\"command_id\":\"RUNNER-DUPLICATE-READONLY-DIAG-20260726T195742Z\",\"evidence_sha256\":\"b9a3eb1b51eb6d93c09ef61afbaeadae5c2bef66857a82b6a22b56d17b78de20\",\"report_sha256\":\"ae8ce5323776c1647515c7833afd4f4771599824b391b5ff78f1191ea47602ab\"},\"source_lock\":{\"/etc/systemd/system/homelab-command-adapter.service\":\"74d0f37878652ed9d46b53ae8556bbb30ebd683741f293c3f59b3527876ed2d7\",\"/etc/systemd/system/homelab-command-portal.service\":\"8453eab30f5c3ccd285fc9f70fff18f564809bb27f7bf84f51f2ba593aa85263\",\"/usr/local/sbin/homelab-chat-run\":\"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9\",\"/usr/local/sbin/homelab-chat-run-linked\":\"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1\",\"/usr/local/sbin/homelab-command-adapter\":\"f2410cd328e2837b99e8ce4a28e25cb031a6bdd596d0286ac77a1822ef1cecd0\",\"/usr/local/sbin/homelab-command-portal\":\"8056faf4ef6348f0b06319ad3c49fbfeeadf25b6370f857ea19569bd27652ee2\",\"/usr/local/sbin/homelab-context-refresh\":\"98faa546f7a612f0d1f439d637c1293355371592afbcadf6cae0ee05b3552ef8\"},\"target_identity\":{\"component\":\"runner\",\"node\":\"pve01\",\"service_group\":\"root\",\"service_user\":\"root\"}},\"preconditions\":{\"adapter_active_enabled\":true,\"adapter_self_test\":true,\"adapter_uses_canonical\":true,\"context_refresh_uses_canonical\":true,\"current_capsule_state\":true,\"live_reference_scan_complete\":true,\"no_unresolved_mutating\":true,\"not_package_managed\":true,\"portal_active_enabled\":true,\"portal_identity_self_test\":true,\"source_lock\":true,\"wrapper_bash_syntax\":true,\"wrapper_calls_canonical\":true,\"zero_linked_open_fds\":true,\"zero_linked_processes\":true,\"zero_live_linked_references\":true},\"processes\":{\"linked_open_fd_count\":0,\"linked_process_count\":0,\"process_cmdline_sha256\":[]},\"production_changed\":false,\"rollback_started\":false,\"schema\":1,\"source\":{\"capsule_sha256\":\"89641d4e5131d345ad56b5774e5b16dc05fd27b33f618b2f5c0883ea81839688\",\"command_id\":\"RUNNER-DUPLICATE-READONLY-DIAG-20260726T195742Z\",\"evidence_sha256\":\"b9a3eb1b51eb6d93c09ef61afbaeadae5c2bef66857a82b6a22b56d17b78de20\",\"report_sha256\":\"ae8ce5323776c1647515c7833afd4f4771599824b391b5ff78f1191ea47602ab\"},\"source_lock_checks\":{\"/etc/systemd/system/homelab-command-adapter.service\":true,\"/etc/systemd/system/homelab-command-portal.service\":true,\"/usr/local/sbin/homelab-chat-run\":true,\"/usr/local/sbin/homelab-chat-run-linked\":true,\"/usr/local/sbin/homelab-command-adapter\":true,\"/usr/local/sbin/homelab-command-portal\":true,\"/usr/local/sbin/homelab-context-refresh\":true},\"stage\":\"RUNNER_LINKED_REMOVAL_PLAN\",\"status\":\"PASS\",\"units\":{\"adapter\":{\"ActiveState\":\"active\",\"ExecMainStatus\":\"0\",\"Group\":\"homelab-command-portal\",\"LoadState\":\"loaded\",\"NRestarts\":\"0\",\"Result\":\"success\",\"SubState\":\"running\",\"UnitFileState\":\"enabled\",\"User\":\"root\",\"show_rc\":\"0\"},\"portal\":{\"ActiveState\":\"active\",\"ExecMainStatus\":\"0\",\"Group\":\"homelab-command-portal\",\"LoadState\":\"loaded\",\"NRestarts\":\"0\",\"Result\":\"success\",\"SubState\":\"running\",\"UnitFileState\":\"enabled\",\"User\":\"homelab-command-portal\",\"show_rc\":\"0\"}},\"unresolved_mutating\":[],\"wrapper_contract\":{\"bash_syntax_pass\":true,\"calls_canonical\":true,\"content_sha256\":\"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1\",\"prints_immutable_result_url\":true,\"publishes_reader_feed\":true}}\n" -} +{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260726T201701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-07-26T20:17:01Z","finished_at_utc":"2026-07-26T20: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 a6abef7..393d5f5 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,27 +1,163 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z +COMMAND_ID=CONTEXT-AUTO-[PRIVATE_IP]701Z STATUS=OK RC=0 HOST=pve01 -MODE=verify -COMPONENT=runner -REFERENCE_REGISTER_CHECK=OK -REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e -ERROR_REGISTER_CHECK=OK -ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 -COMMAND_SHA256=1524c3bd78c1ad70a1388eac6823fa70babf465bf01494e8e29b1633eea023ca -DUPLICATE_FAILED_COMMAND_BLOCKED=false -EXECUTION_STARTED=true -CHANGES_MADE=false -SANITIZED=yes -SECRETS_INCLUDED=no -PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=28c62a8739557f52c670c53980379fa6bea3b97baf3a90cf44695b75a65e5abf -SANITIZED_OUTPUT_SHA256=28c62a8739557f52c670c53980379fa6bea3b97baf3a90cf44695b75a65e5abf +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 -RUNNER_LINKED_REMOVAL_PLAN=PASS -PLAN_SHA256=8cb775587817330dd12296c2f17665110353bcd090330d9bef36e4b61a23541e -{"PLAN_SHA256":"8cb775587817330dd12296c2f17665110353bcd090330d9bef36e4b61a23541e","anti_regression":{"status":"PASS","tests":{"canonical_not_linked":true,"exact_linked_token_detected":true,"historical_reference_not_live":true,"redactor_line_boundary":true}},"backup_changed":false,"canonical_callers":{"/usr/local/sbin/homelab-command-adapter":{"references_canonical":true,"references_linked":false,"sha256":"f2410cd328e2837b99e8ce4a28e25cb031a6bdd596d0286ac77a1822ef1cecd0"},"/usr/local/sbin/homelab-context-refresh":{"references_canonical":true,"references_linked":false,"sha256":"98faa546f7a612f0d1f439d637c1293355371592afbcadf6cae0ee05b3552ef8"}},"changes_made":false,"checked_at_utc":"2026-07-26T20:09:58.563384+00:00","cluster_changed":false,"command_id":"RUNNER-LINKED-REMOVAL-PLAN-FIX1-20260726T201500Z","file_state":{"canonical":{"device":64513,"group":"root","inode":5148520,"mode":"0750","nlink":1,"owner":"root","path":"/usr/local/sbin/homelab-chat-run","regular":true,"sha256":"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9","size":11864},"linked":{"device":64513,"group":"root","inode":5148536,"mode":"0755","nlink":1,"owner":"root","path":"/usr/local/sbin/homelab-chat-run-linked","regular":true,"sha256":"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1","size":1901}},"gitea_changed":false,"historical_references":{"/root/_1":{"errors":0,"matched_files":7,"occurrences":31,"visited":355},"/var/lib/homelab-chat-run":{"errors":0,"matched_files":60,"occurrences":1052,"visited":1922},"/var/lib/homelab-command-adapter/capsules":{"errors":0,"matched_files":4,"occurrences":33,"visited":30},"overflow":false,"total_files":2307},"live_references":{"match_count":0,"matches":[],"overflow":false,"roots":{"/etc/bash.bashrc":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/cron.d":{"errors":0,"matched_files":0,"read":8,"visited":8},"/etc/cron.daily":{"errors":0,"matched_files":0,"read":5,"visited":5},"/etc/cron.hourly":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/cron.monthly":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/cron.weekly":{"errors":0,"matched_files":0,"read":2,"visited":2},"/etc/crontab":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/profile":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/profile.d":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/sudoers":{"errors":0,"matched_files":0,"read":0,"visited":0},"/etc/sudoers.d":{"errors":0,"matched_files":0,"read":1,"visited":1},"/etc/systemd/system":{"errors":0,"matched_files":0,"read":252,"visited":252},"/lib/systemd/system":{"errors":0,"matched_files":0,"read":389,"visited":389},"/opt":{"errors":0,"matched_files":0,"read":294,"visited":294},"/root/.bash_profile":{"errors":0,"matched_files":0,"read":0,"visited":0},"/root/.bashrc":{"errors":0,"matched_files":0,"read":1,"visited":1},"/root/.config/systemd/user":{"errors":0,"matched_files":0,"read":0,"visited":0},"/root/.profile":{"errors":0,"matched_files":0,"read":1,"visited":1},"/run/systemd/system":{"errors":0,"matched_files":0,"read":0,"visited":0},"/usr/lib/systemd/system":{"errors":0,"matched_files":0,"read":389,"visited":389},"/usr/local/bin":{"errors":0,"matched_files":0,"read":1,"visited":1},"/usr/local/sbin":{"errors":0,"matched_files":0,"read":182,"visited":182},"/var/spool/cron/atjobs":{"errors":0,"matched_files":0,"read":0,"visited":0},"/var/spool/cron/crontabs":{"errors":0,"matched_files":0,"read":0,"visited":0}}},"package_state":{"alternative_registered":false,"alternatives_rc":2,"diversion_rc":0,"diverted":false,"package_owned":false,"query_rc":1},"plan":{"acceptance":["static exact live-reference rescan","Adapter and Portal identity self-tests","Portal healthz","separate new-PC .hcmd end-to-end verify through canonical runner","evidence SHA verification"],"anti_regression":["historical evidence and /root/_1 references do not count as live callers","any exact linked-wrapper reference in live roots blocks APPLY","any linked process or open FD blocks APPLY","canonical runner and all current callers must retain exact SHA"],"blocking_preconditions":[],"cleanup":["no temporary executable remains","rollback artifact remains non-executable until final acceptance seal"],"declared_change_flags":{"backup":false,"cluster":false,"gitea":false,"production":true},"exact_diff_scope":{"modify":[],"preserve":["/usr/local/sbin/homelab-chat-run","/usr/local/sbin/homelab-command-adapter","/usr/local/sbin/homelab-command-portal","/usr/local/sbin/homelab-context-refresh"],"remove":["/usr/local/sbin/homelab-chat-run-linked"],"service_restart":false},"expected_postconditions":["/usr/local/sbin/homelab-chat-run-linked is absent","canonical runner SHA remains 2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9","Adapter and Portal remain active/enabled","NRestarts remains 0","zero live references to linked wrapper","no undeclared file changes"],"next_after_seal":"rerun corrected RUN7P2 immutable-result PLAN with fresh source lock","operation":"REMOVE_UNUSED_LINKED_RUNNER_WRAPPER","preconditions":["adapter_active_enabled","adapter_self_test","adapter_uses_canonical","context_refresh_uses_canonical","current_capsule_state","live_reference_scan_complete","no_unresolved_mutating","not_package_managed","portal_active_enabled","portal_identity_self_test","source_lock","wrapper_bash_syntax","wrapper_calls_canonical","zero_linked_open_fds","zero_linked_processes","zero_live_linked_references"],"risk":"LOW: remove one unreferenced wrapper after exact live-caller, process, FD and package checks","rollback":{"before_mutation":"copy exact linked file and metadata to /var/lib/homelab-change-rollback/{APPLY_COMMAND_ID}/","diagnostics_before_rollback":["file state","systemd state","journal hashes","listeners","processes and open FDs","exact return code"],"restore":"atomically restore exact file, root:root 0755, then verify SHA-256","restore_condition":"any failed postcondition or acceptance","verify_copy_sha256":"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1"},"schema":1,"service_identity_test":["Adapter self-test as root","Portal self-test as homelab-command-portal"],"source":{"capsule_sha256":"89641d4e5131d345ad56b5774e5b16dc05fd27b33f618b2f5c0883ea81839688","command_id":"RUNNER-DUPLICATE-READONLY-DIAG-20260726T195742Z","evidence_sha256":"b9a3eb1b51eb6d93c09ef61afbaeadae5c2bef66857a82b6a22b56d17b78de20","report_sha256":"ae8ce5323776c1647515c7833afd4f4771599824b391b5ff78f1191ea47602ab"},"source_lock":{"/etc/systemd/system/homelab-command-adapter.service":"74d0f37878652ed9d46b53ae8556bbb30ebd683741f293c3f59b3527876ed2d7","/etc/systemd/system/homelab-command-portal.service":"8453eab30f5c3ccd285fc9f70fff18f564809bb27f7bf84f51f2ba593aa85263","/usr/local/sbin/homelab-chat-run":"2a88defef9517f89bc60934dce82097f8e316b08af9417e95167ea5d759a10d9","/usr/local/sbin/homelab-chat-run-linked":"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1","/usr/local/sbin/homelab-command-adapter":"f2410cd328e2837b99e8ce4a28e25cb031a6bdd596d0286ac77a1822ef1cecd0","/usr/local/sbin/homelab-command-portal":"8056faf4ef6348f0b06319ad3c49fbfeeadf25b6370f857ea19569bd27652ee2","/usr/local/sbin/homelab-context-refresh":"98faa546f7a612f0d1f439d637c1293355371592afbcadf6cae0ee05b3552ef8"},"target_identity":{"component":"runner","node":"pve01","service_group":"root","service_user":"root"}},"preconditions":{"adapter_active_enabled":true,"adapter_self_test":true,"adapter_uses_canonical":true,"context_refresh_uses_canonical":true,"current_capsule_state":true,"live_reference_scan_complete":true,"no_unresolved_mutating":true,"not_package_managed":true,"portal_active_enabled":true,"portal_identity_self_test":true,"source_lock":true,"wrapper_bash_syntax":true,"wrapper_calls_canonical":true,"zero_linked_open_fds":true,"zero_linked_processes":true,"zero_live_linked_references":true},"processes":{"linked_open_fd_count":0,"linked_process_count":0,"process_cmdline_sha256":[]},"production_changed":false,"rollback_started":false,"schema":1,"source":{"capsule_sha256":"89641d4e5131d345ad56b5774e5b16dc05fd27b33f618b2f5c0883ea81839688","command_id":"RUNNER-DUPLICATE-READONLY-DIAG-20260726T195742Z","evidence_sha256":"b9a3eb1b51eb6d93c09ef61afbaeadae5c2bef66857a82b6a22b56d17b78de20","report_sha256":"ae8ce5323776c1647515c7833afd4f4771599824b391b5ff78f1191ea47602ab"},"source_lock_checks":{"/etc/systemd/system/homelab-command-adapter.service":true,"/etc/systemd/system/homelab-command-portal.service":true,"/usr/local/sbin/homelab-chat-run":true,"/usr/local/sbin/homelab-chat-run-linked":true,"/usr/local/sbin/homelab-command-adapter":true,"/usr/local/sbin/homelab-command-portal":true,"/usr/local/sbin/homelab-context-refresh":true},"stage":"RUNNER_LINKED_REMOVAL_PLAN","status":"PASS","units":{"adapter":{"ActiveState":"active","ExecMainStatus":"0","Group":"homelab-command-portal","LoadState":"loaded","NRestarts":"0","Result":"success","SubState":"running","UnitFileState":"enabled","User":"root","show_rc":"0"},"portal":{"ActiveState":"active","ExecMainStatus":"0","Group":"homelab-command-portal","LoadState":"loaded","NRestarts":"0","Result":"success","SubState":"running","UnitFileState":"enabled","User":"homelab-command-portal","show_rc":"0"}},"unresolved_mutating":[],"wrapper_contract":{"bash_syntax_pass":true,"calls_canonical":true,"content_sha256":"5e8725e129fd2055b36fe2fae13fc95fc4b3271074a0e0d4bb7347e7b2f270a1","prints_immutable_result_url":true,"publishes_reader_feed":true}} +GENERATED_AT_UTC=[PRIVATE_IP]T20:17:01Z +Cluster information +------------------- +Name: homelab +Config Version: 3 +Transport: knet +Secure auth: on +Quorum information +------------------ +Date: Sun Jul [PRIVATE_IP] 2026 +Quorum provider: corosync_votequorum +Nodes: 3 +Node ID: [PRIVATE_IP] +Ring ID: 1.c6 +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":284150,"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":283992,"vmid":111},{"cpu":[PRIVATE_IP][PRIVATE_IP],"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":284153,"vmid":112},{"cpu":[PRIVATE_IP][PRIVATE_IP],"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":283995,"vmid":113},{"cpu":[PRIVATE_IP]86502,"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":284090,"vmid":130},{"cpu":[PRIVATE_IP]53685,"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":284147,"vmid":150},{"cpu":[PRIVATE_IP]816651,"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":283989,"vmid":160},{"cpu":[PRIVATE_IP]46738,"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":284143,"vmid":170},{"cpu":[PRIVATE_IP]12597,"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":284140,"vmid":171},{"cpu":[PRIVATE_IP]177735,"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":283986,"vmid":180},{"cpu":[PRIVATE_IP]515569,"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":284086,"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]81463,"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":284181},{"cgroup-mode":2,"cpu":[PRIVATE_IP]96292,"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":284056},{"cgroup-mode":2,"cpu":[PRIVATE_IP]68159,"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":284108},{"content":"iso,import,vztmpl,backup","disk":[PRIVATE_IP],"id":"storage/pve01/local","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"iso,import,vztmpl,backup","disk":[PRIVATE_IP],"id":"storage/pve02/local","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"iso,import,vztmpl,backup","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","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":"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"},{"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"},{"id":"network/pve03/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve03","status":"ok","type":"network"}] +Name Type Status Total (KiB) Used (KiB) Available (KiB) % +local dir active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 12.72% +local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 38.44% + 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 +Sun [PRIVATE_IP] 23:17:15 MSK 12s Sun [PRIVATE_IP] 23:16:15 MSK 47s ago homelab-cluster-admin-webpanel-sync.timer homelab-cluster-admin-webpanel-sync.service +Sun [PRIVATE_IP] 23:17:15 MSK 12s Sun [PRIVATE_IP] 23:12:15 MSK 4min 47s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service +Sun [PRIVATE_IP] 23:17:15 MSK 12s Sun [PRIVATE_IP] 23:16:15 MSK 47s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service +Sun [PRIVATE_IP] 23:17:15 MSK 12s Sun [PRIVATE_IP] 23:12:15 MSK 4min 47s ago netbird-peers-health.timer netbird-peers-health.service +Sun [PRIVATE_IP] 23:17:38 MSK 35s Sun [PRIVATE_IP] 23:07:38 MSK 9min ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service +Sun [PRIVATE_IP] 23:18:02 MSK 59s Sun [PRIVATE_IP] 23:16:58 MSK 4s ago homelab-router-watchdog.timer homelab-router-watchdog.service +Sun [PRIVATE_IP] 23:18:37 MSK 1min 34s Sun [PRIVATE_IP] 23:16:29 MSK 33s ago homelab-cluster-admin-inventory-sync.timer homelab-cluster-admin-inventory-sync.service +Sun [PRIVATE_IP] 23:19:55 MSK 2min 52s Sun [PRIVATE_IP] 23:14:51 MSK 2min 11s ago homelab-health-metrics.timer homelab-health-metrics.service +Sun [PRIVATE_IP] 23:20:00 MSK 2min 57s Sun [PRIVATE_IP] 23:14:50 MSK 2min 12s ago homelab-crypto-portfolio-chart-health.timer homelab-crypto-portfolio-chart-health.service +Sun [PRIVATE_IP] 23:28:29 MSK 11min Sun [PRIVATE_IP] 23:13:29 MSK 3min 33s ago homelab-disk-space-health.timer homelab-disk-space-health.service +Sun [PRIVATE_IP] 23:28:29 MSK 11min Sun [PRIVATE_IP] 23:13:29 MSK 3min 33s ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service +Sun [PRIVATE_IP] 23:28:29 MSK 11min Sun [PRIVATE_IP] 23:13:29 MSK 3min 33s ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service +Sun [PRIVATE_IP] 23:28:29 MSK 11min Sun [PRIVATE_IP] 23:13:29 MSK 3min 33s ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service +Sun [PRIVATE_IP] 23:30:00 MSK 12min Sun [PRIVATE_IP] 23:15:04 MSK 1min 58s ago homelab-incident-journal.timer homelab-incident-journal.service +Sun [PRIVATE_IP] 23:30:32 MSK 13min Sun [PRIVATE_IP] 23:16:21 MSK 41s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service +Sun [PRIVATE_IP] 23:30:58 MSK 13min Sun [PRIVATE_IP] 23:16:15 MSK 47s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service +Sun [PRIVATE_IP] 23:31:01 MSK 13min Sun [PRIVATE_IP] 23:15:48 MSK 1min 14s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service +Sun [PRIVATE_IP] 23:31:30 MSK 14min Sun [PRIVATE_IP] 23:04:04 MSK 12min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service +Sun [PRIVATE_IP] 23:34:25 MSK 17min Sun [PRIVATE_IP] 23:01:21 MSK 15min ago homelab-reference-refresh.timer homelab-reference-refresh.service +Mon [PRIVATE_IP] 00:00:00 MSK 42min Sun [PRIVATE_IP] 00:00:04 MSK 23h ago dpkg-db-backup.timer dpkg-db-backup.service +Mon [PRIVATE_IP] 00:01:56 MSK 44min Sun [PRIVATE_IP] 00:00:15 MSK 23h ago homelab-docker-health.timer homelab-docker-health.service +Mon [PRIVATE_IP] 00:03:49 MSK 46min Sun [PRIVATE_IP] 00:38:29 MSK 22h ago logrotate.timer logrotate.service +Mon [PRIVATE_IP] 00:03:54 MSK 46min Sun [PRIVATE_IP] 00:06:04 MSK 23h ago homelab-storage-capacity.timer homelab-storage-capacity.service +Mon [PRIVATE_IP] 00:11:38 MSK 54min Sun [PRIVATE_IP] 00:09:29 MSK 23h ago homelab-evidence-catalog.timer homelab-evidence-catalog.service +Mon [PRIVATE_IP] 00:13:25 MSK 56min Mon [PRIVATE_IP] 00:00:29 MSK - homelab-secret-sanity.timer homelab-secret-sanity.service +Mon [PRIVATE_IP] 00:15:18 MSK 58min Sun [PRIVATE_IP] 00:11:04 MSK 23h ago homelab-quality-gate.timer homelab-quality-gate.service +Mon [PRIVATE_IP] 01:17:55 MSK 2h 0min Mon [PRIVATE_IP] 00:51:14 MSK - fstrim.timer fstrim.service +Mon [PRIVATE_IP] 02:36:56 MSK 3h 19min Sun [PRIVATE_IP] 05:58:48 MSK 17h ago pve-daily-update.timer pve-daily-update.service +Mon [PRIVATE_IP] 03:50:00 MSK 4h 32min Sun [PRIVATE_IP] 03:50:04 MSK 19h ago filebrowser-offhost-sync.timer filebrowser-offhost-sync.service +Mon [PRIVATE_IP] 04:24:18 MSK 5h 7min Sun [PRIVATE_IP] 22:24:18 MSK 52min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service +Mon [PRIVATE_IP] 04:52:03 MSK 5h 35min Sun [PRIVATE_IP] 04:44:28 MSK 18h ago homelab-edge-vm-offhost-freshness.timer homelab-edge-vm-offhost-freshness.service +Mon [PRIVATE_IP] 05:04:46 MSK 5h 47min Sun [PRIVATE_IP] 05:14:37 MSK 18h ago homelab-sops-edge-secret-coverage.timer homelab-sops-edge-secret-coverage.service +Mon [PRIVATE_IP] 05:04:47 MSK 5h 47min Sun [PRIVATE_IP] 06:05:19 MSK 17h ago man-db.timer man-db.service +Mon [PRIVATE_IP] 06:01:10 MSK 6h Sun [PRIVATE_IP] 06:15:38 MSK 17h ago apt-daily-upgrade.timer apt-daily-upgrade.service +Mon [PRIVATE_IP] 07:10:05 MSK 7h Sun [PRIVATE_IP] 07:04:15 MSK 16h ago homelab-drift-check.timer homelab-drift-check.service +Mon [PRIVATE_IP] 07:39:10 MSK 8h Sun [PRIVATE_IP] 07:33:28 MSK 15h ago homelab-service-registry-check.timer homelab-service-registry-check.service +Mon [PRIVATE_IP] 07:44:00 MSK 8h Sun [PRIVATE_IP] 21:07:04 MSK 2h 9min ago apt-daily.timer apt-daily.service +Mon [PRIVATE_IP] 07:52:53 MSK 8h Sun [PRIVATE_IP] 07:54:04 MSK 15h ago homelab-alerting-health.timer homelab-alerting-health.service +Mon [PRIVATE_IP] 07:57:55 MSK 8h Sun [PRIVATE_IP] 07:49:31 MSK 15h ago homelab-dependency-map-check.timer homelab-dependency-map-check.service +Mon [PRIVATE_IP] 07:59:28 MSK 8h Sun [PRIVATE_IP] 07:42:29 MSK 15h ago homelab-runbook-generate.timer homelab-runbook-generate.service +Mon [PRIVATE_IP] 08:00:53 MSK 8h Sun [PRIVATE_IP] 08:14:04 MSK 15h ago homelab-duty-admin-report.timer homelab-duty-admin-report.service +Mon [PRIVATE_IP] 08:03:36 MSK 8h Sun [PRIVATE_IP] 08:02:37 MSK 15h ago homelab-overall-health.timer homelab-overall-health.service +Mon [PRIVATE_IP] 08:07:41 MSK 8h Sun [PRIVATE_IP] 07:51:04 MSK 15h ago homelab-desired-state-sync.timer homelab-desired-state-sync.service +Mon [PRIVATE_IP] 08:09:45 MSK 8h Sun [PRIVATE_IP] 08:16:38 MSK 15h ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service +Mon [PRIVATE_IP] 08:17:59 MSK 9h Sun [PRIVATE_IP] 08:24:58 MSK 14h ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service +Mon [PRIVATE_IP] 08:26:42 MSK 9h Sun [PRIVATE_IP] 08:29:26 MSK 14h ago homelab-capacity-risk.timer homelab-capacity-risk.service +Mon [PRIVATE_IP] 08:39:35 MSK 9h Sun [PRIVATE_IP] 08:38:04 MSK 14h ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service +Mon [PRIVATE_IP] 08:47:05 MSK 9h Sun [PRIVATE_IP] 08:43:29 MSK 14h ago homelab-cluster-passport.timer homelab-cluster-passport.service +Mon [PRIVATE_IP] 08:52:59 MSK 9h Sun [PRIVATE_IP] 08:48:08 MSK 14h ago immich-media-offhost-sync.timer immich-media-offhost-sync.service +Mon [PRIVATE_IP] 09:01:44 MSK 9h Sun [PRIVATE_IP] 09:01:04 MSK 14h ago homelab-golden-state-index.timer homelab-golden-state-index.service +Mon [PRIVATE_IP] 09:15:59 MSK 9h Sun [PRIVATE_IP] 09:09:04 MSK 14h ago memos-offhost-sync.timer memos-offhost-sync.service +Mon [PRIVATE_IP] 10:15:00 MSK 10h Sun [PRIVATE_IP] 10:15:04 MSK 13h ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service +Mon [PRIVATE_IP] 16:35:54 MSK 17h Sun [PRIVATE_IP] 16:35:54 MSK 6h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service +Sun [PRIVATE_IP] 03:10:03 MSK 6 days Sun [PRIVATE_IP] 03:10:15 MSK 20h ago e2scrub_all.timer e2scrub_all.service +Sun [PRIVATE_IP] 03:10:09 MSK 6 days Sun [PRIVATE_IP] 03:10:15 MSK 20h ago xfs_scrub_all.timer xfs_scrub_all.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