hub: F2 — alert on host already degraded/stale at (re)start (seed only healthy) v0.21.0

Constructors seed only healthy hosts; an already-degraded/stale host is left unseeded so the first
Check() emits once (cooldown dedups on hub restart). Born-degraded red-proof + staleness test updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pg8ANF97SEeKYSN5Jxw3qJ
This commit is contained in:
2026-06-29 21:46:25 +02:00
parent a297639c58
commit 12f038618e
5 changed files with 79 additions and 16 deletions
+16
View File
@@ -1,5 +1,21 @@
# Felhom Hub — Changelog
## v0.21.0 — F2: alert on a host already degraded/stale at hub (re)start (2026-06-29)
Mirror of the controller's F2 fix, for the hub checkers: a host that was already **degraded**
(capability) or **stale/down** (staleness) when the hub (re)started was seeded silently and **never
alerted**. Now the constructors seed only HEALTHY hosts; an unhealthy host is left **unseeded** so the
first `Check()` emits once. The dispatcher's 1 h operator cooldown dedups the re-emit across a hub
restart (so a hub bounce doesn't re-page for an already-known issue within the window).
- `internal/monitor/host_capability.go` + `host_staleness.go`: constructor seeds only the healthy
state; `Check()` first-obs (`oldState==""`) emits `emitTransition(…, "unknown", newState, …)` when
the observed state isn't healthy, else seeds silently.
- Tests: born-degraded **red-proof** (host degraded at construction → unseeded → one
`agent_capability_degraded` on first Check, no duplicate on the next); the staleness test updated to
the F2 behavior (born-stale → unseeded → one `host_stale` on first Check). Version `0.20.0 → 0.21.0`.
## v0.20.0 — Accept controller `agent_channel_*` events (channel-health relay) (2026-06-29)
Companion to felhom-controller v0.90.0's controller→agent channel health-check. The controller pushes