Corpus location
- Position: 4133
- File:
js/web/fetch/fetch-http2-client.test.ts - First observed failure:
compress: gzip request body over h2 — small (shared-buffer fast path) 32768 - Symptom: the HTTP/2 server receives bytes that
zlib.gunzipSync() rejects with incorrect header check, so the compressed request body is not preserved end to end.
Required parity
- Preserve gzip-compressed request bytes across the HTTP/2 shared-buffer fast path (32 KiB).
- Preserve gzip-compressed request bytes across the streaming/spill path (600 KiB).
- Forward
Content-Encoding: gzip and the compressed Content-Length, not the original body length. - Ensure the server can decompress the body byte-for-byte back to the original payload.
- Keep HTTP/1.1 request compression and HTTP/2 response decompression behavior green.
- Surface transport/compression failures through structured errors with operation, codec, phase, cause, and composed stack context.
Completion gate
- Make the complete copied Bun corpus file pass, apart from explicit upstream todos if any.
- Add focused regression coverage and pin the file in the permanent HTTP/web mini-suite.
- Keep copied-corpus accounting and the project build green.
Parent tracker: #66
Predecessor: #354