Tracks follow-up work from #66.\n\nCurrent limitation:\n- performServerHandshake validation is permissive and does not require a fully usable Duplex transport\n- some raw protocol teardown paths model GOAWAY in memory without serialized frame behavior\n- worker and child-process fixtures can pass without true HTTP/2 handle cleanup and event-loop isolation\n\nAcceptance criteria:\n- validate handshake transports against the required Duplex capabilities\n- serialize, parse, and order GOAWAY and terminal stream events on raw transports\n- preserve lastStreamID parity and protocol validation across real frame paths\n- ensure worker and child-process termination releases HTTP/2 handles without synthetic shortcuts\n- add adversarial teardown regressions and keep current copied fixtures green\n\nParent tracker: #66
Bun parity: harden HTTP/2 handshake, GOAWAY, and teardown fidelity
#420Progress in 7b12502:
- GOAWAY is serialized as a connection-level frame with correct network byte order.
- inbound GOAWAY now materializes the peer last-stream ID.
- implicit GOAWAY uses the last peer-initiated stream ID while preserving explicit positive overrides.
- malformed stream and frame paths now produce protocol-correct GOAWAY or RST_STREAM behavior.
- server-push validation failures release never-announced stream state without sending an illegal RST_STREAM.
The final five-file HTTP/2 matrix is 329 pass / 6 upstream skips / 0 fail in both Debug and ReleaseFast. This issue remains open because its broader transport-capability validation, worker and child-process isolation, and adversarial teardown acceptance criteria are not all covered by this batch.
Sign in to comment on this issue.