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
WS-over-H3 Stage C (the carried relay wiring) built + verified end-to-end and
promoted. The WebSocket transport matrix is now H1 (RFC 6455, shipped) + H2
(RFC 8441, gated) + H3 (RFC 9220, gated newness). Off-by-default
(websocket.h3_extended_connect); when off the H3 front is byte-identical (R3).
WHAT LANDED (dependency-inversion via closure injection — the approved design):
- ws_tunnel.rs seam types + a WsRelayLauncher closure threaded
QuicListenerParams -> RouterParams -> ActorParams (mirrors config_factory).
- conn_actor pump_ws_tunnels: intercept a validated :protocol=websocket extended
CONNECT, build the bounded H3WsTunnel, call the injected launcher (dials the H1
backend + completes the upstream RFC 6455 handshake BEFORE the 200 — the H3
analog of the WS-H1 GHSA / WS-H2 F-S27-1 ordering, R12), then relay both
directions over the single-sourced lb_l7::ws_proxy::proxy_frames. Unknown
:protocol -> 501; no launcher -> 502 (fail closed).
- lb-l7 dial_backend_ws (keeps tokio-tungstenite out of the binary); lb
build_ws_h3_launcher injected in wire_h3_terminate_backends' H1 arm.
VERIFICATION (all from completed runs, R15):
- Binding ×3 gate GREEN: 1496 passed / 0 failed / 18 ignored per run (+8 WS-H3
e2e tests, no regression R3); clippy --all-targets --all-features -D warnings;
fmt clean.
- Real-binary e2e through spawn_quic: echo-roundtrip, reset-vs-EOF (CleanClose vs
Abrupt), 50× burst, R8 wired-tunnel backpressure (backend plateaus at ~63/512
under a stalled client + drains on resume — both directions bounded), 501, 502
(upstream-before-200), client-FIN-abnormal, no-launcher-fail-closed.
- RFC 9220 conformance: audit/websockets/s28-rfc9220-conformance.md.
- WS-H3 soak (sc8c_ws_h3) BOUNDED: 720s, ~600K echoes, 0 err, fds/RSS bounded,
no leak, panic=0.
- Scoped coverage 82.0% (>= 80% bar).
FINDINGS (R4, none asterisked): 2 confirmed-correct gateway behaviors (WS Text
UTF-8 enforcement; bare stream-FIN = abnormal close) + 1 LOW carried
(CF-S28-WSH3-WAKEUP: the 2ms busy-poll while a tunnel is live; bounded, not a leak).
REMAINS (S29): gRPC-over-H3 conformance (the program's LAST spec item). Own
workstreams: CF-S27-2 (WS-H2 window-aware backpressure; until it lands WS-H2 stays
gated), CF-QUICHE-UPGRADE, CF-DEP-1.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments