ReviewOS

home-lang/home

Bun parity: remaining open items to reach 100% test-suite pass

#66
Open chris opened this 14 days ago · 1753 comments
14 days ago

Native Bake full-suite checkpoint: source ccecdcf9b and 1,185 Git-verified evidence artifacts. All 24 unchanged Bake files pass 177 cases with zero failures/zero skips and two original TODOs; native output, exact identities and source inventory validate. Genuine frozen Home locks replace the empty React marker. The suite budget preserves per-test deadlines; spawned fixture cwd and production source-map retrieval are repaired. Canonical graph identities fix changed-dependency path aliases. Coordinator controls retain 29 complete journals; development/HMR/production pass. The fresh 157-file regression has 396 passing cases, 142 process checks, zero failures, 37 case skips and three file skips. Build, validators, ABI, lint and corpus integrity pass. The initial 175-pass/two-failure run remains retained. #902 is complete for this tranche; #901 keeps optimized native/platform gates and #564 keeps Linux TODO coverage. TODOs/skips receive zero pass credit. The full Bun feature/suite/all-platform objective remains open.

Tracking issue for the remaining work to reach 100% parity with Bun's official test suite (~/Code/bun; current native artifact source SHA 4982b91e3702094330f3be3883354c52b8c01323, original historical pin fd0b6f1a27), runnable here via home test. Each item has the root cause traced during investigation. We tackle them top-to-bottom; check off as landed (small fix:/feat: commits, pushed).

Current main checkpoint (2026-10-13)

Native console methods, buffered replay and cleared-realm lifetime (2026-10-13) landed in source 56df99d7f, merged integration be4364972, and verified evidence de6aea239. Canonical SDK records provide count/reset, typed timeLog/timeEnd and per-session buffered replay with actual stacks/timestamps. Owner attachment differs from VM console state; Runtime.disable suppresses notifications while preserving connected state. groupEnd/clear arguments match the native contract. Clearing the buffer and remote group now retires idle realm injected-script roots; actual still-bound handles, pending calls and paused debugger state prevent retirement. Unrelated object handles and an in-flight async call remain usable. Last frontend detach retires injected-script state, and the non-owning console registry retires across finalization threads. Both source and merged builds pass 56/56 steps; fresh merged validation passes all nine focused commands, six broad drivers, 33 native groups, seven Node/seven Home realm controls, 14 ABI tests/453 assertions and 32 report-validator tests. All 64 report outcomes match expected counts/errors/exits, including twelve negatives. Twenty unchanged originals retain 53 passed cases, one unchanged unsupported-method expectation failure and 17 passed process checks, with zero skips/TODO/filter/retries; #886 receives no pass credit. Failed Node oracle assumptions, the Home post-clear lifetime failure and resource stops remain immutable; temporary tracing is removed. Full schema, independent remote-object/session ownership, evaluated-realm retirement outside explicit console clearing, module/export/callback/owner-shutdown acceptance and full suite/platform validation remain open under #888/#428/#885/#66.

Native profiler sharing at 5cd57e8ea with verified evidence: CLI and inspector owners consume actual JSC samples through detached native records, preserving CLI JSON/Markdown history and independent repeated session windows. Shortest active owner interval is selected; session stop/disconnect preserves CLI profiling and active-session process exit exports successfully. Debug 56/56, all 28 native groups, 14 ABI controls/453 assertions and 32 report-validator controls pass. Twenty unchanged originals retain 53 passed cases, one failed unsupported Runtime.evaluate expectation and 17 process checks; no skips/TODO/filter/retries and no #886 pass credit. Evidence preserves the first inlined-workload assertion failure and 64 replayed report outcomes including 12 negatives; earlier eight resource stops remain in investigation evidence. Full Bun parity, complete realms, worker-to-main inspector attachment, coverage, precise cadence measurement, all ownership schedules, Release/ASAN/all-platform remain open under #428/#66.

Historical publication checkpoint (2026-09-20)

Native phase/context work landed in 64481fe09 with evidence publication b83c54f4d. Vendor checkout and install/build became separately verified phases, with revision checks before hooks and live remap/Docker settings carried into children. The build passed 23/23 steps and 21/21 harness tests, plus launcher, service/lifetime and validator controls. Fresh pinned Elysia setup matched all 283 expected source hashes; all 129 selected original files completed once with 1,516 registered passes, zero failures/skips/TODOs, retaining the one original WebSocket exclusion. This checkpoint did not claim complete primary execution, Linux Docker verification, or full parity. Boundary and API · Evidence

Previous publication / remaining work (2026-09-08)

Full logical Bun parity remains incomplete. Published to origin/main: native service/preparation source a2e2863fc, verified evidence c9fc9bf63. Home SHA256 91d6b1024f9d4c02c6b7f9089b476d8a0646294f4ed7392e5e3ce549e52db763.

Native service lifetime and explicit vendor preparation are implemented. home test --bun-corpus-remap launches the original installed remap service with its original arguments and 5,000 ms startup deadline, drains output throughout its lifetime, and owns shutdown until parent stdin closes or the service exits unexpectedly. home test --bun-corpus-prepare-vendor elysia selects and journals clone/fetch/checkout/revision/install/build, retains separate Git/Home executable identities, and preserves the original 180-second Git/install and 60-second build deadlines. A failed install leaves build visibly unstarted. These operations earn zero registered-case or passing-process credit.

23/23 native build steps and 21/21 harness tests pass, along with four service lifetime units, four journal units, 18 validator controls and five private CLI controls. The private CLI evidence retains invalid readiness, the five-second deadline after output EOF, unexpected service exit with parent stdin open, install failure and build failure. The real pinned remap service passes five HTTP protocol checks through the native command, with complete captures and unchanged dependency hashes. Fresh native Elysia preparation completes all seven steps in 49.8 seconds; its 283 resulting source hashes match the earlier independently verified setup/lockfile normalization. Formatting, targeted Pickier and 50 pinned setup-input checks pass.

The latest complete Elysia run is not green: all 129 selected files complete once with 1,515 registered passes, one failure, zero skips/TODOs. handle distinct union in test/validator/response.test.ts calls .listen(3000); the unrelated PredictHQ development server (PID 28404 at diagnosis) owns that port. Pinned Bun fails the same unchanged case in a separate one-file diagnostic (27 passes, one failure). The listener and original tests were not changed, and no retry or alternate port was used to obtain a pass. Both full-run source integrity and the original selection match. The original WebSocket exclusion remains separate. The first diagnostic verifier expected the same error literal; a separate retained-capture analysis confirms the conflict without rerunning either runtime. A private error-object comparison additionally found message/errno/address/port differences, now tracked in #726; Home's existing preservation of real OS failures must be retained while auditing compatibility.

572 committed compressed artifacts have verified decompressed hashes. Restored journals reproduce successful service/preparation, failed private controls, the failed complete Elysia run and failed pinned-Bun diagnostic separately. The first build was stopped below the unchanged 1 GB critical disk floor after macOS allocated more swap; verification did not run. A cleanup preflight and refused admission are retained too. Corrected cleanup preserved protected binaries and linked native inputs; the completed rebuild required 5 GB free to start. Removed 6,083,408,581 logical bytes of generated caches/dependencies, old vendor data and unused build outputs. Source and other active work are preserved.

