Umbrella: #66
Activate and fully port the byte-identical upstream HTTP/2 fetch cluster without narrowing its protocol, concurrency, malformed-frame, or lifetime coverage.
Primary sources:
js/web/fetch/fetch-http2-client.test.ts: 1,961 lines, SHA-2560e38b8aa88291dac7e6fbb6c0defaec7ef16c47d04faff5237212439d3482b48js/web/fetch/fetch-http2-adversarial.test.ts: 521 lines, SHA-256caac24d45dc5543f42145d42b3abfcc3714a9fa1eb4cb3a4a8aeba9f5e1fab5bjs/web/fetch/fetch-http2-leak.test.ts: 55 lines, SHA-256feb8db224773c700210c0c598f0f19e4f28876740cc9cc3cac77c36ba00e50e6- lifetime fixture: SHA-256
5e1cc55289df8188a0e2cab9927ad0f2dedf486ff51aac5293b012a74776711a - lifetime server: SHA-256
0e71d6893f6e61310f3a6eb812977adceccfd67ec1ed32ebf5abf521c6c4284b
Current exact Home baseline:
- client: 0 passed, 1 failed, 1 unsupported (
unsupported module syntax) - adversarial: 0 passed, 1 failed, 1 unsupported (
unsupported module syntax) - seven-scenario lifetime companion: hangs before reporting a result and must be interrupted
Required coverage includes:
- TLS ALPN and forced/disabled HTTP/2 protocol selection
- GET/POST and streaming request/response bodies
- pooled sessions, cold-start coalescing, keepalive, concurrency limits, and multiplexing
- flow control, WINDOW_UPDATE, frame sizing, and large bodies
- HPACK header decoding/encoding, cookies, trailers, and dynamic-table reset behavior
- RST_STREAM, REFUSED_STREAM retry limits, GOAWAY reconnection, abort isolation, and redirects
- informational responses, content-length validation, and response-on-headers timing
- malformed/unknown/padded frames, SETTINGS/PING violations, CONTINUATION floods, and header-token validation
- gzip and all seven ClientSession/Stream lifetime scenarios
Completion requires untouched upstream sources at their full registered counts with zero Home TODOs, failures, or unsupported cases; durable regression coverage; adjacent HTTP/1 and HTTP/3 checks; and the complete home_test gate.