You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(ops): fleet-status collector reports mini-era values on the erlich hub #1657
Problem — The five-minute fleet-status cadence (#1561) runs the mini-era collection script unmodified on the erlich hub, so four probes report false values. The device named "mini" is labeled "this machine" while the collector runs on erlich (the entry list hardcodes its first alias as local). The server guard reports the server not running with an empty pid while the hub serves healthy sessions through the frontdoor → service → engine chain (it probes launchd, which does not exist on the Linux hub). Chat-DB stats are null because the script reads the pre-consolidation opencode-dev.db name — which no longer exists on the hub — and shells out to a sqlite3 CLI that is not installed there (python3's sqlite3 module is the available reader). Vault-sync freshness is null because the BSD date flags fail on Linux and the probe reads a log location the hub does not populate the same way. The dashboard surface built on this file shows a wrong, worrying fleet. Approach — Rewrite the probes hub-native: identify this machine from the fleet config's canonical ssh alias instead of list position; probe server health via the canonical port plus the engine process's pinned DB environment (no launchd); read the canonical chat DB via python3's sqlite3 module against the pinned canonical DB name; compute vault-sync freshness with portable date parsing against the hub's actual sync log — or report an explicit not-applicable state when the hub runs no client-style sync loop, never a null-by-crash. Scope — in: the collection script's probes and the cadence unit's environment. out: the projection verb (amico fleet status), the shard-watch census (#1558/#1559), the cadence scheduling itself (working, #1561).
Acceptance Criteria
A fresh collection on erlich labels the erlich device row "this machine" and the mini row "ssh ok".
While the hub serves sessions, server_guard reports ok with the real engine pid and the canonical DB file.
chat_db.sessions and chat_db.last_session report real values from the canonical DB.
vault_sync reports a real age or an explicit not-applicable state on the hub — never null from a failed probe.
The fleet health-check contract: device reachability, canonical DB, server guard, sync freshness, stray databases.
Source
Evidence collected 2026-10-01 on erlich — four false fields observed in a fresh post-#1561 collection; session ledger session-20261001-harness-picker-fleet-recovery. Follow-up to #1560.
Notes
The deployed copy of this ops script on the hub must be refreshed when this lands (no build step involved).
Important
Problem — The five-minute fleet-status cadence (#1561) runs the mini-era collection script unmodified on the erlich hub, so four probes report false values. The device named "mini" is labeled "this machine" while the collector runs on erlich (the entry list hardcodes its first alias as local). The server guard reports the server not running with an empty pid while the hub serves healthy sessions through the frontdoor → service → engine chain (it probes launchd, which does not exist on the Linux hub). Chat-DB stats are null because the script reads the pre-consolidation opencode-dev.db name — which no longer exists on the hub — and shells out to a sqlite3 CLI that is not installed there (python3's sqlite3 module is the available reader). Vault-sync freshness is null because the BSD date flags fail on Linux and the probe reads a log location the hub does not populate the same way. The dashboard surface built on this file shows a wrong, worrying fleet.
Approach — Rewrite the probes hub-native: identify this machine from the fleet config's canonical ssh alias instead of list position; probe server health via the canonical port plus the engine process's pinned DB environment (no launchd); read the canonical chat DB via python3's sqlite3 module against the pinned canonical DB name; compute vault-sync freshness with portable date parsing against the hub's actual sync log — or report an explicit not-applicable state when the hub runs no client-style sync loop, never a null-by-crash.
Scope — in: the collection script's probes and the cadence unit's environment. out: the projection verb (
amico fleet status), the shard-watch census (#1558/#1559), the cadence scheduling itself (working, #1561).Acceptance Criteria
Prior Art
Source
Evidence collected 2026-10-01 on erlich — four false fields observed in a fresh post-#1561 collection; session ledger
session-20261001-harness-picker-fleet-recovery. Follow-up to #1560.Notes
The deployed copy of this ops script on the hub must be refreshed when this lands (no build step involved).