audit(channel-health): IMPLEMENTED — controller v0.90.0 + hub v0.20.0 allowlist; live-validated

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 20:42:38 +02:00
parent d3661319c8
commit 26a6dde2fb
@@ -100,6 +100,17 @@ No wrinkle blocks a straightforward slice. The single thing to get right: **clas
error (latching, config) distinctly from runtime errors (mostly transient)**, and **probe via the
memoized client** so the check can't lie. Debounce transient reasons (N≥2) to avoid restart-blip noise.
## IMPLEMENTED 2026-06-29 — controller v0.90.0 (+ hub v0.20.0)
The channel-check slice shipped per this spike's GO: `internal/channelhealth` (a ~60s scheduler job
probing via the memoized `Server.ProbeAgentChannel`, the Q1 classifier, N≥2 debounce for transient
reasons, first-obs seed) + an English operator-only Notifier event + a Hungarian dashboard banner.
Live-validated on guest 9201: a clean agent restart fired **no** alert (debounce); a sustained stop
logged `transient down (unreachable, 1/2) — suppressed` then `agent channel DOWN (up→down:unreachable)`
+ the dashboard banner; start → `recovered`. One thing the spike didn't predict: the hub's
`allowedEventTypes` allowlist rejected the controller-pushed `agent_channel_*` events (HTTP 400) —
fixed in **hub v0.20.0**. See `felhom-controller/REPORT.md` + CHANGELOG v0.90.0.
## Teardown — confirmed
Throwaway `channelspike_test.go` removed (build-server working tree clean — `git status` shows it