ReviewOS

home-lang/home

Bun parity verification: reconcile contradictory HTTP/2 range error assertions

#868
Open chris opened this 9 days ago ·
9 days ago

Two unchanged fixtures at Bun pin 4982b91 require mutually exclusive ERR_OUT_OF_RANGE messages for the same HTTP/2 close-code validation. js/node/http2/node-http2.test.js (stream.close/request.close range cases, including req.close(2 ** 32) near line 2119) requires It must be >= 0 and <= 4294967295. js/node/test/parallel/test-http2-client-rststream-before-connect.js and test-http2-invalidargtypes-errors.js require It must be >= 0 && <= 4294967295 for the same call.

The common native range formatter produces the Bun form. Switching it to the Node spelling clears imported Node cases but fails two cases in the complete original Bun HTTP/2 suite (285 pass / 6 skip / 2 fail). The runtime will preserve the established Bun contract. No filename-sensitive messages, fixture-sensitive branches, test edits or passing credit for the incompatible assertions will be used.

This is a concrete verification conflict under #66/#867, not proof of full suite parity. Resolution needs an authoritative upstream expectation reconciliation while preserving the logical invalid-input behavior. Both original source hashes and failing executions are being retained in the HTTP/TLS ownership evidence.

9 days ago

Source b2ad7e9cb and verified evidence are on main. Home owns 112 explicit registry modules plus the internal test adapter, adding the complete 22-module HTTP/HTTPS/HTTP2/TLS graph from the pin. Native NodeHTTP and NodeTLS ownership is wired into the selected translation unit with exact header comparisons. Generation supports verified named-export namespaces and scoped Zig factories.

The original 10 MiB subprocess/HTTP/stdout pipeline exposed premature exit before queued nextTick stream work ran. The post-poll drain fixes it without a listener/timer workaround; the unchanged fixture validates the full payload. Real expose_gc aliasing, per-stream async context, stream byte accounting and write-completion ordering clear original parser-GC, async-local-storage, buffer-size and writable/drain failures.

Publication-source checks pass: 18 native groups; 81 ABI tests / 1,332 assertions; Debug 34/34 (5,660 MB peak under 8,192 MB); complete Bun HTTP2 file 287 pass / zero fail / six original skips. Pickier, scoped formatting/whitespace and documentation portability checks pass.

Full-scope verification remains incomplete: the latest combined audit of 893 unchanged original entries reports 709 registered passes + 752 process checks, two registered failures and 69 failing files. 13 skips, 20 TODOs and 22 skipped files receive no passing credit. Remaining internal HTTP2/core/util/Undici modules, binding controls and wire/state behavior are tracked in #867; TLS delivery/CA failures remain open in #532. #868 records mutually exclusive original range-error assertions for the same invalid close operation; Bun's existing message is preserved without filename-sensitive behavior or test edits. Paired pinned Bun and Node return the current bun.sh certificate without an OCSP URI, so that original live-certificate expectation is not credited or fabricated.

The unchanged single-buffer fixture allocates 4 GiB and documents substantial cloning. Its direct pinned Bun control passes at 12,288 MB, and the separate Home corpus coordinator passes at 12,303 MB under an isolated 12,800 MB ceiling with host-pressure protection retained. Ordinary files remain under 3,840 MB. Allocation, assertions and original case deadlines are unchanged. Lower-bound guard stops, disk refusals, incomplete journals, cache-rebuild failures and seven pre-existing fixture differences are retained.

All 11,376 committed archives verify; all 893 authoritative reports restore with their recorded validator outcomes, including failures. Source bytes remain unchanged across main integration. Full-suite and remaining ownership/pending/Release/ASAN/platform parity stay open under #66/#532/#533/#867/#868.

Sign in to comment on this issue.