ReviewOS

home-lang/home

Native Node HTTP/2: complete internal modules, binding controls and wire-state parity

#867
Open chris opened this 8 days ago ·
8 days ago

The complete initial HTTP/TLS ownership scope contains 893 unchanged original entries (892 ordinary files plus the isolated 4 GiB backpressure file). The ordinary run completed across two retained journals after a disk-guard stop and exposed 74 failing files. Native networking controls and the 81-test generator/ABI gate pass, but they do not establish full original Node HTTP/2 parity. This remains part of #66 and extends #533.

Required missing functionality includes complete internal/http2/core and internal/http2/util modules, native internalBinding("http2") control/state APIs, and the internal/deps/undici/undici dependency used by the HTTP/1 WebSocket upgrade fixture. These must be real implementations; aliases to incomplete shims, stubbed native buffers/state, or fixture rewrites do not complete this scope.

Representative failures: test-http2-binding.js, client-destroy/client-http1-server/client-socket-destroy, invalid-last-stream-id, info-headers-errors, util-asserts/util-headers-list/util-nghttp2error/util-update-options-buffer, and allow-http1-upgrade-ws. Additional original wire/state/error failures include priority/state accounting, extended CONNECT, HTTP/1 fallback headers, protocol/frame errors, unsolicited ping/settings ACKs, stream/session destruction, padding and flow control. The implementation and original failure records are being retained in the HTTP/TLS graph checkpoint; final-source execution may clear some of these and will be reported separately.

Completion requires every original assertion/deadline to remain intact, original failures to be retained, complete module/native ownership and wire behavior, and the entire unchanged scope to be validated. Skips/TODOs and platform/environment exclusions receive no passing credit.

8 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.

8 days ago

The next HTTP/2 batch implements actual settings/window bookkeeping rather than internal-binding aliases. Native flow credit is rebased as it is replenished, retains debt after stream initial-window reductions, and enforces bounded arithmetic. Connection-window updates remain separate from stream settings. Sent settings and their callbacks are retained in matching FIFO order; custom setting identifiers are encoded, retained and exposed as real numeric properties, with requested peer custom identifiers tracked. Graceful shutdown waits for outstanding settings acknowledgements, while transport failure/explicit destruction cancels pending callbacks.

The current native build passes 34/34 steps. Four source-level state tests, the ordered multi-update/custom-setting/repeated-transfer native regression, and nine unchanged original valid conformance files pass, including the previously failing test-http2-session-settings.js. Seven selected native regression groups pass; the generator/ABI gate is still running. Earlier callback/custom-setting/lifetime failures and build failures are retained. No original assertions, fixtures or case deadlines were rewritten. Verification for this batch covers valid exchanges and source-level defensive bounds, not adversarial wire reproduction. Full-suite, internal HTTP2/Undici, remaining wire/state, original conflicting assertions (#868), and platform/Release/ASAN parity remain incomplete under #66/#867. Source/evidence publication follows completed verification.

8 days ago

Source 94d3f471b and verified evidence are on main. This batch completes real settings/window state behavior: flow credit is bounded and rebased, negative stream credit survives settings reductions, and connection-window changes do not rewrite stream settings. Each submitted SETTINGS update retains a FIFO snapshot; valid ACKs and callbacks consume the matching update. Custom setting identifiers are encoded, retained and exposed as actual numeric properties, with requested peer custom identifiers filtered. Settings validation is staged before commit. Graceful close waits for outstanding settings work; explicit destroy/transport failure cancels callbacks.

Passing verification: nine unchanged original valid conformance files / nine process checks (zero failures, no skips/TODOs), seven selected native groups, four source-level state tests, and 81 ABI tests / 1,332 assertions. The native regression checks ordered updates, custom settings, independent connection windows and repeated complete transfers. The previously failing original test-http2-session-settings.js now passes. Debug 34/34, peak 5,659 MB under 8,192 MB; conformance peak 175 MB under 3,840 MB. Pickier, formatting/whitespace and documentation portability pass.

All 250 committed archives verify; all nine final reports restore and validate. Initial callback/custom-setting/lifetime failures, failed/superseded builds, archive-packaging failure and disk refusals are retained without passing credit. Verification covers valid exchanges and source-level defensive bounds; adversarial wire reproduction was not performed. This does not establish that the previous 893-entry or complete Bun suite passes, and its previous aggregate failures are not silently subtracted. Remaining internal HTTP2/Undici, wire/state/TLS behavior, conflicting original assertions (#868), and whole-suite/Release/ASAN/platform verification remain open under #66/#867.

8 days ago

Adapters/cluster/assert and abort propagation checkpoint (2026-10-10): source 9a78bf246 and verified evidence. Home owns 143 registry modules plus the test adapter, adding eighteen connected modules, NodeFetch/Undici factories and native event registration/dispatch/removal. 25/28 selected implementation/header files match the pin; three native sources implement propagation resistance with unchanged linked layouts. The original abort-listener process initially failed its mustCall check despite seven reported passing cases. Native registration-level resistance now clears that failure; once/removal/destruction cleanup and ordinary DOM propagation remain verified. 56 unchanged originals: 279 registered passes plus 31 process checks, zero failures, skips or TODOs. Eight native groups, final Home ABI 111 tests / 1,637 assertions and Debug 34/34 pass. Build peak 5,641 MB under 8,192 MB; ABI 403 MB, original runs 242/175 MB under 3,840 MB. 638 committed archives verify and 56 reports restore. Earlier process/manifest/compile failures and interrupted gates remain without final credit. This batch edits no fixtures/assertions/deadlines. Cluster SCHED_NONE remains #431; imported Node internal-Undici/HTTP2 remains #867. Remaining registry/native dependencies, complete suite and Release/ASAN/all-platform verification remain unfinished.

Sign in to comment on this issue.