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
pkg/routerDialOptions exposes no per-hop / noise-handshake progress observer. A caller that dials a route can only see the terminal result (success / failure) — not the intermediate "found 2-hop path via X → establishing route group → noise handshake → up" progression.
This came up building the streaming proxy interstitial (#4054): the chunked-streamed interstitial can only show a coarse per-attempt progress line + reload-on-success, because the granular route-setup narrative is not observable. The stream infra fabricates nothing — it surfaces only the signals that exist. The mux telemetry harness likewise only synthesizes coarse RouteEstablished/failed events around its own DialRoutes.
Proposal
Add an optional OnProgress func(RouteSetupEvent) callback to DialOptions (and the route-group/DialRoutes path), emitting structured events as setup proceeds:
route(s) found — candidate paths, hop count, intermediary PKs
Route-drop diagnosis (Implement visor restart from hypervisor #80) — the same hook makes the intermittent noise-handshake-deadline directly observable at the dial site rather than only in scattered logs.
Notes
Separate from the interstitial/status work already merged; this is the missing router-side seam those features want. Keep it a pure observability addition — no behavior change when the callback is unset.
Problem
pkg/routerDialOptionsexposes no per-hop / noise-handshake progress observer. A caller that dials a route can only see the terminal result (success / failure) — not the intermediate "found 2-hop path via X → establishing route group → noise handshake → up" progression.This came up building the streaming proxy interstitial (#4054): the chunked-streamed interstitial can only show a coarse per-attempt progress line + reload-on-success, because the granular route-setup narrative is not observable. The stream infra fabricates nothing — it surfaces only the signals that exist. The mux telemetry harness likewise only synthesizes coarse
RouteEstablished/failed events around its ownDialRoutes.Proposal
Add an optional
OnProgress func(RouteSetupEvent)callback toDialOptions(and the route-group/DialRoutespath), emitting structured events as setup proceeds:Opt-in, nil-safe (no callback = today's behavior), no data-plane cost.
Consumers this unblocks
Notes
Separate from the interstitial/status work already merged; this is the missing router-side seam those features want. Keep it a pure observability addition — no behavior change when the callback is unset.