From ce83bf289582ae0e129744972dd6d84f9456ae68 Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Wed, 5 Aug 2026 06:17:02 +0000 Subject: [PATCH] runtime: publish CONTEXT-AUTO-20260805T061701Z --- .../CONTEXT-AUTO-20260805T061701Z.json | 1 + .../history/CONTEXT-AUTO-20260805T061701Z.txt | 164 ++++++++++++++++ runtime/latest.json | 39 +--- runtime/latest.txt | 182 +++++++++++++++--- 4 files changed, 322 insertions(+), 64 deletions(-) create mode 100644 runtime/history/CONTEXT-AUTO-20260805T061701Z.json create mode 100644 runtime/history/CONTEXT-AUTO-20260805T061701Z.txt diff --git a/runtime/history/CONTEXT-AUTO-20260805T061701Z.json b/runtime/history/CONTEXT-AUTO-20260805T061701Z.json new file mode 100644 index 0000000..1a1bb57 --- /dev/null +++ b/runtime/history/CONTEXT-AUTO-20260805T061701Z.json @@ -0,0 +1 @@ +{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260805T061701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-08-05T06:17:01Z","finished_at_utc":"2026-08-05T06: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-20260805T061701Z.txt b/runtime/history/CONTEXT-AUTO-20260805T061701Z.txt new file mode 100644 index 0000000..3864c41 --- /dev/null +++ b/runtime/history/CONTEXT-AUTO-20260805T061701Z.txt @@ -0,0 +1,164 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=CONTEXT-AUTO-[PRIVATE_IP]701Z +STATUS=OK +RC=0 +HOST=pve01 +COMPONENT=cluster-context +REFERENCE_SHA[PRIVATE_IP]f8edc75fcf[PRIVATE_IP]c[PRIVATE_IP]cc112ceccb6cf[PRIVATE_IP]a4deb8e +ERROR_REGISTER_SHA[PRIVATE_IP]c7fa[PRIVATE_IP]583c4aefac[PRIVATE_IP]1736ed[PRIVATE_IP]ab83 +OUTPUT_BEGIN +GENERATED_AT_UTC=[PRIVATE_IP]T06:17:01Z +Cluster information +------------------- +Name: homelab +Config Version: 3 +Transport: knet +Secure auth: on + +Quorum information +------------------ +Date: Wed Aug [PRIVATE_IP] 2026 +Quorum provider: corosync_votequorum +Nodes: 3 +Node ID: [PRIVATE_IP] +Ring ID: 1.db +Quorate: Yes + +Votequorum information +---------------------- +Expected votes: 3 +Highest expected: 3 +Total votes: 3 +Quorum: 2 +Flags: Quorate + +Membership information +---------------------- + Nodeid Votes Name +[PRIVATE_IP] [PRIVATE_IP].11 (local) +[PRIVATE_IP] [PRIVATE_IP].13 +[PRIVATE_IP] [PRIVATE_IP].12 + +Membership information +---------------------- + Nodeid Votes Name + 1 1 pve01 (local) + 2 1 pve03 + 3 1 pve02 +[{"cpu":[PRIVATE_IP][PRIVATE_IP],"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/110","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":673802,"vmid":110},{"cpu":[PRIVATE_IP]569657,"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":673886,"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":673847,"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":673890,"vmid":113},{"cpu":[PRIVATE_IP]7807,"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":673826,"vmid":130},{"cpu":[PRIVATE_IP]4983,"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":673800,"vmid":150},{"cpu":[PRIVATE_IP]727089,"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":673882,"vmid":160},{"cpu":[PRIVATE_IP]80561,"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":673795,"vmid":170},{"cpu":[PRIVATE_IP]36888,"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":673793,"vmid":171},{"cpu":[PRIVATE_IP]24034,"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":673880,"vmid":180},{"cpu":[PRIVATE_IP]217291,"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":673822,"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]60154,"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":673844},{"cgroup-mode":2,"cpu":[PRIVATE_IP]32627,"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":673905},{"cgroup-mode":2,"cpu":[PRIVATE_IP]19956,"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":673923},{"content":"vztmpl,backup,import,iso","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"vztmpl,backup,import,iso","disk":[PRIVATE_IP],"id":"storage/pve01/local","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"vztmpl,backup,import,iso","disk":[PRIVATE_IP],"id":"storage/pve02/local","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve03/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve01/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve02/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"id":"network/pve03/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve03","status":"ok","type":"network"},{"id":"network/pve01/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve01","status":"ok","type":"network"},{"id":"network/pve02/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve02","status":"ok","type":"network"}] +Name Type Status Total (KiB) Used (KiB) Available (KiB) % +local dir active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 14.31% +local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 27.38% + UNIT LOAD ACTIVE SUB DESCRIPTION +● homelab-backup-matrix-refresh.service loaded failed failed Generate unified homelab backup matrix state +● homelab-crypto-portfolio-chart-health.service loaded failed failed Crypto portfolio chart health check +● skladchik-reports-monitor-supervisor.service loaded failed failed Skladchik reports monitor full supervisor + +Legend: LOAD → Reflects whether the unit definition was properly loaded. + ACTIVE → The high-level unit activation state, i.e. generalization of SUB. + SUB → The low-level unit activation state, values depend on unit type. + +3 loaded units listed. +NEXT LEFT LAST PASSED UNIT ACTIVATES +Wed [PRIVATE_IP] 09:17:07 MSK 4s Wed [PRIVATE_IP] 09:12:07 MSK 4min 55s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service +Wed [PRIVATE_IP] 09:17:07 MSK 4s Wed [PRIVATE_IP] 09:12:07 MSK 4min 55s ago netbird-peers-health.timer netbird-peers-health.service +Wed [PRIVATE_IP] 09:17:26 MSK 24s Wed [PRIVATE_IP] 09:16:26 MSK 35s ago homelab-cluster-admin-webpanel-sync.timer homelab-cluster-admin-webpanel-sync.service +Wed [PRIVATE_IP] 09:17:26 MSK 24s Wed [PRIVATE_IP] 09:16:26 MSK 35s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service +Wed [PRIVATE_IP] 09:17:36 MSK 33s Wed [PRIVATE_IP] 09:16:35 MSK 26s ago homelab-router-watchdog.timer homelab-router-watchdog.service +Wed [PRIVATE_IP] 09:18:31 MSK 1min 28s Wed [PRIVATE_IP] 09:16:26 MSK 35s ago homelab-cluster-admin-inventory-sync.timer homelab-cluster-admin-inventory-sync.service +Wed [PRIVATE_IP] 09:19:25 MSK 2min 23s Wed [PRIVATE_IP] 09:14:07 MSK 2min 55s ago homelab-crypto-portfolio-chart-health.timer homelab-crypto-portfolio-chart-health.service +Wed [PRIVATE_IP] 09:19:26 MSK 2min 24s Wed [PRIVATE_IP] 09:04:26 MSK 12min ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service +Wed [PRIVATE_IP] 09:20:38 MSK 3min 36s Wed [PRIVATE_IP] 09:15:26 MSK 1min 35s ago homelab-health-metrics.timer homelab-health-metrics.service +Wed [PRIVATE_IP] 09:20:57 MSK 3min 54s Tue [PRIVATE_IP] 09:06:50 MSK 24h ago memos-offhost-sync.timer memos-offhost-sync.service +Wed [PRIVATE_IP] 09:22:26 MSK 5min Wed [PRIVATE_IP] 09:07:26 MSK 9min ago homelab-disk-space-health.timer homelab-disk-space-health.service +Wed [PRIVATE_IP] 09:24:26 MSK 7min Wed [PRIVATE_IP] 09:09:26 MSK 7min ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service +Wed [PRIVATE_IP] 09:25:26 MSK 8min Wed [PRIVATE_IP] 09:10:26 MSK 6min ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service +Wed [PRIVATE_IP] 09:25:26 MSK 8min Wed [PRIVATE_IP] 09:15:26 MSK 1min 35s ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service +Wed [PRIVATE_IP] 09:30:00 MSK 12min Wed [PRIVATE_IP] 09:15:14 MSK 1min 47s ago homelab-incident-journal.timer homelab-incident-journal.service +Wed [PRIVATE_IP] 09:30:47 MSK 13min Wed [PRIVATE_IP] 09:00:07 MSK 16min ago homelab-reference-refresh.timer homelab-reference-refresh.service +Wed [PRIVATE_IP] 09:31:15 MSK 14min Wed [PRIVATE_IP] 09:16:07 MSK 55s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service +Wed [PRIVATE_IP] 09:31:15 MSK 14min Wed [PRIVATE_IP] 09:15:31 MSK 1min 30s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service +Wed [PRIVATE_IP] 09:31:27 MSK 14min Wed [PRIVATE_IP] 09:15:50 MSK 1min 12s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service +Wed [PRIVATE_IP] 09:33:04 MSK 16min Wed [PRIVATE_IP] 09:02:24 MSK 14min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service +Wed [PRIVATE_IP] 10:15:00 MSK 57min Tue [PRIVATE_IP] 10:15:14 MSK 23h ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service +Wed [PRIVATE_IP] 14:08:26 MSK 4h 51min Wed [PRIVATE_IP] 08:08:26 MSK 1h 8min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service +Wed [PRIVATE_IP] 14:20:26 MSK 5h 3min Tue [PRIVATE_IP] 14:20:26 MSK 18h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service +Wed [PRIVATE_IP] 20:41:26 MSK 11h Wed [PRIVATE_IP] 08:05:14 MSK 1h 11min ago apt-daily.timer apt-daily.service +Thu [PRIVATE_IP] 00:00:00 MSK 14h Wed [PRIVATE_IP] 00:00:07 MSK 9h ago dpkg-db-backup.timer dpkg-db-backup.service +Thu [PRIVATE_IP] 00:03:40 MSK 14h Wed [PRIVATE_IP] 00:51:17 MSK 8h ago logrotate.timer logrotate.service +Thu [PRIVATE_IP] 00:10:46 MSK 14h Wed [PRIVATE_IP] 00:13:26 MSK 9h ago homelab-docker-health.timer homelab-docker-health.service +Thu [PRIVATE_IP] 00:12:36 MSK 14h Wed [PRIVATE_IP] 00:18:58 MSK 8h ago homelab-quality-gate.timer homelab-quality-gate.service +Thu [PRIVATE_IP] 00:18:11 MSK 15h Wed [PRIVATE_IP] 00:08:47 MSK 9h ago homelab-evidence-catalog.timer homelab-evidence-catalog.service +Thu [PRIVATE_IP] 00:19:51 MSK 15h Wed [PRIVATE_IP] 00:08:07 MSK 9h ago homelab-storage-capacity.timer homelab-storage-capacity.service +Thu [PRIVATE_IP] 02:45:12 MSK 17h Wed [PRIVATE_IP] 04:06:07 MSK 5h 10min ago pve-daily-update.timer pve-daily-update.service +Thu [PRIVATE_IP] 03:50:00 MSK 18h Wed [PRIVATE_IP] 03:50:07 MSK 5h 26min ago filebrowser-offhost-sync.timer filebrowser-offhost-sync.service +Thu [PRIVATE_IP] 04:35:40 MSK 19h Wed [PRIVATE_IP] 04:48:14 MSK 4h 28min ago homelab-edge-vm-offhost-freshness.timer homelab-edge-vm-offhost-freshness.service +Thu [PRIVATE_IP] 04:52:05 MSK 19h Wed [PRIVATE_IP] 04:58:26 MSK 4h 18min ago homelab-sops-edge-secret-coverage.timer homelab-sops-edge-secret-coverage.service +Thu [PRIVATE_IP] 06:51:28 MSK 21h Wed [PRIVATE_IP] 06:01:14 MSK 3h 15min ago apt-daily-upgrade.timer apt-daily-upgrade.service +Thu [PRIVATE_IP] 07:03:41 MSK 21h Wed [PRIVATE_IP] 07:17:02 MSK 2h 0min ago homelab-drift-check.timer homelab-drift-check.service +Thu [PRIVATE_IP] 07:28:22 MSK 22h Wed [PRIVATE_IP] 07:32:07 MSK 1h 44min ago homelab-service-registry-check.timer homelab-service-registry-check.service +Thu [PRIVATE_IP] 07:48:33 MSK 22h Wed [PRIVATE_IP] 07:56:50 MSK 1h 20min ago homelab-dependency-map-check.timer homelab-dependency-map-check.service +Thu [PRIVATE_IP] 07:54:57 MSK 22h Wed [PRIVATE_IP] 07:54:04 MSK 1h 22min ago homelab-alerting-health.timer homelab-alerting-health.service +Thu [PRIVATE_IP] 08:00:12 MSK 22h Wed [PRIVATE_IP] 07:56:59 MSK 1h 20min ago homelab-runbook-generate.timer homelab-runbook-generate.service +Thu [PRIVATE_IP] 08:04:28 MSK 22h Wed [PRIVATE_IP] 08:06:26 MSK 1h 10min ago homelab-duty-admin-report.timer homelab-duty-admin-report.service +Thu [PRIVATE_IP] 08:06:16 MSK 22h Wed [PRIVATE_IP] 07:48:26 MSK 1h 28min ago homelab-desired-state-sync.timer homelab-desired-state-sync.service +Thu [PRIVATE_IP] 08:06:43 MSK 22h Wed [PRIVATE_IP] 08:17:02 MSK 59min ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service +Thu [PRIVATE_IP] 08:12:34 MSK 22h Wed [PRIVATE_IP] 08:11:14 MSK 1h 5min ago homelab-overall-health.timer homelab-overall-health.service +Thu [PRIVATE_IP] 08:29:02 MSK 23h Wed [PRIVATE_IP] 08:21:50 MSK 55min ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service +Thu [PRIVATE_IP] 08:29:18 MSK 23h Wed [PRIVATE_IP] 08:30:14 MSK 46min ago homelab-capacity-risk.timer homelab-capacity-risk.service +Thu [PRIVATE_IP] 08:44:24 MSK 23h Wed [PRIVATE_IP] 01:56:14 MSK 7h ago man-db.timer man-db.service +Thu [PRIVATE_IP] 08:45:56 MSK 23h Wed [PRIVATE_IP] 08:40:50 MSK 36min ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service +Thu [PRIVATE_IP] 08:47:53 MSK 23h Wed [PRIVATE_IP] 08:55:14 MSK 21min ago homelab-golden-state-index.timer homelab-golden-state-index.service +Thu [PRIVATE_IP] 08:51:13 MSK 23h Wed [PRIVATE_IP] 08:37:07 MSK 39min ago homelab-cluster-passport.timer homelab-cluster-passport.service +Thu [PRIVATE_IP] 08:53:10 MSK 23h Wed [PRIVATE_IP] 08:47:07 MSK 29min ago immich-media-offhost-sync.timer immich-media-offhost-sync.service +Sun [PRIVATE_IP] 03:10:38 MSK 3 days Sun [PRIVATE_IP] 03:10:25 MSK 3 days ago xfs_scrub_all.timer xfs_scrub_all.service +Sun [PRIVATE_IP] 03:10:48 MSK 3 days Sun [PRIVATE_IP] 03:10:50 MSK 3 days ago e2scrub_all.timer e2scrub_all.service +Mon [PRIVATE_IP] 00:03:56 MSK 4 days Mon [PRIVATE_IP] 00:11:50 MSK 2 days ago homelab-secret-sanity.timer homelab-secret-sanity.service +Mon [PRIVATE_IP] 01:11:21 MSK 4 days Mon [PRIVATE_IP] 01:17:56 MSK 2 days ago fstrim.timer fstrim.service +- - - - prometheus-node-exporter-ipmitool-sensor.timer prometheus-node-exporter-ipmitool-sensor.service +- - - - prometheus-node-exporter-mellanox-hca-temp.timer prometheus-node-exporter-mellanox-hca-temp.service +- - - - prometheus-node-exporter-smartmon.timer prometheus-node-exporter-smartmon.service + +58 timers listed. +- Обрезанная, повреждённая или частично вставленная команда считается невыполненной; сначала проводится side-effect audit. +- Хвост parse-ошибки закрывается только после доказательства отсутствия изменений и временных артефактов. +- Proof: /var/lib/homelab-change-sets/operator-command-size-guard-v[PRIVATE_IP]T182653Z/report.txt + +## HOMELAB_ADMIN_CLI_CONTRACT_[PRIVATE_IP] +- Поддерживаемые команды: version, status, lint TASK_DIR, validate TASK_DIR, run TASK_DIR PHASE. +- Отдельная команда --help отсутствует. Неизвестный аргумент печатает usage и штатно возвращает RC=64. +- Нельзя трактовать RC=64 от --help как неисправность runner. +- Для проверки доступности runner использовать homelab-admin version; для структуры CLI использовать зафиксированную usage-строку. +- Proof: /var/lib/homelab-change-sets/homelab-admin-cli-contract-fix-v[PRIVATE_IP]T183338Z/report.txt + +AUTOMATIC_CLUSTER_CONTEXT_REFRESH_[PRIVATE_IP] +Collector: /usr/local/sbin/homelab-context-collect +Scheduler: hourly at minute 17 via /etc/cron.d/homelab-context-refresh +Destination: immutable Gitea runtime history with CONTEXT-AUTO UTC command IDs. + +AUTOMATIC_CLUSTER_CONTEXT_REFRESH_DIRECT_[PRIVATE_IP] +Publisher: /usr/local/sbin/homelab-context-refresh-direct +Schedule: hourly at minute 17. +Destination: immutable assistant-runtime history with CONTEXT-AUTO UTC IDs. +ANTI_REGRESSION_TOKEN=HOMELAB_VM_2CLOUD_444_OUTER_LAUNCHER_BOUNDARY_REQUIRED +- Anti-regression: validate the complete outer launcher with a shell syntax check and verify the wrapper argument boundary before issuing it. +- Infrastructure action executed: none. +- Backup payload impact: none. +- Production impact: none. +- Status: CLOSED; UNRESOLVED_TAIL_COUNT=0. +- Registered at: [PRIVATE_IP]T11:20:32Z + +## ERROR_[PRIVATE_IP]_HOMELAB_VM_2CLOUD_DRAIN_CLOSURE_PREFLIGHT_446 +COMMAND_ID=HOMELAB-VM-2CLOUD-DRAIN-CLOSURE-PREFLIGHT-446 +- Symptom: homelab-chat-run-linked printed Usage and skipped result-feed publication as invalid input. +- Root cause: the diagnostic script was piped to wrapper stdin and the mandatory double-dash command separator was omitted. +- Correction: invoke homelab-chat-run-linked as COMMAND_ID MODE COMPONENT -- command arguments; stdin is not its command interface. +ANTI_REGRESSION_TOKEN=HOMELAB_CHAT_RUN_COMMAND_REQUIRES_DOUBLE_DASH +- Anti-regression: treat wrapper Usage as the authoritative CLI contract and syntax-check the complete launcher, not only its inner payload. +- Infrastructure action executed: none. +- Backup payload impact: none. +- Production impact: none. +- Status: CLOSED; UNRESOLVED_TAIL_COUNT=0. +- Registered at: [PRIVATE_IP]T11:20:32Z +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index c6df7cb..1a1bb57 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,38 +1 @@ -{ - "schema_version": 1, - "channel": "homelab-runtime", - "command_id": "HOMEPAGE-NEWFILYA-NPMPLUS-READ-ONLY-CLOSEOUT-V28-20260804T214500Z", - "status": "OK", - "rc": 0, - "host": "pve01", - "mode": "verify", - "component": "homepage-newfilya-npmplus-read-only-closeout-v28", - "started_at_utc": "2026-08-05T06:07:47Z", - "finished_at_utc": "2026-08-05T06:07:50Z", - "reference_register_checked": true, - "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", - "error_register_checked": true, - "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", - "command_sha256": "6f19140ce421b27e58312b2e3d157748a68659ebe7644535fb1aab19d659b6e6", - "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": "5c63a0f05a5847aea1034258044f9d09c66fcefae817180524ba252dbf57d08e", - "sanitized_output_sha256": "5c63a0f05a5847aea1034258044f9d09c66fcefae817180524ba252dbf57d08e", - "output_truncated_in_json": false, - "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "HOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"HOMEPAGE-NEWFILYA-NPMPLUS-READ-ONLY-CLOSEOUT-V28-20260804T214500Z\",\"mutation_outcome\":\"NO_MUTATION\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"blockers\":[],\"body_returned\":false,\"certificate_changed\":false,\"certificate_contents_returned\":false,\"changes_made\":false,\"checks\":{\"core\":{\"counts_exact\":true,\"homepage_api_exact\":true,\"homepage_mount_exact\":true,\"homepage_not_restarted\":true,\"monitor_still_deferred\":true,\"privacy_contract\":true,\"probe_ok\":true,\"services_exact\":true,\"structure_exact\":true,\"target_cards_exact\":true},\"edge\":{\"all_edge_checks_true\":true,\"no_failed_checks\":true,\"no_service_actions\":true,\"privacy_contract\":true,\"probe_ok\":true,\"read_only_contract\":true},\"public\":{\"acme_route_preserved\":true,\"dns_exact\":true,\"http_redirect_exact\":true,\"image_exact\":true,\"privacy_contract\":true,\"root_exact\":true,\"same_expected_leaf\":true,\"trusted_tls_exact\":true}},\"cluster_changed\":false,\"command_id\":\"HOMEPAGE-NEWFILYA-NPMPLUS-READ-ONLY-CLOSEOUT-V28-20260804T214500Z\",\"container_restarted\":false,\"control_plane_error\":null,\"core\":{\"backup_bytes\":12005,\"backup_mode\":\"0o600\",\"backup_sha256\":\"6468974ef09b3d9899bae5df4d8a7fa711d6cf16edda00b116747192277dcb2c\",\"card_count\":65,\"contains_private_dispatch_material\":false,\"failed_checks\":[],\"group_count\":7,\"hbarhub_card_exact\":true,\"homepage_api_sha256\":\"a1ece968406ec5ce5ba02197d5270d1e3ce34da451a69cc3cc5f38b6081ada0d\",\"homepage_api_target_href_counts\":{\"hbarhub.ru\":1,\"newfilya.ru\":1},\"homepage_image_id_sha256\":\"242e6332e372aaffcf7c821cff66dcbc12c42b2cd4ae282db9533b640892ac79\",\"homepage_image_reference_sha256\":\"b0c046cffbc1a48af0e6b240575c63b6f405debba0b2c50fa190616b5ea62808\",\"homepage_mount_exact\":true,\"homepage_restart_count\":0,\"newfilya_card_exact\":true,\"newfilya_monitor_enabled\":false,\"ok\":true,\"secret_file_read\":false,\"secrets_included\":false,\"services_bytes\":12308,\"services_sha256\":\"0b7360dc34b9bd3e25073eae449f3c0c5a6609f7eb9f4bb2feca72b6e04fc928\",\"services_structure_sha256\":\"eff9a7e610218ffdd092d704d2fcfad357db5d3b75ee0cc584c606ae4ee61f82\",\"source_contents_returned\":false,\"status\":\"OK\",\"target_href_counts\":{\"hbarhub.ru\":1,\"newfilya.ru\":1}},\"desired_state_changed\":false,\"diagnosis\":\"NEWFILYA_STATIC_PLACEHOLDER_CLOSEOUT_VERIFIED\",\"dns_changed\":false,\"duration_ms\":3228,\"edge\":{\"body_returned\":false,\"certificate_changed\":false,\"certificate_contents_returned\":false,\"changes_made\":false,\"checks\":{\"asset_identity_exact\":true,\"candidate_loaded_once\":true,\"certbot_account_set_exact\":true,\"certbot_config_exact\":true,\"certificate_leaf_exact\":true,\"certificate_lineage_present\":true,\"certificate_names_exact\":true,\"certificate_valid\":true,\"config_identity_exact\":true,\"docker_server_exact\":true,\"effective_domain_servers_exact\":true,\"effective_nginx_exact\":true,\"hostname_exact\":true,\"nginx_config_valid\":true,\"nginx_test_identity_exact\":true,\"npmplus_container_exact\":true,\"npmplus_image_exact\":true,\"npmplus_restart_count_exact\":true,\"npmplus_running\":true,\"npmplus_started_exact\":true,\"one_domain_proxy_exact\":true,\"persistent_acme_preserved\":true,\"persistent_webroot_exact\":true,\"privacy_contract\":true,\"private_key_exists_not_read\":true,\"proxy_tree_exact\":true,\"staging_paths_absent\":true},\"command_audit\":[{\"argv_count\":4,\"duration_ms\":21,\"output_within_limit\":true,\"rc\":0,\"stage\":\"closeout-docker-server-version\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":7,\"stdout_sha256\":\"ff21e5cfb54b956ea1c5129ae06b4ff0c36f6ef6bf8f942ed2eb20754cdc3032\",\"tool\":\"docker\"},{\"argv_count\":5,\"duration_ms\":15,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-npmplus-allowlisted-inspect\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":149,\"stdout_sha256\":\"c592f6ab6f499ca9eb33cd4ea49ac0698a72281e95e384356ee25a7caeadb01b\",\"tool\":\"docker\"},{\"argv_count\":5,\"duration_ms\":194,\"output_within_limit\":true,\"rc\":0,\"stage\":\"closeout-npmplus-nginx-test\",\"stderr_bytes\":154,\"stderr_sha256\":\"9cb221b6993277a11765b15bdded4e9b090f1c2a8f5ed573e907ae3b6921f27c\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"tool\":\"docker\"},{\"argv_count\":5,\"duration_ms\":187,\"output_within_limit\":true,\"rc\":0,\"stage\":\"closeout-npmplus-nginx-dump\",\"stderr_bytes\":154,\"stderr_sha256\":\"9cb221b6993277a11765b15bdded4e9b090f1c2a8f5ed573e907ae3b6921f27c\",\"stdout_bytes\":121613,\"stdout_sha256\":\"54d0df77a491cf8c2bfe79127bf768a180185e4a5e9fd09e27c60e7222b7f5a1\",\"tool\":\"docker\"},{\"argv_count\":5,\"duration_ms\":828,\"output_within_limit\":true,\"rc\":0,\"stage\":\"closeout-npmplus-certbot-version\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":14,\"stdout_sha256\":\"3995518a280a1b0eb81d1a5109e6207939c1fa75a1fdfc21709c756009aa02fd\",\"tool\":\"docker\"},{\"argv_count\":6,\"duration_ms\":68,\"output_within_limit\":true,\"rc\":1,\"stage\":\"docker-npmplus-legacy-acme-webroot-stat\",\"stderr_bytes\":68,\"stderr_sha256\":\"cc274d2263556e58eb68b37dd0bf350896eebc810eedb715c83eb33c6c10565e\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"tool\":\"docker\"},{\"argv_count\":6,\"duration_ms\":79,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-npmplus-persistent-acme-webroot-stat\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":18,\"stdout_sha256\":\"7dc3f096f6dd4f071a221da871e2f62ea96230e5c9b876b2b7202a754390641b\",\"tool\":\"docker\"},{\"argv_count\":6,\"duration_ms\":71,\"output_within_limit\":true,\"rc\":0,\"stage\":\"docker-npmplus-certbot-config-stat\",\"stderr_bytes\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout_bytes\":21,\"stdout_sha256\":\"ac465eeb18a1b03028ed66ef0589dc6b5bdf2a432efe01445044987a3b7ff08d\",\"tool\":\"docker\"}],\"command_audit_summary\":{\"command_audit_count\":8,\"command_audit_output_returned\":false,\"command_audit_record_set_sha256\":\"af133f3989270c71eaa71f80a4c478a0a1cd63c6d513f6f26f473929d6937ccc\",\"command_audit_stage_set_sha256\":\"4707cd6125571f47a841da9a6328876625c47757ad41c8a2182edb95cebd54c0\"},\"command_id\":\"HOMEPAGE-NEWFILYA-NPMPLUS-READ-ONLY-CLOSEOUT-V28-20260804T214500Z\",\"container_restarted\":false,\"diagnosis\":\"NEWFILYA_STATIC_PLACEHOLDER_EDGE_CLOSEOUT\",\"duration_ms\":1487,\"failed_checks\":[],\"failure_evidence\":null,\"gate\":\"EDGE_CLOSEOUT_VERIFIED\",\"inventory\":{\"asset_path\":{\"bytes\":712859,\"content_returned\":false,\"dev\":2049,\"exists\":true,\"gid\":0,\"ino\":264302,\"kind\":\"regular\",\"mode\":\"0644\",\"nlink\":1,\"sha256\":\"7f8d6c40d5f8f740f2d719fe739c456cf832cb67ed1b15161b616b8632caf367\",\"uid\":0},\"body_returned\":false,\"candidate_path\":{\"bytes\":4279,\"content_returned\":false,\"dev\":2049,\"exists\":true,\"gid\":0,\"ino\":280819,\"kind\":\"regular\",\"mode\":\"0644\",\"nlink\":1,\"sha256\":\"ea2b760bce680a2158434809595b89b7b2566903913e74e45d38b992b575c643\",\"uid\":0},\"certbot\":{\"account_count\":2,\"account_path_set_sha256\":\"27b94e58c9c61e1300cfe7d73f5061f93b31c7966a8e8f101f2fd68c7fcff31e\",\"candidate_paths\":{\"archive\":{\"bytes\":4096,\"exists\":true,\"gid\":0,\"kind\":\"directory\",\"mode\":\"0755\",\"uid\":0},\"live\":{\"bytes\":4096,\"exists\":true,\"gid\":0,\"kind\":\"directory\",\"mode\":\"0755\",\"uid\":0},\"renewal\":{\"bytes\":769,\"exists\":true,\"gid\":0,\"kind\":\"regular\",\"mode\":\"0644\",\"uid\":0}},\"certbot_config_stat_sha256\":\"ac465eeb18a1b03028ed66ef0589dc6b5bdf2a432efe01445044987a3b7ff08d\",\"persistent_webroot_stat_sha256\":\"7dc3f096f6dd4f071a221da871e2f62ea96230e5c9b876b2b7202a754390641b\",\"private_keys_read\":false,\"secret_files_read\":false},\"certificate\":{\"bytes\":4841,\"certificate_contents_returned\":false,\"covers_domain\":true,\"dns_name_set_sha256\":\"cec5db9abd6f16dd4916fc5bbf0846b63be2744a0b1ded6e9266a92575b70d10\",\"exists\":true,\"leaf_certificate_sha256\":\"4d62d05339b44bd49a32ba3eac8bc32083623a8bd0c2ab58aa6d5a2669bced95\",\"private_key_exists\":true,\"private_key_read\":false,\"remaining_seconds_bucket\":7740000,\"valid_for_closeout\":true,\"valid_now\":true},\"certificate_contents_returned\":false,\"docker_server_version_sha256\":\"ff21e5cfb54b956ea1c5129ae06b4ff0c36f6ef6bf8f942ed2eb20754cdc3032\",\"effective_nginx\":{\"combined_bytes\":121768,\"combined_sha256\":\"7c8da19f0ed9897c0cc0bfe0683080722e970e6929cf17355a649eacd8bd0857\",\"content_returned\":false,\"default_persistent_acme_route_count\":1,\"default_persistent_acme_route_present\":true,\"domain_server_block_count\":2,\"domain_server_block_set_sha256\":\"e1552f2882c13eac5c0ddd9cf78ceb84f0c6093f7149f4b7af9c2db72b0dab82\",\"persistent_acme_http_route_count\":47,\"persistent_acme_http_route_present\":true,\"persistent_acme_http_route_set_sha256\":\"137c9fa49c00b93b14acb78cd59ff2716d35f673b026b57c733cbdf694874ae7\",\"private_addresses_returned\":false,\"server_block_count\":77},\"hostname_exact\":true,\"loaded_candidate_occurrences\":1,\"nginx_test\":{\"rc\":0,\"stderr_bytes\":154,\"stderr_sha256\":\"9cb221b6993277a11765b15bdded4e9b090f1c2a8f5ed573e907ae3b6921f27c\",\"stdout_bytes\":0,\"stdout_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"},\"npmplus\":{\"container_id_sha256\":\"493576b742fc30ff359bab4661f9f1aedde0bdb840b9bf61012388d9559ad296\",\"image_sha256\":\"d16df105013397a10fa5200e967d82c9e9144b1e81737fe30f91165f65a35402\",\"restart_count\":0,\"restarting\":false,\"running\":true,\"started_at_sha256\":\"2e3db5e8a35be23cae35c3ad39b177cb0750fe38dbbcec8902f77352a56b8ba0\"},\"private_addresses_included\":false,\"private_keys_read\":false,\"proxy\":{\"domain_match_count\":1,\"domain_matches\":[{\"bytes\":4279,\"content_returned\":false,\"domain_exact\":true,\"filename\":\"992.conf\",\"numeric_id\":992,\"sha256\":\"ea2b760bce680a2158434809595b89b7b2566903913e74e45d38b992b575c643\"}],\"file_count\":57,\"numeric_id_count\":57,\"numeric_id_set_sha256\":\"a3e19c97831f62cc8f19d379a85a466c5e5634e22fa565a99b04fda972936035\",\"tree_sha256\":\"48935f4448393215a8342efe7e8a2d626acfc099ca7f6e9b40a5a867ed5be4ae\"},\"source_contents_returned\":false,\"staging_paths_absent\":true},\"mutation_outcome\":\"NO_MUTATION\",\"next_stage\":\"COMPLETE\",\"npmplus_reloaded\":false,\"ok\":true,\"private_addresses_included\":false,\"private_keys_read\":false,\"public_proxy_changed\":false,\"rc\":0,\"read_only\":true,\"role\":\"edge-vm\",\"rollback_restored\":null,\"rollback_started\":false,\"sanitized\":true,\"schema\":1,\"secret_files_read\":false,\"secrets_included\":false,\"source_contents_returned\":false,\"status\":\"OK\",\"write_attempted\":false},\"gate\":\"CLOSED_VERIFIED\",\"gitea_changed\":false,\"homepage_changed\":false,\"mutation_outcome\":\"NO_MUTATION\",\"next_stage\":\"COMPLETE\",\"npmplus_reloaded\":false,\"private_addresses_included\":false,\"private_keys_read\":false,\"production_site_changed\":false,\"public\":{\"acme\":{\"completed\":true,\"final_hop\":null,\"first_hop\":{\"body_bytes\":124,\"body_sha256\":\"8cdc5c9588e8cc315d89a7c73f1bea4d41f8d68ae165756df0ec4a7db6a49892\",\"completed\":true,\"header_values_returned\":false,\"location_matches_expected_https\":false,\"location_present\":false,\"status\":404},\"header_values_returned\":false,\"path_sha256\":\"e607916d673bf51a6f3308ddd6069ae2da45daaec36dd78c419a41250a81f1af\",\"redirect_count\":0,\"route_model\":\"DIRECT_HTTP_404\",\"route_proven\":true},\"addresses_returned\":false,\"body_returned\":false,\"certificate_contents_returned\":false,\"checks\":{\"acme_route_preserved\":true,\"dns_exact\":true,\"http_redirect_exact\":true,\"image_exact\":true,\"privacy_contract\":true,\"root_exact\":true,\"same_expected_leaf\":true,\"trusted_tls_exact\":true},\"dns\":{\"address_set_sha256\":\"c76b6b888b15b83623f3fc36fe6617dc24550f6b09b0d8f73c92ea22016e3a13\",\"addresses_returned\":false,\"families\":[\"IPv4\"],\"public_target_count\":1,\"record_count\":1,\"rejected_non_public_count\":0,\"resolved\":true},\"failed_checks\":[],\"http\":{\"bad_gateway\":false,\"body_bytes\":140,\"body_sha256\":\"367cbd2bd4bb3ccdbff9b81ad94e4c1d9c66ee80e9df3ffcd7080f2000cbac6a\",\"completed\":true,\"connection_mode\":\"PINNED_GLOBAL_TARGET\",\"header_values_returned\":false,\"npmplus_default\":false,\"redirects_to_expected_https\":true,\"status\":301},\"image\":{\"bad_gateway\":false,\"body_bytes\":712859,\"body_returned\":false,\"body_sha256\":\"7f8d6c40d5f8f740f2d719fe739c456cf832cb67ed1b15161b616b8632caf367\",\"cache_control_no_store\":true,\"certificate_contents_returned\":false,\"certificate_validation_disabled\":false,\"completed\":true,\"content_type_image_jpeg\":true,\"content_type_text_html\":false,\"header_values_returned\":false,\"leaf_certificate_sha256\":\"4d62d05339b44bd49a32ba3eac8bc32083623a8bd0c2ab58aa6d5a2669bced95\",\"npmplus_default\":false,\"robots_noindex\":true,\"status\":200},\"ok\":true,\"root\":{\"bad_gateway\":false,\"body_bytes\":2575,\"body_returned\":false,\"body_sha256\":\"02c89362aac89175e6ff2c18cf3265536417e8ac8f03f6174e25759ecfea8b1d\",\"cache_control_no_store\":true,\"certificate_contents_returned\":false,\"certificate_validation_disabled\":false,\"completed\":true,\"content_type_image_jpeg\":false,\"content_type_text_html\":true,\"header_values_returned\":false,\"leaf_certificate_sha256\":\"4d62d05339b44bd49a32ba3eac8bc32083623a8bd0c2ab58aa6d5a2669bced95\",\"npmplus_default\":false,\"robots_noindex\":true,\"status\":200},\"tls\":{\"addresses_returned\":false,\"attempt_count\":1,\"certificate_contents_returned\":false,\"unverified\":{\"certificate_contents_returned\":false,\"certificate_validation_disabled\":true,\"completed\":true,\"error_types\":{},\"leaf_certificate_count\":1,\"leaf_certificate_sha256\":\"4d62d05339b44bd49a32ba3eac8bc32083623a8bd0c2ab58aa6d5a2669bced95\",\"leaf_set_sha256\":\"a9225fa1abf9a66c3a1149f945e53608c1c798df70f13e9cd3916881a827e099\",\"protocols\":[\"TLSv1.3\"],\"success_count\":1},\"verified\":true,\"verified_leaf_certificate_sha256\":\"4d62d05339b44bd49a32ba3eac8bc32083623a8bd0c2ab58aa6d5a2669bced95\",\"verified_protocol\":\"TLSv1.3\",\"verified_success_count\":1,\"verify_codes\":{}}},\"public_proxy_changed\":false,\"rc\":0,\"read_only\":true,\"rollback_restored\":null,\"rollback_started\":false,\"sanitized\":true,\"schema\":1,\"secret_files_read\":false,\"secrets_included\":false,\"source_contents_returned\":false,\"source_v27_evidence\":{\"apply\":{\"PLAN_SHA256\":\"942b4c97a3938cdbe22f9b200aaa0a05e3aa69244d074d43039e8aab586b6cdf\",\"asset_bytes\":712859,\"asset_sha256\":\"7f8d6c40d5f8f740f2d719fe739c456cf832cb67ed1b15161b616b8632caf367\",\"body_bytes\":2575,\"body_sha256\":\"02c89362aac89175e6ff2c18cf3265536417e8ac8f03f6174e25759ecfea8b1d\",\"config_bytes\":4279,\"config_sha256\":\"ea2b760bce680a2158434809595b89b7b2566903913e74e45d38b992b575c643\",\"gate\":\"APPLIED_AND_VERIFIED\",\"nginx_test_rc\":0,\"npmplus_reloaded\":true},\"core\":{\"card_count\":65,\"group_count\":7,\"homepage_restart_count\":0,\"newfilya_card_exact\":true,\"newfilya_monitor_enabled\":false,\"services_bytes\":12308,\"services_sha256\":\"0b7360dc34b9bd3e25073eae449f3c0c5a6609f7eb9f4bb2feca72b6e04fc928\",\"services_structure_sha256\":\"eff9a7e610218ffdd092d704d2fcfad357db5d3b75ee0cc584c606ae4ee61f82\"},\"outer\":{\"capsule_bytes\":1110005,\"capsule_sha256\":\"d5f094cdf4d7d9817db55068e545934ec4121df0afe307db7b5bf4c1152dc54f\",\"changes_made\":true,\"command_id\":\"HOMEPAGE-NEWFILYA-NPMPLUS-OBSERVED-LISTENER-ATOMIC-APPLY-V27-20260804T211800Z\",\"command_sha256\":\"1ba97cef51f162086946a5d536fbe3984e7b52fea819a00c0afb9828cd168ce9\",\"history_bytes\":63785,\"history_sha256\":\"e79aa434900013f76db76829f629bed5dbf219b89c86ad2957d369bf6c22bf6b\",\"mutation_outcome\":\"MUTATED\",\"output_bytes\":57797,\"output_sha256\":\"69f107a7cc4fc5f7b97cf6a4c06a8c5136a5f004d7a2df075476068ba19080e3\",\"rc\":0,\"result_contract_valid\":true,\"rollback_restored\":null,\"rollback_started\":false,\"runtime_commit\":\"21bdba451b9da67fab7ef162f73fc87d7a08df2d\",\"status\":\"OK\"},\"public\":{\"address_set_sha256\":\"c76b6b888b15b83623f3fc36fe6617dc24550f6b09b0d8f73c92ea22016e3a13\",\"image_body_bytes\":712859,\"image_body_sha256\":\"7f8d6c40d5f8f740f2d719fe739c456cf832cb67ed1b15161b616b8632caf367\",\"image_status\":200,\"leaf_certificate_sha256\":\"4d62d05339b44bd49a32ba3eac8bc32083623a8bd0c2ab58aa6d5a2669bced95\",\"root_body_bytes\":2575,\"root_body_sha256\":\"02c89362aac89175e6ff2c18cf3265536417e8ac8f03f6174e25759ecfea8b1d\",\"root_status\":200,\"trusted_tls\":true}},\"status\":\"OK\",\"transport\":{\"core\":{\"config_view\":\"service-view\",\"mode\":\"DIRECT_QGA\",\"private_addresses_returned\":false,\"qga_step_count\":6,\"qga_step_set_sha256\":\"8a2d0ebc40036e4cebc6dac4aede8eafb5ee557b61b19d180cc3553707a736eb\",\"remote_rc\":0,\"remote_stdout_bytes\":2802,\"remote_stdout_sha256\":\"e40627d15ec0d6b351fc0dad661246bf9c37cf2508879abf2389f22b903fa072\",\"socket_view\":\"service-view\",\"vm_name\":\"core-apps\",\"vmid\":170},\"edge\":{\"config_view\":\"service-view\",\"guest_input_bytes\":0,\"guest_input_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"mode\":\"STRICT_SSH_TO_OWNING_NODE_THEN_DIRECT_QGA\",\"node\":\"pve03\",\"private_addresses_returned\":false,\"qga_step_count\":10,\"qga_step_set_sha256\":\"c37ceca394769aa939334b1532c37b6169a38fbda15e147952a5b64d2313fb69\",\"remote_rc\":0,\"remote_stdout_bytes\":8012,\"remote_stdout_sha256\":\"bd07b52e54e89f99c47c300b73f0d4bc8dff8b1b2a410f6358662b6957af21d8\",\"socket_view\":\"service-view\",\"ssh_rc\":0,\"vm_name\":\"edge-vm\",\"vmid\":130}},\"write_attempted\":false}\n" -} +{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260805T061701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-08-05T06:17:01Z","finished_at_utc":"2026-08-05T06: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 2d35b0d..3864c41 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,34 +1,164 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=HOMEPAGE-NEWFILYA-NPMPLUS-READ-ONLY-CLOSEOUT-V28-20260804T214500Z +COMMAND_ID=CONTEXT-AUTO-[PRIVATE_IP]701Z STATUS=OK RC=0 HOST=pve01 -MODE=verify -COMPONENT=homepage-newfilya-npmplus-read-only-closeout-v28 -REFERENCE_REGISTER_CHECK=OK -REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e -ERROR_REGISTER_CHECK=OK -ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 -COMMAND_SHA256=6f19140ce421b27e58312b2e3d157748a68659ebe7644535fb1aab19d659b6e6 -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=5c63a0f05a5847aea1034258044f9d09c66fcefae817180524ba252dbf57d08e -SANITIZED_OUTPUT_SHA256=5c63a0f05a5847aea1034258044f9d09c66fcefae817180524ba252dbf57d08e +COMPONENT=cluster-context +REFERENCE_SHA[PRIVATE_IP]f8edc75fcf[PRIVATE_IP]c[PRIVATE_IP]cc112ceccb6cf[PRIVATE_IP]a4deb8e +ERROR_REGISTER_SHA[PRIVATE_IP]c7fa[PRIVATE_IP]583c4aefac[PRIVATE_IP]1736ed[PRIVATE_IP]ab83 OUTPUT_BEGIN -HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"HOMEPAGE-NEWFILYA-NPMPLUS-READ-ONLY-CLOSEOUT-V28-20260804T214500Z","mutation_outcome":"NO_MUTATION","rollback_restored":null,"rollback_started":false,"status":"OK","version":1} -{"blockers":[],"body_returned":false,"certificate_changed":false,"certificate_contents_returned":false,"changes_made":false,"checks":{"core":{"counts_exact":true,"homepage_api_exact":true,"homepage_mount_exact":true,"homepage_not_restarted":true,"monitor_still_deferred":true,"privacy_contract":true,"probe_ok":true,"services_exact":true,"structure_exact":true,"target_cards_exact":true},"edge":{"all_edge_checks_true":true,"no_failed_checks":true,"no_service_actions":true,"privacy_contract":true,"probe_ok":true,"read_only_contract":true},"public":{"acme_route_preserved":true,"dns_exact":true,"http_redirect_exact":true,"image_exact":true,"privacy_contract":true,"root_exact":true,"same_expected_leaf":true,"trusted_tls_exact":true}},"cluster_changed":false,"command_id":"HOMEPAGE-NEWFILYA-NPMPLUS-READ-ONLY-CLOSEOUT-V28-20260804T214500Z","container_restarted":false,"control_plane_error":null,"core":{"backup_bytes":12005,"backup_mode":"0o600","backup_sha256":"6468974ef09b3d9899bae5df4d8a7fa711d6cf16edda00b116747192277dcb2c","card_count":65,"contains_private_dispatch_material":false,"failed_checks":[],"group_count":7,"hbarhub_card_exact":true,"homepage_api_sha256":"a1ece968406ec5ce5ba02197d5270d1e3ce34da451a69cc3cc5f38b6081ada0d","homepage_api_target_href_counts":{"hbarhub.ru":1,"newfilya.ru":1},"homepage_image_id_sha256":"242e6332e372aaffcf7c821cff66dcbc12c42b2cd4ae282db9533b640892ac79","homepage_image_reference_sha256":"b0c046cffbc1a48af0e6b240575c63b6f405debba0b2c50fa190616b5ea62808","homepage_mount_exact":true,"homepage_restart_count":0,"newfilya_card_exact":true,"newfilya_monitor_enabled":false,"ok":true,"secret_file_read":false,"secrets_included":false,"services_bytes":12308,"services_sha256":"0b7360dc34b9bd3e25073eae449f3c0c5a6609f7eb9f4bb2feca72b6e04fc928","services_structure_sha256":"eff9a7e610218ffdd092d704d2fcfad357db5d3b75ee0cc584c606ae4ee61f82","source_contents_returned":false,"status":"OK","target_href_counts":{"hbarhub.ru":1,"newfilya.ru":1}},"desired_state_changed":false,"diagnosis":"NEWFILYA_STATIC_PLACEHOLDER_CLOSEOUT_VERIFIED","dns_changed":false,"duration_ms":3228,"edge":{"body_returned":false,"certificate_changed":false,"certificate_contents_returned":false,"changes_made":false,"checks":{"asset_identity_exact":true,"candidate_loaded_once":true,"certbot_account_set_exact":true,"certbot_config_exact":true,"certificate_leaf_exact":true,"certificate_lineage_present":true,"certificate_names_exact":true,"certificate_valid":true,"config_identity_exact":true,"docker_server_exact":true,"effective_domain_servers_exact":true,"effective_nginx_exact":true,"hostname_exact":true,"nginx_config_valid":true,"nginx_test_identity_exact":true,"npmplus_container_exact":true,"npmplus_image_exact":true,"npmplus_restart_count_exact":true,"npmplus_running":true,"npmplus_started_exact":true,"one_domain_proxy_exact":true,"persistent_acme_preserved":true,"persistent_webroot_exact":true,"privacy_contract":true,"private_key_exists_not_read":true,"proxy_tree_exact":true,"staging_paths_absent":true},"command_audit":[{"argv_count":4,"duration_ms":21,"output_within_limit":true,"rc":0,"stage":"closeout-docker-server-version","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":7,"stdout_sha256":"ff21e5cfb54b956ea1c5129ae06b4ff0c36f6ef6bf8f942ed2eb20754cdc3032","tool":"docker"},{"argv_count":5,"duration_ms":15,"output_within_limit":true,"rc":0,"stage":"docker-npmplus-allowlisted-inspect","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":149,"stdout_sha256":"c592f6ab6f499ca9eb33cd4ea49ac0698a72281e95e384356ee25a7caeadb01b","tool":"docker"},{"argv_count":5,"duration_ms":194,"output_within_limit":true,"rc":0,"stage":"closeout-npmplus-nginx-test","stderr_bytes":154,"stderr_sha256":"9cb221b6993277a11765b15bdded4e9b090f1c2a8f5ed573e907ae3b6921f27c","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","tool":"docker"},{"argv_count":5,"duration_ms":187,"output_within_limit":true,"rc":0,"stage":"closeout-npmplus-nginx-dump","stderr_bytes":154,"stderr_sha256":"9cb221b6993277a11765b15bdded4e9b090f1c2a8f5ed573e907ae3b6921f27c","stdout_bytes":121613,"stdout_sha256":"54d0df77a491cf8c2bfe79127bf768a180185e4a5e9fd09e27c60e7222b7f5a1","tool":"docker"},{"argv_count":5,"duration_ms":828,"output_within_limit":true,"rc":0,"stage":"closeout-npmplus-certbot-version","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":14,"stdout_sha256":"3995518a280a1b0eb81d1a5109e6207939c1fa75a1fdfc21709c756009aa02fd","tool":"docker"},{"argv_count":6,"duration_ms":68,"output_within_limit":true,"rc":1,"stage":"docker-npmplus-legacy-acme-webroot-stat","stderr_bytes":68,"stderr_sha256":"cc274d2263556e58eb68b37dd0bf350896eebc810eedb715c83eb33c6c10565e","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","tool":"docker"},{"argv_count":6,"duration_ms":79,"output_within_limit":true,"rc":0,"stage":"docker-npmplus-persistent-acme-webroot-stat","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":18,"stdout_sha256":"7dc3f096f6dd4f071a221da871e2f62ea96230e5c9b876b2b7202a754390641b","tool":"docker"},{"argv_count":6,"duration_ms":71,"output_within_limit":true,"rc":0,"stage":"docker-npmplus-certbot-config-stat","stderr_bytes":0,"stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","stdout_bytes":21,"stdout_sha256":"ac465eeb18a1b03028ed66ef0589dc6b5bdf2a432efe01445044987a3b7ff08d","tool":"docker"}],"command_audit_summary":{"command_audit_count":8,"command_audit_output_returned":false,"command_audit_record_set_sha256":"af133f3989270c71eaa71f80a4c478a0a1cd63c6d513f6f26f473929d6937ccc","command_audit_stage_set_sha256":"4707cd6125571f47a841da9a6328876625c47757ad41c8a2182edb95cebd54c0"},"command_id":"HOMEPAGE-NEWFILYA-NPMPLUS-READ-ONLY-CLOSEOUT-V28-20260804T214500Z","container_restarted":false,"diagnosis":"NEWFILYA_STATIC_PLACEHOLDER_EDGE_CLOSEOUT","duration_ms":1487,"failed_checks":[],"failure_evidence":null,"gate":"EDGE_CLOSEOUT_VERIFIED","inventory":{"asset_path":{"bytes":712859,"content_returned":false,"dev":2049,"exists":true,"gid":0,"ino":264302,"kind":"regular","mode":"0644","nlink":1,"sha256":"7f8d6c40d5f8f740f2d719fe739c456cf832cb67ed1b15161b616b8632caf367","uid":0},"body_returned":false,"candidate_path":{"bytes":4279,"content_returned":false,"dev":2049,"exists":true,"gid":0,"ino":280819,"kind":"regular","mode":"0644","nlink":1,"sha256":"ea2b760bce680a2158434809595b89b7b2566903913e74e45d38b992b575c643","uid":0},"certbot":{"account_count":2,"account_path_set_sha256":"27b94e58c9c61e1300cfe7d73f5061f93b31c7966a8e8f101f2fd68c7fcff31e","candidate_paths":{"archive":{"bytes":4096,"exists":true,"gid":0,"kind":"directory","mode":"0755","uid":0},"live":{"bytes":4096,"exists":true,"gid":0,"kind":"directory","mode":"0755","uid":0},"renewal":{"bytes":769,"exists":true,"gid":0,"kind":"regular","mode":"0644","uid":0}},"certbot_config_stat_sha256":"ac465eeb18a1b03028ed66ef0589dc6b5bdf2a432efe01445044987a3b7ff08d","persistent_webroot_stat_sha256":"7dc3f096f6dd4f071a221da871e2f62ea96230e5c9b876b2b7202a754390641b","private_keys_read":false,"secret_files_read":false},"certificate":{"bytes":4841,"certificate_contents_returned":false,"covers_domain":true,"dns_name_set_sha256":"cec5db9abd6f16dd4916fc5bbf0846b63be2744a0b1ded6e9266a92575b70d10","exists":true,"leaf_certificate_sha256":"4d62d05339b44bd49a32ba3eac8bc32083623a8bd0c2ab58aa6d5a2669bced95","private_key_exists":true,"private_key_read":false,"remaining_seconds_bucket":7740000,"valid_for_closeout":true,"valid_now":true},"certificate_contents_returned":false,"docker_server_version_sha256":"ff21e5cfb54b956ea1c5129ae06b4ff0c36f6ef6bf8f942ed2eb20754cdc3032","effective_nginx":{"combined_bytes":121768,"combined_sha256":"7c8da19f0ed9897c0cc0bfe0683080722e970e6929cf17355a649eacd8bd0857","content_returned":false,"default_persistent_acme_route_count":1,"default_persistent_acme_route_present":true,"domain_server_block_count":2,"domain_server_block_set_sha256":"e1552f2882c13eac5c0ddd9cf78ceb84f0c6093f7149f4b7af9c2db72b0dab82","persistent_acme_http_route_count":47,"persistent_acme_http_route_present":true,"persistent_acme_http_route_set_sha256":"137c9fa49c00b93b14acb78cd59ff2716d35f673b026b57c733cbdf694874ae7","private_addresses_returned":false,"server_block_count":77},"hostname_exact":true,"loaded_candidate_occurrences":1,"nginx_test":{"rc":0,"stderr_bytes":154,"stderr_sha256":"9cb221b6993277a11765b15bdded4e9b090f1c2a8f5ed573e907ae3b6921f27c","stdout_bytes":0,"stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"npmplus":{"container_id_sha256":"493576b742fc30ff359bab4661f9f1aedde0bdb840b9bf61012388d9559ad296","image_sha256":"d16df105013397a10fa5200e967d82c9e9144b1e81737fe30f91165f65a35402","restart_count":0,"restarting":false,"running":true,"started_at_sha256":"2e3db5e8a35be23cae35c3ad39b177cb0750fe38dbbcec8902f77352a56b8ba0"},"private_addresses_included":false,"private_keys_read":false,"proxy":{"domain_match_count":1,"domain_matches":[{"bytes":4279,"content_returned":false,"domain_exact":true,"filename":"992.conf","numeric_id":992,"sha256":"ea2b760bce680a2158434809595b89b7b2566903913e74e45d38b992b575c643"}],"file_count":57,"numeric_id_count":57,"numeric_id_set_sha256":"a3e19c97831f62cc8f19d379a85a466c5e5634e22fa565a99b04fda972936035","tree_sha256":"48935f4448393215a8342efe7e8a2d626acfc099ca7f6e9b40a5a867ed5be4ae"},"source_contents_returned":false,"staging_paths_absent":true},"mutation_outcome":"NO_MUTATION","next_stage":"COMPLETE","npmplus_reloaded":false,"ok":true,"private_addresses_included":false,"private_keys_read":false,"public_proxy_changed":false,"rc":0,"read_only":true,"role":"edge-vm","rollback_restored":null,"rollback_started":false,"sanitized":true,"schema":1,"secret_files_read":false,"secrets_included":false,"source_contents_returned":false,"status":"OK","write_attempted":false},"gate":"CLOSED_VERIFIED","gitea_changed":false,"homepage_changed":false,"mutation_outcome":"NO_MUTATION","next_stage":"COMPLETE","npmplus_reloaded":false,"private_addresses_included":false,"private_keys_read":false,"production_site_changed":false,"public":{"acme":{"completed":true,"final_hop":null,"first_hop":{"body_bytes":124,"body_sha256":"8cdc5c9588e8cc315d89a7c73f1bea4d41f8d68ae165756df0ec4a7db6a49892","completed":true,"header_values_returned":false,"location_matches_expected_https":false,"location_present":false,"status":404},"header_values_returned":false,"path_sha256":"e607916d673bf51a6f3308ddd6069ae2da45daaec36dd78c419a41250a81f1af","redirect_count":0,"route_model":"DIRECT_HTTP_404","route_proven":true},"addresses_returned":false,"body_returned":false,"certificate_contents_returned":false,"checks":{"acme_route_preserved":true,"dns_exact":true,"http_redirect_exact":true,"image_exact":true,"privacy_contract":true,"root_exact":true,"same_expected_leaf":true,"trusted_tls_exact":true},"dns":{"address_set_sha256":"c76b6b888b15b83623f3fc36fe6617dc24550f6b09b0d8f73c92ea22016e3a13","addresses_returned":false,"families":["IPv4"],"public_target_count":1,"record_count":1,"rejected_non_public_count":0,"resolved":true},"failed_checks":[],"http":{"bad_gateway":false,"body_bytes":140,"body_sha256":"367cbd2bd4bb3ccdbff9b81ad94e4c1d9c66ee80e9df3ffcd7080f2000cbac6a","completed":true,"connection_mode":"PINNED_GLOBAL_TARGET","header_values_returned":false,"npmplus_default":false,"redirects_to_expected_https":true,"status":301},"image":{"bad_gateway":false,"body_bytes":712859,"body_returned":false,"body_sha256":"7f8d6c40d5f8f740f2d719fe739c456cf832cb67ed1b15161b616b8632caf367","cache_control_no_store":true,"certificate_contents_returned":false,"certificate_validation_disabled":false,"completed":true,"content_type_image_jpeg":true,"content_type_text_html":false,"header_values_returned":false,"leaf_certificate_sha256":"4d62d05339b44bd49a32ba3eac8bc32083623a8bd0c2ab58aa6d5a2669bced95","npmplus_default":false,"robots_noindex":true,"status":200},"ok":true,"root":{"bad_gateway":false,"body_bytes":2575,"body_returned":false,"body_sha256":"02c89362aac89175e6ff2c18cf3265536417e8ac8f03f6174e25759ecfea8b1d","cache_control_no_store":true,"certificate_contents_returned":false,"certificate_validation_disabled":false,"completed":true,"content_type_image_jpeg":false,"content_type_text_html":true,"header_values_returned":false,"leaf_certificate_sha256":"4d62d05339b44bd49a32ba3eac8bc32083623a8bd0c2ab58aa6d5a2669bced95","npmplus_default":false,"robots_noindex":true,"status":200},"tls":{"addresses_returned":false,"attempt_count":1,"certificate_contents_returned":false,"unverified":{"certificate_contents_returned":false,"certificate_validation_disabled":true,"completed":true,"error_types":{},"leaf_certificate_count":1,"leaf_certificate_sha256":"4d62d05339b44bd49a32ba3eac8bc32083623a8bd0c2ab58aa6d5a2669bced95","leaf_set_sha256":"a9225fa1abf9a66c3a1149f945e53608c1c798df70f13e9cd3916881a827e099","protocols":["TLSv1.3"],"success_count":1},"verified":true,"verified_leaf_certificate_sha256":"4d62d05339b44bd49a32ba3eac8bc32083623a8bd0c2ab58aa6d5a2669bced95","verified_protocol":"TLSv1.3","verified_success_count":1,"verify_codes":{}}},"public_proxy_changed":false,"rc":0,"read_only":true,"rollback_restored":null,"rollback_started":false,"sanitized":true,"schema":1,"secret_files_read":false,"secrets_included":false,"source_contents_returned":false,"source_v27_evidence":{"apply":{"PLAN_SHA256":"942b4c97a3938cdbe22f9b200aaa0a05e3aa69244d074d43039e8aab586b6cdf","asset_bytes":712859,"asset_sha256":"7f8d6c40d5f8f740f2d719fe739c456cf832cb67ed1b15161b616b8632caf367","body_bytes":2575,"body_sha256":"02c89362aac89175e6ff2c18cf3265536417e8ac8f03f6174e25759ecfea8b1d","config_bytes":4279,"config_sha256":"ea2b760bce680a2158434809595b89b7b2566903913e74e45d38b992b575c643","gate":"APPLIED_AND_VERIFIED","nginx_test_rc":0,"npmplus_reloaded":true},"core":{"card_count":65,"group_count":7,"homepage_restart_count":0,"newfilya_card_exact":true,"newfilya_monitor_enabled":false,"services_bytes":12308,"services_sha256":"0b7360dc34b9bd3e25073eae449f3c0c5a6609f7eb9f4bb2feca72b6e04fc928","services_structure_sha256":"eff9a7e610218ffdd092d704d2fcfad357db5d3b75ee0cc584c606ae4ee61f82"},"outer":{"capsule_bytes":1110005,"capsule_sha256":"d5f094cdf4d7d9817db55068e545934ec4121df0afe307db7b5bf4c1152dc54f","changes_made":true,"command_id":"HOMEPAGE-NEWFILYA-NPMPLUS-OBSERVED-LISTENER-ATOMIC-APPLY-V27-20260804T211800Z","command_sha256":"1ba97cef51f162086946a5d536fbe3984e7b52fea819a00c0afb9828cd168ce9","history_bytes":63785,"history_sha256":"e79aa434900013f76db76829f629bed5dbf219b89c86ad2957d369bf6c22bf6b","mutation_outcome":"MUTATED","output_bytes":57797,"output_sha256":"69f107a7cc4fc5f7b97cf6a4c06a8c5136a5f004d7a2df075476068ba19080e3","rc":0,"result_contract_valid":true,"rollback_restored":null,"rollback_started":false,"runtime_commit":"21bdba451b9da67fab7ef162f73fc87d7a08df2d","status":"OK"},"public":{"address_set_sha256":"c76b6b888b15b83623f3fc36fe6617dc24550f6b09b0d8f73c92ea22016e3a13","image_body_bytes":712859,"image_body_sha256":"7f8d6c40d5f8f740f2d719fe739c456cf832cb67ed1b15161b616b8632caf367","image_status":200,"leaf_certificate_sha256":"4d62d05339b44bd49a32ba3eac8bc32083623a8bd0c2ab58aa6d5a2669bced95","root_body_bytes":2575,"root_body_sha256":"02c89362aac89175e6ff2c18cf3265536417e8ac8f03f6174e25759ecfea8b1d","root_status":200,"trusted_tls":true}},"status":"OK","transport":{"core":{"config_view":"service-view","mode":"DIRECT_QGA","private_addresses_returned":false,"qga_step_count":6,"qga_step_set_sha256":"8a2d0ebc40036e4cebc6dac4aede8eafb5ee557b61b19d180cc3553707a736eb","remote_rc":0,"remote_stdout_bytes":2802,"remote_stdout_sha256":"e40627d15ec0d6b351fc0dad661246bf9c37cf2508879abf2389f22b903fa072","socket_view":"service-view","vm_name":"core-apps","vmid":170},"edge":{"config_view":"service-view","guest_input_bytes":0,"guest_input_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","mode":"STRICT_SSH_TO_OWNING_NODE_THEN_DIRECT_QGA","node":"pve03","private_addresses_returned":false,"qga_step_count":10,"qga_step_set_sha256":"c37ceca394769aa939334b1532c37b6169a38fbda15e147952a5b64d2313fb69","remote_rc":0,"remote_stdout_bytes":8012,"remote_stdout_sha256":"bd07b52e54e89f99c47c300b73f0d4bc8dff8b1b2a410f6358662b6957af21d8","socket_view":"service-view","ssh_rc":0,"vm_name":"edge-vm","vmid":130}},"write_attempted":false} +GENERATED_AT_UTC=[PRIVATE_IP]T06:17:01Z +Cluster information +------------------- +Name: homelab +Config Version: 3 +Transport: knet +Secure auth: on +Quorum information +------------------ +Date: Wed Aug [PRIVATE_IP] 2026 +Quorum provider: corosync_votequorum +Nodes: 3 +Node ID: [PRIVATE_IP] +Ring ID: 1.db +Quorate: Yes + +Votequorum information +---------------------- +Expected votes: 3 +Highest expected: 3 +Total votes: 3 +Quorum: 2 +Flags: Quorate + +Membership information +---------------------- + Nodeid Votes Name +[PRIVATE_IP] [PRIVATE_IP].11 (local) +[PRIVATE_IP] [PRIVATE_IP].13 +[PRIVATE_IP] [PRIVATE_IP].12 + +Membership information +---------------------- + Nodeid Votes Name + 1 1 pve01 (local) + 2 1 pve03 + 3 1 pve02 +[{"cpu":[PRIVATE_IP][PRIVATE_IP],"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/110","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":673802,"vmid":110},{"cpu":[PRIVATE_IP]569657,"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":673886,"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":673847,"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":673890,"vmid":113},{"cpu":[PRIVATE_IP]7807,"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":673826,"vmid":130},{"cpu":[PRIVATE_IP]4983,"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":673800,"vmid":150},{"cpu":[PRIVATE_IP]727089,"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":673882,"vmid":160},{"cpu":[PRIVATE_IP]80561,"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":673795,"vmid":170},{"cpu":[PRIVATE_IP]36888,"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":673793,"vmid":171},{"cpu":[PRIVATE_IP]24034,"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":673880,"vmid":180},{"cpu":[PRIVATE_IP]217291,"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":673822,"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]60154,"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":673844},{"cgroup-mode":2,"cpu":[PRIVATE_IP]32627,"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":673905},{"cgroup-mode":2,"cpu":[PRIVATE_IP]19956,"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":673923},{"content":"vztmpl,backup,import,iso","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"vztmpl,backup,import,iso","disk":[PRIVATE_IP],"id":"storage/pve01/local","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"vztmpl,backup,import,iso","disk":[PRIVATE_IP],"id":"storage/pve02/local","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve03/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve01/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve02/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"id":"network/pve03/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve03","status":"ok","type":"network"},{"id":"network/pve01/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve01","status":"ok","type":"network"},{"id":"network/pve02/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve02","status":"ok","type":"network"}] +Name Type Status Total (KiB) Used (KiB) Available (KiB) % +local dir active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 14.31% +local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 27.38% + UNIT LOAD ACTIVE SUB DESCRIPTION +● homelab-backup-matrix-refresh.service loaded failed failed Generate unified homelab backup matrix state +● homelab-crypto-portfolio-chart-health.service loaded failed failed Crypto portfolio chart health check +● skladchik-reports-monitor-supervisor.service loaded failed failed Skladchik reports monitor full supervisor + +Legend: LOAD → Reflects whether the unit definition was properly loaded. + ACTIVE → The high-level unit activation state, i.e. generalization of SUB. + SUB → The low-level unit activation state, values depend on unit type. + +3 loaded units listed. +NEXT LEFT LAST PASSED UNIT ACTIVATES +Wed [PRIVATE_IP] 09:17:07 MSK 4s Wed [PRIVATE_IP] 09:12:07 MSK 4min 55s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service +Wed [PRIVATE_IP] 09:17:07 MSK 4s Wed [PRIVATE_IP] 09:12:07 MSK 4min 55s ago netbird-peers-health.timer netbird-peers-health.service +Wed [PRIVATE_IP] 09:17:26 MSK 24s Wed [PRIVATE_IP] 09:16:26 MSK 35s ago homelab-cluster-admin-webpanel-sync.timer homelab-cluster-admin-webpanel-sync.service +Wed [PRIVATE_IP] 09:17:26 MSK 24s Wed [PRIVATE_IP] 09:16:26 MSK 35s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service +Wed [PRIVATE_IP] 09:17:36 MSK 33s Wed [PRIVATE_IP] 09:16:35 MSK 26s ago homelab-router-watchdog.timer homelab-router-watchdog.service +Wed [PRIVATE_IP] 09:18:31 MSK 1min 28s Wed [PRIVATE_IP] 09:16:26 MSK 35s ago homelab-cluster-admin-inventory-sync.timer homelab-cluster-admin-inventory-sync.service +Wed [PRIVATE_IP] 09:19:25 MSK 2min 23s Wed [PRIVATE_IP] 09:14:07 MSK 2min 55s ago homelab-crypto-portfolio-chart-health.timer homelab-crypto-portfolio-chart-health.service +Wed [PRIVATE_IP] 09:19:26 MSK 2min 24s Wed [PRIVATE_IP] 09:04:26 MSK 12min ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service +Wed [PRIVATE_IP] 09:20:38 MSK 3min 36s Wed [PRIVATE_IP] 09:15:26 MSK 1min 35s ago homelab-health-metrics.timer homelab-health-metrics.service +Wed [PRIVATE_IP] 09:20:57 MSK 3min 54s Tue [PRIVATE_IP] 09:06:50 MSK 24h ago memos-offhost-sync.timer memos-offhost-sync.service +Wed [PRIVATE_IP] 09:22:26 MSK 5min Wed [PRIVATE_IP] 09:07:26 MSK 9min ago homelab-disk-space-health.timer homelab-disk-space-health.service +Wed [PRIVATE_IP] 09:24:26 MSK 7min Wed [PRIVATE_IP] 09:09:26 MSK 7min ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service +Wed [PRIVATE_IP] 09:25:26 MSK 8min Wed [PRIVATE_IP] 09:10:26 MSK 6min ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service +Wed [PRIVATE_IP] 09:25:26 MSK 8min Wed [PRIVATE_IP] 09:15:26 MSK 1min 35s ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service +Wed [PRIVATE_IP] 09:30:00 MSK 12min Wed [PRIVATE_IP] 09:15:14 MSK 1min 47s ago homelab-incident-journal.timer homelab-incident-journal.service +Wed [PRIVATE_IP] 09:30:47 MSK 13min Wed [PRIVATE_IP] 09:00:07 MSK 16min ago homelab-reference-refresh.timer homelab-reference-refresh.service +Wed [PRIVATE_IP] 09:31:15 MSK 14min Wed [PRIVATE_IP] 09:16:07 MSK 55s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service +Wed [PRIVATE_IP] 09:31:15 MSK 14min Wed [PRIVATE_IP] 09:15:31 MSK 1min 30s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service +Wed [PRIVATE_IP] 09:31:27 MSK 14min Wed [PRIVATE_IP] 09:15:50 MSK 1min 12s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service +Wed [PRIVATE_IP] 09:33:04 MSK 16min Wed [PRIVATE_IP] 09:02:24 MSK 14min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service +Wed [PRIVATE_IP] 10:15:00 MSK 57min Tue [PRIVATE_IP] 10:15:14 MSK 23h ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service +Wed [PRIVATE_IP] 14:08:26 MSK 4h 51min Wed [PRIVATE_IP] 08:08:26 MSK 1h 8min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service +Wed [PRIVATE_IP] 14:20:26 MSK 5h 3min Tue [PRIVATE_IP] 14:20:26 MSK 18h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service +Wed [PRIVATE_IP] 20:41:26 MSK 11h Wed [PRIVATE_IP] 08:05:14 MSK 1h 11min ago apt-daily.timer apt-daily.service +Thu [PRIVATE_IP] 00:00:00 MSK 14h Wed [PRIVATE_IP] 00:00:07 MSK 9h ago dpkg-db-backup.timer dpkg-db-backup.service +Thu [PRIVATE_IP] 00:03:40 MSK 14h Wed [PRIVATE_IP] 00:51:17 MSK 8h ago logrotate.timer logrotate.service +Thu [PRIVATE_IP] 00:10:46 MSK 14h Wed [PRIVATE_IP] 00:13:26 MSK 9h ago homelab-docker-health.timer homelab-docker-health.service +Thu [PRIVATE_IP] 00:12:36 MSK 14h Wed [PRIVATE_IP] 00:18:58 MSK 8h ago homelab-quality-gate.timer homelab-quality-gate.service +Thu [PRIVATE_IP] 00:18:11 MSK 15h Wed [PRIVATE_IP] 00:08:47 MSK 9h ago homelab-evidence-catalog.timer homelab-evidence-catalog.service +Thu [PRIVATE_IP] 00:19:51 MSK 15h Wed [PRIVATE_IP] 00:08:07 MSK 9h ago homelab-storage-capacity.timer homelab-storage-capacity.service +Thu [PRIVATE_IP] 02:45:12 MSK 17h Wed [PRIVATE_IP] 04:06:07 MSK 5h 10min ago pve-daily-update.timer pve-daily-update.service +Thu [PRIVATE_IP] 03:50:00 MSK 18h Wed [PRIVATE_IP] 03:50:07 MSK 5h 26min ago filebrowser-offhost-sync.timer filebrowser-offhost-sync.service +Thu [PRIVATE_IP] 04:35:40 MSK 19h Wed [PRIVATE_IP] 04:48:14 MSK 4h 28min ago homelab-edge-vm-offhost-freshness.timer homelab-edge-vm-offhost-freshness.service +Thu [PRIVATE_IP] 04:52:05 MSK 19h Wed [PRIVATE_IP] 04:58:26 MSK 4h 18min ago homelab-sops-edge-secret-coverage.timer homelab-sops-edge-secret-coverage.service +Thu [PRIVATE_IP] 06:51:28 MSK 21h Wed [PRIVATE_IP] 06:01:14 MSK 3h 15min ago apt-daily-upgrade.timer apt-daily-upgrade.service +Thu [PRIVATE_IP] 07:03:41 MSK 21h Wed [PRIVATE_IP] 07:17:02 MSK 2h 0min ago homelab-drift-check.timer homelab-drift-check.service +Thu [PRIVATE_IP] 07:28:22 MSK 22h Wed [PRIVATE_IP] 07:32:07 MSK 1h 44min ago homelab-service-registry-check.timer homelab-service-registry-check.service +Thu [PRIVATE_IP] 07:48:33 MSK 22h Wed [PRIVATE_IP] 07:56:50 MSK 1h 20min ago homelab-dependency-map-check.timer homelab-dependency-map-check.service +Thu [PRIVATE_IP] 07:54:57 MSK 22h Wed [PRIVATE_IP] 07:54:04 MSK 1h 22min ago homelab-alerting-health.timer homelab-alerting-health.service +Thu [PRIVATE_IP] 08:00:12 MSK 22h Wed [PRIVATE_IP] 07:56:59 MSK 1h 20min ago homelab-runbook-generate.timer homelab-runbook-generate.service +Thu [PRIVATE_IP] 08:04:28 MSK 22h Wed [PRIVATE_IP] 08:06:26 MSK 1h 10min ago homelab-duty-admin-report.timer homelab-duty-admin-report.service +Thu [PRIVATE_IP] 08:06:16 MSK 22h Wed [PRIVATE_IP] 07:48:26 MSK 1h 28min ago homelab-desired-state-sync.timer homelab-desired-state-sync.service +Thu [PRIVATE_IP] 08:06:43 MSK 22h Wed [PRIVATE_IP] 08:17:02 MSK 59min ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service +Thu [PRIVATE_IP] 08:12:34 MSK 22h Wed [PRIVATE_IP] 08:11:14 MSK 1h 5min ago homelab-overall-health.timer homelab-overall-health.service +Thu [PRIVATE_IP] 08:29:02 MSK 23h Wed [PRIVATE_IP] 08:21:50 MSK 55min ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service +Thu [PRIVATE_IP] 08:29:18 MSK 23h Wed [PRIVATE_IP] 08:30:14 MSK 46min ago homelab-capacity-risk.timer homelab-capacity-risk.service +Thu [PRIVATE_IP] 08:44:24 MSK 23h Wed [PRIVATE_IP] 01:56:14 MSK 7h ago man-db.timer man-db.service +Thu [PRIVATE_IP] 08:45:56 MSK 23h Wed [PRIVATE_IP] 08:40:50 MSK 36min ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service +Thu [PRIVATE_IP] 08:47:53 MSK 23h Wed [PRIVATE_IP] 08:55:14 MSK 21min ago homelab-golden-state-index.timer homelab-golden-state-index.service +Thu [PRIVATE_IP] 08:51:13 MSK 23h Wed [PRIVATE_IP] 08:37:07 MSK 39min ago homelab-cluster-passport.timer homelab-cluster-passport.service +Thu [PRIVATE_IP] 08:53:10 MSK 23h Wed [PRIVATE_IP] 08:47:07 MSK 29min ago immich-media-offhost-sync.timer immich-media-offhost-sync.service +Sun [PRIVATE_IP] 03:10:38 MSK 3 days Sun [PRIVATE_IP] 03:10:25 MSK 3 days ago xfs_scrub_all.timer xfs_scrub_all.service +Sun [PRIVATE_IP] 03:10:48 MSK 3 days Sun [PRIVATE_IP] 03:10:50 MSK 3 days ago e2scrub_all.timer e2scrub_all.service +Mon [PRIVATE_IP] 00:03:56 MSK 4 days Mon [PRIVATE_IP] 00:11:50 MSK 2 days ago homelab-secret-sanity.timer homelab-secret-sanity.service +Mon [PRIVATE_IP] 01:11:21 MSK 4 days Mon [PRIVATE_IP] 01:17:56 MSK 2 days ago fstrim.timer fstrim.service +- - - - prometheus-node-exporter-ipmitool-sensor.timer prometheus-node-exporter-ipmitool-sensor.service +- - - - prometheus-node-exporter-mellanox-hca-temp.timer prometheus-node-exporter-mellanox-hca-temp.service +- - - - prometheus-node-exporter-smartmon.timer prometheus-node-exporter-smartmon.service + +58 timers listed. +- Обрезанная, повреждённая или частично вставленная команда считается невыполненной; сначала проводится side-effect audit. +- Хвост parse-ошибки закрывается только после доказательства отсутствия изменений и временных артефактов. +- Proof: /var/lib/homelab-change-sets/operator-command-size-guard-v[PRIVATE_IP]T182653Z/report.txt + +## HOMELAB_ADMIN_CLI_CONTRACT_[PRIVATE_IP] +- Поддерживаемые команды: version, status, lint TASK_DIR, validate TASK_DIR, run TASK_DIR PHASE. +- Отдельная команда --help отсутствует. Неизвестный аргумент печатает usage и штатно возвращает RC=64. +- Нельзя трактовать RC=64 от --help как неисправность runner. +- Для проверки доступности runner использовать homelab-admin version; для структуры CLI использовать зафиксированную usage-строку. +- Proof: /var/lib/homelab-change-sets/homelab-admin-cli-contract-fix-v[PRIVATE_IP]T183338Z/report.txt + +AUTOMATIC_CLUSTER_CONTEXT_REFRESH_[PRIVATE_IP] +Collector: /usr/local/sbin/homelab-context-collect +Scheduler: hourly at minute 17 via /etc/cron.d/homelab-context-refresh +Destination: immutable Gitea runtime history with CONTEXT-AUTO UTC command IDs. + +AUTOMATIC_CLUSTER_CONTEXT_REFRESH_DIRECT_[PRIVATE_IP] +Publisher: /usr/local/sbin/homelab-context-refresh-direct +Schedule: hourly at minute 17. +Destination: immutable assistant-runtime history with CONTEXT-AUTO UTC IDs. +ANTI_REGRESSION_TOKEN=HOMELAB_VM_2CLOUD_444_OUTER_LAUNCHER_BOUNDARY_REQUIRED +- Anti-regression: validate the complete outer launcher with a shell syntax check and verify the wrapper argument boundary before issuing it. +- Infrastructure action executed: none. +- Backup payload impact: none. +- Production impact: none. +- Status: CLOSED; UNRESOLVED_TAIL_COUNT=0. +- Registered at: [PRIVATE_IP]T11:20:32Z + +## ERROR_[PRIVATE_IP]_HOMELAB_VM_2CLOUD_DRAIN_CLOSURE_PREFLIGHT_446 +COMMAND_ID=HOMELAB-VM-2CLOUD-DRAIN-CLOSURE-PREFLIGHT-446 +- Symptom: homelab-chat-run-linked printed Usage and skipped result-feed publication as invalid input. +- Root cause: the diagnostic script was piped to wrapper stdin and the mandatory double-dash command separator was omitted. +- Correction: invoke homelab-chat-run-linked as COMMAND_ID MODE COMPONENT -- command arguments; stdin is not its command interface. +ANTI_REGRESSION_TOKEN=HOMELAB_CHAT_RUN_COMMAND_REQUIRES_DOUBLE_DASH +- Anti-regression: treat wrapper Usage as the authoritative CLI contract and syntax-check the complete launcher, not only its inner payload. +- Infrastructure action executed: none. +- Backup payload impact: none. +- Production impact: none. +- Status: CLOSED; UNRESOLVED_TAIL_COUNT=0. +- Registered at: [PRIVATE_IP]T11:20:32Z OUTPUT_END CHAT_OUTPUT_END