The provider topology only lit nodes from live/recent traffic, so between
requests (and right after a restart) it went blank even though 50+ connections
were healthy — which reads as "lost providers". Two root causes:
1. Stuck-green latch: request.completed/request.failed are declared in the
dashboard event map and consumed by useLiveRequests to drain the active-request
set, but they were never emitted (only request.started was). A node's green
"active" pulse therefore only cleared on a page reload, and accumulated over a
session. Emit the terminal event from persistAttemptLogs — keyed by the same
traceId as request.started — through a pure resolveRequestLifecycleEvent()
helper (2xx/3xx + no error => completed, else failed).
2. No at-rest state: the map had nothing to show when idle. Colour each node by
connection health (green connected / red error / grey idle) as a base layer,
with live/recent traffic still taking precedence and pulsing brighter on top.
edgeStyle() gains an optional trailing `healthy` param (static dim green) and
StatusDot a `pulse` prop (static dot for connected-at-rest); both backward
compatible. Legend "Active" -> "Connected".
Tests: resolveRequestLifecycleEvent success/failure/token-alias units, edgeStyle
healthy variant + precedence, and source guards for the emit wiring (traceId
threaded into persistAttemptLogs) and the health-colour wiring.
Co-authored-by: Diego Rodrigues de Sa e Souza <diegosouza.pw@gmail.com>
Co-authored-by: Diego Rodrigues de Sa e Souza <diegosouzapw@users.noreply.github.com>