Still open: connect these operations with the original CI ordering and selection gates, Docker coordination, live service settings and default unified coordinator (#724); free the original fixed-port prerequisite before claiming a successful new Elysia run; resolve the missing optional legacy DuckDB and earlier lifecycle failures (#725); audit bind-error compatibility (#726); execute the whole applicable primary/vendor suite and finish remaining runtime features, native Linux/Windows/ASAN verification and independent native ownership. Earlier root/test setup process success and the separate 18-case N-API DuckDB run remain evidence on their recorded earlier binary; they are not new execution on this one.

API and scope · Native service/preparation evidence · Earlier native setup evidence

Earlier prepared Elysia execution checkpoint

Published to origin/main: implementation 9d6815afa, evidence 176f685f7. Home SHA256 19e41223c7fc2d2dcda763470fcc84570900db08b4d547340bdae5286d42bc98.

Complete pinned-selected Elysia execution: 129/129 files completed, 1,516 registered cases passed, zero failed, zero registered skips, zero TODOs. The run used no positional filter or start/limit and one attempt with original per-file deadlines. The selection matches pinned Bun exactly, including the separately recorded original ws/connection.test.ts exclusion; that excluded file earns no passing or skipped-case credit. All 129 captures reached EOF. Raw output and JUnit hashes, registered cases, selection completeness, all 283 post-install vendor source hashes and the Home executable hash validate.

The production home test --bun-corpus-prepared-vendor elysia command verifies Git HEAD against the manifest tag and executes each selected vendor file in its own project's cwd with ordinary config discovery, forced vendor test mode, correct validation paths and serial environment. Ordinary failures remain recorded and later files continue. This command explicitly requires prior checkout/install/build and journals setup_performed: false. The preceding Home 716f39bd… build performed the independently verified native install/build; the new 19e41223… build executed the suite. This is not a fresh end-to-end CI setup claim.

23/23 build steps, 17/17 native harness tests and 11/11 validator controls pass. Private controls exercise project config, custom test paths/extensions, serial environment and a real assertion failure followed by a successful file. Targeted Pickier and whitespace checks pass. 409 committed compressed artifacts have verified decompressed hashes; restoring the archived reports reproduces all 129 complete outcomes and 1,516 passing cases. Cleanup removed another 371,467,160 bytes of obsolete owned generated objects, preserving source work.

API and verification boundary · Complete execution evidence

Earlier outcome and lifetime batch at 61670c72b (#722/#723): 23/23 build steps and 12/12 native corpus harness tests pass, plus 2 child-ownership units, 3 journal units, 9 validator units and targeted Pickier. The original per-file deadline now covers a child that stays alive after both output pipes reach EOF. Actual libc close through Home FFI reproduced the pre-fix 30-second supervisor failure; the corrected native runner times out at the unchanged 20-second Node deadline and preserves early successful exit. Child status remains unreaped until final cleanup. The wait helper also cross-compiles for x86_64 Linux/musl and Windows/GNU; native Linux/Windows execution remains unverified, so #723 stays open for that work. Schema 2 records verified stream completeness; legacy schema 1 remains readable with completeness marked unknown.

That earlier six-file original batch validates with 402 passing cases, 1 original platform skip, 10 TODOs, one successful Node script, one verified expected-failure process check and one comment-only file. All six captures reached EOF. The original negative fixture retains its one-failure JUnit case and contributes no passing test credit. Every selected original source/snapshot hash and the executable identity remain unchanged. Private controls verify mixed outcomes, invalid negative contracts, overwrite refusal, both open-pipe and actual closed-pipe timeouts, SIGTERM, interruption, and failed writes. Original failures and first unsuccessful controls remain retained. Final evidence; baseline and remaining scope.

#724 remains the full-suite prerequisite: selection/API and Elysia setup are now verified as described above; native host discovery, complete root/test installation and registry/service setup, vendor execution, and complete applicable-suite outcomes remain unfinished. The pre-exclusion discovery inventory alone is not the complete CI suite. Excluded, skipped, TODO, unstarted and unsupported files never count as passing implementation coverage.

Previous native launch batch (#703): 23/23 native/harness build steps and 9/9 harness tests pass. Five focused units pass. All 19,016 launch-rule selections match pinned Bun over 4,754 discovered files and four CI/local/ASAN contexts; these are rule comparisons, not passing corpus files. Production capture now applies original ordinary/integration/Node/script deadlines, CI GC/integrity/transpiler-cache settings, validation-list rules, fresh per-file storage and real Home command aliases. Real cache/child/cleanup regressions verify the corrected allocation ownership and initially empty install cache. Launch baseline, 64 final artifacts.

Prior grouped launch verification: seven native private regression files pass. Unique selected original cases are Home 71 pass / 1 fail; pinned Bun 72 pass: HTML 45, link/binlink 11, audit 16. Two additional original Node files complete real process checks, and one original comment-only file contributes no passing cases. All selected original sources and snapshots remain unchanged. The generated fresh-cache control passes in both runtimes. The first build's three allocator crashes and Home-only cache-control failure are retained, with their fixes independently verified.

#721 retains the one failing original audit snapshot assertion. Audit remains Home 15/16 versus pinned Bun 16/16. The only differing line expects express › connect › csurf › csrf › uid-safe › base64-url. Its pinned fixture resolves that UID package to csrf/uid-safe@2.1.4, which depends on random-bytes and has no base64-url edge. Home reports the actual express › connect › express-session › uid-safe@2.0.0 › base64-url@1.2.1 path. No nonexistent edge or passing assertion was fabricated. #720/#721 remain open; native protocol/authentication, exact production reachability, affected-version/workspace paths, cycles and lock preservation are covered by the passing native audit regression.

#722 retains the remaining full-inventory execution and outcome-verification requirement, following the verified storage/JUnit/skip/TODO implementation above. The inventory contains 4,754 pre-exclusion entries (1,863 test-runner entries and 2,891 scripts); a completed full-suite execution is still missing. Synthetic corpus rewriting/bootstrap fallback is removed. Full integration/vendor/service setup, native ASAN and other platforms, default CLI fallback removal, and independent native build ownership remain open under #703/#709/#202.

Previous patch checkpoint a4b73596f passed 58 original cases per runtime (link 4, native-binlink 7, patch 29, install-patch 18), six private files, and build 46/46; evidence. #719 is complete for native patch activation and tested lifecycles. The original patch aggregate was not rerun for this launch batch; all six older private files plus audit were. #718 bin ownership is fixed on macOS, with native Windows filesystem verification still open. #717 remains complete for the tested native link lifecycle.

Previous package milestones #713/#714/#715/#716 remain verified and closed: local dependency identity/deduplication, long-prerelease frozen lock equality, native update/outdated and cache-freshness regression. The preceding selected original update/outdated/interactive/semver batch passes 78 cases per runtime, excluding filtered-out cases. Create entrypoints and required native parser restoration are verified. #190 self-upgrade and #710 fixture validity are now closed; #438 JSX failures and #701/#694 unexplained deadline failures remain open.

Current compressed build/test artifacts are committed under docs/docs/bun-port-evidence/. Generated fixtures and aged compiler cache data were cleaned after preserving evidence; source changes and installed binaries were retained. Earlier raw logs lost when the previous worktree disappeared are not claimed retained; their committed summaries/hashes remain historical evidence.

Earlier checkpoints

Earlier verified checkpoint: 1cbac2921, with implementation e1a5d0e20 and scanner correction 6448d628a, all pushed to origin/main. #702 is complete for native HTML activation and removal of fabricated FormData child output/RSS. 100% logical Bun parity remains incomplete.

  • Ordinary and single-native-VM HTML directory routes each pass 145 tests / one original Linux-only skip / zero failures. The native aggregate's 530 assertions match pinned Bun. Home's real 100-iteration file-error child measures 1.78 MB growth, within the unchanged 10 MB limit. Build 46/46; focused harness 23/23 steps / 3/3 tests, with independent registration metadata.
  • Adjacent routes pass: Blob 65/65, body/stream 9,467 passes / four upstream skips, Headers/Response 170/170, Request 24/24, bootstrap FormData 5/5, microtasks 2/2. #701 remains unexplained and open; a passing run is not a repair. #694 remains open.
  • #703 is the next broad migration. Exact routing predicates show 175 native test-runner paths, 266 native scripts and 4,267 bootstrap paths among Home's 4,708 classifications. Exact pinned CI discovery selects 4,754 tracked paths before exclusions, exposing 78 missing and 32 extra Home entries, plus mode/config differences. These are inventory counts, not suite passes. The audit command and full path sets are now published in the repository.
  • The native triage scanner no longer extends original test deadlines or retries timeout-only failures as slow. Its negative control retains one attempt and a failure. It remains a triage tool, not the complete acceptance gate; discovery and full outcome preservation remain in #703.
  • Pinned-object integrity remains 12,990 identical regular files, five raw-identical symlinks, zero missing paths and zero mode differences, with only historical expectations metadata different. Remaining substitutes, faithful full-suite execution, other platforms and independent native build ownership remain unfinished under #202/#703. Logs: zig-out/bun-port-702/; verified Home SHA-256 4a937ded48d609b76e336fdc192dd96439653a228073a234aaafcba176a5e783.

Previous Blob publication: f491cacd7 closed #700 with 65 native passes, preserved the original allocation/prototype/ownership workloads and four snapshots, and removed UTF-16 child and array-prototype descriptor substitutes.

Previous body/stream publication: 04644b2d0 closed #699 with 9,467 native passes and four original skips, removed three clone-specific substitutes, and retained the full HTTP/3 matrix and child/GC workloads. Its adjacent Request run exposed the original 5-second deadline failure now tracked in #701; subsequent diagnostic passes were not counted as a repair.

Previous Headers/Response publication: 649c3c48f closed #698 with 170 native passes, corrected mirror cwd/startup environment and absolute-path CLI rewriting, and preserved the original Response snapshot. Its build passes 46/46 and focused harness 6/6; the initial 4/5 run exposed the additional CLI root defect and remains recorded as historical evidence.

Previous Request publication: 5e45c58a3 closed #697 for native Request activation and removed unused bootstrap VM initialization from native corpus dispatch. Its complete four-file matrix passes 24/24. Direct native stress peak footprints were 22,594,376 bytes for clone stress and 194,872,232 bytes for method-allocation stress; original loops and limits remain intact. The older bootstrap implementation is not claimed repaired.

Previous paired repair: e148e06c1, published to origin/main. #695 and #696 are fixed: complete TypeScript conformance is 1,419/1,419; both optimized Bake integration scripts and gzip decoding with both libdeflate settings pass. 100% logical Bun parity remains incomplete.

The preceding main commit 2129e4a82 enters the macOS WebView host before CLI/JSC initialization and restores native execution of the shell and both complete WebView matrices. All three remaining whole-file TODO substitutions and their helper are removed. #693 is complete for that integration.

  • Unchanged pinned WebKit: 57 pass / 1 upstream TODO / 0 fail / 141 assertions. Shell: 378 pass / 83 upstream TODOs / 0 fail / 1,035 assertions.
  • Four ordinary native corpus routes: 487 pass / 89 upstream TODOs / 0 fail / 0 unsupported registrations. Chrome WebSocket contributes zero passes and five upstream TODOs, not implemented coverage.
  • The first strict Chrome run still fails its original first-navigation deadline (51 pass / 1 fail); pinned Bun passes 52/52. Later probes and a full Home run pass but do not erase that failure: #694 remains open. No retry, warm-up, sleep, timeout extension, assertion change, or workload reduction was added.
  • Optimized native build: 46/46 steps. Earlier feature-flag units: 6/6 with defaults and in each explicit 0/1 fresh-process run; unit build 23/23 steps. Both complete Bake production/development integration scripts pass; absent/0/false opt-in is correctly rejected. Unchanged gzip/fetch is 24/24 / 43 assertions with each libdeflate setting.
  • Nested-rest checker regressions: 4/4; complete TypeScript conformance 1,419/1,419; standalone reproduction exits zero. The original regression now requires zero diagnostics, and new negatives retain element-type and tuple-order errors.
  • Earlier source-restoration regression: 1 pass, zero logged errors/leaks. Earlier completed native runtime units: 1,826 pass / 19 skip / 0 fail; that entire unit artifact was not rerun for the latest paired repair.
  • The earlier optimized aggregate was interrupted (exit 143) and is still incomplete. Its nested-rest and Bake/feature-flag failures are repaired and verified separately above (#695, #696); no completed aggregate or whole-suite pass is claimed. The default Debug aggregate was not established by that run.
  • The earlier bootstrap Request stress test reached 13.7 GB sampled footprint / 14.4 GB peak and was stopped. Its obsolete execution path is replaced by verified native coverage in #697 above; the bootstrap shim used by other adapters is not claimed repaired. The earlier full aggregate was not resumed, and no completed corpus aggregate or whole-suite pass count is claimed.
  • Pinned Bun 4982b91e3702094330f3be3883354c52b8c01323: 12,996 tracked paths present; 12,990 identical regular files, five identical symlinks, one differing expectations.txt, zero missing. The expectation delta removes four historical FAIL entries; executable test sources are unchanged.
  • Changed-file formatting, documentation Pickier and whitespace checks pass. Repository Pickier retains 59,302 findings (31,238 errors / 28,064 warnings). The README's Settlers checkout is absent. External Bun C++ build artifacts, other adapters (#202), upstream TODOs/skips, other platforms and full source/build ownership remain unfinished.

Publication correction: all 18 commit URLs in this issue's historical body were verified as ancestors of main at this checkpoint. Historical statements below saying those commits were not merged describe their original publication state and are superseded by this audit.

How to run / verify

  • Native debug build: zig build debug -Denable_jsc=true -j2 --summary all from the Home repository. External native dependencies and ownership limits are documented in docs/docs/NATIVE_RUNTIME_BINDINGS.md.
  • Native regression: HOME_NATIVE_VM=1 ./zig-out/bin/home-debug tests/runtime/native-worker-inbox-shutdown.test.mjs (substitute the desired regression file).
  • Strict native corpus: HOME_NATIVE_VM=1 HOME_CORPUS_FULL_VM=1 ./zig-out/bin/home-debug test <corpus-file>; both overrides are required to bypass the pragmatic corpus adapter.
  • Outer corpus CLI: unset HOME_NATIVE_VM and HOME_CORPUS_FULL_VM; any nonempty value, including 0, enables those overrides. Keep native execution and the pragmatic adapter's results separate.
  • Use bounded subprocesses and per-child timeouts; limit concurrency to 2–3 small fixtures. Clean only owned temporary artifacts. Do not use blanket pkill commands.
  • Leak measurements must retain their original workloads and thresholds; Debug and ReleaseSafe results are not interchangeable.
  • Skips, disabled bodies, timeouts, unsupported cases, external dependencies, and failing negative controls do not count as completed parity.

Historical publication checkpoints (through 2026-08-28)

  • Published HTTP/3 verification-isolation checkpoint: 0fd884f59, pushed on codex/runtime-port, not merged to main. #539 is closed after a controlled environment correction: the complete 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 same first-64-KiB deadline sequence in both binaries (Home 11/12 process passes; pinned Bun 5/12) while all sixteen UDP ports are distinct and the shared eleven-CPU host is saturated by native tests, a ReleaseFast build, and system work. No runtime source, test deadline, workload, retry, sleep, skip, or protocol fallback changed. Heavy HTTP/3 files must be verified serially and away from builds. #530 retains platform/integration and native dependency ownership; all other explicit suite gaps remain. 100% logical Bun parity is not achieved.
  • Previous native TLS SNI/ALPN checkpoint: a9a95f6a4, pushed on codex/runtime-port, not merged to main. #542 now ports per-connection synchronous/asynchronous SNICallback, pending-certificate resumption, original callback error propagation, same-host precedence, offered-protocol ALPNCallback validation, callback-safe teardown, and ALPN selector handoff across SNI contexts. The complete unchanged server file is 38/38 / 147 assertions, exactly matching pinned Bun. The new combined lifecycle regression passes 20/20 independent processes plus VM destruction. The seven-file TLS sweep is 120 pass / 1 skip / 3 TODO / 2 fail / 380 assertions; both failures are live bun.sh OCSP checks reproduced in pinned Bun. Build 17/17; units 1,828 pass / 19 skip / 0 fail (19/19 steps); sequential regressions 63/63, including full spawn and child-process. Home's vendored C source compiles with reconstructed pinned release flags, while the debug build still links the pinned Bun object. Darwin only; #530 platform/integration, other open subsystems, skipped/TODO behavior, dependency ownership and whole-suite parity remain incomplete. 100% logical Bun parity is not achieved.
  • Previous native TLS session/keylog checkpoint: 04569d8f9, pushed on codex/runtime-port, not merged to main. #543 replaces the no-op native dispatch with retained FIFO session/keylog delivery for direct TCP TLS and upgraded Duplex TLS, preserving session-before-data ordering across destructive callbacks. The complete unchanged connect file is now 28 pass / 2 fail / 1 skip / 106 assertions, exactly matching pinned Bun; both remaining live OCSP assertions also fail in Bun. The native lifetime/GC regression passes 20/20 independent processes. Build 17/17; units 1,828 pass / 19 skip / 0 fail (19/19 steps); sequential regressions 62/62, including 31 native files. Adjacent TLS is 47 pass / 2 skip / 7 fail / 424 assertions; all seven failures are SNI/ALPN work in #542, now next. The checked-in Home uSockets source has the logical queue implementation and compiles with the linked release object's exact flags, but the debug build still links that pinned Bun object. Darwin only; platform/integration, skipped/TODO behavior, native dependency ownership and full parity remain incomplete. Whole-suite parity is not achieved.
  • Previous native TLS context checkpoint: fbdfbf890, pushed on codex/runtime-port, not merged to main. #532 now provides private contexts/CA isolation, binary PFX, detailed certificate chains, hostname authorization and TLS min/max propagation. Six unchanged core files pass; context 7/7, cache 9/9, cert 28 pass / 3 TODO, hostname 5/5. Native normal/destruction and original leak checks pass. Native build 17/17; runtime units 1,828 pass / 19 skip / 0 fail, 19/19 steps; sequential regressions 61/61, including 30 native files. Complete compression 32/32, HTTP/2 client 60/60, HTTP/3 client 52/52, both proxy files, full body-stream 9,086/9,086 / 135,984 assertions, five EOF/fetch files and both abort files pass. The initial HTTP/3 adversarial run failed 24 pass / 3 fail / 160 assertions, followed by three 27/27 / 163 serial replays. #539 remains unresolved; passing retries do not erase the final artifact’s initial failure or prior Home/Bun failures. 249 TLS sources, 48 HTTP/regression sources, and 13 TLS implementations match the pin. Full TLS server/connect files still fail: #542 tracks SNI/ALPN callbacks, #543 session/keylog delivery; two live certificate assertions also fail in pinned Bun. Failed attempts and all skips/TODOs are retained. Darwin only; integration, platform and full ownership remain incomplete. Whole-suite parity is not achieved.
  • Previous compression/CONNECT checkpoint: 2c5df8cce, pushed on codex/runtime-port, not merged to main. #531 ports all four request-compression encodings and file/buffer ownership; #535 repairs CONNECT writer/envelope handling. Complete unchanged compression 32/32 / 78 assertions, HTTP/2 client 60/60 / 197, HTTP/3 client 52/52 / 241, and both proxy files pass against pinned controls. Full body-stream 9,086/9,086 / 135,984; build 17/17, units 1,827 pass / 19 skip / 0 fail (19/19 steps), regressions 60/60, including 29 native files; all five EOF/fetch and both abort files pass. HTTP/3 reliability remains unresolved in #539: initial adversarial failure, then three passing Home replays; failures also reproduce in published Home and pinned Bun. TLS context work remains #532. Forty-eight test/harness/fixture sources and eleven implementations match the pin. Failed attempts remain recorded. Darwin only; skips/TODOs, platform/integration and full source ownership remain incomplete. Whole-suite parity is not achieved.
  • Previous HTTP/2 checkpoint: fd239c3ac, pushed on codex/runtime-port, not merged to main. #533 now preserves the idle-session Host hash and rejects invalid response-name tokens while consuming complete HPACK blocks. Complete unchanged HTTP/2 adversarial 15/15 / 33 assertions (parent 13 pass / 2 fail); lifetime 7/7 / 21 assertions with original 200-request workloads. Full body-stream 9,086/9,086 / 135,984 assertions. Build 17/17, units 1,825 pass / 19 skips / 0 fail (19/19 steps), sequential regressions 59/59 including 28 native files. HTTP/2 client remains 58 pass / 2 fail / 2 errors; HTTP/3 client 50 pass / 2 fail, both compression #531. HTTP/3 adversarial retains 27/27. Newly exercised CONNECT-proxy crashes reproduce in both parent and candidate; pinned Bun passes both files, tracked separately in #535. TLS context work remains #532. Forty measured test/harness/fixture sources and six consulted implementations match the pin. Darwin only; platform/integration, skips/TODOs and full source ownership remain unverified. Whole-suite parity is incomplete.
  • Previous TLS/HTTP transport checkpoint: 29c196835, pushed on codex/runtime-port, not merged to main. TLS ABI offsets, HTTP/3 trust eligibility and duplex progress are repaired. Full unchanged body-stream 9,086/9,086 / 135,984 assertions; HTTP/3 adversarial 27/27; client 50 pass / 2 fail (compression #531). HTTP/2 client 58 pass / 2 fail / 2 errors (#531); adversarial 13 pass / 2 fail (#533 verification-host isolation/header validation). TLS server validation 16/16; remaining context/CA/version work is #532. Build 17/17, units 1,824 pass / 19 skips / 0 fail (19/19 steps), sequential regressions 58/58 (27 native files); full spawn 126 passes, child-process 32 passes. Five complete fetch files and both abort files retain their passes. 72 test/harness sources and six implementation sources match the pin. Earlier timeout and disk-exhaustion attempts are retained; complete sequential reruns pass with original workloads/deadlines. See #530 for detailed evidence. Shared Darwin checkout; platform/integration, skipped/TODO behavior and full ownership remain unverified. Whole-suite parity is incomplete.
  • Earlier body-abort checkpoint: fb161314a, pushed on codex/runtime-port, not merged to main. #529 ports terminal response-error settlement before upload cancellation; unchanged abort file 2/2 / 6 assertions (parent 1 pass / 1 fail), queued-abort 1/1, and native 24-scenario normal/destruction/reentry checks pass. Build 17/17; units 1,824 pass / 19 skips / 0 failures (19/19 steps); regressions 57/57 (26 native files); 64 measured upstream sources match the pin. Five body files pass, including clone 25/25 and body 346 passes / 4 skips; five fetch files retain their passes including gzip 24/24. At that earlier checkpoint, the full body-stream matrix was not green: parent 4,883 pass / 4,203 fail / 2 errors, candidate 4,883 pass / 4,203 fail / 10 errors, pinned Bun 9,086/9,086. #530 tracks the HTTP/3 server path: parent client/adversarial files are 6 pass / 46 fail and 5 pass / 22 fail; both clients fail against Home's server before its JS handler, both succeed against Bun's server. Original assertions/workloads/deadlines retained. Historical HTTP/3 completion claims below are corrected. Shared Darwin checkout; unrelated compiler edits excluded. Platform/integration, skips/TODOs and full source ownership remain unverified. Whole-suite parity is incomplete.
  • HTTP/installer checkpoint: 90ced0ed6, pushed on codex/runtime-port, not merged to main. #526 repairs buffered EOF completion and fragmented tar-format selection; native real-install, streaming-handshake, VM-destruction and three 404 transport controls pass. #527 advances unchanged fetch-gzip from 22/2 to 24/24 / 43 assertions, preserving the 1,025 MiB workload. #528 advances unchanged streaming-extract from 5/1 to 6/6 / 180 assertions, enforcing the pinned 2 GiB buffered limit against the original 2.25 GiB payload. Four further complete fetch files pass; full zlib retains 378 passes / 2 skips / 434 assertions. Retains bun-run 291/291, native hard-link-PATH bunx 33 pass / 1 Windows-only skip / 0 fail, workspaces 58/58, eval 33/33, tsconfig 6/6, resolver 39 pass / 2 skips / 1 TODO plus its spawned 9 pass / 1 TODO, and 21 config controls. Build 17/17; units 1,824 pass / 19 skips / 0 failures (19/19 steps); regressions 56/56 (25 native files); 46 measured upstream test sources match the exact pin. No upstream assertion/workload/deadline changes. #526–#528 retain platform/integration scope. Shared Darwin checkout; unrelated compiler edits excluded. Skips/TODOs, other platforms, integration and full source ownership remain unverified. Whole-suite parity is incomplete.
  • Resolver checkpoint: 9b3a5c1ad, pushed on codex/runtime-port, not merged to main. #525 ports canonical resolver diagnostics and fallible, retained installer initialization errors; readable-file dispatch now precedes cwd scanning. Unchanged tsconfig-override 6/6 / 17 assertions (parent 5/1), resolver 39 pass / 2 skips / 1 TODO / 0 fail / 59 assertions plus spawned file 9 passes / 1 TODO / 41 assertions (parent's unreadable-cwd failure resolved under the original 5,000 ms deadline). Native repeated-error and VM-destruction checks pass. Retains bun-run 291/291 / 416 assertions, native hard-link-PATH bunx 33 pass / 1 Windows-only skip / 0 fail / 161 assertions, workspaces 58/58 / 192 assertions, eval 33/33 / 70 assertions, and 21 config controls. Build 17/17; units 1,820 pass / 19 skips / 0 failures (19/19 steps); regressions 56/56 (25 native files); 37 sources match the exact pin. No upstream assertion/workload/deadline changes. #526 remains a reproduced failure: EOF-delimited registry 404s trigger a pending-task assertion in parent and final candidate; length-delimited controls pass. Other platforms, branch integration, skips/TODOs and full source ownership remain unverified. Shared Darwin checkout; unrelated compiler edits excluded. Whole-suite parity is incomplete.
  • CLI config checkpoint: 828ecc729, pushed on codex/runtime-port, not merged to main. #517 optional-config and entrypoint scanning now match all 21 pinned-control boundary cases; native normal/destruction regression passes and published parent fails the new assertion. Full unchanged bun-run 291/291 / 416 assertions, native hard-link-PATH bunx 33 pass / 1 Windows-only skip / 0 fail / 161 assertions, workspaces 58/58 / 192 assertions, and eval 33/33 / 70 assertions (declared React dependency installed by Home). Build 17/17; units 1,820 pass / 19 skip / 0 fail (19/19 steps); regression commands 56/56 (25 native files); 35 measured sources byte-identical to pin. No upstream assertion/workload/deadline changes. New #525 tracks the unchanged tsconfig-override failure: Home parent/candidate 5 pass / 1 fail, pinned Bun 6/6, due to auto-install 404 diagnostics. #517 now retains platform/integration and help-rendering verification. Shared Darwin checkout; unrelated compiler edits excluded. Skips/TODOs, other platforms and full source ownership remain unverified. Whole-suite parity is incomplete.
  • Native installer checkpoint: 3be72ca5b, pushed on codex/runtime-port, not merged to main. Native bunx and the real installer chain (#518) now resolve all three remaining bun-run failures: 291 pass / 0 fail / 416 assertions. Full unchanged bunx passes 33 tests / 1 Windows-only skip / 0 failures / 161 assertions with isolated PATH hard links named node/bun to the exact Home binary (no installed JS runtime delegation). Ordinary PATH remains 32/1/1 because of an installed claude binary; pinned Bun reproduces it. An earlier native symlink PATH run's old CLI-basename failure is separately recorded. Native registry credentials, actual installation, both analyzers, auto-install HTTP initialization and VM destruction checks pass; Angular's original 300,000 ms timeout is resolved without changing the deadline. Workspace suites 58/58 / 192 assertions; regression commands 56/56 (25 native files); build 17/17; units 1,820 pass / 19 skips / 0 failures (19/19 steps). All 33 measured upstream sources match the pin; generated test-tarball bytes are archived and restored. No assertion/workload/deadline changes. #508 now retains platform/integration scope; #517 optional-config scanning and #519 platform/integration verification remain open. Shared Darwin checkout; unrelated compiler edits excluded. Skips/TODOs and other platforms are unverified. Whole-suite parity is incomplete.
  • Compression checkpoint: 095f90396, pushed on codex/runtime-port, not merged to main. #516 ports Zlib/Brotli/Zstd async buffer pins, GC roots and fresh write-result resolution. The complete unchanged zlib file now passes 378 tests / 434 assertions, with 2 skips and 0 failures; bounds 9/9, reentrancy 3/3, native regression commands 55/55 (24 native files), and runtime units 1,819 pass / 19 skip / 0 fail. Twenty lifetime stress runs plus VM destruction pass. No upstream assertions/workloads/deadlines were changed. This supersedes the prior zlib failure linked from #513. Darwin only; #514's four remaining stream-file gaps, broader CLI/runtime gaps and whole-suite parity remain open.
  • The 65 previously local port commits through 6de9852ea8443c3b5d4a58dcdbcf11944456fd2e are now published on codex/runtime-port. Their original hashes were recovered from the existing local codex-git-shadow.git metadata; no replacement history or force push was used. They are published on the branch, not merged into main.
  • Worker checkpoints on the published branch: descendant shutdown 41f10cbebe6d65340304f4b93eb4fd3fa10d0e19 (#470), native parentPort 3b0721c32b2d237c38380900ed449217ef1af853 (#477), and snapshot cancellation c6a4e4a3513dfb2a05a13357c06f598ad9f1d6ce (#471). Not merged into main. Snapshot tasks carry IDs only; the parent thread owns promise handles and completed payloads through success, worker exit, and parent-VM shutdown.
  • Snapshot checkpoint: 20/20 native regression files, 16 byte-identical upstream Node fixtures, and native build/cache 16/16 pass. The six-scenario snapshot suite passes four complete runs, including two with VM destruction enabled. The unchanged upstream snapshot-GC test passes its full 15 × 300 = 4,500 snapshot workload (1 test / 15 assertions). No sanitizer claim.
  • Strict native MessagePort corpus: 15 pass / 3 existing debug-sanitizer guard skips / 0 fail / 529 assertions. Both native execution flags were set. Skips are not completed parity.
  • The full worker_threads corpus file is not green: at the snapshot checkpoint, 33 pass / 1 timeout / 1 between-test error, although its three snapshot cases pass. The test-name filter failure is now fixed in #481; the current filtered snapshot run is 3 pass / 31 filtered out / 0 fail. This does not resolve the full-file timeout. The unchanged 100 MiB eval-source case exceeds its original five-second deadline (#482); its standalone memory-threshold check passes in native debug in 20.22 s versus 2.20 s in Bun. Debug/optimized timing and the full-file deadline remain distinct from snapshot cancellation.
  • Native test CLI checkpoint 1340cebd5 (#481), published on codex/runtime-port, not merged into main: real argument and bunfig parsing, fatal diagnostics, and buffered/direct output semantics. Build/cache 16/16, all 20 native regression files, and 50 unchanged upstream tests / 119 assertions pass across filtering, configuration, retry/repeat hooks, concurrency, path ignores, and full coverage. The snapshot selection filters out 31 cases; they are not counted as passes. No tests or snapshots were weakened.
  • Newly exposed test-runner feature gaps: isolated global/module records #484 (1 pass / 3 fail, Bun control 4 pass) and parallel coordinator/worker IPC #485 (0 pass / 3 fail, Bun control 3 pass). Both retain their unmodified upstream reproducers and remain open. Other unverified CLI/runtime features are not implied complete by #481.
  • Remaining shutdown work: generic queued task cancellation #465 and work-pool quiescence #468. Snapshot request ownership #471, parent-port lifecycle #477, and descendant shutdown #470 are implemented and verified on the published branch, with integration context retained in their issues. Related ownership: #461, #462, #466, #469.
  • Other active parity gaps include the core corpus exclusions in #456, reduced-context realms in #454, and Node-API/FFI follow-ups #459 and #460. Historical checkbox sections below are not a current whole-suite completion report.
  • 100% logical Bun parity is not achieved.

A. node:tls socket layer

  • SNI/ALPN callback handling and asynchronous suspension — implemented in a9a95f6a4 (#542); the complete unchanged server file passes 38/38 / 147 assertions, matching pinned Bun.
  • Session/keylog events and teardown ordering — implemented in 04569d8f9 (#543); the complete unchanged connect file matches pinned Bun, with two live OCSP failures retained in both.
  • getCipher() cluster works — was a false diagnosis: the null cipher/session came from the broken (cert-less) handshake caused by the Buffer-cert gap, now fixed (b3492d3). Verified locally: getCipher {TLS_AES_128_GCM_SHA256, version:"TLSv1/SSLv3"} (matches pin test), getProtocol TLSv1.3, getSession 1106-byte Buffer, getEphemeralKeyInfo/getSharedSigalgs/exportKeyingMaterial/isSessionReused all correct. The pin test connects to bun.sh (crashes on this macOS 27 box) so it can't be run here, but the behavior is confirmed.
  • Detailed getPeerCertificate at the current pin — implemented in fbdfbf890 (#532): peer/trust-store issuer chains, self-issued roots, checked conversion and native reference ownership. Complete cert suite 28 passes / 3 TODO, original leak workload and memory threshold pass. The earlier claim that the detailed TODO matched the pin was historical and does not describe the current pin.
  • ALPN — fixed in 428aa2c (hand-mirror SSLConfig.fromJS never parsed ALPNProtocols).
  • Static SNI server.addContext() selection — the complete context suite and most-recent-context Node program now pass (#532). Dynamic SNI/ALPN callbacks and asynchronous handshake resumption remain #542.
  • Cert-chain verification — "unable to verify the first certificate" / "unable to get issuer certificate" on incomplete-chain + intermediate-CA scenarios (basic single-CA verify works).
  • Config validation — tls.createServer({passphrase: wrong}) should reject but listens; passphrase IS passed to us_ssl_ctx_from_options, so it's uws-level validation timing/error-surfacing.
  • getPeerCertificate '\0' handling (CVE-2009-2408 test).

B. Bun Shell ($)

  • Bun Shell template commands and command substitution — closed by #73. Basic template execution and the mixed-output/error command-substitution stress case run through real Home execution. Follow-up 31e2dc603 forwards explicit spawn environments and pins the installed Home executable for the fixture-free corpus path.

C. fetch / HTTP client

  • redirect + gzip — fixed in c508e00 (NativePromiseContext wiring; see below). fetch-gzip.test.ts 2/3 → 5/0.
  • streamed gzip with delay — fixed in c508e00 (same root).
  • body-stream.test.ts — full unchanged matrix passes 9,086/9,086 / 135,984 assertions at 2c5df8cce, including HTTP/3. Original workloads/deadlines preserved. Abort settlement remains green (2/2 plus queued 1/1, #529). This file-level result does not close HTTP/3 reliability/platform work in #530/#539.

D. HTTP/2 & HTTP/3

  • Native HTTP/2 completion — complete unchanged client 60/60 / 197, adversarial 15/15 / 33, lifetime 7/7 / 21 at 2c5df8cce (#531/#533). Earlier client compression failures are repaired. Platform/integration remain unverified; file-level passes do not establish complete HTTP/2 parity.
  • HTTP/3 — platform and integration verification, #530: 2c5df8cce brings client 52/52 / 241 and full body matrix 9,086/9,086 / 135,984. Request compression is implemented (#531). #539 is closed by 0fd884f59 as a verified host-contention artifact: serialized Home and pinned Bun each pass 12/12 processes, while intentional eight-way waves reproduce the same first-upload deadlines in both. Original tests/deadlines retained. Other platforms/integration remain unverified.

E. Deep/unported subsystems

  • napi-FFI cc.test.ts crash — resolved: exact upstream file is 5 pass / 10 upstream skips / 0 fail in Home; the extended mirrored file is 8 pass / 10 upstream skips / 0 fail. Pinned Bun at 4982b91e3 currently reports 4 pass / 10 skips / 1 fail on the upstream file because napi_main is not exported from the fixture compile.
  • S3Client remaining platform/external integration (#597) — deterministic native matrix is 66 pass / 3 upstream credential-gated skips / 0 fail in 5c2ac4542; the stream-cancel crash, task/body ownership, proxy resolution, early-response multipart reuse, malformed ListObjects parsing, and eight-file production routing are fixed. Linux/Windows and credentialed S3/R2 integration remain open.
  • Bake/HMR remaining optimized/platform verification (#901) — native production/development/HMR is functional (#551/#553/#555). The complete native suite checkpoint validates all 24 unchanged files (177 pass / 2 upstream TODO / 0 fail / 0 skip), genuine frozen locks, complete journal identities and original test deadlines (#902 closed). Spawned fixture cwd, production source maps and changed-path aliases are repaired. Debug ownership and release frontend checks pass; optimized runtime and wider platform/SDK acceptance remain open. #564 tracks Linux TODO coverage.
  • Worker corpus remaining platform/performance verification — e1523b1ee and eae013190 promote 16 exact native files: 264 pass / 3 upstream release-mode skips / 1 upstream TODO / 0 fail. The corpus runner applies its real preload and preserves sentinel path ownership. Web Worker messaging, transfer, structured clone, Blob, termination, leak, heap-snapshot GC, unchanged 15787.test.ts, and the complete worker-destruction matrix are green; #598 is closed after preserving cached exit code 0. The complete worker_threads.test.ts is green in ReleaseFast under #482 but retains its documented Debug-only five-second eval-source deadline gap. Linux/Windows verification, the upstream TODO/skips, and whole-suite worker parity remain open.

F. Memory-leak tests (triaged on ReleaseSafe 2026-07-07 — build target un-rotted in 55f7140)

  • setTimeout-clear-in-callback — ✅ FALSE ALARM: all 3 variants (clear/refresh/repeat) pass on ReleaseSafe; debug-build overhead as suspected.
  • text-decoder utf16le output-buffer leak — ✅ FALSE ALARM: both utf-16le and utf-16be pass on ReleaseSafe.
  • streams-leak — ✅ FALSE ALARM: passes on ReleaseSafe.
  • serve-body-leak — ✅ CLOSED (4ee746c): root cause was the libc mimalloc shim (allocator page retention, not a leak — see forensics comment). Real mimalloc re-attached (Phase 12.2); 7 pass / 0 fail on ReleaseSafe.
  • inspect-error-leak — ✅ CLOSED (4ff003d): ZigException.Holder.deinit was a stub that dropped the pin's deferred resetArena — every inspected error left one full transpile in the module loader arena (74MB/100k iters). Now passes with 'RSS increased by 4 MB', exactly real Bun's number.
  • node:util test-aborted gc-cleanup — ✅ CLOSED (d459e0d): FinalizationRegistry callbacks never fired AT ALL — JSCScheduler.zig was a no-op placeholder and the two event-loop exports were noop stubs, severing JSC's DeferredWorkTimer delivery chain. Pin's scheduler ported; test-aborted now 5/5 (gc-cleanup passes in 2.5ms).
  • (new) HTMLRewriter handler leak — reclassified, NOT a leak: all 58 lol_html_* symbols are noop stubs (lol-html Rust crate unported — link_bun_rust_archive = false); the child panics on the first .on() (else => unreachable on a garbage return at lolhtml_sys/lol_html.zig:253) and the test fails on stderr. Belongs with section E as an unported-library item: link lol_html_c_api (rlibs exist in the Bun build tree), delete the stubs, and restore the pin's HTMLString.toString free (lol_html.zig:623 — latent leak once real lolhtml links).

G. Environmental / infra (mostly resolved)

  • Test runner: home test defaults to native bun:test runner (078c659)
  • bun:internal-for-testing gated in release (13deb08)
  • node v24 + bun v1.3.14 installed via pantry (clears differential-spawn "node not found" failures)
  • Build recovery recipe after /tmp wipe (memory: home-build-portability.md)

Done this session (context)

signals (db0df4d), native-VM file runner (f296bb6), Worker cross-thread + teardown (dcb6db6, 85aba46), native test runner default (078c659), translateUVErrorToE (188268e), Bun.markdown renderer (2768d9a), MD4 (1279c18), Bun.CSRF (96b8f05), node:tls SecureContext ~40 tests (6cf4a6b), release build + build-recovery (dff7bfa, df83921, 13deb08).

Native isolation checkpoint — 6e092777a

Published on codex/runtime-port; not yet merged to main. #484 now passes the entire unchanged isolation file: 19 tests / 67 assertions, plus three consecutive repeat runs. The real JSC module-record bridge replaces the parked panic path. File-boundary cleanup releases watcher, server, timer, watch-file scheduler, and AbortSignal GC references; server callback protections are balanced across reload and destruction.

Verification: native build and unchanged cached rebuild 17/17; generator/ABI tests 8 tests / 135 assertions; all 20 native regression files pass, including expanded isolation probes. Fourteen selected unchanged upstream commands total 92 passing tests / 242 assertions, including the 50-test CLI regression set. Two platform skips and 231 filtered cases in those selections are not passes. The existing AbortSignal spawn-glyph-only check alone is not proof of child assertion execution; direct native lifecycle and timeout checks provide separate evidence. Workloads, deadlines, and upstream assertions were preserved. Full details and control limitations are in docs/docs/NATIVE_RUNTIME_BINDINGS.md.

Separate newly tracked failures: fake clocks #490 (16 pass / 14 fail, also reproduced before this checkpoint; Bun control 30 pass) and deferred imports #491 (0 pass / 1 fail / 19 filtered out in the selected parser reproduction). Parallel orchestration #485 and the full worker eval deadline #482 remain open. Installed Bun 1.3.14 fails four newer isolation cases itself, so no passing full-file Bun control is claimed. The full port and 100% logical Bun-suite compatibility are still incomplete.

Native fake-clock checkpoint — d0ed7c906

Committed and pushed on codex/runtime-port; not yet merged to main. #490 now passes the unchanged core fake-timer file: 30 tests / 83 assertions, up from 16 pass / 14 fail. Installed Bun 1.3.14 passes the same 30 / 83 control. Mockable timer deadlines now share the fake clock, fractional advancement retains nanoseconds, real option/getter validation runs before clock mutation, and both reset paths release timer/AbortSignal references outside the heap lock.

Verification:

  • Native build and cached rebuild: 17/17 steps.
  • All 21 native regression files pass; the new fake-clock test also passes three consecutive repeats and fails against the cached pre-change Home binary. It checks actual Home execution, inherited/throwing getters, Date/performance agreement, fractional nested callbacks, retained cancelled handles, natural exit and bounded GC counts after allocating 3,072 timeout/interval wrappers plus 1,536 AbortSignal timeouts across resets.
  • Entire unchanged fake-timer directory: 61 reported pass / 438 TODO / 0 fail / 115 assertions in Home and Bun. 14 reported passes are it.failing cases, not implemented features; all 438 TODOs are excluded from logical completion. There are 47 ordinary passing tests, including the core 30.
  • Unchanged isolation: 19 tests / 67 assertions. Unchanged timers/promises: 4 / 7. Twenty-four selected corpus files match the pinned Bun checkout byte-for-byte. Focused Pickier, timer-file Zig formatting and whitespace checks pass.

The wider Node timer file still hangs after printing 19 passes on its final caught-immediate-exception fixture. This happens in the pre-change Home binary too. The standalone fixture times out in both Home binaries and exits successfully in Bun; the original-checkout Bun control passes the full 20 / 31. Tracked separately in #493; neither incomplete runs nor expected failures count as logical parity.

Deferred imports #491, parallel coordinator/IPC #485, the full worker deadline #482, remaining native ownership, other platforms and full-suite parity remain open. The full port and 100% logical Bun-suite compatibility are not complete. See docs/docs/NATIVE_RUNTIME_BINDINGS.md for the implementation and verification boundary.

Native POSIX spawn checkpoint — 6d797186c

Published on codex/runtime-port; not yet merged to main. #493 is now implemented and verified. The timer fixture hung during import, before scheduling immediates: Node's common helper spawned a missing absolute openssl-cli, and Home misread libc's direct positive errno as success and watched PID 0. The fix propagates spawn and file-action/attribute setup errors, preserves executable paths, and releases failed registration lists. No immediate dispatch code was changed.

Verification: 28 selected commands pass, including all 21 native regression files, the unchanged complete Node timer file (20 tests / 31 assertions), its standalone fixture, isolation (19 / 67), core fake clocks (30 / 83), timers/promises (4 / 7), PATH selection (1 / 2) and the selected missing-command/invalid-fd cases (2 / 9; 32 filtered out excluded). Native build and cached rebuild 17/17; repeated native spawn failures preserve descriptor counts and recover to a valid spawn without re-entering user microtasks. Eight relevant upstream files are byte-identical to source pin 4982b91e3702094330f3be3883354c52b8c01323.

New linked follow-ups keep the failing boundaries explicit: extra stdio pipes #495, real native counter snapshots #496, and package-script passthrough #497. Full child-process remains 30 pass / 2 fail / 1 skip / 1 TODO / 70 assertions; spawnSync remains 4 pass / 1 fail / 1 platform skip / 11 assertions. Installed Bun 1.3.14 passes those three failing scenarios but fails the newer invalid-fd case itself. Deferred imports #491, parallel test orchestration #485, full worker timing #482 and the other open work remain. The full port and 100% logical Bun-suite compatibility are still incomplete.

14 days ago

HTTP/2 session socket lifecycle tranche completed in 820064e (fix(runtime): proxy HTTP2 session sockets). Client/server Http2Session.socket now exposes a guarded net.Socket proxy, delegates timeout/ref/unref, blocks direct stream manipulation with exact Node errors, preserves property forwarding and in behavior, tracks _handle.hasRef(), exposes inspectable timeout/list links, and invalidates captured proxies with ERR_HTTP2_SOCKET_UNBOUND after close. Promoted test-http2-socket-proxy.js and added test-http2-unbound-socket-proxy.js to the maintained tranche; removed two dangling timeout expectations for files absent from both Home and Bun. Verification: copied session/settings/socket tranche passed and cumulative bootstrap HTTP passed all 52 tests.

14 days ago

Remaining HTTP/2 internal utilities completed in 63078da (fix(runtime): complete HTTP2 internal utilities). NghttpError now accepts numeric nghttp2 codes, exposes exact errno/code/message behavior and Node-style toString(); the internal binding now exposes the shared 14-word optionsBuffer, and updateOptionsBuffer implements indexed values, lower bounds, retained state, and per-call flag recomputation. Promoted test-http2-util-asserts.js, test-http2-util-nghttp2error.js, and test-http2-util-update-options-buffer.js. Verification: focused logical contract passed, all five copied internal-util tests passed in their tranche, and cumulative bootstrap HTTP passed all 52 tests.

14 days ago

HTTP/2 parity update: local commits 9ab8f4f, 8bc047e, 896597646, and 9973276 promote 23 additional copied fixtures and fix the genuine AbortSignal, compat native-submission, shared close-validation, and SETTINGS event-order gaps. The primary unconditional test-http2-* expected-failure list is now empty. Verification is green for both affected focused tranches and the cumulative HTTP/HTTP2 suite at 52/52. Temporary runners and isolated global caches were deleted after verification; the 4.8 GB shared Zig cache was preserved because concurrent work is using it. All commits are authored and committed solely as Chris Breuer with no coauthors. Remaining HTTP/2 work is explicitly separate: diagnostics server-stream close, platform socket races, legacy parser/conformance cases, and broader wire fidelity for ALPN/TLS/WSS routing, real flow-control windows, perf counters, handshake validation, raw GOAWAY, and worker handle cleanup. Push/comment delivery had been blocked by local DNS; this comment is the retry.

14 days ago

Split the deeper HTTP/2 fidelity work into focused follow-ups: #420 for handshake, GOAWAY, and teardown fidelity; #421 for diagnostics and performance telemetry; #422 for real receive-window flow control and WINDOW_UPDATE; and #423 for wire-level TLS, ALPN, secure-session, HTTP/1 fallback, and WSS routing. These remain linked to this parent tracker while primary copied test-http2-* failures stay at zero.

14 days ago

Additional platform-metadata cleanup: local commit c47560f removes 17 stale conditional HTTP/2 expectations after byte-identical and logical-path audit. The two genuine Linux diagnostics failures remain until #421 lands. Native Windows local binding and fetch/gRPC teardown proof is intentionally tracked in #424 rather than represented as deterministic virtual-harness failures.

14 days ago

The legacy/adversarial HTTP/2 audit is now split into focused work: #425 for incremental invalid-padding parsing and padded DATA serialization, #426 for shared raw frame validation and the 23-test h2 conformance matrix, and #427 for the maintained full 287-case node-http2 compatibility matrix and conditional customSettings shape. All three current markers are genuine; the old h2-conformance comment about CONTINUATION flood/RST rate limiting was inaccurate and will be corrected with the implementation.

14 days ago

Broader parity audit update: local commit b5df451 removes stale logical markers for native-plugin and run-crash-handler plus the orphan test-inspector-enabled entry. Real integration debt remains explicit: native plugin execution is linked into #201, inspector lifecycle is #428, native crash-handler verification is #429, and the three genuine StreamWrap/ShutdownWrap failures are #430.

14 days ago

Platform integration cleanup: local commit d02642c removes three stale maintained logical-suite failures. Native follow-ups are #431 for Linux cluster shared handles, #432 for one authoritative Node compatibility version across bunx/process/children, and #433 for real Darwin FSWatcher/FSEvents resource growth. The ASAN watch crash and JSX create marker remain; JSX needs a maintained whole-file tranche before promotion.

14 days ago

HTTP/2 diagnostics #421 stage 1 is local commit 599d938. Normal stream Duplex branding, endpoint identity, lifecycle publications, and clean/error terminal semantics are implemented with focused 2/2 and cumulative 53/53 verification. Push-peer separation and body diagnostics remain in stage 2; no diagnostics failure marker has been prematurely removed.

14 days ago

The remaining Windows net/http failures are genuine and now split by root cause: #434 localAddress/localPort binding, #435 TCP reset identity and ordering, #436 half-close and HTTP teardown lifecycle, and #437 named-pipe error/listen/http reuse. Their existing expectations stay in place until direct awaited Windows tests pass; no false promotion was made.

14 days ago

HTTP/2 diagnostics stage 2 is complete locally in be0d241, followed by maintained expectation cleanup in 301e857. The implementation covers distinct push-stream peers, correct endpoint/session/ID/Duplex identity, reset and reservation cleanup, exactly-once lifecycle telemetry, exact bodyChunkSent shapes, and exactly-once bodySent including empty bodies.\n\nVerification: focused diagnostics 2/2 and all maintained bootstrap HTTP2 groups 31/31. The expectation manifest now has 18 FAIL, 14 SKIP, and 14 CRASH entries after removing eight stale HTTP2 hang skips, three orphan sequential skips, and three diagnostics failures. ASAN debt remains represented honestly. Work is now progressing through #425 incremental/padded DATA parsing and #426 frame validation, followed by #427 settings and lifecycle parity.

14 days ago

Split two additional root-cause tracks out of the umbrella so their acceptance gates stay explicit: #440 owns real ASAN instrumentation and honest retirement of the remaining sanitizer CRASH/SKIP markers; #441 owns strict invalid HTTP method parsing plus exactly-once pipeline terminal ordering. StreamWrap remains separate in #430.

14 days ago

#440 audit correction: ASAN debt is 39 expectation entries in total, not only the 14 CRASH and 13 SKIP entries previously highlighted; five TIMEOUT and seven LEAK entries also belong to the sanitizer program. Home's current sanitizer flag is inert, so #440 now requires a fail-closed ASAN native artifact lane, activation canaries, and per-fixture subprocess isolation before any of those markers can be retired.

14 days ago

HTTP/2 frame parsing/validation tranche completed locally in b11bb50, closing the implementation and test gates for #425 and #426 once push connectivity returns. Home now has a generic incremental padded DATA codec, zero-filled bounded MAX padding, a shared role/state-aware inbound frame validator, FIFO SETTINGS ACK application, receive-window enforcement, and behavior-based raw-vs-modeled transport selection without the old filename-specific conformance path.\n\nExact verification: focused codec 2/2; focused shared validator 2/2; unchanged h2-conformance 23/23; unchanged invalid-padding 7/7; combined exact selector green; cumulative bootstrap HTTP2 33/33. Both corresponding FAIL expectations were removed, leaving FAIL=16, SKIP=14, CRASH=14. Push is still blocked specifically by github.com DNS, while API issue updates remain available.

14 days ago

Partial #441 advance completed locally in 13c57be: Home now rejects lowercase HTTP method bytes immediately in its generic raw parser and vendored native scanner while preserving fragmented uppercase prefixes. Focused parser/lifecycle is 9/9 and adjacent maintained server-parser groups are green. The copied Bun fixture remains byte-identical and the stream-pipeline SKIP remains intentionally present until full pipeline terminal ordering is implemented and the unchanged whole file passes. Push for b11bb50 and 13c57be is still blocked by github.com DNS.

14 days ago

Bun parity progress: completed the first #427 slice locally in db471dae40bf9f205f34f348b9b216fb4917770c. HTTP/2 remote settings now have Bun-compatible default shape and receiver-side custom-setting filtering across modeled, post-connect, and raw-wire paths. Focused contracts pass 2/2 (3 internal cases) and the cumulative Home bootstrap HTTP2 suite passes 34/34. #427 remains open and its FAIL marker remains until the exact 287-case Bun matrix is fully green. Push is still being attempted; prior attempts were blocked by local DNS.

14 days ago

Bun parity progress for #427: local commit a7e1f5889396cc5ead74ad1b7e17b35ac1d9ea2b separates Bun-compatible public HTTP/2 constants (240 keys) from internal binding constants (251 keys, including 11 internal-only values). Focused runtime contract passes 2/2 and static checks pass. A fresh cumulative run was attempted twice but could not start because the compiler hit NoSpaceLeft; this is recorded as an environment block, not a test pass or failure. #427 remains open with its marker intact. Push is being retried but github.com DNS remains unreliable in this environment.

14 days ago

Bun parity progress: #427 lifecycle slice committed locally as 893f3a17222124b2642adf852f76ad948980e084. Home now distinguishes graceful HTTP/2 close from explicit destroy, clears connecting on terminal entry, and reports assigned streams as non-pending. Focused lifecycle contracts pass 2/2 and cumulative bootstrap HTTP2 passes 36/36. Follow-up teardown ordering, raw/modelled parity, and SETTINGS ACK FIFO work is tracked in #445; #427 stays open until the exact 287-case file is fully green. Push is being retried.

14 days ago

Bun parity progress: committed HTTP/2 SETTINGS FIFO behavior locally as d2eecb5332b1f6cf03916cf45a79abc3ac6e184b; focused tests pass 2/2 and cumulative HTTP/2 passes 37/37. #445 retains the remaining teardown tranche. I also opened #446 for the byte-current three-file JSStreamSocket/stream_wrap cluster, with a single generic implementation and exact marker-removal gate covering expectation lines 28-30.

14 days ago

Local Bun-parity progress update (push currently queued because this host cannot resolve github.com):

  • 865df60 generalizes JSX project creation.
  • 47c1305 and b851e67 complete and stabilize stream pipeline compatibility.
  • d180c07 completes the logical HTTP/2 compatibility layer; the copied 2,952-line matrix compiles/runs locally with 67 declared test blocks plus dynamic cases. Tracked in #427.
  • f0592f2 enables deterministic fetch-abort coverage.
  • 098019730 adds logical named-pipe transport semantics. Exact copied net-server-listen-path, net-pipe-connect-errors, and net-pingpong gates passed, including 20 consecutive combined runs (100 focused executions).
  • b1fcb36 implements native Windows socket lifecycle semantics: localAddress/localPort binding, real named-pipe/TCP termination, half-close behavior, exact libuv error identity and listen formatting, pre-open pipe cleanup without callback re-entry/ref leaks, and normal-vs-abnormal FileSink process-exit handling. Focused ownership/lifecycle tests pass; a prior home_rt run reached 1803 passed / 19 skipped / 0 failed before the final caller-only adjustments, and the final integrated build compiled all 1,822 tests before sandbox network EPERM stopped unrelated fetch execution.

Focused trackers: local binding #434; reset identity/order #435; half-close lifecycle #436; named-pipe errors/listen/HTTP reuse #437; HTTP/2 matrix #427. All 11 WINDOWS/WINDOWS-AARCH64 expectation gates remain intentionally enabled until real Windows x64/ARM64 runs prove them removable. ASAN prerequisites remain tracked in #440. Temporary test caches were removed after each run.

14 days ago

Core experimental stream iterator tranche completed locally in 8330bb606 (push remains queued because this host cannot currently resolve github.com). Ported the 14 Bun stream/iter and zlib/iter JavaScript modules; wired native gates through resolve, fetch, builtin introspection, inline eval, implicit file runs, and explicit home run; verified disabled/enabled, bare/node: aliases, positional flag semantics, and an async gzip roundtrip with cold native builds. Isolated build caches were removed after validation, reclaiming about 1.9 GB. Remaining Readable/FileHandle/error-code/Rust mirror/native corpus work is tracked in #449.

14 days ago

Experimental stream iterator integration advanced in b2d27bca3; focused tracking remains in #449. Readable interop, synchronized 328-entry error ABI, Rust mirrors, and FileHandle pull/pullSync/writer lifecycle behavior are now ported. Cold runtime compilation and a final integrated native debug build pass; peer review found no P0/P1 issues. The three FileHandle fixtures are already byte-identical to Bun and allowlisted. Build/test caches created for this tranche were removed immediately after validation.

14 days ago

Progress update: focused stream-iterator work is now committed locally as 0b6cb6b and tracked in #449. The tranche replaces simulated iterator modules with truthful per-process Home execution for exactly 45 upstream fixtures, including real flag ordering, inherited spawn behavior, bounded cross-platform timeout cleanup, and owned file-level diagnostics. Static, AST, and format checks, a semantic compile of the new launcher, exact selection checks, and a clean P0/P1 re-review pass. I am not marking those 45 fixtures green until the full native corpus actually runs; disk pressure prevented a safe cold build. The commit is queued for push because github.com DNS remains unavailable from the git transport.

14 days ago

Additional parity slice committed locally as 733b499 (feat(runtime): port disposable temporary directories). Home now carries the exact Bun implementations of fs.promises.mkdtempDisposable and fs.mkdtempDisposableSync, including absolute cleanup anchors across process.chdir, idempotent force removal, and Symbol.asyncDispose or Symbol.dispose. The two byte-identical upstream fixtures are added to the truthful native subprocess route, increasing its exact guarded selection from 45 to 47 files and bypassing the synthetic bootstrap for these cases. Verification: exact source comparison, byte-identical fixture comparison, Zig format and AST checks, staged diff check, and clean P0/P1 review. Pickier could not start because Bun was denied temp-directory writes in the sandbox; the failed temporary directories were removed. A rebuilt native 47-file run remains pending because only about 250 MB is free and I will not fill the shared volume with another cold Zig cache. Git push remains queued on github.com DNS.

14 days ago

Readable chunk-consumption parity tranche is complete in local commit 36f801d1f (fix(runtime): complete readable chunk semantics; sole author/committer Chris Breuer, no coauthors).

  • internal/streams/readable.ts and operators.ts are byte-identical to the current ~/Code/bun sources.
  • Native Readable now preserves unsized buffer identity, supports cross-chunk sized reads, setEncoding()/decoder flushing, and correct post-consumption end handling.
  • Filled the exact Node common-harness prerequisites used by these fixtures (fs.realpathSync, worker-thread identity, util/types, process config/features/execArgv/umask contract, and stateful net auto-family timeout).
  • Promoted the exact Bun fixtures test-stream-readable-readable-one.js and test-stream2-read-correct-num-bytes-in-utf8.js into the native corpus; the pinned native route count is now 49.
  • Targeted JSC runtime build passed: zig build debug -Denable_jsc=true -j1 --summary all (5/5).
  • Both exact fixtures passed natively and concurrently with exit 0; the UTF-8 case also passed with inherited NODE_TEST_DIR=/private/tmp.
  • Zig AST/format checks, diff checks, and all four Bun/Home byte-parity checks passed.
  • Cleaned the reproducible 165 MB home-debug build artifact after verification.

git push origin codex/runtime-port is still blocked on this host by DNS (Could not resolve host: github.com); the commit is retained in the isolated branch and will be pushed as soon as Git transport resolves.

14 days ago

Two more Home-native parity commits are complete on codex/runtime-port (Chris Breuer is the sole author/committer; no coauthor trailers):

  1. 7ea70c745 — feat(runtime): promote native node compatibility fixtures

    • Fixed actual built-in object identity: assert/strict === assert.strict, path/posix === path.posix, path/win32 === path.win32, and util/types === util.types.
    • Completed active node:stream/consumers behavior for locked WHATWG streams (ERR_INVALID_STATE), incremental/flush-safe UTF-8 text+JSON decoding, and invalid object chunks (ERR_INVALID_ARG_TYPE).
    • Promoted the four exact alias fixtures plus the full 18-case test-stream-consumers.js fixture. Native route count is now 54.
  2. aaad1cca6 — fix(runtime): preserve stream cancellation errors

    • Ported Bun’s exact from.ts, duplexify.ts, compose.ts, and pipeline.ts deltas.
    • Instance destroy hooks now run before iterator close, parked generators are unblocked on abort, errors destroy the correct side, and a later non-abort error can supersede an earlier abort.

Verification:

  • Combined targeted JSC build passed: zig build debug -Denable_jsc=true -j1 --summary all (5/5).
  • All five newly promoted fixtures ran natively and concurrently with clean exit 0 and empty output.
  • The consumers run exercised all 18 unchanged upstream cases with its exact --no-warnings flag.
  • All five fixtures and all four cancellation source files are byte-identical to ~/Code/bun.
  • Zig AST/format checks and staged diff checks passed.
  • Removed the reproducible home-debug artifact after the run; no corpus temp directories remain.

Push retry still fails at Git transport DNS (Could not resolve host: github.com). A read-only fallback audit found exact-history API upload would require roughly 487 writes / 467 MB, so the safe path remains retrying normal smart-HTTP rather than rewriting or squashing the 50-commit branch.

14 days ago

Port checkpoint: native lifecycle, async Readable/module/assert coverage, and full internal stream source synchronization

Commits (all authored and committed solely by Chris Breuer chrisbreuer93@gmail.com, with no co-author trailers):

  • 372a128ce — fix(runtime): enforce natural process exit
  • bbc367a22 — feat(runtime): promote async stream and module corpus
  • 5d7ae5de2 — fix(runtime): synchronize internal stream lifecycle

What landed:

  • Native home run/eval now performs the natural Node-compatible process exit phase: emits exit once, honors listener updates to process.exitCode, propagates exit-listener failures, and preserves explicit process.exit() behavior.
  • This makes mustCall-style process assertions truthful at natural shutdown: satisfied callbacks exit 0, missing callbacks exit 1, and an assigned process.exitCode = 7 reaches the host as 7.
  • Readable.from now handles async iterators and promised values sequentially, rejects null with exact ERR_STREAM_NULL_VALUES fields, awaits iterator cleanup, and observes generator finally blocks.
  • assert.throws/assert.rejects now validate regexes, constructors, predicates, object fields, Error instances, and reject empty matcher objects with ERR_INVALID_ARG_VALUE.
  • Module builtin compatibility now includes the expanded registry and aliases, with prefix-only node:test resolution. This is loader-contract coverage only; executing the pragmatic node:test shim still intentionally reports ERR_NOT_IMPLEMENTED.
  • The native exact corpus predicate count is now 57, adding:
    • test-stream-readable-next-no-null.js
    • test-module-builtin.js
    • test-module-isBuiltin.js
  • All top-level internal/streams/*.ts sources now match Bun. Across the 31-file stream tree, 30/31 files are byte-identical; the sole difference is a pre-existing lint-suppression comment in iter/transform.ts, with equivalent runtime code.
  • The synchronized end-of-stream.ts includes Bun’s immediate-state, premature-close, abort-disposal, AsyncResource-context, and synchronous-callback-symbol behavior. Activating this updated source in linked JSC bytecode still requires the embedded-builtin regeneration/relink path, so this checkpoint does not claim that activation yet.

Verification:

  • Full targeted JSC build: zig build debug -Denable_jsc=true -j1 --summary all → 5/5 steps succeeded.
  • Strict full-VM execution (HOME_NATIVE_VM=1) of all three new exact upstream fixtures → exit 0.
  • Guarded pragmatic native-runtime proof covering prefix-only resolution, assertion matching, async null handling, iterator cleanup, natural exit, and the real home-debug executable → exit 0.
  • Negative listener-thrown stream error proof → exit 1.
  • Focused Zig AST/format checks, exact-source comparisons, predicate-count tests, and negative controls passed.
  • Final peer review found no remaining P0/P1 issues.

Cleanup:

  • Removed only exact obsolete/failed home-debug cache directories, the exact generated debug binary, and temporary probe scripts. This recovered roughly 1.7 GB and left about 1.9 GB free without touching shared/concurrent Zig caches.

Delivery:

  • A push retry is still blocked by the host DNS failure: Could not resolve host: github.com. The commits remain ready in the isolated codex/runtime-port history and will be retried.
14 days ago

Committed 828809d (sole Chris Breuer author/committer, no coauthors): Buffer encoding aliases/JSON rehydration, querystring contracts, and six exact native corpus routes (57 -> 63). Final JSC build: 5/5. All six exact fixtures pass in Home strict full VM. Guarded pragmatic Home passes five exact fixtures plus direct core/edge assertions; the remaining pragmatic vm.runInNewContext gap is now #454. Negative assertion exits 1; native Zig querystring tests 7/7; actual-predicate corpus count test passes. About 403 MB of obsolete/proof artifacts removed, current verified build retained. Push still blocked by GitHub DNS. Stream audit confirms the linked Bun builtin object already contains the synchronized sources and matching registry tags; Home mirrors alone do not trigger builtin regeneration.

14 days ago

Checkpoint: local commit 67767a0 (Chris, no coauthors) routes all 124 assert/Buffer/module/path/querystring fixtures through native Home. Outer Home test audit: 116 pass, 8 upstream skips, 0 unexpected failures; 190 passed checks and 8 unsupported. Skips remain blocking, not passes. Native routing now covers 176 files. Fixed CLI module/flag/symlink handling and absolute corpus paths; stronger regressions prevent a weak upstream assertion from falsely passing. Native CLI regressions, 16 exact-source Zig checks, JSC build 5/5, and focused pickier lint passed. Next audit gaps: #456; pragmatic realm gap: #454. Not 100% parity. Push remains blocked by github.com DNS; obsolete owned build artifacts cleaned.

14 days ago

Follow-up checkpoint: local commit d48e410 fixes the three native failures discovered in #456: empty CJS parser state, handled uncaughtException exit/event-loop behavior, and missing error/warning codes. All four strict-native runtime regression files pass; JSC build 5/5; pickier passes. The 124-file core audit still has 116 passes and 8 explicit skips. The additional 45-file group has 37 executable passing fixtures, 1 disabled/comment-only body, and 7 skips; no crash or unexpected failure remains. Intl itself works; the remaining Intl skips come from a misspelled linked capability field. Both new commits are authored solely as Chris with no coauthors. Push remains DNS-blocked; latest verified binary/cache retained and superseded artifacts cleaned.

14 days ago

Checkpoint a561c97 (local; sole Chris author/committer, no coauthors): Home now builds its own BunProcess binding with ABI-matched dependencies and correct Intl capability metadata. Verified in main, worker, and native test contexts. Build 7/7 and all five native regressions pass; 2 build-helper tests and 17 corpus predicate/accounting checks pass. Native policy now covers 220 files. Expanded 169-file core audit: 154 passes, 12 unsupported, 3 real URL failures; no skip/disabled-body inflation. Correcting Intl exposed previously skipped URL gaps tracked in #458, linked from #456. Most other C++ bindings/generated modules still depend on Bun artifacts, documented in docs/docs/NATIVE_RUNTIME_BINDINGS.md. Push still fails github.com DNS. Superseded owned binaries/caches cleaned; latest verified artifacts retained.

14 days ago

URL ownership checkpoint: local commit 6562477 regenerates Home node:url and links Home-owned InternalModuleRegistry code. All three exact URL failures tracked in #458 now pass natively. Concurrent audit: 169 Node-core files, 157 pass, 12 explicitly unsupported, 0 failures; 231 passing checks. Skips and the commented-out warning fixture remain unsupported, not green coverage. All six native runtime regressions, five generator/ABI tests, and three Zig binding-helper tests pass. Existing C++ dependencies and non-owned builtin literals remain external and are documented honestly. Committed solely as Chris Breuer without coauthors; push still fails because github.com cannot resolve. #458 remains open pending publication; #456 and #454 still track remaining work. Full Bun parity is not complete.

14 days ago

Now addressing section E native Node-API/FFI in #459. Exact cc.test.ts currently gives 7 pass, 10 upstream skips, 1 failure; the C napi_main call crashes because Home still linked a placeholder NapiEnv__globalObject returning nullptr. The complete Home-owned napi.cpp binding is being attached, replacing no-op environment/lifetime/error/module-registration bridges. In parallel, a timer audit uncovered reduced -p/--print evaluation and a false-positive upstream child check around unreferenced promise timers; native print routing is being fixed alongside FFI. No new completion claim yet.

14 days ago

Local checkpoint fc807a4 committed as Chris without coauthors: Home now owns the native Node-API binding, embeds race-safe FFI headers, rejects unsafe reduced-context addon execution, fixes finalizer code lifetime through heap teardown, and routes print/eval through native JSC. Details and remaining scope: #459 and #460. Verified: 12 guarded native regressions green; exact eval suite 33/33; exact four-file FFI shard 14 pass/11 upstream-platform skips/0 fail; 169-file core audit unchanged at157pass/12unsupported/0fail. Timer audit52pass/2explicit skips/2sandbox EPERM/0timeouts. Build and cached rebuild11/11. Full parity is NOT complete and skips are not passes. Independent tests ran with bounded concurrency and owned temp cleanup; approximately1.6GB of my superseded outputs already reclaimed. Git push still fails resolving github.com; commit remains local. Next bounded work is worker/message-channel fixture verification.

14 days ago

Verification guidance update: current debug build is zig build debug -Denable_jsc=true -j2. For the outer corpus CLI, unset HOME_NATIVE_VM and HOME_CORPUS_FULL_VM; any nonempty value including 0 enables those overrides. Use bounded concurrency (2-3 independent small fixtures), per-child timeouts, and owned temporary-directory cleanup; do NOT use the old blanket pkill recipe in this issue body. Current native artifact source checkout is4982b91e3702094330f3be3883354c52b8c01323; original header pin is historical. The narrow body edit failed at the GitHub API, so this comment records current instructions. Latest cleanup reclaimed about2.3GB of owned superseded binaries/objects; shared dependency caches and unrelated work were preserved.

14 days ago

Parallel worker follow-up: all10 selected exact local worker/message-channel files pass (20 runner tests plus6direct assertion fixtures, no skips/failures/timeouts). Stronger falsy-payload controls found an inherited logical bug missed by those fixtures: Home and Bun lose six falsy receiveMessageOnPort payloads; Node preserves them, including a real undefined message. Root cause and next ownership work are split into #461. This remains open work toward logical parity despite the green shard.

14 days ago

Parallel worker verification found a false-positive risk: BunProcess.cpp used a process-wide exit-dispatched flag, so the first worker suppressed later workers and main-process exit handlers, including Node common.mustCall assertions and temp cleanup. A per-VM fix and seven-scenario regression are now rebuilding. Earlier standalone worker scripts reported exit zero but must be treated as provisional until rerun with exit guards active. Native test-runner assertion counts remain distinct. Worker message-presence/ownership work is tracked in #461; separate missing asynchronous close events are now tracked with an explicitly failing regression in #462. All 12 existing native regression files passed the prior worker build; the new presence regression passes main and worker. Full parity is still open.

14 days ago

Checkpoint committed locally:32ddb41, fix(runtime): own worker queues and isolate VM exit handling. Chris Breuer is sole author and committer; no coauthors. Native build and unchanged cached rebuild12/12; all14 native runtime regression files pass;6 generator/ABI tests(43asserts) and3 Zig binding-helper tests pass. Verified worker coverage:30 native tests pass,3 upstream skips,0fail/552asserts, plus11 standalone fixtures with actual exit guards active. Positive/negative common.mustCall controls prove missed callbacks no longer silently pass after workers exit. Adjacent eval33pass/70asserts; FFI14pass/11skip/0fail/23asserts. Details in #461 and #463. #462 records the still-failing native close-event lifecycle and implementation plan; remaining external builtin dependencies and all skips remain uncovered parity. Runs used bounded parallel subprocesses and owned temp cleanup; approximately1.4GiB of superseded owned build outputs removed this round while keeping the verified current binary. Push attempted again but git transport still fails Could not resolve host: github.com; commit is NOT published. GitHub issue updates succeeded. Full Bun parity goal remains active and incomplete.

14 days ago

Native worker close-lifecycle checkpoint: local commit 007858c, authored and committed only as Chris Breuer, no coauthors. Detailed evidence in #462; worker ownership remains under #461.

Implemented native both-end asynchronous close, transfer/queue/GC ownership, ABI-checked MessagePortPipe build ownership, and the teardown scheduling fix that resolves a reproducible worker RSS regression without increasing the upstream threshold. Build/cache 13/13; all 15 native regression files pass. Focused corpus: 15 pass, 3 upstream skips, 0 failures / 529 assertions across pipe/closed-port/context-teardown files; two standalone FileHandle/transfer-terminate fixtures pass. Thirteen close cases also pass Node controls. One transparent corpus correction keeps its FinalizationRegistry alive through reporting without retaining targets or weakening assertions.

New cross-referenced follow-ups: #465 for general queued native task cancellation during VM shutdown, #466 for synchronous receive in the pending-local-close window. These are real remaining gaps; skips are not passing coverage and the full Bun port is not complete.

Work/tests ran in bounded parallel; about 1.4 GiB of superseded owned binary caches was removed, latest verified output kept, unrelated working-tree edits preserved. Normal git push remains blocked by DNS for github.com, so the commit is local-only and publication is still outstanding.

14 days ago

Pending-close parity checkpoint: local commit00362c8a0124d176aa0716ac72ffe5708cd3472e, Chris Breuer sole author/committer, no coauthors. #466 now implements the complete pending local MessagePort close window, including incoming peer data, synchronous receive, transfer restrictions, and inactive-sender resource disposal. Detailed evidence and test adaptations are recorded there; #462 covers the underlying close lifecycle.

Build/cache13/13; all16 native regression files pass. New15-case suite passes Home and Node controls. Focused corpus15pass/3upstream skips/0failures,529assertions; FileHandle and transfer-terminate standalone fixtures pass with real exit cleanup. Three old RSS tests were measuring before asynchronous close completed; the ported fixture now awaits real bounded close events, preserving all workloads and memory limits, and verifies completion of the20,000-port cascade. This adaptation is explicit, not a silent weakened assertion.

#465 remains a proven native queued-transfer cancellation failure: normal delivery closes the peer, termination before delivery does not. A small bounded intentionally failing regression is committed for that work. The linked Worker already has the external pre-enqueue create-reference fix; stale mirrored-source code is not being mistaken for the runtime cause.

Tests/reviews ran in bounded parallel; around0.75GiB of superseded owned outputs removed, unrelated edits preserved. Push is still blocked by github.com DNS, so00362c8a0 is local-only. Full Bun ownership and100% logical suite parity are not yet achieved; the goal remains active.

14 days ago

Checkpoint 6de9852 implements native Worker inbox shutdown (#469). Commit author and committer are Chris Breuer, with no coauthors. Push remains blocked by github.com DNS resolution; this commit is local only.

Verified: native build and cached rebuild 14/14; all 17 native regression files pass, including seven new inbox cases; focused corpus 15 pass, 3 upstream skips, 0 failures, 529 assertions; two standalone worker fixtures pass with real exit cleanup. Generator/ABI tests pass 8/84 assertions, source guards 4/25, and Zig helpers 4/4. Removed about 424 MiB of superseded owned build artifacts.

Remaining failures are explicit: nested child callbacks run after parent termination (#470), and snapshot requests remain unsettled (#471). General queued-task cancellation remains #465; native work-pool quiescence is #468. Node snapshot race controls crashed and are not counted as passes. Full Bun parity is not complete.

14 days ago

Publication and native worker checkpoint: 41f10cb is now pushed to codex/runtime-port, alongside the 65 recovered prior port commits. Original hashes and Chris Breuer sole author/committer identities are preserved; no coauthors or force push. The branch is not merged into main.

Nested worker termination now stops descendants and waits for their resource cleanup before parent VM teardown (#470). Build/cache 14/14; all 18 native regression files pass, including five new descendant scenarios repeatedly and under main-VM destruction. Node controls pass. Strict native corpus: 15 pass, 3 upstream debug/sanitizer skips, 0 fail / 529 assertions, plus three passing standalone upstream worker fixtures. Generator/ABI/source checks 12/109; Zig helpers 4/4; focused lint/format checks pass.

The strengthened normal control found the parentPort.close no-op: #477 now preserves a bounded Home failure and passing Node control. Snapshot request cancellation #471 still fails. General task cancellation #465 and native work-pool quiescence #468 remain open. Neither skips nor the separate outer-adapter results count as full native parity. Updated this issue's body with current commands, publication status, and links; removed the obsolete blanket-pkill guidance. Cleaned about 353 MiB of superseded Home debug outputs while retaining the verified binary and unrelated work. Full Bun ownership and 100% logical suite parity remain incomplete.

14 days ago

Published native parentPort implementation 3b0721c32b2d237c38380900ed449217ef1af853 on codex/runtime-port, as Chris Breuer without coauthors. #477 has implementation and detailed verification evidence; #470's original persistent-listener natural-exit control is now restored. The issue body above reflects this checkpoint.

All 19 native regression files, 15 byte-identical upstream Node worker fixtures, and native build/cache 16/16 pass. Strict native worker corpus remains 15 pass / 3 debug-sanitizer guard skips / 0 fail / 529 assertions; skipped guards are not counted toward completed parity. Both native execution flags were used. Supplementary non-sanitized stress with only those guards removed passes, but is reported separately.

Not merged into main. #471 still reproduces a snapshot-cancellation timeout, and #465/#468 remain open. Full Bun-suite parity is not achieved.

14 days ago

Published snapshot ownership/cancellation c6a4e4a3513dfb2a05a13357c06f598ad9f1d6ce on codex/runtime-port, as Chris Breuer without coauthors. #471 contains detailed implementation and verification; this issue body now reflects the checkpoint. Not merged into main.

20 native regression files, 16 byte-identical upstream Node worker fixtures, build/cache 16/16, and the unchanged upstream 4,500-snapshot GC workload pass. The six-scenario native snapshot suite passes four runs, including two with VM destruction. Strict MessagePort corpus remains 15 pass / 3 guard skips / 0 fail; skips are not parity.

The complete worker_threads file still fails: 33 pass / 1 timeout / 1 between-test error. Created and cross-linked #481 for ignored native test-name flags and #482 for the original eval-source deadline. Its unchanged standalone memory check passes but takes 20.22 seconds in native debug versus 2.20 seconds in Bun; no thresholds or timeouts were relaxed. Remaining shutdown work includes #465/#468. Full Bun-suite parity is not achieved.

14 days ago

Published 1340cebd5 on codex/runtime-port, authored and committed as Chris Breuer without coauthors; not merged into main.

The native test command now uses the real argument and bunfig parsers. Filter aliases and regexes control actual body execution; invalid CLI/config input exits with diagnostics. The audit also fixed process-title storage, newline handling, CI boolean detection, and the buffered/direct writer routing required by unchanged output snapshots.

Final verification: build and cached rebuild 16/16, 20/20 native regression files, and 50 passing unchanged upstream tests / 119 assertions across seven native commands. The snapshot filter is now 3 pass / 31 filtered out / 0 fail. Full coverage is 12 pass / 10 snapshots, and ordinary concurrency 6 pass / 3 snapshots. No assertion, snapshot, workload, or original deadline was relaxed. Bun controls pass. Filtered tests are not counted as passed.

The broader audit exposed separate real failures: #484 for the parked isolated-global module-record bridge and #485 for the unimplemented parallel coordinator/worker IPC. Their unchanged selections fail in Home and pass in Bun. #482 still tracks the worker eval deadline. The bodies of #66 and #481 now reflect the published checkpoint and these limits. Full logical Bun parity remains incomplete.

14 days ago

Native isolation checkpoint — 6e092777a

Published on codex/runtime-port as Chris Breuer, without coauthors; not yet merged to main. #484 now passes the entire unchanged isolation file: 19 tests / 67 assertions, plus three consecutive repeat runs. The real JSC module-record bridge replaces the parked panic path. File-boundary cleanup releases watcher, server, timer, watch-file scheduler, and AbortSignal GC references; server callback protections are balanced across reload and destruction.

Verification: native build and unchanged cached rebuild 17/17; generator/ABI tests 8 tests / 135 assertions; all 20 native regression files pass, including expanded isolation probes. Fourteen selected unchanged upstream commands total 92 passing tests / 242 assertions, including the 50-test CLI regression set. Two platform skips and 231 filtered cases in those selections are not passes. The existing AbortSignal spawn-glyph-only check alone is not proof of child assertion execution; direct native lifecycle and timeout checks provide separate evidence. Workloads, deadlines, and upstream assertions were preserved. Full details and control limitations are in docs/docs/NATIVE_RUNTIME_BINDINGS.md.

Separate newly tracked failures: fake clocks #490 (16 pass / 14 fail, also reproduced before this checkpoint; Bun control 30 pass) and deferred imports #491 (0 pass / 1 fail / 19 filtered out in the selected parser reproduction). Parallel orchestration #485 and the full worker eval deadline #482 remain open. Installed Bun 1.3.14 fails four newer isolation cases itself, so no passing full-file Bun control is claimed. The full port and 100% logical Bun-suite compatibility are still incomplete.

14 days ago

Native fake-clock checkpoint — d0ed7c906

Committed and pushed on codex/runtime-port as Chris Breuer, without coauthors; not yet merged to main. #490 now passes the unchanged core fake-timer file: 30 tests / 83 assertions, up from 16 pass / 14 fail. Installed Bun 1.3.14 passes the same 30 / 83 control. Mockable timer deadlines now share the fake clock, fractional advancement retains nanoseconds, real option/getter validation runs before clock mutation, and both reset paths release timer/AbortSignal references outside the heap lock.

Verification:

  • Native build and cached rebuild: 17/17 steps.
  • All 21 native regression files pass; the new fake-clock test also passes three consecutive repeats and fails against the cached pre-change Home binary. It checks actual Home execution, inherited/throwing getters, Date/performance agreement, fractional nested callbacks, retained cancelled handles, natural exit and bounded GC counts after allocating 3,072 timeout/interval wrappers plus 1,536 AbortSignal timeouts across resets.
  • Entire unchanged fake-timer directory: 61 reported pass / 438 TODO / 0 fail / 115 assertions in Home and Bun. 14 reported passes are it.failing cases, not implemented features; all 438 TODOs are excluded from logical completion. There are 47 ordinary passing tests, including the core 30.
  • Unchanged isolation: 19 tests / 67 assertions. Unchanged timers/promises: 4 / 7. Twenty-four selected corpus files match the pinned Bun checkout byte-for-byte. Focused Pickier, timer-file Zig formatting and whitespace checks pass.

The wider Node timer file still hangs after printing 19 passes on its final caught-immediate-exception fixture. This happens in the pre-change Home binary too. The standalone fixture times out in both Home binaries and exits successfully in Bun; the original-checkout Bun control passes the full 20 / 31. Tracked separately in #493; neither incomplete runs nor expected failures count as logical parity.

Deferred imports #491, parallel coordinator/IPC #485, the full worker deadline #482, remaining native ownership, other platforms and full-suite parity remain open. The full port and 100% logical Bun-suite compatibility are not complete. See docs/docs/NATIVE_RUNTIME_BINDINGS.md for the implementation and verification boundary.

14 days ago

Native POSIX spawn checkpoint — 6d797186c

Published on codex/runtime-port as Chris Breuer, without coauthors; not yet merged to main. #493 is now implemented and verified. The timer fixture hung during import, before scheduling immediates: Node's common helper spawned a missing absolute openssl-cli, and Home misread libc's direct positive errno as success and watched PID 0. The fix propagates spawn and file-action/attribute setup errors, preserves executable paths, and releases failed registration lists. No immediate dispatch code was changed.

Verification: 28 selected commands pass, including all 21 native regression files, the unchanged complete Node timer file (20 tests / 31 assertions), its standalone fixture, isolation (19 / 67), core fake clocks (30 / 83), timers/promises (4 / 7), PATH selection (1 / 2) and the selected missing-command/invalid-fd cases (2 / 9; 32 filtered out excluded). Native build and cached rebuild 17/17; repeated native spawn failures preserve descriptor counts and recover to a valid spawn without re-entering user microtasks. Eight relevant upstream files are byte-identical to source pin 4982b91e3702094330f3be3883354c52b8c01323.

New linked follow-ups keep the failing boundaries explicit: extra stdio pipes #495, real native counter snapshots #496, and package-script passthrough #497. Full child-process remains 30 pass / 2 fail / 1 skip / 1 TODO / 70 assertions; spawnSync remains 4 pass / 1 fail / 1 platform skip / 11 assertions. Installed Bun 1.3.14 passes those three failing scenarios but fails the newer invalid-fd case itself. Deferred imports #491, parallel test orchestration #485, full worker timing #482 and the other open work remain. The full port and 100% logical Bun-suite compatibility are still incomplete.

14 days ago

Published a21f735fc on codex/runtime-port as Chris Breuer, with no coauthors. This is a branch checkpoint, not a merge into main or full parity.

  • #495: ported the current native socket-fd stdio mode. POSIX descriptors stay owned through fallible setup, then transfer to the caller before the JS Subprocess is returned; Subprocess GC must not close a Node socket's fd. The unchanged 20-round extra-pipe GC workload now passes. All three raw socket-fd cases pass 3 tests / 5 assertions (128 filtered cases excluded).
  • #496: removed the weak counter stub and wired real per-VM snapshots. The unchanged spawnSync file now passes 5 tests / 11 assertions, with the Linux-only memfd case skipped on this Mac. Native tests verify real fast-path increments, independent snapshots, buffered behavior, and repeated failed extra-fd setup without leaking descriptors. Linux allocation-before-failure semantics are preserved.
  • Final installed native binary: all 31 selected regression commands pass, including all 21 native regression files. Isolation 19/67, Node timers 20/31, timers/promises 4/7, core fake timers 30/83, spawn errno selection 2/9 and PATH 1/2 remain green. Native build and cached rebuild: 17/17. Focused Pickier/format/whitespace checks pass; unrelated legacy formatting remains untouched. Ten selected upstream files are byte-identical to pin 4982b91e3702094330f3be3883354c52b8c01323.

Remaining boundaries: complete child-process file is 31 pass / 1 fail / 1 skip / 1 TODO / 70 assertions; package-script dispatch is still #497. New #499 tracks empty-Blob rejection and extra-ReadableStream native panic; that panic also occurs in the prior published binary. The 16-case extra-input selection aborts and is not counted as passing. Installed Bun 1.3.14 fails those newer tests itself.

The full spawn file did not finish within a 120-second external probe (old binary: 60-second probe); neither run reached the original onExit test's 600-second deadline. A two-child onExit probe passes but does not replace the original workload. Full spawn coverage, Linux/Windows validation, other ownership work and whole-suite parity remain open. Details are in docs/docs/NATIVE_RUNTIME_BINDINGS.md.

14 days ago

Published ba2cf90dc on codex/runtime-port as Chris Breuer with no coauthors. Not merged into main.

This checkpoint ports #499 (extra-stdio input validation and rejected Blob cleanup), #501 (kevent errno decoding and stale-registration teardown), and #502 (owned ArrayBuffer input snapshots, writer handoff and failure cleanup).

Verification on the final native Home binary:

  • Complete unchanged spawn file: 126 pass / 5484 assertions / 5 existing skips. The original onExit workload executes all 2000 assertions; no deadline or workload was reduced.
  • 34/34 main regression commands, including all 21 native regression files. Extra-input selection 16/24; stale-fd 1/3; stream edge cases 12/41 with 1 TODO excluded. Existing isolation/timer/fake-clock/counter/extra-pipe checks stay green.
  • Seven additional unchanged stdin suites: 34 tests / 197 assertions, with 3 TODOs excluded. Eight native 2 MiB mutation/detachment scenarios and repeated rejected-payload memory/descriptor checks pass. Three further native core runs (one with VM destruction) and three stale-fd repeats pass.
  • Final build and cached rebuild: 17/17. Thirteen selected upstream test files remain byte-identical to source pin 4982b91e3702094330f3be3883354c52b8c01323. Scoped Pickier/format/whitespace checks pass; unrelated legacy formatter migrations were left untouched.

One attempt failed during host ENOSPC pressure and is excluded. After removing only obsolete intermediate outputs from this task's isolated runtime cache, the full main batch and repeats were rerun successfully. The spawn test parent exited zero; its deliberately unreferenced long-sleep fixture descendant was cleaned afterward in the owned process group.

Still incomplete: #497 leaves the complete child-process file at 31 pass / 1 fail / 1 skip / 1 TODO / 70 assertions. Newly recorded #503 covers the real Bun.Terminal port: the selected integration cases remain 0 pass / 3 fail / 13 filtered out because creation/I/O are skeleton methods. Installed Bun 1.3.14 itself fails two of those newer terminal cases. Other-platform execution, broader native ownership and whole-suite logical compatibility remain open. Details are in docs/docs/NATIVE_RUNTIME_BINDINGS.md.

Sign in to comment on this issue.