diff --git a/runtime/history/CONTEXT-AUTO-20260731T111701Z.json b/runtime/history/CONTEXT-AUTO-20260731T111701Z.json new file mode 100644 index 0000000..a62a89a --- /dev/null +++ b/runtime/history/CONTEXT-AUTO-20260731T111701Z.json @@ -0,0 +1 @@ +{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260731T111701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-07-31T11:17:01Z","finished_at_utc":"2026-07-31T11: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-20260731T111701Z.txt b/runtime/history/CONTEXT-AUTO-20260731T111701Z.txt new file mode 100644 index 0000000..42209eb --- /dev/null +++ b/runtime/history/CONTEXT-AUTO-20260731T111701Z.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]T11:17:01Z +Cluster information +------------------- +Name: homelab +Config Version: 3 +Transport: knet +Secure auth: on + +Quorum information +------------------ +Date: Fri Jul [PRIVATE_IP] 2026 +Quorum provider: corosync_votequorum +Nodes: 3 +Node ID: [PRIVATE_IP] +Ring ID: 1.db +Quorate: Yes + +Votequorum information +---------------------- +Expected votes: 3 +Highest expected: 3 +Total votes: 3 +Quorum: 2 +Flags: Quorate + +Membership information +---------------------- + Nodeid Votes Name +[PRIVATE_IP] [PRIVATE_IP].11 (local) +[PRIVATE_IP] [PRIVATE_IP].13 +[PRIVATE_IP] [PRIVATE_IP].12 + +Membership information +---------------------- + Nodeid Votes Name + 1 1 pve01 (local) + 2 1 pve03 + 3 1 pve02 +[{"cpu":[PRIVATE_IP][PRIVATE_IP],"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/110","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":259793,"vmid":110},{"cpu":[PRIVATE_IP]551e-05,"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":259885,"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":259838,"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":259888,"vmid":113},{"cpu":[PRIVATE_IP]17355,"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":259825,"vmid":130},{"cpu":[PRIVATE_IP]43807,"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":259790,"vmid":150},{"cpu":[PRIVATE_IP]324484,"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":259881,"vmid":160},{"cpu":[PRIVATE_IP]67821,"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":259786,"vmid":170},{"cpu":[PRIVATE_IP]67128,"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":259783,"vmid":171},{"cpu":[PRIVATE_IP]54277,"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":259878,"vmid":180},{"cpu":[PRIVATE_IP]746676,"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":259821,"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]23283,"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":259895},{"cgroup-mode":2,"cpu":[PRIVATE_IP]23229,"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":259921},{"cgroup-mode":2,"cpu":[PRIVATE_IP]97632,"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":259842},{"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"},{"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":"import,iso,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":"import,iso,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":"import,iso,vztmpl,backup","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","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] 13.47% +local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 27.29% + 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 +Fri [PRIVATE_IP] 14:17:14 MSK 12s Fri [PRIVATE_IP] 14:16:14 MSK 47s ago homelab-cluster-admin-webpanel-sync.timer homelab-cluster-admin-webpanel-sync.service +Fri [PRIVATE_IP] 14:17:14 MSK 12s Fri [PRIVATE_IP] 14:16:14 MSK 47s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service +Fri [PRIVATE_IP] 14:17:29 MSK 26s Fri [PRIVATE_IP] 14:16:27 MSK 34s ago homelab-router-watchdog.timer homelab-router-watchdog.service +Fri [PRIVATE_IP] 14:18:14 MSK 1min 12s Fri [PRIVATE_IP] 14:13:14 MSK 3min 47s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service +Fri [PRIVATE_IP] 14:18:32 MSK 1min 29s Fri [PRIVATE_IP] 14:16:17 MSK 44s ago homelab-cluster-admin-inventory-sync.timer homelab-cluster-admin-inventory-sync.service +Fri [PRIVATE_IP] 14:19:23 MSK 2min 21s Fri [PRIVATE_IP] 14:14:22 MSK 2min 39s ago homelab-health-metrics.timer homelab-health-metrics.service +Fri [PRIVATE_IP] 14:19:25 MSK 2min 23s Fri [PRIVATE_IP] 14:14:24 MSK 2min 37s ago homelab-crypto-portfolio-chart-health.timer homelab-crypto-portfolio-chart-health.service +Fri [PRIVATE_IP] 14:20:22 MSK 3min 20s Thu [PRIVATE_IP] 14:20:22 MSK 23h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service +Fri [PRIVATE_IP] 14:20:25 MSK 3min 22s Fri [PRIVATE_IP] 14:15:25 MSK 1min 37s ago netbird-peers-health.timer netbird-peers-health.service +Fri [PRIVATE_IP] 14:24:14 MSK 7min Fri [PRIVATE_IP] 14:14:14 MSK 2min 47s ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service +Fri [PRIVATE_IP] 14:26:25 MSK 9min Fri [PRIVATE_IP] 14:11:25 MSK 5min ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service +Fri [PRIVATE_IP] 14:27:51 MSK 10min Fri [PRIVATE_IP] 13:54:07 MSK 22min ago homelab-reference-refresh.timer homelab-reference-refresh.service +Fri [PRIVATE_IP] 14:28:24 MSK 11min Fri [PRIVATE_IP] 14:13:24 MSK 3min 37s ago homelab-disk-space-health.timer homelab-disk-space-health.service +Fri [PRIVATE_IP] 14:28:25 MSK 11min Fri [PRIVATE_IP] 14:13:25 MSK 3min 37s ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service +Fri [PRIVATE_IP] 14:29:24 MSK 12min Fri [PRIVATE_IP] 14:14:24 MSK 2min 37s ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service +Fri [PRIVATE_IP] 14:30:00 MSK 12min Fri [PRIVATE_IP] 14:15:14 MSK 1min 47s ago homelab-incident-journal.timer homelab-incident-journal.service +Fri [PRIVATE_IP] 14:30:58 MSK 13min Fri [PRIVATE_IP] 14:15:24 MSK 1min 37s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service +Fri [PRIVATE_IP] 14:31:04 MSK 14min Fri [PRIVATE_IP] 14:15:36 MSK 1min 26s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service +Fri [PRIVATE_IP] 14:31:09 MSK 14min Fri [PRIVATE_IP] 14:16:14 MSK 47s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service +Fri [PRIVATE_IP] 14:33:53 MSK 16min Fri [PRIVATE_IP] 14:04:07 MSK 12min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service +Fri [PRIVATE_IP] 16:52:02 MSK 2h 35min Thu [PRIVATE_IP] 21:36:50 MSK 16h ago apt-daily.timer apt-daily.service +Fri [PRIVATE_IP] 20:08:22 MSK 5h 51min Fri [PRIVATE_IP] 14:08:22 MSK 8min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service +Sat [PRIVATE_IP] 00:00:00 MSK 9h Fri [PRIVATE_IP] 00:00:07 MSK 14h ago dpkg-db-backup.timer dpkg-db-backup.service +Sat [PRIVATE_IP] 00:08:42 MSK 9h Fri [PRIVATE_IP] 00:03:58 MSK 14h ago homelab-evidence-catalog.timer homelab-evidence-catalog.service +Sat [PRIVATE_IP] 00:08:53 MSK 9h Fri [PRIVATE_IP] 00:18:50 MSK 13h ago homelab-docker-health.timer homelab-docker-health.service +Sat [PRIVATE_IP] 00:13:49 MSK 9h Fri [PRIVATE_IP] 00:13:50 MSK 14h ago homelab-storage-capacity.timer homelab-storage-capacity.service +Sat [PRIVATE_IP] 00:19:04 MSK 10h Fri [PRIVATE_IP] 00:11:47 MSK 14h ago homelab-quality-gate.timer homelab-quality-gate.service +Sat [PRIVATE_IP] 00:46:47 MSK 10h Fri [PRIVATE_IP] 00:32:50 MSK 13h ago logrotate.timer logrotate.service +Sat [PRIVATE_IP] 03:50:00 MSK 13h Fri [PRIVATE_IP] 03:50:07 MSK 10h ago filebrowser-offhost-sync.timer filebrowser-offhost-sync.service +Sat [PRIVATE_IP] 04:22:11 MSK 14h Fri [PRIVATE_IP] 01:54:50 MSK 12h ago man-db.timer man-db.service +Sat [PRIVATE_IP] 04:43:09 MSK 14h Fri [PRIVATE_IP] 04:40:05 MSK 9h ago homelab-edge-vm-offhost-freshness.timer homelab-edge-vm-offhost-freshness.service +Sat [PRIVATE_IP] 04:45:58 MSK 14h Fri [PRIVATE_IP] 02:02:37 MSK 12h ago pve-daily-update.timer pve-daily-update.service +Sat [PRIVATE_IP] 05:12:42 MSK 14h Fri [PRIVATE_IP] 04:57:14 MSK 9h ago homelab-sops-edge-secret-coverage.timer homelab-sops-edge-secret-coverage.service +Sat [PRIVATE_IP] 06:40:53 MSK 16h Fri [PRIVATE_IP] 06:17:57 MSK 7h ago apt-daily-upgrade.timer apt-daily-upgrade.service +Sat [PRIVATE_IP] 07:19:49 MSK 17h Fri [PRIVATE_IP] 07:14:50 MSK 7h ago homelab-drift-check.timer homelab-drift-check.service +Sat [PRIVATE_IP] 07:24:28 MSK 17h Fri [PRIVATE_IP] 07:20:24 MSK 6h ago homelab-service-registry-check.timer homelab-service-registry-check.service +Sat [PRIVATE_IP] 07:48:31 MSK 17h Fri [PRIVATE_IP] 07:49:05 MSK 6h ago homelab-alerting-health.timer homelab-alerting-health.service +Sat [PRIVATE_IP] 07:54:12 MSK 17h Fri [PRIVATE_IP] 07:52:37 MSK 6h ago homelab-dependency-map-check.timer homelab-dependency-map-check.service +Sat [PRIVATE_IP] 07:59:46 MSK 17h Fri [PRIVATE_IP] 07:42:50 MSK 6h ago homelab-runbook-generate.timer homelab-runbook-generate.service +Sat [PRIVATE_IP] 08:05:31 MSK 17h Fri [PRIVATE_IP] 07:52:37 MSK 6h ago homelab-desired-state-sync.timer homelab-desired-state-sync.service +Sat [PRIVATE_IP] 08:07:23 MSK 17h Fri [PRIVATE_IP] 08:13:58 MSK 6h ago homelab-duty-admin-report.timer homelab-duty-admin-report.service +Sat [PRIVATE_IP] 08:11:02 MSK 17h Fri [PRIVATE_IP] 08:22:53 MSK 5h 54min ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service +Sat [PRIVATE_IP] 08:14:47 MSK 17h Fri [PRIVATE_IP] 08:12:07 MSK 6h ago homelab-overall-health.timer homelab-overall-health.service +Sat [PRIVATE_IP] 08:21:27 MSK 18h Fri [PRIVATE_IP] 08:12:07 MSK 6h ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service +Sat [PRIVATE_IP] 08:31:41 MSK 18h Fri [PRIVATE_IP] 08:43:07 MSK 5h 33min ago homelab-capacity-risk.timer homelab-capacity-risk.service +Sat [PRIVATE_IP] 08:34:18 MSK 18h Fri [PRIVATE_IP] 08:37:05 MSK 5h 39min ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service +Sat [PRIVATE_IP] 08:41:29 MSK 18h Fri [PRIVATE_IP] 08:42:07 MSK 5h 34min ago homelab-cluster-passport.timer homelab-cluster-passport.service +Sat [PRIVATE_IP] 08:51:07 MSK 18h Fri [PRIVATE_IP] 08:56:50 MSK 5h 20min ago homelab-golden-state-index.timer homelab-golden-state-index.service +Sat [PRIVATE_IP] 08:51:08 MSK 18h Fri [PRIVATE_IP] 08:53:07 MSK 5h 23min ago immich-media-offhost-sync.timer immich-media-offhost-sync.service +Sat [PRIVATE_IP] 09:06:17 MSK 18h Fri [PRIVATE_IP] 09:13:34 MSK 5h 3min ago memos-offhost-sync.timer memos-offhost-sync.service +Sat [PRIVATE_IP] 10:15:00 MSK 19h Fri [PRIVATE_IP] 10:15:07 MSK 4h 1min ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service +Sun [PRIVATE_IP] 03:10:25 MSK 1 day 12h Sun [PRIVATE_IP] 03:10:15 MSK - xfs_scrub_all.timer xfs_scrub_all.service +Sun [PRIVATE_IP] 03:10:49 MSK 1 day 12h Sun [PRIVATE_IP] 03:10:15 MSK - e2scrub_all.timer e2scrub_all.service +Mon [PRIVATE_IP] 00:11:49 MSK 2 days Mon [PRIVATE_IP] 00:13:29 MSK - homelab-secret-sanity.timer homelab-secret-sanity.service +Mon [PRIVATE_IP] 01:17:32 MSK 2 days Mon [PRIVATE_IP] 01:18:15 MSK - fstrim.timer fstrim.service +- - - - prometheus-node-exporter-ipmitool-sensor.timer prometheus-node-exporter-ipmitool-sensor.service +- - - - prometheus-node-exporter-mellanox-hca-temp.timer prometheus-node-exporter-mellanox-hca-temp.service +- - - - prometheus-node-exporter-smartmon.timer prometheus-node-exporter-smartmon.service + +58 timers listed. +- Обрезанная, повреждённая или частично вставленная команда считается невыполненной; сначала проводится side-effect audit. +- Хвост parse-ошибки закрывается только после доказательства отсутствия изменений и временных артефактов. +- Proof: /var/lib/homelab-change-sets/operator-command-size-guard-v[PRIVATE_IP]T182653Z/report.txt + +## HOMELAB_ADMIN_CLI_CONTRACT_[PRIVATE_IP] +- Поддерживаемые команды: version, status, lint TASK_DIR, validate TASK_DIR, run TASK_DIR PHASE. +- Отдельная команда --help отсутствует. Неизвестный аргумент печатает usage и штатно возвращает RC=64. +- Нельзя трактовать RC=64 от --help как неисправность runner. +- Для проверки доступности runner использовать homelab-admin version; для структуры CLI использовать зафиксированную usage-строку. +- Proof: /var/lib/homelab-change-sets/homelab-admin-cli-contract-fix-v[PRIVATE_IP]T183338Z/report.txt + +AUTOMATIC_CLUSTER_CONTEXT_REFRESH_[PRIVATE_IP] +Collector: /usr/local/sbin/homelab-context-collect +Scheduler: hourly at minute 17 via /etc/cron.d/homelab-context-refresh +Destination: immutable Gitea runtime history with CONTEXT-AUTO UTC command IDs. + +AUTOMATIC_CLUSTER_CONTEXT_REFRESH_DIRECT_[PRIVATE_IP] +Publisher: /usr/local/sbin/homelab-context-refresh-direct +Schedule: hourly at minute 17. +Destination: immutable assistant-runtime history with CONTEXT-AUTO UTC IDs. +ANTI_REGRESSION_TOKEN=HOMELAB_VM_2CLOUD_444_OUTER_LAUNCHER_BOUNDARY_REQUIRED +- Anti-regression: validate the complete outer launcher with a shell syntax check and verify the wrapper argument boundary before issuing it. +- Infrastructure action executed: none. +- Backup payload impact: none. +- Production impact: none. +- Status: CLOSED; UNRESOLVED_TAIL_COUNT=0. +- Registered at: [PRIVATE_IP]T11:20:32Z + +## ERROR_[PRIVATE_IP]_HOMELAB_VM_2CLOUD_DRAIN_CLOSURE_PREFLIGHT_446 +COMMAND_ID=HOMELAB-VM-2CLOUD-DRAIN-CLOSURE-PREFLIGHT-446 +- Symptom: homelab-chat-run-linked printed Usage and skipped result-feed publication as invalid input. +- Root cause: the diagnostic script was piped to wrapper stdin and the mandatory double-dash command separator was omitted. +- Correction: invoke homelab-chat-run-linked as COMMAND_ID MODE COMPONENT -- command arguments; stdin is not its command interface. +ANTI_REGRESSION_TOKEN=HOMELAB_CHAT_RUN_COMMAND_REQUIRES_DOUBLE_DASH +- Anti-regression: treat wrapper Usage as the authoritative CLI contract and syntax-check the complete launcher, not only its inner payload. +- Infrastructure action executed: none. +- Backup payload impact: none. +- Production impact: none. +- Status: CLOSED; UNRESOLVED_TAIL_COUNT=0. +- Registered at: [PRIVATE_IP]T11:20:32Z +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index d9448a0..a62a89a 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,38 +1 @@ -{ - "schema_version": 1, - "channel": "homelab-runtime", - "command_id": "GRAM1-SITE-AVAX-LINK-V5-EXACT-SCOPE-EXTRACT-20260731T110500Z", - "status": "OK", - "rc": 0, - "host": "pve01", - "mode": "verify", - "component": "gram1-site-avax-link-exact-scope-extract", - "started_at_utc": "2026-07-31T11:15:16Z", - "finished_at_utc": "2026-07-31T11:15:17Z", - "reference_register_checked": true, - "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e", - "error_register_checked": true, - "error_register_sha256": "24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83", - "command_sha256": "99862a7115b295ab9ea999e62e3c256dbafd1f1636f8d2da20a21d34f2b04490", - "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": "cae480d0fddad8d7f9d1cc121a126aa67730e0df3e84765b9fdebac81fe6547f", - "sanitized_output_sha256": "cae480d0fddad8d7f9d1cc121a126aa67730e0df3e84765b9fdebac81fe6547f", - "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\":\"GRAM1-SITE-AVAX-LINK-V5-EXACT-SCOPE-EXTRACT-20260731T110500Z\",\"mutation_outcome\":\"NO_MUTATION\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1}\n{\"changes_made\":false,\"command_id\":\"GRAM1-SITE-AVAX-LINK-V5-EXACT-SCOPE-EXTRACT-20260731T110500Z\",\"counts\":{\"candidate_containers\":0,\"coin_registry_files\":3,\"database_files\":10,\"deployment_files\":20,\"price_provider_files\":0,\"source_roots\":16,\"test_files\":10},\"gitea_changed\":false,\"hosts\":[{\"audits\":[{\"files_scanned\":1251,\"git\":{\"branch\":\"main\",\"dirty\":false,\"head\":\"cfab5168f800d63eba1bc0f669427ff8fcd48006\",\"origin\":\"https://git.gram1.ru/homelab-admin/homelab-configs.git\",\"top_level\":\"/root/homelab-configs-worktree\"},\"match_count\":10,\"root\":\"/root/homelab-configs-worktree\",\"root_exists\":true},{\"files_scanned\":764,\"git\":{\"branch\":\"main\",\"dirty\":false,\"head\":\"cfab5168f800d63eba1bc0f669427ff8fcd48006\",\"origin\":\"https://git.gram1.ru/homelab-admin/homelab-configs.git\",\"top_level\":\"/root/homelab-configs-worktree\"},\"match_count\":10,\"root\":\"/root/homelab-configs-worktree/docs\",\"root_exists\":true},{\"files_scanned\":699,\"git\":{\"branch\":\"main\",\"dirty\":false,\"head\":\"cfab5168f800d63eba1bc0f669427ff8fcd48006\",\"origin\":\"https://git.gram1.ru/homelab-admin/homelab-configs.git\",\"top_level\":\"/root/homelab-configs-worktree\"},\"match_count\":10,\"root\":\"/root/homelab-configs-worktree/docs/operations\",\"root_exists\":true},{\"files_scanned\":958,\"git\":{\"branch\":\"master\",\"dirty\":false,\"head\":\"173b61c40ec2584ac14da018311b15729b86c611\",\"origin\":\"https://git.gram1.ru/homelab-admin/homelab-desired-state.git\",\"top_level\":\"/srv/homelab-desired-state\"},\"match_count\":10,\"root\":\"/srv/homelab-desired-state\",\"root_exists\":true}],\"baseline_hostname\":\"pve01\",\"duration_seconds\":null,\"effective_roots\":[\"/root/homelab-configs-worktree\",\"/root/homelab-configs-worktree/docs\",\"/root/homelab-configs-worktree/docs/operations\",\"/srv/homelab-desired-state\",\"/srv/homelab-desired-state/health\",\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation\",\"/srv/homelab-desired-state/sbin\",\"/srv/homelab-ops-worktrees/cr-2026-0015\",\"/root/homelab-ops-cr-2026-0004\",\"/root/homelab-ops-cr-2026-0012\"],\"engines\":[{\"available\":false,\"binary\":null,\"candidate_containers\":0,\"name\":\"docker\",\"ps_error\":null,\"ps_rc\":null},{\"available\":true,\"binary\":\"/usr/bin/podman\",\"candidate_containers\":0,\"name\":\"podman\",\"ps_error\":\"\",\"ps_rc\":0}],\"hostname\":\"pve01\",\"rc\":0,\"requested_roots\":[\"/root/homelab-configs-worktree\",\"/root/homelab-configs-worktree/docs\",\"/root/homelab-configs-worktree/docs/operations\",\"/srv/homelab-desired-state\",\"/srv/homelab-desired-state/health\",\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation\",\"/srv/homelab-desired-state/sbin\",\"/srv/homelab-ops-worktrees/cr-2026-0015\",\"/root/homelab-ops-cr-2026-0004\",\"/root/homelab-ops-cr-2026-0012\"],\"ssh_target\":null,\"stderr\":null,\"target\":\"local\"},{\"audits\":[{\"files_scanned\":3,\"git\":null,\"match_count\":0,\"root\":\"/root/evidence/forum-prod-diag-20260629T032514Z\",\"root_exists\":true},{\"files_scanned\":3,\"git\":null,\"match_count\":0,\"root\":\"/root/evidence/forum-prod-os-baseline-20260629T034119Z\",\"root_exists\":true},{\"files_scanned\":3,\"git\":null,\"match_count\":0,\"root\":\"/root/evidence/forum-prod-offline-fix2-20260629T033832Z\",\"root_exists\":true},{\"files_scanned\":3,\"git\":null,\"match_count\":0,\"root\":\"/root/evidence/forum-prod-recover-20260629T025511Z\",\"root_exists\":true}],\"baseline_hostname\":\"pve02\",\"duration_seconds\":0.418,\"effective_roots\":[\"/root/evidence/forum-prod-diag-20260629T032514Z\",\"/root/evidence/forum-prod-os-baseline-20260629T034119Z\",\"/root/evidence/forum-prod-offline-fix2-20260629T033832Z\",\"/root/evidence/forum-prod-recover-20260629T025511Z\",\"/root/evidence/forum-prod-recreate-20260629T030810Z\",\"/srv/homelab-desired-state/routerguard-tuya\"],\"engines\":[{\"available\":false,\"binary\":null,\"candidate_containers\":0,\"name\":\"docker\",\"ps_error\":null,\"ps_rc\":null},{\"available\":false,\"binary\":null,\"candidate_containers\":0,\"name\":\"podman\",\"ps_error\":null,\"ps_rc\":null}],\"hostname\":\"pve02\",\"rc\":0,\"requested_roots\":[\"/root/evidence/forum-prod-diag-20260629T032514Z\",\"/root/evidence/forum-prod-os-baseline-20260629T034119Z\",\"/root/evidence/forum-prod-offline-fix2-20260629T033832Z\",\"/root/evidence/forum-prod-recover-20260629T025511Z\",\"/root/evidence/forum-prod-recreate-20260629T030810Z\",\"/srv/homelab-desired-state/routerguard-tuya\"],\"ssh_target\":\"pve02\",\"stderr\":\"\",\"target\":\"pve02\"}],\"missing_requirements\":[\"price_provider_files\"],\"mutation_outcome\":\"NO_MUTATION\",\"next_decision\":\"NEED_ONE_NARROW_RUNTIME_PROBE_FOR_MISSING_REQUIREMENTS\",\"production_site_changed\":false,\"rc\":0,\"rollback_restored\":null,\"rollback_started\":false,\"schema\":1,\"status\":\"OK\",\"target\":{\"capsule_sha256\":\"9535e1c4bd93f20f4182afe55fa6dfb0b1c05fec8080416512b7bb7da4448355\",\"command_id\":\"GRAM1-SITE-AVAX-LINK-V4-REMOTE-TARGETED-DISCOVERY-20260731T105500Z\",\"command_rc\":0,\"contract\":{\"changes_made\":false,\"command_id\":\"GRAM1-SITE-AVAX-LINK-V4-REMOTE-TARGETED-DISCOVERY-20260731T105500Z\",\"mutation_outcome\":\"NO_MUTATION\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"OK\",\"version\":1},\"control_plane_error\":null,\"output_bytes\":47388,\"output_sha256\":\"c70e35d96731a0cc0d0637ff5fb9736ffac451f80638d5631d685bcb5b2f48b1\",\"output_source\":\"runner_json\",\"output_truncated_in_json\":false,\"rejected_state_files\":[],\"runner_document_rc\":0,\"runner_json_sha256\":\"5cc9e651d5fb0ed8b92fbde3bcbb13e40ae9b1388273e52c190f7e41238a297a\",\"runner_rc\":0,\"runner_status\":\"OK\",\"runner_text_sha256\":\"8c8351b126c15d4f38eb3e99e1260a584636b2c976666ce855e06c558300d66a\",\"runner_wrapper_matches_document\":true,\"state_path_sha256\":\"0d44fc3c98ba020565a02468509f88fbce9cab3dd9d47424ff3c437b07eebc8a\",\"state_status\":\"OK\"},\"v4_decision\":\"BLOCKED_EXACT_RUNTIME_SCOPE_NOT_PROVEN\",\"verified_scope\":{\"avax_already_present\":false,\"candidate_containers\":[],\"coin_registry_files\":[{\"bytes\":38408,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"coin_registry\"],\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/errors/regression-cases.json\",\"providers\":[],\"relative_path\":\"errors/regression-cases.json\",\"root\":\"/srv/homelab-ops-worktrees/cr-2026-0015\",\"score\":58,\"sha256\":\"07c9854ab0232d1f2766cdab114d0d398a4dcc1a5b41ea7fde77646e5f42804e\",\"snippets\":[{\"line\":37,\"text\":\"\\\"required_control\\\": \\\"Set the bare repository symbolic HEAD to refs/heads/main and clone main explicitly.\\\",\"},{\"line\":371,\"text\":\"\\\"id\\\": \\\"REG-062-RX-RING-AUTO-ROLLBACK-ON-LINK-OR-QUORUM-FAILURE\\\",\"}],\"symbols\":{\"LINK\":11}},{\"bytes\":1907,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"coin_registry\"],\"path\":\"/root/homelab-ops-cr-2026-0004/errors/regression-cases.json\",\"providers\":[],\"relative_path\":\"errors/regression-cases.json\",\"root\":\"/root/homelab-ops-cr-2026-0004\",\"score\":25,\"sha256\":\"bb8d7b83202bc5c985d246994f5d325cb3540a78b8e1043ab6ea37ad68e0971b\",\"snippets\":[{\"line\":37,\"text\":\"\\\"required_control\\\": \\\"Set the bare repository symbolic HEAD to refs/heads/main and clone main explicitly.\\\",\"}],\"symbols\":{}},{\"bytes\":26500,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"coin_registry\"],\"path\":\"/root/homelab-ops-cr-2026-0012/errors/regression-cases.json\",\"providers\":[],\"relative_path\":\"errors/regression-cases.json\",\"root\":\"/root/homelab-ops-cr-2026-0012\",\"score\":25,\"sha256\":\"5dab56a2e73e4a3582d4792b91a0c803d485e68b40791bc456315748b15490a0\",\"snippets\":[{\"line\":37,\"text\":\"\\\"required_control\\\": \\\"Set the bare repository symbolic HEAD to refs/heads/main and clone main explicitly.\\\",\"}],\"symbols\":{}}],\"database_files\":[{\"bytes\":13911,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"api\",\"database\"],\"path\":\"/root/homelab-configs-worktree/docs/operations/p1-ingress-dns-route-slo-model-20260625T135835Z.json\",\"providers\":[],\"relative_path\":\"docs/operations/p1-ingress-dns-route-slo-model-20260625T135835Z.json\",\"root\":\"/root/homelab-configs-worktree\",\"score\":38,\"sha256\":\"c0ff316839992a5514b18a2dc5cb2e405b4dcecff5984ef391e8acdd4a606207\",\"snippets\":[{\"line\":89,\"text\":\"\\\"query\\\": \\\"gram1.ru\\\",\"},{\"line\":141,\"text\":\"\\\"query\\\": \\\"gram1.ru\\\",\"}],\"symbols\":{}},{\"bytes\":13911,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"api\",\"database\"],\"path\":\"/root/homelab-configs-worktree/docs/operations/p1-ingress-dns-route-slo-model-20260625T135835Z.json\",\"providers\":[],\"relative_path\":\"operations/p1-ingress-dns-route-slo-model-20260625T135835Z.json\",\"root\":\"/root/homelab-configs-worktree/docs\",\"score\":38,\"sha256\":\"c0ff316839992a5514b18a2dc5cb2e405b4dcecff5984ef391e8acdd4a606207\",\"snippets\":[{\"line\":89,\"text\":\"\\\"query\\\": \\\"gram1.ru\\\",\"},{\"line\":141,\"text\":\"\\\"query\\\": \\\"gram1.ru\\\",\"}],\"symbols\":{}},{\"bytes\":13911,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"api\",\"database\"],\"path\":\"/root/homelab-configs-worktree/docs/operations/p1-ingress-dns-route-slo-model-20260625T135835Z.json\",\"providers\":[],\"relative_path\":\"p1-ingress-dns-route-slo-model-20260625T135835Z.json\",\"root\":\"/root/homelab-configs-worktree/docs/operations\",\"score\":38,\"sha256\":\"c0ff316839992a5514b18a2dc5cb2e405b4dcecff5984ef391e8acdd4a606207\",\"snippets\":[{\"line\":89,\"text\":\"\\\"query\\\": \\\"gram1.ru\\\",\"},{\"line\":141,\"text\":\"\\\"query\\\": \\\"gram1.ru\\\",\"}],\"symbols\":{}},{\"bytes\":539,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"database\"],\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/schemas/context.schema.json\",\"providers\":[],\"relative_path\":\"schemas/context.schema.json\",\"root\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation\",\"score\":38,\"sha256\":\"84c3c29984402b25c102575b54bdb82544844e455d3d2e115fefc5f42021e043\",\"snippets\":[{\"line\":24,\"text\":\"\\\"const\\\": \\\"pve01.gram1.ru\\\"\"}],\"symbols\":{}},{\"bytes\":539,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"database\"],\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/schemas/context.schema.json\",\"providers\":[],\"relative_path\":\"schemas/context.schema.json\",\"root\":\"/srv/homelab-ops-worktrees/cr-2026-0015\",\"score\":38,\"sha256\":\"84c3c29984402b25c102575b54bdb82544844e455d3d2e115fefc5f42021e043\",\"snippets\":[{\"line\":24,\"text\":\"\\\"const\\\": \\\"pve01.gram1.ru\\\"\"}],\"symbols\":{}},{\"bytes\":969,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"database\"],\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/schemas/change.schema.json\",\"providers\":[],\"relative_path\":\"schemas/change.schema.json\",\"root\":\"/srv/homelab-ops-worktrees/cr-2026-0015\",\"score\":8,\"sha256\":\"57fbce7c6ca1f53c5ec2f8cd604d787f01019a2184b611e3b4406b467331d0af\",\"snippets\":[],\"symbols\":{}},{\"bytes\":539,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"database\"],\"path\":\"/root/homelab-ops-cr-2026-0004/schemas/context.schema.json\",\"providers\":[],\"relative_path\":\"schemas/context.schema.json\",\"root\":\"/root/homelab-ops-cr-2026-0004\",\"score\":38,\"sha256\":\"84c3c29984402b25c102575b54bdb82544844e455d3d2e115fefc5f42021e043\",\"snippets\":[{\"line\":24,\"text\":\"\\\"const\\\": \\\"pve01.gram1.ru\\\"\"}],\"symbols\":{}},{\"bytes\":969,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"database\"],\"path\":\"/root/homelab-ops-cr-2026-0004/schemas/change.schema.json\",\"providers\":[],\"relative_path\":\"schemas/change.schema.json\",\"root\":\"/root/homelab-ops-cr-2026-0004\",\"score\":8,\"sha256\":\"57fbce7c6ca1f53c5ec2f8cd604d787f01019a2184b611e3b4406b467331d0af\",\"snippets\":[],\"symbols\":{}},{\"bytes\":539,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"database\"],\"path\":\"/root/homelab-ops-cr-2026-0012/schemas/context.schema.json\",\"providers\":[],\"relative_path\":\"schemas/context.schema.json\",\"root\":\"/root/homelab-ops-cr-2026-0012\",\"score\":38,\"sha256\":\"84c3c29984402b25c102575b54bdb82544844e455d3d2e115fefc5f42021e043\",\"snippets\":[{\"line\":24,\"text\":\"\\\"const\\\": \\\"pve01.gram1.ru\\\"\"}],\"symbols\":{}},{\"bytes\":969,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"database\"],\"path\":\"/root/homelab-ops-cr-2026-0012/schemas/change.schema.json\",\"providers\":[],\"relative_path\":\"schemas/change.schema.json\",\"root\":\"/root/homelab-ops-cr-2026-0012\",\"score\":8,\"sha256\":\"57fbce7c6ca1f53c5ec2f8cd604d787f01019a2184b611e3b4406b467331d0af\",\"snippets\":[],\"symbols\":{}}],\"deployment_files\":[{\"bytes\":813,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"deployment\"],\"path\":\"/root/homelab-configs-worktree/configs/sanitized/edge-vm/gitea-compose.yaml\",\"providers\":[],\"relative_path\":\"configs/sanitized/edge-vm/gitea-compose.yaml\",\"root\":\"/root/homelab-configs-worktree\",\"score\":40,\"sha256\":\"9ea0063ed375cb3c52530b74f69951d56e4d98cd461ce5a8bb6a1451b8c239e7\",\"snippets\":[{\"line\":13,\"text\":\"GITEA__server__DOMAIN: git.gram1.ru\"},{\"line\":14,\"text\":\"GITEA__server__ROOT_URL: https://git.gram1.ru/\"}],\"symbols\":{}},{\"bytes\":316,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"deployment\",\"frontend\"],\"path\":\"/root/homelab-configs-worktree/configs/sanitized/edge-vm/homepage-compose.yaml\",\"providers\":[],\"relative_path\":\"configs/sanitized/edge-vm/homepage-compose.yaml\",\"root\":\"/root/homelab-configs-worktree\",\"score\":40,\"sha256\":\"0c55d679d28d86fc1e91a224ecf1fb3a9dde2f16dd6b8f9597582309cfb7abfa\",\"snippets\":[{\"line\":9,\"text\":\"HOMEPAGE_ALLOWED_HOSTS: home.gram1.ru,homepage.vpn.gram1.ru\"}],\"symbols\":{}},{\"bytes\":6505,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"deployment\",\"frontend\"],\"path\":\"/root/homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml\",\"providers\":[],\"relative_path\":\"configs/sanitized/edge-vm/homepage-services.yaml\",\"root\":\"/root/homelab-configs-worktree\",\"score\":40,\"sha256\":\"eb2281c8d871ef2b377d82ede77d4786e7667e22835c9783f52621dcbd777f89\",\"snippets\":[{\"line\":3,\"text\":\"href: https://home.gram1.ru\"},{\"line\":7,\"text\":\"href: https://homepage.vpn.gram1.ru\"}],\"symbols\":{}},{\"bytes\":54303,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"deployment\"],\"path\":\"/root/homelab-configs-worktree/docs/operations/p2-service-dependency-graph-20260625T221552Z.json\",\"providers\":[],\"relative_path\":\"docs/operations/p2-service-dependency-graph-20260625T221552Z.json\",\"root\":\"/root/homelab-configs-worktree\",\"score\":40,\"sha256\":\"75fbb655a18af0201d5a3f97ff17966f329506ab4a515ddd9ca9dafbe4a6ea34\",\"snippets\":[{\"line\":1228,\"text\":\"\\\"domain\\\": \\\"nc.gram1.ru\\\",\"},{\"line\":1238,\"text\":\"\\\"domain\\\": \\\"uptime.gram1.ru\\\",\"}],\"symbols\":{}},{\"bytes\":54303,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"deployment\"],\"path\":\"/root/homelab-configs-worktree/docs/operations/p2-service-dependency-graph-20260625T221552Z.json\",\"providers\":[],\"relative_path\":\"operations/p2-service-dependency-graph-20260625T221552Z.json\",\"root\":\"/root/homelab-configs-worktree/docs\",\"score\":40,\"sha256\":\"75fbb655a18af0201d5a3f97ff17966f329506ab4a515ddd9ca9dafbe4a6ea34\",\"snippets\":[{\"line\":1228,\"text\":\"\\\"domain\\\": \\\"nc.gram1.ru\\\",\"},{\"line\":1238,\"text\":\"\\\"domain\\\": \\\"uptime.gram1.ru\\\",\"}],\"symbols\":{}},{\"bytes\":54303,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"deployment\"],\"path\":\"/root/homelab-configs-worktree/docs/operations/p2-service-dependency-graph-20260625T221552Z.json\",\"providers\":[],\"relative_path\":\"p2-service-dependency-graph-20260625T221552Z.json\",\"root\":\"/root/homelab-configs-worktree/docs/operations\",\"score\":40,\"sha256\":\"75fbb655a18af0201d5a3f97ff17966f329506ab4a515ddd9ca9dafbe4a6ea34\",\"snippets\":[{\"line\":1228,\"text\":\"\\\"domain\\\": \\\"nc.gram1.ru\\\",\"},{\"line\":1238,\"text\":\"\\\"domain\\\": \\\"uptime.gram1.ru\\\",\"}],\"symbols\":{}},{\"bytes\":164,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"deployment\"],\"path\":\"/srv/homelab-desired-state/systemd/homelab-crypto-portfolio-backup.service\",\"providers\":[],\"relative_path\":\"systemd/homelab-crypto-portfolio-backup.service\",\"root\":\"/srv/homelab-desired-state\",\"score\":40,\"sha256\":\"26893d40465a1d1072582d0e30c9ba59187b78a0969fdb638c2f413038675b7f\",\"snippets\":[{\"line\":2,\"text\":\"Description=Gram Crypto portfolio two-cloud backup\"},{\"line\":7,\"text\":\"ExecStart=/usr/local/sbin/crypto-portfolio-backup-run\"}],\"symbols\":{}},{\"bytes\":197,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"deployment\"],\"path\":\"/srv/homelab-desired-state/systemd/homelab-crypto-portfolio-chart-health.service\",\"providers\":[],\"relative_path\":\"systemd/homelab-crypto-portfolio-chart-health.service\",\"root\":\"/srv/homelab-desired-state\",\"score\":40,\"sha256\":\"265d173e16c3c6c3dded360d0bff1e96bd8fa38a07cb21c7bb89880a38bf1964\",\"snippets\":[{\"line\":2,\"text\":\"Description=Crypto portfolio chart health check\"},{\"line\":8,\"text\":\"ExecStart=/usr/local/sbin/crypto-portfolio-chart-health-check\"}],\"symbols\":{}},{\"bytes\":3218,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"deployment\"],\"path\":\"/srv/homelab-desired-state/sbin/homelab-docker-health.sh\",\"providers\":[],\"relative_path\":\"sbin/homelab-docker-health.sh\",\"root\":\"/srv/homelab-desired-state\",\"score\":10,\"sha256\":\"1e1e1b38d4cd741df3b1b8f31e0d5398fad92068fb51f4b1967b3be862132ca0\",\"snippets\":[],\"symbols\":{}},{\"bytes\":184,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"deployment\"],\"path\":\"/srv/homelab-desired-state/systemd/homelab-alerting-health.service\",\"providers\":[],\"relative_path\":\"systemd/homelab-alerting-health.service\",\"root\":\"/srv/homelab-desired-state\",\"score\":10,\"sha256\":\"2328f1042ac8f6b201603d86941afc87d62191ae12559bee0fd77709c76066f3\",\"snippets\":[],\"symbols\":{}},{\"bytes\":209,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"deployment\"],\"path\":\"/srv/homelab-desired-state/systemd/homelab-alertmanager-backup.service\",\"providers\":[],\"relative_path\":\"systemd/homelab-alertmanager-backup.service\",\"root\":\"/srv/homelab-desired-state\",\"score\":10,\"sha256\":\"2544f81eb70d2f66ae85a3ff23108d18c392f33f368832ac363ce7199782e7dd\",\"snippets\":[],\"symbols\":{}},{\"bytes\":207,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"deployment\"],\"path\":\"/srv/homelab-desired-state/systemd/homelab-appbackup-dockge-stacks.service\",\"providers\":[],\"relative_path\":\"systemd/homelab-appbackup-dockge-stacks.service\",\"root\":\"/srv/homelab-desired-state\",\"score\":10,\"sha256\":\"a17ea8adc560454997b581f3f49d52dbcfd039b8883f0188a9ce440c8393cb26\",\"snippets\":[],\"symbols\":{}},{\"bytes\":200,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"deployment\"],\"path\":\"/srv/homelab-desired-state/systemd/homelab-appbackup-mariadb-batch.service\",\"providers\":[],\"relative_path\":\"systemd/homelab-appbackup-mariadb-batch.service\",\"root\":\"/srv/homelab-desired-state\",\"score\":10,\"sha256\":\"267aa3988e9fd65ba876d62791ecfd13c191cd069e5e1cf6d77a85220d8e6a0a\",\"snippets\":[],\"symbols\":{}},{\"bytes\":212,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"deployment\"],\"path\":\"/srv/homelab-desired-state/systemd/homelab-appbackup-npmplus-edge.service\",\"providers\":[],\"relative_path\":\"systemd/homelab-appbackup-npmplus-edge.service\",\"root\":\"/srv/homelab-desired-state\",\"score\":10,\"sha256\":\"238cf3867746ee914b9d79d4f8d8a24fd5352186ea0dda29ecbff52249c3a2b8\",\"snippets\":[],\"symbols\":{}},{\"bytes\":418,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"deployment\"],\"path\":\"/srv/homelab-desired-state/systemd/homelab-appbackup-postgres-batch.service\",\"providers\":[],\"relative_path\":\"systemd/homelab-appbackup-postgres-batch.service\",\"root\":\"/srv/homelab-desired-state\",\"score\":10,\"sha256\":\"979991e9acc79b8034a37d94d539641c34c51d26cb4438c4a26a82cb430fe5b9\",\"snippets\":[],\"symbols\":{}},{\"bytes\":417,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"deployment\"],\"path\":\"/srv/homelab-desired-state/systemd/homelab-appbackup-sqlite-batch.service\",\"providers\":[],\"relative_path\":\"systemd/homelab-appbackup-sqlite-batch.service\",\"root\":\"/srv/homelab-desired-state\",\"score\":10,\"sha256\":\"0d18769b26baae048a68f85f403893b22c67fb2852cd3a14ff1cf909f5d34d76\",\"snippets\":[],\"symbols\":{}},{\"bytes\":181,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"deployment\"],\"path\":\"/srv/homelab-desired-state/systemd/homelab-authentik-backup.service\",\"providers\":[],\"relative_path\":\"systemd/homelab-authentik-backup.service\",\"root\":\"/srv/homelab-desired-state\",\"score\":10,\"sha256\":\"81a709901db99eaea51915af0b69d923d1b605ba7927b6fb95583f8b297b84e7\",\"snippets\":[],\"symbols\":{}},{\"bytes\":259,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"deployment\"],\"path\":\"/srv/homelab-desired-state/systemd/homelab-auto-backup.service\",\"providers\":[],\"relative_path\":\"systemd/homelab-auto-backup.service\",\"root\":\"/srv/homelab-desired-state\",\"score\":10,\"sha256\":\"d8015c7137e58bada7519d60e0e35e803fca147078baf379ab439ee52295a018\",\"snippets\":[],\"symbols\":{}},{\"bytes\":131,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"deployment\"],\"path\":\"/srv/homelab-desired-state/systemd/homelab-backup-coverage-matrix.service\",\"providers\":[],\"relative_path\":\"systemd/homelab-backup-coverage-matrix.service\",\"root\":\"/srv/homelab-desired-state\",\"score\":10,\"sha256\":\"3903036cfc32a2f5e365549bf5bc7b3946f700fdddf96f2718ef2f53b4f1ab3c\",\"snippets\":[],\"symbols\":{}},{\"bytes\":246,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"deployment\"],\"path\":\"/srv/homelab-desired-state/systemd/homelab-backup-freshness.service\",\"providers\":[],\"relative_path\":\"systemd/homelab-backup-freshness.service\",\"root\":\"/srv/homelab-desired-state\",\"score\":10,\"sha256\":\"b8907cedd41c6a6640d2e7bbf80b0d340dbb629526786fd97d8fc85f950a1a5e\",\"snippets\":[],\"symbols\":{}}],\"link_already_present\":true,\"price_provider_files\":[],\"source_roots\":[\"/root/evidence/forum-prod-diag-20260629T032514Z\",\"/root/evidence/forum-prod-offline-fix2-20260629T033832Z\",\"/root/evidence/forum-prod-os-baseline-20260629T034119Z\",\"/root/evidence/forum-prod-recover-20260629T025511Z\",\"/root/evidence/forum-prod-recreate-20260629T030810Z\",\"/root/homelab-configs-worktree\",\"/root/homelab-configs-worktree/docs\",\"/root/homelab-configs-worktree/docs/operations\",\"/root/homelab-ops-cr-2026-0004\",\"/root/homelab-ops-cr-2026-0012\",\"/srv/homelab-desired-state\",\"/srv/homelab-desired-state/health\",\"/srv/homelab-desired-state/routerguard-tuya\",\"/srv/homelab-desired-state/sbin\",\"/srv/homelab-ops-worktrees/cr-2026-0015\",\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation\"],\"test_files\":[{\"bytes\":1138,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"test\"],\"path\":\"/srv/homelab-desired-state/app-states/latest-crypto-portfolio.json\",\"providers\":[],\"relative_path\":\"app-states/latest-crypto-portfolio.json\",\"root\":\"/srv/homelab-desired-state\",\"score\":38,\"sha256\":\"a1265d4a6312fd1b709f33799ccfa02f89fd2a476ee32dd1bd16f2a165ed2805\",\"snippets\":[{\"line\":2,\"text\":\"\\\"app\\\": \\\"crypto-portfolio\\\",\"},{\"line\":6,\"text\":\"\\\"core-apps:/opt/stacks/crypto-portfolio\\\"\"}],\"symbols\":{}},{\"bytes\":1975,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"test\"],\"path\":\"/srv/homelab-desired-state/app-states/latest-hapusya-site.json\",\"providers\":[],\"relative_path\":\"app-states/latest-hapusya-site.json\",\"root\":\"/srv/homelab-desired-state\",\"score\":38,\"sha256\":\"82315a126652ae435070b4f8025348dbd75800b0acdbe848b38200ddc2312a01\",\"snippets\":[{\"line\":3,\"text\":\"\\\"host\\\": \\\"edge-vm.gram1.ru\\\",\"}],\"symbols\":{}},{\"bytes\":4026,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"test\"],\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tests/test_inventory_foundation.py\",\"providers\":[],\"relative_path\":\"tests/test_inventory_foundation.py\",\"root\":\"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation\",\"score\":38,\"sha256\":\"2142fd35c4927b17d33aa35d584267b7b17430ddfe52ab85d0a49dc7c7ee8ed1\",\"snippets\":[{\"line\":31,\"text\":\"self.assertEqual(target[\\\"expected_hostname\\\"], \\\"pve03.gram1.ru\\\")\"}],\"symbols\":{}},{\"bytes\":13506,\"host\":\"pve01\",\"identity_match\":true,\"kinds\":[\"test\"],\"path\":\"/srv/homelab-ops-worktrees/cr-2026-0015/tests/test_cr_2026_0015_pve03_r8152_rx_ring_canary.py\",\"providers\":[],\"relative_path\":\"tests/test_cr_2026_0015_pve03_r8152_rx_ring_canary.py\",\"root\":\"/srv/homelab-ops-worktrees/cr-2026-0015\",\"score\":41,\"sha256\":\"91b7a0a01b0eaa1db6a726eb8b009726e75bad5e11959be9494d82c5b5bf00df\",\"snippets\":[{\"line\":31,\"text\":\"self.assertEqual(source[\\\"target_node\\\"], \\\"pve03.gram1.ru\\\")\"},{\"line\":166,\"text\":\"\\\"REG-062-RX-RING-AUTO-ROLLBACK-ON-LINK-OR-QUORUM-FAILURE\\\",\"}],\"symbols\":{\"LINK\":6}},{\"bytes\":2124,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"test\"],\"path\":\"/root/homelab-ops-cr-2026-0004/tests/test_repository.py\",\"providers\":[],\"relative_path\":\"tests/test_repository.py\",\"root\":\"/root/homelab-ops-cr-2026-0004\",\"score\":8,\"sha256\":\"14b00be2aed7bc84bfd04ea561b9e385d7742b8ce112628efa27bd319e1735fc\",\"snippets\":[],\"symbols\":{}},{\"bytes\":723,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"test\"],\"path\":\"/root/homelab-ops-cr-2026-0012/tests/fixtures/gitea-legacy-auth-permission.json\",\"providers\":[],\"relative_path\":\"tests/fixtures/gitea-legacy-auth-permission.json\",\"root\":\"/root/homelab-ops-cr-2026-0012\",\"score\":8,\"sha256\":\"95f4795f46e4aa5971be8bc3424c1688afbd7aa7e8bbdd6e12e3e27b9d542008\",\"snippets\":[],\"symbols\":{}},{\"bytes\":4225,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"test\"],\"path\":\"/root/homelab-ops-cr-2026-0012/tests/test_cr_2026_0005.py\",\"providers\":[],\"relative_path\":\"tests/test_cr_2026_0005.py\",\"root\":\"/root/homelab-ops-cr-2026-0012\",\"score\":8,\"sha256\":\"d91aac747e637f59729f302231037e63bbbda454012845563004bc7b01d8bf6a\",\"snippets\":[],\"symbols\":{}},{\"bytes\":3055,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"test\"],\"path\":\"/root/homelab-ops-cr-2026-0012/tests/test_cr_2026_0006.py\",\"providers\":[],\"relative_path\":\"tests/test_cr_2026_0006.py\",\"root\":\"/root/homelab-ops-cr-2026-0012\",\"score\":8,\"sha256\":\"0b3bf19a243393ab79a5190893751b391e690e0ea62491e5a3f37892bff90d5d\",\"snippets\":[],\"symbols\":{}},{\"bytes\":6046,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"test\"],\"path\":\"/root/homelab-ops-cr-2026-0012/tests/test_cr_2026_0006_vm160_task.py\",\"providers\":[],\"relative_path\":\"tests/test_cr_2026_0006_vm160_task.py\",\"root\":\"/root/homelab-ops-cr-2026-0012\",\"score\":8,\"sha256\":\"4bb8fce2c5f007cf9768381bd4f1eafc8f208da36170e684047e6bad2c670bc2\",\"snippets\":[],\"symbols\":{}},{\"bytes\":4660,\"host\":\"pve01\",\"identity_match\":false,\"kinds\":[\"test\"],\"path\":\"/root/homelab-ops-cr-2026-0012/tests/test_cr_2026_0007_skladchik_reauth.py\",\"providers\":[],\"relative_path\":\"tests/test_cr_2026_0007_skladchik_reauth.py\",\"root\":\"/root/homelab-ops-cr-2026-0012\",\"score\":8,\"sha256\":\"9ba7ca8494a22e83bba5479a3a647eb96abaef45ada1b08fa7432f03a64b1765\",\"snippets\":[],\"symbols\":{}}]}}\n" -} +{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260731T111701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-07-31T11:17:01Z","finished_at_utc":"2026-07-31T11: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 5821c52..42209eb 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,34 +1,163 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=GRAM1-SITE-AVAX-LINK-V5-EXACT-SCOPE-EXTRACT-20260731T110500Z +COMMAND_ID=CONTEXT-AUTO-[PRIVATE_IP]701Z STATUS=OK RC=0 HOST=pve01 -MODE=verify -COMPONENT=gram1-site-avax-link-exact-scope-extract -REFERENCE_REGISTER_CHECK=OK -REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e -ERROR_REGISTER_CHECK=OK -ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83 -COMMAND_SHA256=99862a7115b295ab9ea999e62e3c256dbafd1f1636f8d2da20a21d34f2b04490 -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=cae480d0fddad8d7f9d1cc121a126aa67730e0df3e84765b9fdebac81fe6547f -SANITIZED_OUTPUT_SHA256=cae480d0fddad8d7f9d1cc121a126aa67730e0df3e84765b9fdebac81fe6547f +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":"GRAM1-SITE-AVAX-LINK-V5-EXACT-SCOPE-EXTRACT-20260731T110500Z","mutation_outcome":"NO_MUTATION","rollback_restored":null,"rollback_started":false,"status":"OK","version":1} -{"changes_made":false,"command_id":"GRAM1-SITE-AVAX-LINK-V5-EXACT-SCOPE-EXTRACT-20260731T110500Z","counts":{"candidate_containers":0,"coin_registry_files":3,"database_files":10,"deployment_files":20,"price_provider_files":0,"source_roots":16,"test_files":10},"gitea_changed":false,"hosts":[{"audits":[{"files_scanned":1251,"git":{"branch":"main","dirty":false,"head":"cfab5168f800d63eba1bc0f669427ff8fcd48006","origin":"https://git.gram1.ru/homelab-admin/homelab-configs.git","top_level":"/root/homelab-configs-worktree"},"match_count":10,"root":"/root/homelab-configs-worktree","root_exists":true},{"files_scanned":764,"git":{"branch":"main","dirty":false,"head":"cfab5168f800d63eba1bc0f669427ff8fcd48006","origin":"https://git.gram1.ru/homelab-admin/homelab-configs.git","top_level":"/root/homelab-configs-worktree"},"match_count":10,"root":"/root/homelab-configs-worktree/docs","root_exists":true},{"files_scanned":699,"git":{"branch":"main","dirty":false,"head":"cfab5168f800d63eba1bc0f669427ff8fcd48006","origin":"https://git.gram1.ru/homelab-admin/homelab-configs.git","top_level":"/root/homelab-configs-worktree"},"match_count":10,"root":"/root/homelab-configs-worktree/docs/operations","root_exists":true},{"files_scanned":958,"git":{"branch":"master","dirty":false,"head":"173b61c40ec2584ac14da018311b15729b86c611","origin":"https://git.gram1.ru/homelab-admin/homelab-desired-state.git","top_level":"/srv/homelab-desired-state"},"match_count":10,"root":"/srv/homelab-desired-state","root_exists":true}],"baseline_hostname":"pve01","duration_seconds":null,"effective_roots":["/root/homelab-configs-worktree","/root/homelab-configs-worktree/docs","/root/homelab-configs-worktree/docs/operations","/srv/homelab-desired-state","/srv/homelab-desired-state/health","/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation","/srv/homelab-desired-state/sbin","/srv/homelab-ops-worktrees/cr-2026-0015","/root/homelab-ops-cr-2026-0004","/root/homelab-ops-cr-2026-0012"],"engines":[{"available":false,"binary":null,"candidate_containers":0,"name":"docker","ps_error":null,"ps_rc":null},{"available":true,"binary":"/usr/bin/podman","candidate_containers":0,"name":"podman","ps_error":"","ps_rc":0}],"hostname":"pve01","rc":0,"requested_roots":["/root/homelab-configs-worktree","/root/homelab-configs-worktree/docs","/root/homelab-configs-worktree/docs/operations","/srv/homelab-desired-state","/srv/homelab-desired-state/health","/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation","/srv/homelab-desired-state/sbin","/srv/homelab-ops-worktrees/cr-2026-0015","/root/homelab-ops-cr-2026-0004","/root/homelab-ops-cr-2026-0012"],"ssh_target":null,"stderr":null,"target":"local"},{"audits":[{"files_scanned":3,"git":null,"match_count":0,"root":"/root/evidence/forum-prod-diag-20260629T032514Z","root_exists":true},{"files_scanned":3,"git":null,"match_count":0,"root":"/root/evidence/forum-prod-os-baseline-20260629T034119Z","root_exists":true},{"files_scanned":3,"git":null,"match_count":0,"root":"/root/evidence/forum-prod-offline-fix2-20260629T033832Z","root_exists":true},{"files_scanned":3,"git":null,"match_count":0,"root":"/root/evidence/forum-prod-recover-20260629T025511Z","root_exists":true}],"baseline_hostname":"pve02","duration_seconds":0.418,"effective_roots":["/root/evidence/forum-prod-diag-20260629T032514Z","/root/evidence/forum-prod-os-baseline-20260629T034119Z","/root/evidence/forum-prod-offline-fix2-20260629T033832Z","/root/evidence/forum-prod-recover-20260629T025511Z","/root/evidence/forum-prod-recreate-20260629T030810Z","/srv/homelab-desired-state/routerguard-tuya"],"engines":[{"available":false,"binary":null,"candidate_containers":0,"name":"docker","ps_error":null,"ps_rc":null},{"available":false,"binary":null,"candidate_containers":0,"name":"podman","ps_error":null,"ps_rc":null}],"hostname":"pve02","rc":0,"requested_roots":["/root/evidence/forum-prod-diag-20260629T032514Z","/root/evidence/forum-prod-os-baseline-20260629T034119Z","/root/evidence/forum-prod-offline-fix2-20260629T033832Z","/root/evidence/forum-prod-recover-20260629T025511Z","/root/evidence/forum-prod-recreate-20260629T030810Z","/srv/homelab-desired-state/routerguard-tuya"],"ssh_target":"pve02","stderr":"","target":"pve02"}],"missing_requirements":["price_provider_files"],"mutation_outcome":"NO_MUTATION","next_decision":"NEED_ONE_NARROW_RUNTIME_PROBE_FOR_MISSING_REQUIREMENTS","production_site_changed":false,"rc":0,"rollback_restored":null,"rollback_started":false,"schema":1,"status":"OK","target":{"capsule_sha256":"9535e1c4bd93f20f4182afe55fa6dfb0b1c05fec8080416512b7bb7da4448355","command_id":"GRAM1-SITE-AVAX-LINK-V4-REMOTE-TARGETED-DISCOVERY-20260731T105500Z","command_rc":0,"contract":{"changes_made":false,"command_id":"GRAM1-SITE-AVAX-LINK-V4-REMOTE-TARGETED-DISCOVERY-20260731T105500Z","mutation_outcome":"NO_MUTATION","rollback_restored":null,"rollback_started":false,"status":"OK","version":1},"control_plane_error":null,"output_bytes":47388,"output_sha256":"c70e35d96731a0cc0d0637ff5fb9736ffac451f80638d5631d685bcb5b2f48b1","output_source":"runner_json","output_truncated_in_json":false,"rejected_state_files":[],"runner_document_rc":0,"runner_json_sha256":"5cc9e651d5fb0ed8b92fbde3bcbb13e40ae9b1388273e52c190f7e41238a297a","runner_rc":0,"runner_status":"OK","runner_text_sha256":"8c8351b126c15d4f38eb3e99e1260a584636b2c976666ce855e06c558300d66a","runner_wrapper_matches_document":true,"state_path_sha256":"0d44fc3c98ba020565a02468509f88fbce9cab3dd9d47424ff3c437b07eebc8a","state_status":"OK"},"v4_decision":"BLOCKED_EXACT_RUNTIME_SCOPE_NOT_PROVEN","verified_scope":{"avax_already_present":false,"candidate_containers":[],"coin_registry_files":[{"bytes":38408,"host":"pve01","identity_match":true,"kinds":["coin_registry"],"path":"/srv/homelab-ops-worktrees/cr-2026-0015/errors/regression-cases.json","providers":[],"relative_path":"errors/regression-cases.json","root":"/srv/homelab-ops-worktrees/cr-2026-0015","score":58,"sha256":"07c9854ab0232d1f2766cdab114d0d398a4dcc1a5b41ea7fde77646e5f42804e","snippets":[{"line":37,"text":"\"required_control\": \"Set the bare repository symbolic HEAD to refs/heads/main and clone main explicitly.\","},{"line":371,"text":"\"id\": \"REG-062-RX-RING-AUTO-ROLLBACK-ON-LINK-OR-QUORUM-FAILURE\","}],"symbols":{"LINK":11}},{"bytes":1907,"host":"pve01","identity_match":false,"kinds":["coin_registry"],"path":"/root/homelab-ops-cr-2026-0004/errors/regression-cases.json","providers":[],"relative_path":"errors/regression-cases.json","root":"/root/homelab-ops-cr-2026-0004","score":25,"sha256":"bb8d7b83202bc5c985d246994f5d325cb3540a78b8e1043ab6ea37ad68e0971b","snippets":[{"line":37,"text":"\"required_control\": \"Set the bare repository symbolic HEAD to refs/heads/main and clone main explicitly.\","}],"symbols":{}},{"bytes":26500,"host":"pve01","identity_match":false,"kinds":["coin_registry"],"path":"/root/homelab-ops-cr-2026-0012/errors/regression-cases.json","providers":[],"relative_path":"errors/regression-cases.json","root":"/root/homelab-ops-cr-2026-0012","score":25,"sha256":"5dab56a2e73e4a3582d4792b91a0c803d485e68b40791bc456315748b15490a0","snippets":[{"line":37,"text":"\"required_control\": \"Set the bare repository symbolic HEAD to refs/heads/main and clone main explicitly.\","}],"symbols":{}}],"database_files":[{"bytes":13911,"host":"pve01","identity_match":true,"kinds":["api","database"],"path":"/root/homelab-configs-worktree/docs/operations/p1-ingress-dns-route-slo-model-20260625T135835Z.json","providers":[],"relative_path":"docs/operations/p1-ingress-dns-route-slo-model-20260625T135835Z.json","root":"/root/homelab-configs-worktree","score":38,"sha256":"c0ff316839992a5514b18a2dc5cb2e405b4dcecff5984ef391e8acdd4a606207","snippets":[{"line":89,"text":"\"query\": \"gram1.ru\","},{"line":141,"text":"\"query\": \"gram1.ru\","}],"symbols":{}},{"bytes":13911,"host":"pve01","identity_match":true,"kinds":["api","database"],"path":"/root/homelab-configs-worktree/docs/operations/p1-ingress-dns-route-slo-model-20260625T135835Z.json","providers":[],"relative_path":"operations/p1-ingress-dns-route-slo-model-20260625T135835Z.json","root":"/root/homelab-configs-worktree/docs","score":38,"sha256":"c0ff316839992a5514b18a2dc5cb2e405b4dcecff5984ef391e8acdd4a606207","snippets":[{"line":89,"text":"\"query\": \"gram1.ru\","},{"line":141,"text":"\"query\": \"gram1.ru\","}],"symbols":{}},{"bytes":13911,"host":"pve01","identity_match":true,"kinds":["api","database"],"path":"/root/homelab-configs-worktree/docs/operations/p1-ingress-dns-route-slo-model-20260625T135835Z.json","providers":[],"relative_path":"p1-ingress-dns-route-slo-model-20260625T135835Z.json","root":"/root/homelab-configs-worktree/docs/operations","score":38,"sha256":"c0ff316839992a5514b18a2dc5cb2e405b4dcecff5984ef391e8acdd4a606207","snippets":[{"line":89,"text":"\"query\": \"gram1.ru\","},{"line":141,"text":"\"query\": \"gram1.ru\","}],"symbols":{}},{"bytes":539,"host":"pve01","identity_match":true,"kinds":["database"],"path":"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/schemas/context.schema.json","providers":[],"relative_path":"schemas/context.schema.json","root":"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation","score":38,"sha256":"84c3c29984402b25c102575b54bdb82544844e455d3d2e115fefc5f42021e043","snippets":[{"line":24,"text":"\"const\": \"pve01.gram1.ru\""}],"symbols":{}},{"bytes":539,"host":"pve01","identity_match":true,"kinds":["database"],"path":"/srv/homelab-ops-worktrees/cr-2026-0015/schemas/context.schema.json","providers":[],"relative_path":"schemas/context.schema.json","root":"/srv/homelab-ops-worktrees/cr-2026-0015","score":38,"sha256":"84c3c29984402b25c102575b54bdb82544844e455d3d2e115fefc5f42021e043","snippets":[{"line":24,"text":"\"const\": \"pve01.gram1.ru\""}],"symbols":{}},{"bytes":969,"host":"pve01","identity_match":false,"kinds":["database"],"path":"/srv/homelab-ops-worktrees/cr-2026-0015/schemas/change.schema.json","providers":[],"relative_path":"schemas/change.schema.json","root":"/srv/homelab-ops-worktrees/cr-2026-0015","score":8,"sha256":"57fbce7c6ca1f53c5ec2f8cd604d787f01019a2184b611e3b4406b467331d0af","snippets":[],"symbols":{}},{"bytes":539,"host":"pve01","identity_match":true,"kinds":["database"],"path":"/root/homelab-ops-cr-2026-0004/schemas/context.schema.json","providers":[],"relative_path":"schemas/context.schema.json","root":"/root/homelab-ops-cr-2026-0004","score":38,"sha256":"84c3c29984402b25c102575b54bdb82544844e455d3d2e115fefc5f42021e043","snippets":[{"line":24,"text":"\"const\": \"pve01.gram1.ru\""}],"symbols":{}},{"bytes":969,"host":"pve01","identity_match":false,"kinds":["database"],"path":"/root/homelab-ops-cr-2026-0004/schemas/change.schema.json","providers":[],"relative_path":"schemas/change.schema.json","root":"/root/homelab-ops-cr-2026-0004","score":8,"sha256":"57fbce7c6ca1f53c5ec2f8cd604d787f01019a2184b611e3b4406b467331d0af","snippets":[],"symbols":{}},{"bytes":539,"host":"pve01","identity_match":true,"kinds":["database"],"path":"/root/homelab-ops-cr-2026-0012/schemas/context.schema.json","providers":[],"relative_path":"schemas/context.schema.json","root":"/root/homelab-ops-cr-2026-0012","score":38,"sha256":"84c3c29984402b25c102575b54bdb82544844e455d3d2e115fefc5f42021e043","snippets":[{"line":24,"text":"\"const\": \"pve01.gram1.ru\""}],"symbols":{}},{"bytes":969,"host":"pve01","identity_match":false,"kinds":["database"],"path":"/root/homelab-ops-cr-2026-0012/schemas/change.schema.json","providers":[],"relative_path":"schemas/change.schema.json","root":"/root/homelab-ops-cr-2026-0012","score":8,"sha256":"57fbce7c6ca1f53c5ec2f8cd604d787f01019a2184b611e3b4406b467331d0af","snippets":[],"symbols":{}}],"deployment_files":[{"bytes":813,"host":"pve01","identity_match":true,"kinds":["deployment"],"path":"/root/homelab-configs-worktree/configs/sanitized/edge-vm/gitea-compose.yaml","providers":[],"relative_path":"configs/sanitized/edge-vm/gitea-compose.yaml","root":"/root/homelab-configs-worktree","score":40,"sha256":"9ea0063ed375cb3c52530b74f69951d56e4d98cd461ce5a8bb6a1451b8c239e7","snippets":[{"line":13,"text":"GITEA__server__DOMAIN: git.gram1.ru"},{"line":14,"text":"GITEA__server__ROOT_URL: https://git.gram1.ru/"}],"symbols":{}},{"bytes":316,"host":"pve01","identity_match":true,"kinds":["deployment","frontend"],"path":"/root/homelab-configs-worktree/configs/sanitized/edge-vm/homepage-compose.yaml","providers":[],"relative_path":"configs/sanitized/edge-vm/homepage-compose.yaml","root":"/root/homelab-configs-worktree","score":40,"sha256":"0c55d679d28d86fc1e91a224ecf1fb3a9dde2f16dd6b8f9597582309cfb7abfa","snippets":[{"line":9,"text":"HOMEPAGE_ALLOWED_HOSTS: home.gram1.ru,homepage.vpn.gram1.ru"}],"symbols":{}},{"bytes":6505,"host":"pve01","identity_match":true,"kinds":["deployment","frontend"],"path":"/root/homelab-configs-worktree/configs/sanitized/edge-vm/homepage-services.yaml","providers":[],"relative_path":"configs/sanitized/edge-vm/homepage-services.yaml","root":"/root/homelab-configs-worktree","score":40,"sha256":"eb2281c8d871ef2b377d82ede77d4786e7667e22835c9783f52621dcbd777f89","snippets":[{"line":3,"text":"href: https://home.gram1.ru"},{"line":7,"text":"href: https://homepage.vpn.gram1.ru"}],"symbols":{}},{"bytes":54303,"host":"pve01","identity_match":true,"kinds":["deployment"],"path":"/root/homelab-configs-worktree/docs/operations/p2-service-dependency-graph-20260625T221552Z.json","providers":[],"relative_path":"docs/operations/p2-service-dependency-graph-20260625T221552Z.json","root":"/root/homelab-configs-worktree","score":40,"sha256":"75fbb655a18af0201d5a3f97ff17966f329506ab4a515ddd9ca9dafbe4a6ea34","snippets":[{"line":1228,"text":"\"domain\": \"nc.gram1.ru\","},{"line":1238,"text":"\"domain\": \"uptime.gram1.ru\","}],"symbols":{}},{"bytes":54303,"host":"pve01","identity_match":true,"kinds":["deployment"],"path":"/root/homelab-configs-worktree/docs/operations/p2-service-dependency-graph-20260625T221552Z.json","providers":[],"relative_path":"operations/p2-service-dependency-graph-20260625T221552Z.json","root":"/root/homelab-configs-worktree/docs","score":40,"sha256":"75fbb655a18af0201d5a3f97ff17966f329506ab4a515ddd9ca9dafbe4a6ea34","snippets":[{"line":1228,"text":"\"domain\": \"nc.gram1.ru\","},{"line":1238,"text":"\"domain\": \"uptime.gram1.ru\","}],"symbols":{}},{"bytes":54303,"host":"pve01","identity_match":true,"kinds":["deployment"],"path":"/root/homelab-configs-worktree/docs/operations/p2-service-dependency-graph-20260625T221552Z.json","providers":[],"relative_path":"p2-service-dependency-graph-20260625T221552Z.json","root":"/root/homelab-configs-worktree/docs/operations","score":40,"sha256":"75fbb655a18af0201d5a3f97ff17966f329506ab4a515ddd9ca9dafbe4a6ea34","snippets":[{"line":1228,"text":"\"domain\": \"nc.gram1.ru\","},{"line":1238,"text":"\"domain\": \"uptime.gram1.ru\","}],"symbols":{}},{"bytes":164,"host":"pve01","identity_match":true,"kinds":["deployment"],"path":"/srv/homelab-desired-state/systemd/homelab-crypto-portfolio-backup.service","providers":[],"relative_path":"systemd/homelab-crypto-portfolio-backup.service","root":"/srv/homelab-desired-state","score":40,"sha256":"26893d40465a1d1072582d0e30c9ba59187b78a0969fdb638c2f413038675b7f","snippets":[{"line":2,"text":"Description=Gram Crypto portfolio two-cloud backup"},{"line":7,"text":"ExecStart=/usr/local/sbin/crypto-portfolio-backup-run"}],"symbols":{}},{"bytes":197,"host":"pve01","identity_match":true,"kinds":["deployment"],"path":"/srv/homelab-desired-state/systemd/homelab-crypto-portfolio-chart-health.service","providers":[],"relative_path":"systemd/homelab-crypto-portfolio-chart-health.service","root":"/srv/homelab-desired-state","score":40,"sha256":"265d173e16c3c6c3dded360d0bff1e96bd8fa38a07cb21c7bb89880a38bf1964","snippets":[{"line":2,"text":"Description=Crypto portfolio chart health check"},{"line":8,"text":"ExecStart=/usr/local/sbin/crypto-portfolio-chart-health-check"}],"symbols":{}},{"bytes":3218,"host":"pve01","identity_match":false,"kinds":["deployment"],"path":"/srv/homelab-desired-state/sbin/homelab-docker-health.sh","providers":[],"relative_path":"sbin/homelab-docker-health.sh","root":"/srv/homelab-desired-state","score":10,"sha256":"1e1e1b38d4cd741df3b1b8f31e0d5398fad92068fb51f4b1967b3be862132ca0","snippets":[],"symbols":{}},{"bytes":184,"host":"pve01","identity_match":false,"kinds":["deployment"],"path":"/srv/homelab-desired-state/systemd/homelab-alerting-health.service","providers":[],"relative_path":"systemd/homelab-alerting-health.service","root":"/srv/homelab-desired-state","score":10,"sha256":"2328f1042ac8f6b201603d86941afc87d62191ae12559bee0fd77709c76066f3","snippets":[],"symbols":{}},{"bytes":209,"host":"pve01","identity_match":false,"kinds":["deployment"],"path":"/srv/homelab-desired-state/systemd/homelab-alertmanager-backup.service","providers":[],"relative_path":"systemd/homelab-alertmanager-backup.service","root":"/srv/homelab-desired-state","score":10,"sha256":"2544f81eb70d2f66ae85a3ff23108d18c392f33f368832ac363ce7199782e7dd","snippets":[],"symbols":{}},{"bytes":207,"host":"pve01","identity_match":false,"kinds":["deployment"],"path":"/srv/homelab-desired-state/systemd/homelab-appbackup-dockge-stacks.service","providers":[],"relative_path":"systemd/homelab-appbackup-dockge-stacks.service","root":"/srv/homelab-desired-state","score":10,"sha256":"a17ea8adc560454997b581f3f49d52dbcfd039b8883f0188a9ce440c8393cb26","snippets":[],"symbols":{}},{"bytes":200,"host":"pve01","identity_match":false,"kinds":["deployment"],"path":"/srv/homelab-desired-state/systemd/homelab-appbackup-mariadb-batch.service","providers":[],"relative_path":"systemd/homelab-appbackup-mariadb-batch.service","root":"/srv/homelab-desired-state","score":10,"sha256":"267aa3988e9fd65ba876d62791ecfd13c191cd069e5e1cf6d77a85220d8e6a0a","snippets":[],"symbols":{}},{"bytes":212,"host":"pve01","identity_match":false,"kinds":["deployment"],"path":"/srv/homelab-desired-state/systemd/homelab-appbackup-npmplus-edge.service","providers":[],"relative_path":"systemd/homelab-appbackup-npmplus-edge.service","root":"/srv/homelab-desired-state","score":10,"sha256":"238cf3867746ee914b9d79d4f8d8a24fd5352186ea0dda29ecbff52249c3a2b8","snippets":[],"symbols":{}},{"bytes":418,"host":"pve01","identity_match":false,"kinds":["deployment"],"path":"/srv/homelab-desired-state/systemd/homelab-appbackup-postgres-batch.service","providers":[],"relative_path":"systemd/homelab-appbackup-postgres-batch.service","root":"/srv/homelab-desired-state","score":10,"sha256":"979991e9acc79b8034a37d94d539641c34c51d26cb4438c4a26a82cb430fe5b9","snippets":[],"symbols":{}},{"bytes":417,"host":"pve01","identity_match":false,"kinds":["deployment"],"path":"/srv/homelab-desired-state/systemd/homelab-appbackup-sqlite-batch.service","providers":[],"relative_path":"systemd/homelab-appbackup-sqlite-batch.service","root":"/srv/homelab-desired-state","score":10,"sha256":"0d18769b26baae048a68f85f403893b22c67fb2852cd3a14ff1cf909f5d34d76","snippets":[],"symbols":{}},{"bytes":181,"host":"pve01","identity_match":false,"kinds":["deployment"],"path":"/srv/homelab-desired-state/systemd/homelab-authentik-backup.service","providers":[],"relative_path":"systemd/homelab-authentik-backup.service","root":"/srv/homelab-desired-state","score":10,"sha256":"81a709901db99eaea51915af0b69d923d1b605ba7927b6fb95583f8b297b84e7","snippets":[],"symbols":{}},{"bytes":259,"host":"pve01","identity_match":false,"kinds":["deployment"],"path":"/srv/homelab-desired-state/systemd/homelab-auto-backup.service","providers":[],"relative_path":"systemd/homelab-auto-backup.service","root":"/srv/homelab-desired-state","score":10,"sha256":"d8015c7137e58bada7519d60e0e35e803fca147078baf379ab439ee52295a018","snippets":[],"symbols":{}},{"bytes":131,"host":"pve01","identity_match":false,"kinds":["deployment"],"path":"/srv/homelab-desired-state/systemd/homelab-backup-coverage-matrix.service","providers":[],"relative_path":"systemd/homelab-backup-coverage-matrix.service","root":"/srv/homelab-desired-state","score":10,"sha256":"3903036cfc32a2f5e365549bf5bc7b3946f700fdddf96f2718ef2f53b4f1ab3c","snippets":[],"symbols":{}},{"bytes":246,"host":"pve01","identity_match":false,"kinds":["deployment"],"path":"/srv/homelab-desired-state/systemd/homelab-backup-freshness.service","providers":[],"relative_path":"systemd/homelab-backup-freshness.service","root":"/srv/homelab-desired-state","score":10,"sha256":"b8907cedd41c6a6640d2e7bbf80b0d340dbb629526786fd97d8fc85f950a1a5e","snippets":[],"symbols":{}}],"link_already_present":true,"price_provider_files":[],"source_roots":["/root/evidence/forum-prod-diag-20260629T032514Z","/root/evidence/forum-prod-offline-fix2-20260629T033832Z","/root/evidence/forum-prod-os-baseline-20260629T034119Z","/root/evidence/forum-prod-recover-20260629T025511Z","/root/evidence/forum-prod-recreate-20260629T030810Z","/root/homelab-configs-worktree","/root/homelab-configs-worktree/docs","/root/homelab-configs-worktree/docs/operations","/root/homelab-ops-cr-2026-0004","/root/homelab-ops-cr-2026-0012","/srv/homelab-desired-state","/srv/homelab-desired-state/health","/srv/homelab-desired-state/routerguard-tuya","/srv/homelab-desired-state/sbin","/srv/homelab-ops-worktrees/cr-2026-0015","/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation"],"test_files":[{"bytes":1138,"host":"pve01","identity_match":true,"kinds":["test"],"path":"/srv/homelab-desired-state/app-states/latest-crypto-portfolio.json","providers":[],"relative_path":"app-states/latest-crypto-portfolio.json","root":"/srv/homelab-desired-state","score":38,"sha256":"a1265d4a6312fd1b709f33799ccfa02f89fd2a476ee32dd1bd16f2a165ed2805","snippets":[{"line":2,"text":"\"app\": \"crypto-portfolio\","},{"line":6,"text":"\"core-apps:/opt/stacks/crypto-portfolio\""}],"symbols":{}},{"bytes":1975,"host":"pve01","identity_match":true,"kinds":["test"],"path":"/srv/homelab-desired-state/app-states/latest-hapusya-site.json","providers":[],"relative_path":"app-states/latest-hapusya-site.json","root":"/srv/homelab-desired-state","score":38,"sha256":"82315a126652ae435070b4f8025348dbd75800b0acdbe848b38200ddc2312a01","snippets":[{"line":3,"text":"\"host\": \"edge-vm.gram1.ru\","}],"symbols":{}},{"bytes":4026,"host":"pve01","identity_match":true,"kinds":["test"],"path":"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation/tests/test_inventory_foundation.py","providers":[],"relative_path":"tests/test_inventory_foundation.py","root":"/srv/homelab-ops-worktrees/cr-2026-0017-inventory-foundation","score":38,"sha256":"2142fd35c4927b17d33aa35d584267b7b17430ddfe52ab85d0a49dc7c7ee8ed1","snippets":[{"line":31,"text":"self.assertEqual(target[\"expected_hostname\"], \"pve03.gram1.ru\")"}],"symbols":{}},{"bytes":13506,"host":"pve01","identity_match":true,"kinds":["test"],"path":"/srv/homelab-ops-worktrees/cr-2026-0015/tests/test_cr_2026_0015_pve03_r8152_rx_ring_canary.py","providers":[],"relative_path":"tests/test_cr_2026_0015_pve03_r8152_rx_ring_canary.py","root":"/srv/homelab-ops-worktrees/cr-2026-0015","score":41,"sha256":"91b7a0a01b0eaa1db6a726eb8b009726e75bad5e11959be9494d82c5b5bf00df","snippets":[{"line":31,"text":"self.assertEqual(source[\"target_node\"], \"pve03.gram1.ru\")"},{"line":166,"text":"\"REG-062-RX-RING-AUTO-ROLLBACK-ON-LINK-OR-QUORUM-FAILURE\","}],"symbols":{"LINK":6}},{"bytes":2124,"host":"pve01","identity_match":false,"kinds":["test"],"path":"/root/homelab-ops-cr-2026-0004/tests/test_repository.py","providers":[],"relative_path":"tests/test_repository.py","root":"/root/homelab-ops-cr-2026-0004","score":8,"sha256":"14b00be2aed7bc84bfd04ea561b9e385d7742b8ce112628efa27bd319e1735fc","snippets":[],"symbols":{}},{"bytes":723,"host":"pve01","identity_match":false,"kinds":["test"],"path":"/root/homelab-ops-cr-2026-0012/tests/fixtures/gitea-legacy-auth-permission.json","providers":[],"relative_path":"tests/fixtures/gitea-legacy-auth-permission.json","root":"/root/homelab-ops-cr-2026-0012","score":8,"sha256":"95f4795f46e4aa5971be8bc3424c1688afbd7aa7e8bbdd6e12e3e27b9d542008","snippets":[],"symbols":{}},{"bytes":4225,"host":"pve01","identity_match":false,"kinds":["test"],"path":"/root/homelab-ops-cr-2026-0012/tests/test_cr_2026_0005.py","providers":[],"relative_path":"tests/test_cr_2026_0005.py","root":"/root/homelab-ops-cr-2026-0012","score":8,"sha256":"d91aac747e637f59729f302231037e63bbbda454012845563004bc7b01d8bf6a","snippets":[],"symbols":{}},{"bytes":3055,"host":"pve01","identity_match":false,"kinds":["test"],"path":"/root/homelab-ops-cr-2026-0012/tests/test_cr_2026_0006.py","providers":[],"relative_path":"tests/test_cr_2026_0006.py","root":"/root/homelab-ops-cr-2026-0012","score":8,"sha256":"0b3bf19a243393ab79a5190893751b391e690e0ea62491e5a3f37892bff90d5d","snippets":[],"symbols":{}},{"bytes":6046,"host":"pve01","identity_match":false,"kinds":["test"],"path":"/root/homelab-ops-cr-2026-0012/tests/test_cr_2026_0006_vm160_task.py","providers":[],"relative_path":"tests/test_cr_2026_0006_vm160_task.py","root":"/root/homelab-ops-cr-2026-0012","score":8,"sha256":"4bb8fce2c5f007cf9768381bd4f1eafc8f208da36170e684047e6bad2c670bc2","snippets":[],"symbols":{}},{"bytes":4660,"host":"pve01","identity_match":false,"kinds":["test"],"path":"/root/homelab-ops-cr-2026-0012/tests/test_cr_2026_0007_skladchik_reauth.py","providers":[],"relative_path":"tests/test_cr_2026_0007_skladchik_reauth.py","root":"/root/homelab-ops-cr-2026-0012","score":8,"sha256":"9ba7ca8494a22e83bba5479a3a647eb96abaef45ada1b08fa7432f03a64b1765","snippets":[],"symbols":{}}]}} +GENERATED_AT_UTC=[PRIVATE_IP]T11:17:01Z +Cluster information +------------------- +Name: homelab +Config Version: 3 +Transport: knet +Secure auth: on +Quorum information +------------------ +Date: Fri Jul [PRIVATE_IP] 2026 +Quorum provider: corosync_votequorum +Nodes: 3 +Node ID: [PRIVATE_IP] +Ring ID: 1.db +Quorate: Yes + +Votequorum information +---------------------- +Expected votes: 3 +Highest expected: 3 +Total votes: 3 +Quorum: 2 +Flags: Quorate + +Membership information +---------------------- + Nodeid Votes Name +[PRIVATE_IP] [PRIVATE_IP].11 (local) +[PRIVATE_IP] [PRIVATE_IP].13 +[PRIVATE_IP] [PRIVATE_IP].12 + +Membership information +---------------------- + Nodeid Votes Name + 1 1 pve01 (local) + 2 1 pve03 + 3 1 pve02 +[{"cpu":[PRIVATE_IP][PRIVATE_IP],"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/110","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":259793,"vmid":110},{"cpu":[PRIVATE_IP]551e-05,"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":259885,"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":259838,"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":259888,"vmid":113},{"cpu":[PRIVATE_IP]17355,"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":259825,"vmid":130},{"cpu":[PRIVATE_IP]43807,"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":259790,"vmid":150},{"cpu":[PRIVATE_IP]324484,"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":259881,"vmid":160},{"cpu":[PRIVATE_IP]67821,"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":259786,"vmid":170},{"cpu":[PRIVATE_IP]67128,"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":259783,"vmid":171},{"cpu":[PRIVATE_IP]54277,"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":259878,"vmid":180},{"cpu":[PRIVATE_IP]746676,"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":259821,"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]23283,"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":259895},{"cgroup-mode":2,"cpu":[PRIVATE_IP]23229,"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":259921},{"cgroup-mode":2,"cpu":[PRIVATE_IP]97632,"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":259842},{"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"},{"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":"import,iso,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":"import,iso,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":"import,iso,vztmpl,backup","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","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] 13.47% +local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 27.29% + 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 +Fri [PRIVATE_IP] 14:17:14 MSK 12s Fri [PRIVATE_IP] 14:16:14 MSK 47s ago homelab-cluster-admin-webpanel-sync.timer homelab-cluster-admin-webpanel-sync.service +Fri [PRIVATE_IP] 14:17:14 MSK 12s Fri [PRIVATE_IP] 14:16:14 MSK 47s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service +Fri [PRIVATE_IP] 14:17:29 MSK 26s Fri [PRIVATE_IP] 14:16:27 MSK 34s ago homelab-router-watchdog.timer homelab-router-watchdog.service +Fri [PRIVATE_IP] 14:18:14 MSK 1min 12s Fri [PRIVATE_IP] 14:13:14 MSK 3min 47s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service +Fri [PRIVATE_IP] 14:18:32 MSK 1min 29s Fri [PRIVATE_IP] 14:16:17 MSK 44s ago homelab-cluster-admin-inventory-sync.timer homelab-cluster-admin-inventory-sync.service +Fri [PRIVATE_IP] 14:19:23 MSK 2min 21s Fri [PRIVATE_IP] 14:14:22 MSK 2min 39s ago homelab-health-metrics.timer homelab-health-metrics.service +Fri [PRIVATE_IP] 14:19:25 MSK 2min 23s Fri [PRIVATE_IP] 14:14:24 MSK 2min 37s ago homelab-crypto-portfolio-chart-health.timer homelab-crypto-portfolio-chart-health.service +Fri [PRIVATE_IP] 14:20:22 MSK 3min 20s Thu [PRIVATE_IP] 14:20:22 MSK 23h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service +Fri [PRIVATE_IP] 14:20:25 MSK 3min 22s Fri [PRIVATE_IP] 14:15:25 MSK 1min 37s ago netbird-peers-health.timer netbird-peers-health.service +Fri [PRIVATE_IP] 14:24:14 MSK 7min Fri [PRIVATE_IP] 14:14:14 MSK 2min 47s ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service +Fri [PRIVATE_IP] 14:26:25 MSK 9min Fri [PRIVATE_IP] 14:11:25 MSK 5min ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service +Fri [PRIVATE_IP] 14:27:51 MSK 10min Fri [PRIVATE_IP] 13:54:07 MSK 22min ago homelab-reference-refresh.timer homelab-reference-refresh.service +Fri [PRIVATE_IP] 14:28:24 MSK 11min Fri [PRIVATE_IP] 14:13:24 MSK 3min 37s ago homelab-disk-space-health.timer homelab-disk-space-health.service +Fri [PRIVATE_IP] 14:28:25 MSK 11min Fri [PRIVATE_IP] 14:13:25 MSK 3min 37s ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service +Fri [PRIVATE_IP] 14:29:24 MSK 12min Fri [PRIVATE_IP] 14:14:24 MSK 2min 37s ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service +Fri [PRIVATE_IP] 14:30:00 MSK 12min Fri [PRIVATE_IP] 14:15:14 MSK 1min 47s ago homelab-incident-journal.timer homelab-incident-journal.service +Fri [PRIVATE_IP] 14:30:58 MSK 13min Fri [PRIVATE_IP] 14:15:24 MSK 1min 37s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service +Fri [PRIVATE_IP] 14:31:04 MSK 14min Fri [PRIVATE_IP] 14:15:36 MSK 1min 26s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service +Fri [PRIVATE_IP] 14:31:09 MSK 14min Fri [PRIVATE_IP] 14:16:14 MSK 47s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service +Fri [PRIVATE_IP] 14:33:53 MSK 16min Fri [PRIVATE_IP] 14:04:07 MSK 12min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service +Fri [PRIVATE_IP] 16:52:02 MSK 2h 35min Thu [PRIVATE_IP] 21:36:50 MSK 16h ago apt-daily.timer apt-daily.service +Fri [PRIVATE_IP] 20:08:22 MSK 5h 51min Fri [PRIVATE_IP] 14:08:22 MSK 8min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service +Sat [PRIVATE_IP] 00:00:00 MSK 9h Fri [PRIVATE_IP] 00:00:07 MSK 14h ago dpkg-db-backup.timer dpkg-db-backup.service +Sat [PRIVATE_IP] 00:08:42 MSK 9h Fri [PRIVATE_IP] 00:03:58 MSK 14h ago homelab-evidence-catalog.timer homelab-evidence-catalog.service +Sat [PRIVATE_IP] 00:08:53 MSK 9h Fri [PRIVATE_IP] 00:18:50 MSK 13h ago homelab-docker-health.timer homelab-docker-health.service +Sat [PRIVATE_IP] 00:13:49 MSK 9h Fri [PRIVATE_IP] 00:13:50 MSK 14h ago homelab-storage-capacity.timer homelab-storage-capacity.service +Sat [PRIVATE_IP] 00:19:04 MSK 10h Fri [PRIVATE_IP] 00:11:47 MSK 14h ago homelab-quality-gate.timer homelab-quality-gate.service +Sat [PRIVATE_IP] 00:46:47 MSK 10h Fri [PRIVATE_IP] 00:32:50 MSK 13h ago logrotate.timer logrotate.service +Sat [PRIVATE_IP] 03:50:00 MSK 13h Fri [PRIVATE_IP] 03:50:07 MSK 10h ago filebrowser-offhost-sync.timer filebrowser-offhost-sync.service +Sat [PRIVATE_IP] 04:22:11 MSK 14h Fri [PRIVATE_IP] 01:54:50 MSK 12h ago man-db.timer man-db.service +Sat [PRIVATE_IP] 04:43:09 MSK 14h Fri [PRIVATE_IP] 04:40:05 MSK 9h ago homelab-edge-vm-offhost-freshness.timer homelab-edge-vm-offhost-freshness.service +Sat [PRIVATE_IP] 04:45:58 MSK 14h Fri [PRIVATE_IP] 02:02:37 MSK 12h ago pve-daily-update.timer pve-daily-update.service +Sat [PRIVATE_IP] 05:12:42 MSK 14h Fri [PRIVATE_IP] 04:57:14 MSK 9h ago homelab-sops-edge-secret-coverage.timer homelab-sops-edge-secret-coverage.service +Sat [PRIVATE_IP] 06:40:53 MSK 16h Fri [PRIVATE_IP] 06:17:57 MSK 7h ago apt-daily-upgrade.timer apt-daily-upgrade.service +Sat [PRIVATE_IP] 07:19:49 MSK 17h Fri [PRIVATE_IP] 07:14:50 MSK 7h ago homelab-drift-check.timer homelab-drift-check.service +Sat [PRIVATE_IP] 07:24:28 MSK 17h Fri [PRIVATE_IP] 07:20:24 MSK 6h ago homelab-service-registry-check.timer homelab-service-registry-check.service +Sat [PRIVATE_IP] 07:48:31 MSK 17h Fri [PRIVATE_IP] 07:49:05 MSK 6h ago homelab-alerting-health.timer homelab-alerting-health.service +Sat [PRIVATE_IP] 07:54:12 MSK 17h Fri [PRIVATE_IP] 07:52:37 MSK 6h ago homelab-dependency-map-check.timer homelab-dependency-map-check.service +Sat [PRIVATE_IP] 07:59:46 MSK 17h Fri [PRIVATE_IP] 07:42:50 MSK 6h ago homelab-runbook-generate.timer homelab-runbook-generate.service +Sat [PRIVATE_IP] 08:05:31 MSK 17h Fri [PRIVATE_IP] 07:52:37 MSK 6h ago homelab-desired-state-sync.timer homelab-desired-state-sync.service +Sat [PRIVATE_IP] 08:07:23 MSK 17h Fri [PRIVATE_IP] 08:13:58 MSK 6h ago homelab-duty-admin-report.timer homelab-duty-admin-report.service +Sat [PRIVATE_IP] 08:11:02 MSK 17h Fri [PRIVATE_IP] 08:22:53 MSK 5h 54min ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service +Sat [PRIVATE_IP] 08:14:47 MSK 17h Fri [PRIVATE_IP] 08:12:07 MSK 6h ago homelab-overall-health.timer homelab-overall-health.service +Sat [PRIVATE_IP] 08:21:27 MSK 18h Fri [PRIVATE_IP] 08:12:07 MSK 6h ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service +Sat [PRIVATE_IP] 08:31:41 MSK 18h Fri [PRIVATE_IP] 08:43:07 MSK 5h 33min ago homelab-capacity-risk.timer homelab-capacity-risk.service +Sat [PRIVATE_IP] 08:34:18 MSK 18h Fri [PRIVATE_IP] 08:37:05 MSK 5h 39min ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service +Sat [PRIVATE_IP] 08:41:29 MSK 18h Fri [PRIVATE_IP] 08:42:07 MSK 5h 34min ago homelab-cluster-passport.timer homelab-cluster-passport.service +Sat [PRIVATE_IP] 08:51:07 MSK 18h Fri [PRIVATE_IP] 08:56:50 MSK 5h 20min ago homelab-golden-state-index.timer homelab-golden-state-index.service +Sat [PRIVATE_IP] 08:51:08 MSK 18h Fri [PRIVATE_IP] 08:53:07 MSK 5h 23min ago immich-media-offhost-sync.timer immich-media-offhost-sync.service +Sat [PRIVATE_IP] 09:06:17 MSK 18h Fri [PRIVATE_IP] 09:13:34 MSK 5h 3min ago memos-offhost-sync.timer memos-offhost-sync.service +Sat [PRIVATE_IP] 10:15:00 MSK 19h Fri [PRIVATE_IP] 10:15:07 MSK 4h 1min ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service +Sun [PRIVATE_IP] 03:10:25 MSK 1 day 12h Sun [PRIVATE_IP] 03:10:15 MSK - xfs_scrub_all.timer xfs_scrub_all.service +Sun [PRIVATE_IP] 03:10:49 MSK 1 day 12h Sun [PRIVATE_IP] 03:10:15 MSK - e2scrub_all.timer e2scrub_all.service +Mon [PRIVATE_IP] 00:11:49 MSK 2 days Mon [PRIVATE_IP] 00:13:29 MSK - homelab-secret-sanity.timer homelab-secret-sanity.service +Mon [PRIVATE_IP] 01:17:32 MSK 2 days Mon [PRIVATE_IP] 01:18:15 MSK - fstrim.timer fstrim.service +- - - - prometheus-node-exporter-ipmitool-sensor.timer prometheus-node-exporter-ipmitool-sensor.service +- - - - prometheus-node-exporter-mellanox-hca-temp.timer prometheus-node-exporter-mellanox-hca-temp.service +- - - - prometheus-node-exporter-smartmon.timer prometheus-node-exporter-smartmon.service + +58 timers listed. +- Обрезанная, повреждённая или частично вставленная команда считается невыполненной; сначала проводится side-effect audit. +- Хвост parse-ошибки закрывается только после доказательства отсутствия изменений и временных артефактов. +- Proof: /var/lib/homelab-change-sets/operator-command-size-guard-v[PRIVATE_IP]T182653Z/report.txt + +## HOMELAB_ADMIN_CLI_CONTRACT_[PRIVATE_IP] +- Поддерживаемые команды: version, status, lint TASK_DIR, validate TASK_DIR, run TASK_DIR PHASE. +- Отдельная команда --help отсутствует. Неизвестный аргумент печатает usage и штатно возвращает RC=64. +- Нельзя трактовать RC=64 от --help как неисправность runner. +- Для проверки доступности runner использовать homelab-admin version; для структуры CLI использовать зафиксированную usage-строку. +- Proof: /var/lib/homelab-change-sets/homelab-admin-cli-contract-fix-v[PRIVATE_IP]T183338Z/report.txt + +AUTOMATIC_CLUSTER_CONTEXT_REFRESH_[PRIVATE_IP] +Collector: /usr/local/sbin/homelab-context-collect +Scheduler: hourly at minute 17 via /etc/cron.d/homelab-context-refresh +Destination: immutable Gitea runtime history with CONTEXT-AUTO UTC command IDs. + +AUTOMATIC_CLUSTER_CONTEXT_REFRESH_DIRECT_[PRIVATE_IP] +Publisher: /usr/local/sbin/homelab-context-refresh-direct +Schedule: hourly at minute 17. +Destination: immutable assistant-runtime history with CONTEXT-AUTO UTC IDs. +ANTI_REGRESSION_TOKEN=HOMELAB_VM_2CLOUD_444_OUTER_LAUNCHER_BOUNDARY_REQUIRED +- Anti-regression: validate the complete outer launcher with a shell syntax check and verify the wrapper argument boundary before issuing it. +- Infrastructure action executed: none. +- Backup payload impact: none. +- Production impact: none. +- Status: CLOSED; UNRESOLVED_TAIL_COUNT=0. +- Registered at: [PRIVATE_IP]T11:20:32Z + +## ERROR_[PRIVATE_IP]_HOMELAB_VM_2CLOUD_DRAIN_CLOSURE_PREFLIGHT_446 +COMMAND_ID=HOMELAB-VM-2CLOUD-DRAIN-CLOSURE-PREFLIGHT-446 +- Symptom: homelab-chat-run-linked printed Usage and skipped result-feed publication as invalid input. +- Root cause: the diagnostic script was piped to wrapper stdin and the mandatory double-dash command separator was omitted. +- Correction: invoke homelab-chat-run-linked as COMMAND_ID MODE COMPONENT -- command arguments; stdin is not its command interface. +ANTI_REGRESSION_TOKEN=HOMELAB_CHAT_RUN_COMMAND_REQUIRES_DOUBLE_DASH +- Anti-regression: treat wrapper Usage as the authoritative CLI contract and syntax-check the complete launcher, not only its inner payload. +- Infrastructure action executed: none. +- Backup payload impact: none. +- Production impact: none. +- Status: CLOSED; UNRESOLVED_TAIL_COUNT=0. +- Registered at: [PRIVATE_IP]T11:20:32Z OUTPUT_END CHAT_OUTPUT_END