ReviewOS

home-lang/home

HTTP/3: investigate intermittent initial upload stalls in Home and pinned Bun

#539
Closed chris opened this 9 days ago ·
9 days ago

Resolved verification boundary

Published 0fd884f59 on codex/runtime-port as Chris Breuer without coauthors; not merged to main. This is an evidence/documentation checkpoint with no runtime source change.

The intermittent first-upload sequence is a verified host-contention artifact, not a Home-specific HTTP/3 divergence. A serialized alternating run of the complete unchanged test/js/web/fetch/fetch-http3-adversarial.test.ts passed 12/12 Home processes and 12/12 pinned Bun processes. Every process reported 27/27 tests / 163 assertions under the original five-second case deadlines.

Three intentional eight-process waves then reproduced the historical failure shape in both binaries on the shared eleven-logical-CPU Darwin host: Home passed 11/12 processes and pinned Bun passed 5/12. Ordinary failures were 22 pass / 5 fail / 3 between-test errors, beginning with the first 64 KiB cases timing out at five seconds before later sizes recovered; one pinned Bun process reached 20 pass / 7 fail / 4 errors. An unrelated ReleaseFast Zig compile was simultaneously using one CPU and about 4.4 GiB, with other active system work. An lsof snapshot showed sixteen distinct UDP ports, excluding accidental socket/port sharing.

The verified correction is to serialize this heavyweight HTTP/3 corpus file and not overlap it with builds or other native corpus processes. No test deadline, workload, assertion, retry, sleep, protocol selection, skip, or fallback changed. The checked-in quic.c, quic.h, H3Client.zig, and all seven h3_client modules match pinned Bun source.

A UDP proxy that dropped the first client datagram also exercised retransmission in all four Home/Bun client-server directions. Thirty further Home/Home loss processes completed in about 0.25–0.28 seconds. One earlier cold diagnostic completed in 10.2 seconds; it is retained and not counted as a passing five-second corpus result.

Evidence: zig-out/h3-539-repro.json, h3-539-concurrent.json, h3-539-sockets.json, h3-539-sockets.lsof, h3-539-loss.json, per-process logs, and docs/docs/NATIVE_RUNTIME_BINDINGS.md. This closes the specific intermittent local verification observation. #530 remains open for Darwin integration, other platforms, and native dependency ownership; #66 remains open for whole-suite parity.

Historical observation

Earlier serial runs on the shared host alternated passes and first-upload failures in both published Home and pinned Bun. Passing retries did not erase those results. The controlled serialized/concurrent comparison above now explains and preserves that boundary without changing the upstream file.

Parent: #66. Related transport scope: #530.

9 days ago

Published fbdfbf890 on codex/runtime-port as Chris Breuer without coauthors; not merged to main.

The final TLS artifact’s initial complete HTTP/3 adversarial run failed 24 pass / 3 fail / 160 assertions, followed by three serial 27/27 / 163 replays. HTTP/3 client passed 52/52 / 241. These are passing retries, not a causal repair of the intermittent initial-upload stalls. The earlier Home and pinned Bun failures remain recorded; #539 stays open.

9 days ago

Published 0fd884f59 on codex/runtime-port as Chris Breuer without coauthors; not merged to main. No runtime source changed.

The unchanged adversarial file passes 12/12 serialized Home processes and 12/12 serialized pinned Bun processes, all 27/27 / 163 assertions. Three eight-way waves reproduce the historical first-64-KiB timeout sequence in both binaries: Home 11/12 process passes, pinned Bun 5/12, with sixteen unique UDP ports and concurrent host saturation. This verifies the environment correction requested by the issue: run heavyweight HTTP/3 corpus files serially and away from builds. Closing #539; #530 and #66 retain platform, integration, ownership, and whole-suite scope.

Sign in to comment on this issue.