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

WebSocket parity batch landed on main in b2fe5b0 (fix(websocket): finish client protocol lifecycle parity).

Implemented contracts:

  • The split HTTP 101 / proxy response accumulator now caps only bytes through the terminating blank line, including CRLF or bare-LF delimiters split across reads. Pipelined WebSocket bytes are preserved separately and no longer count against max_http_header_size; genuinely incomplete over-cap headers still fail.
  • Received Close status and transmitted Close status are distinct. Valid peer codes such as 1001 reach CloseEvent unchanged, invalid wire codes become 1002, and bodyless Close frames are echoed without an illegal status while JavaScript observes 1005.
  • Home root new/destroy now preserves Bun Debug allocation-scope logging plus refcount-zero and assertBeforeDestroy checks. The existing tunnel ownership fixes are therefore directly observable instead of the allocation tests seeing zero events.

Unchanged strict full-VM validation:

  • Debug: the four formerly failing WebSocket files pass 50/50 tests and 111 assertions.
  • Fresh release-fast executable: the same four files pass 50/50 tests and 111 assertions.
  • Complete js/web/websocket scan: 23/23 files pass; 0 fail, crash, hang, dependency gap, or OOM.
  • Pinned Bun control passes the short-read fixture 4/4 and websocket.test.js 44/44 with 100 assertions; its release build skips the two debug-only allocation-log fixtures.

No fixture, assertion, timeout, workload, or skip condition was changed. PARITY-BUN.md records the boundary and evidence.

14 days ago

Pushed 1f917bf3c (fix(runtime): finish Workerd and Valkey parity) directly to main as Chris Breuer, with no coauthors.

This closes two Home-only runtime gaps against pinned Bun 4982b91e without changing fixtures, assertions, workloads, deadlines, or skips:

  • HTMLRewriter Comment.replace() now calls the lol-html replace ABI rather than inserting before the original comment. The unchanged html-rewriter.test.js is 44 pass / 2 upstream TODO / 0 fail / 159 assertions in Debug and ReleaseFast; complete strict js/workerd scans are 3/3 in both modes.
  • Valkey now retains a scan frontier for fragmented top-level RESP scalar lines, revisiting only the prior last byte for split CRLF and scanning only newly appended bytes. Nested/length-prefixed replies retain the general parser and the existing 512 KiB line bound. The unchanged 25,000-read regression is 1/1 / 6 assertions in Debug and ReleaseFast (~0.29s ReleaseFast versus ~2.8s before and ~0.32s pinned Bun); complete strict js/valkey scans are 15/15 in both modes.

Adjacent strict ReleaseFast surfaces are clean: js/deno 16/16, js/first_party 5/5, and js/junit-reporter 1/1.

I also completed classification of the latest 267-file js/node scan. 263 files pass normally. The 4 GiB HTTP backpressure fixture passes unchanged standalone (1/1, ~22.7s, ~6.9 GB max RSS); its scanner OOM was only the generic 4 GB process-group envelope. The other three non-passing files reproduce identically in pinned Bun: stale .failing on double-connect whose body now succeeds, live bun.sh certificate no longer exposing the asserted OCSP URI, and readline.node.test.ts at the same 54 pass / 25 fail / 241 assertions. They remain honestly classified as upstream fixture/environment failures—not weakened or counted as Home passes.

The overall Bun port and issue remain open.

14 days ago

Landed and pushed 0ea258d63 (fix(sql): finish connection lifecycle parity).

This batch closes the SQL connection lifecycle/error-reporting cluster against the unchanged Bun fixtures:

  • PostgreSQL and MySQL now distinguish refused dials, pre-handshake connection failures, and established connection closes with Bun-compatible error codes.
  • Forced close() settles in-flight connections even when uSockets cannot deliver a close callback, including pending queries and the creation poll reference.
  • Throwing onconnect/onclose callbacks no longer interrupt pool bookkeeping, query rejection, or close-promise settlement.
  • PostgreSQL startup ErrorResponse now uses the structured JS error bridge and preserves protocol fields instead of flattening the frame into a placeholder message.
  • Empty PostgreSQL ErrorResponse/NoticeResponse frames initialize their storage before decode, eliminating the empty-frame cleanup segfault.

Verification:

  • Debug focused fixtures: 28/28 tests, 52 assertions
  • ReleaseFast focused fixtures: 28/28 tests, 52 assertions
  • Complete strict full-VM js/sql Debug scan: 35 pass / 0 fail / 0 crash / 0 hang / 0 deps / 0 OOM
  • Complete strict full-VM js/sql ReleaseFast scan: 35 pass / 0 fail / 0 crash / 0 hang / 0 deps / 0 OOM
  • zig build debug --summary failures: pass
  • zig build release-fast --summary failures: pass

Pinned Bun passed the four focused controls with the same 28/28 tests and 52 assertions. No fixture assertions, deadlines, workloads, annotations, or skips were changed.

14 days ago

Pushed c23ba376b (fix(runtime): restore native addon and IPv4 parity) to main.

This batch closes two real compatibility gaps without changing any upstream test fixture, assertion, skip, workload, annotation, or deadline:

  • Home's actual CLI entrypoint now invokes Bun's native ABI retention walker, and the walker is compatible with the current Zig declaration API.
  • Filled the 19 previously omitted N-API/Node-API references. ReleaseFast now exposes all 159 symbols exposed by Debug (NAPI_SYMBOL_DIFF=0) instead of LTO discarding native-addon entrypoints.
  • Corrected IPv4 sockaddr byte-order handling in net.Address; 127.0.0.1 no longer becomes 1.0.0.127.

Verification:

  • zig build debug --summary failures: pass
  • zig build release-fast --summary failures: pass
  • zig test packages/runtime/src/net_shim.zig: 3/3 pass
  • ReleaseFast DuckDB: 18/18 pass
  • ReleaseFast Canvas: 1/1 pass
  • ReleaseFast Resvg: 3/3 pass, 14 assertions
  • ReleaseFast Rollup v4: 1/1 pass plus snapshot
  • ReleaseFast NextAuth: 1/1 pass, 9 assertions
  • Fastify WebSocket: 1/1 pass, 2 assertions in Debug and ReleaseFast
  • strict full-VM Debug js/third_party: 116 ordinary file passes, 2 upstream-environment failures, 2 generic-bound overruns, 0 crashes (120 total)

The two upstream-environment failures reproduce under pinned Bun: Astro references a missing parent tsconfig and gRPC has no configured Rust toolchain. Prisma's unchanged 9-million-query fixture exceeds the scanner's generic 30-second bound; standalone Home and pinned Bun runs both reach the same 4 passes / 5 upstream skips / 3 fixture failures after the upstream migration helper swallows its missing-schema error.

ReleaseFast still has a nondeterministic pre-result exit 139 whose affected fixture changes between scans and passes immediately with unchanged standalone input. That is tracked separately in #655 so it must be fixed at the runner/runtime layer rather than hidden with retries, relaxed accounting, or skips.

14 days ago

Pushed a51416b38 (fix(runtime): retain VM across async publication) to main, resolving #655 without retries or test masking.

Root cause: a runtime-transpiler worker published an intrusive job to the JS thread, which could recycle/poison the job before the worker's deferred native-work barrier release reread job.vm. The fix retains the VM owner before publication and applies that ownership invariant across the four analogous async paths: generic concurrent Promise tasks, Archive tasks, zstd, and PBKDF2.

Evidence:

  • Old ReleaseFast: new unchanged-workload 1,024-module regression exited 139 by run 3; fixed ReleaseFast: 64/64 consecutive passes.
  • Old ReleaseFast: unchanged Svelte fixture exited 139 by run 5; fixed ReleaseFast: 100/100 consecutive passes, each with 4 tests / 2,002 assertions.
  • Focused worker/transpiler/Archive/PBKDF2/zstd/crypto regressions pass in Debug and ReleaseFast.
  • Complete installation-shaped ReleaseFast native runtime regression: 65/65.
  • Complete strict ReleaseFast js/third_party: 117 ordinary file passes / 2 upstream-environment failures / 1 generic-bound overrun / 0 crashes (120 total).
  • Debug and ReleaseFast builds pass.

The remaining three non-ordinary third-party classifications are unchanged and already verified against pinned Bun/environment constraints: Astro's missing parent tsconfig, gRPC's unconfigured Rust toolchain, and Prisma's 9-million-query fixture exceeding the scanner's generic 30-second bound before reaching the same standalone result as pinned Bun.

No upstream fixture, assertion, annotation, workload, deadline, or skip changed.

14 days ago

Published b4ddf3056 (fix(runtime): unify Node compatibility identity).

This removes the conflicting Home-owned Node versions (20.0.0 in N-API/runtime environment and 24.0.0 in build metadata/reduced process) in favor of the pinned Bun 1.4.0 engine identity, 26.3.0, from one build option. The shared value now reaches the reduced JSC process global, both runtime environment namespaces, N-API, package-script child user agents, and publish metadata.

Permanent regressions add a deterministic local bunx package with engines.node >=26.0.0 that requires exact v26.3.0 / 26.3.0 / node identity and the full npm user agent, plus independent package-script child propagation checks. The stale Angular bunx expected-failure marker is removed.

Verification:

  • fresh Debug build: pass
  • fresh ReleaseFast build: pass
  • focused reduced-JSC process unit: 4/4 pass
  • compiled Node-API test_general: 2/2 pass in Debug; ReleaseFast included in full scan
  • strict ReleaseFast napi/node-napi-tests: 55/55 files, zero fail/crash/hang/deps/OOM
  • deterministic native bunx and package-script regressions: pass in Debug and ReleaseFast
  • real copied Angular Node-24+ bunx case: 1/1 pass in ReleaseFast
  • strict complete copied bunx file: 32 pass, 1 platform skip, 1 external-drift failure; pinned Bun fails the same live github:piuccio/cowsay help-label assertion, now tracked in #674 without weakening or falsifying behavior

Closed #201 and #432. The overall Bun parity goal remains active.

14 days ago

Follow-up validation closed #79 on current main without a workaround or new source change. A fresh ReleaseSafe build runs the exact five-file js/node/async_hooks directory at 111 pass / 3 copied upstream TODO / 0 fail with no mimalloc SIGSEGV/abort. ReleaseFast matches, and a single-process --rerun-each 10 stress run completes 1,110 pass / 30 repeated TODO / 0 fail. The copied dual-runtime tracking test requires the provisioned Node executable in PATH; the rollover shell initially omitted it, which produced a distinct nodeExe() === null ENOENT rather than the historical allocator crash.

14 days ago

Native ownership checkpoint pushed to main: 4368f9e. Bun.build and lazy HTML route bundle tasks now retain their creating VM through owner-loop publication, queued completions have native-only shutdown disposal, and HTML routes finish installing cross-thread ownership before scheduling. The new deterministic two-build Worker race passes once plus six consecutive Debug processes and in ReleaseFast; the full installation-shaped ReleaseFast runtime regression suite is 66/66 and native home_rt is 1,827 passed / 19 skipped / 0 failed. The exact HTML manifest corpus passes 4/4. The broader HTML serving file exposed a separate Home asset URL bug (14/16 Home versus 16/16 pinned Bun), split into #675 with unchanged-fixture acceptance criteria. I also reverified the already-merged descendant-worker and heap-snapshot ownership fixes on current ReleaseFast and closed stale integration trackers #470 and #471 after their five and six scenarios passed respectively. Generic producer auditing remains #465 and poll-parked Blob I/O remains #569; whole-suite parity is not claimed.

14 days ago

Parity checkpoint pushed to main: 016a60c (fix(runtime): root served HTML assets), closing #675.

The exact pinned Bun js/bun/http/bun-serve-html.test.ts suite now matches Bun at 16/16 with 102 assertions and 9 snapshots in both Debug and ReleaseFast. The implementation fixes HTML entrypoint root selection, JS API resolver-option propagation, in-memory source-map path calculation, and Bun-compatible CSS display parsing/serialization. A repository-owned native regression covers root-relative generated assets, entry-relative source-map sources, and canonical display: block output.

Broad gates are green:

  • installation-shaped ReleaseFast runtime regression: 67/67;
  • native home_rt: 1,827 passed, 19 skipped, 0 failed;
  • pinned HTML manifest suite: 4/4, 16 assertions, 1 snapshot;
  • scoped Pickier: 0 errors;
  • Zig formatting and diff checks passed.

No workaround or test weakening was used. #465 remains open for producer-specific task ownership families, and #569 remains open for poll-parked Blob I/O.

14 days ago

Blob poll-parked I/O ownership is now complete and pushed in b2d764a (fix(runtime): cancel parked Blob I/O on shutdown), closing #569.

This ports the missing lifetime protocol for Bun.file(...).text() and byte-backed Bun.write(...): per-VM ownership survives while work is parked outside the shared work pool; each actual worker hop still participates in the native shutdown barrier; teardown cancels/detaches parked requests and releases fd/Blob/promise ownership without JavaScript re-entry. It also activates the real I/O waker/readiness checks, makes watcher callback replacement race-safe, fixes Darwin close completion ordering, and converts FIFO EAGAIN from an immutable-result spin into polling.

Evidence for the pushed commit:

  • deterministic real-FIFO blocked-read and buffer-filling-write Worker shutdown regression: 6 consecutive Debug processes, then fresh Debug + ReleaseFast installation-shaped runs
  • complete installation-shaped runtime aggregate: 68/68 in both Debug and ReleaseFast
  • native home_rt: 1,827 passed / 19 skipped / 0 failed
  • unchanged upstream bun-file-read.test.ts, blob-write.test.ts, and worker_blob.test.ts: 16/16 in both Debug and ReleaseFast
  • formatting/diff/lint gates clean; scoped pickier only reports the parity plan's 21 pre-existing markdown warnings

No assertions, workloads, deadlines, fixtures, or skips were relaxed. During the broader unchanged-upstream audit I isolated a separate real gap: optimized regular-file Blob-to-Blob Bun.write currently returns 0 and leaves the destination empty. That work is now focused in #676 and remains part of this tracker.

14 days ago

File-to-file Bun.write parity checkpoint completed in 2a58fe9; #676 is closed.

The optimized regular-file path now distinguishes explicit slices from observed lazy sizes, carries source/destination ranges and exact counts through native copy workers, preserves prefixes and correct truncation, fixes the bounded NodeFS fallback, and preserves slice identity through structured clone v4. Whole-file native fast paths remain intact; Windows range logic is ported to positioned libuv I/O, although Windows execution remains unavailable on this Darwin host because cross-link dependencies are absent.

Evidence: focused matrix passes Debug/ReleaseFast; unchanged upstream bun-write is 33/33; unchanged Blob structured-clone/name ownership files are 37/37; installation-shaped runtime aggregate is 69/69 in both modes; native home_rt is 1,827 passed / 19 skipped / 0 failed. No test weakening.

A separate default-build blocker found during validation is now #677 (home-tool missing the shared Environment compatibility identity). Full 100% logical Bun-suite parity remains open here.

14 days ago

Progress checkpoint: c14c379 closes #677.

The reduced home-tool runtime now consumes the same build-level Node compatibility identity as the full runtime, exposes a coherent process.version / process.versions.node / process.release.name surface, and implements process.umask against real POSIX process state instead of a JS-only shadow value.

Validated in Debug and ReleaseFast through the home-tool build and both smoke programs, through the full default build, and through the native home_rt suite (1,828 passed, 19 skipped, 0 failed). Formatting and diff checks pass; scoped pickier has 0 errors and only the 22 pre-existing warnings. No test weakening or compatibility workaround was introduced.

#66 remains open for the remaining Bun parity work.

14 days ago

Native subprocess integration checkpoint: 2d2dab2 corrects the top-level parity ledger now that the implementation commits are all ancestors of main.

Fresh Darwin arm64 ReleaseFast verification against byte-identical pinned Bun files:

  • Complete child_process.test.ts: 32 runnable passes / 72 assertions / 0 failures, with its real npm-run-all install and nested package-script workload; the existing Windows-only skip and upstream TODO remain excluded.
  • Complete spawn.test.ts: 126 passes / 5,484 assertions / 0 failures, with five existing skips excluded and all original 1,000 lifecycle iterations retained.
  • Focused extra-pipe GC workload: 1/1 with all 20 rounds, delays and GC calls unchanged.
  • Extra-stdio input selection: 16/16 / 24 assertions.
  • Node timers: 20/20 / 31 assertions, plus the passing standalone immediate fixture.
  • Fresh ReleaseFast aggregate build passed.

This closes the now-integrated Darwin implementation issues #493, #495, #497 and #499. Linux/Windows execution and any native fixes exposed there are split into #678. No fixture, assertion, workload, deadline or skip changed. #66 remains open for the wider Bun corpus and all unverified scopes.

14 days ago

Bun parity progress: pushed ecbecd6a5, removing two more Home-injected TODO rewrites under #202.

The untouched Bun indexed-property diff fixture is now executed as an explicit expected-failure contract, while the real test-interop.js helper and its three consumers run through Home native module loading. The synthetic bootstrap helper and async-stripping substitutions were deleted.

Focused ReleaseFast JSC corpus verification passed with 500 logical passes, 10 upstream TODOs, 0 Home-added TODOs, 0 failures, and 0 unsupported results. The five exercised sources remain byte-identical to Bun 4982b91e3702094330f3be3883354c52b8c01323. Remaining whole-file native TODO rewrite sites: 19.

Detailed evidence: #202.

14 days ago

Bun parity progress under #202: pushed 8ec6124a7, removing three more Home-injected whole-file TODO rewrites.

Home now executes Bun unchanged Sinon fake-timers, CLI test-runner, and diff-printer matrices natively. The focused ReleaseFast JSC gate across this tranche and the preceding helper/interop tranche passed with 526 logical passes, 464 upstream TODO/skips, 0 Home-added TODOs, 0 failures, and 0 unsupported results. Sources remain byte-identical to Bun 4982b91e3702094330f3be3883354c52b8c01323.

Whole-file native TODO rewrite sites are down from 19 to 16. Detailed results are posted on #202.

14 days ago

Bun parity progress under #202: pushed 34873c58c, removing the global plugin-loader and binary-symbol-audit TODO rewrites.

The unchanged plugin matrix passes 31 tests plus 1 upstream TODO. Binary audits now use platform-correct accounting: allowed empty on macOS, mandatory upstream checks on Linux/Windows. The focused ReleaseFast JSC tranche passes with 557 logical passes, 465 upstream TODO/skips, 1 platform-allowed empty, 0 Home-added TODOs, 0 failures, and 0 unsupported. Whole-file native TODO rewrite sites are down to 14.

New focused implementation issues from strict unchanged-suite probes:

  • #679 Bun patch makeDiff/apply internals (8 pass / 13 fail, abnormal exit 138)
  • #680 Bun REPL CLI and terminal behavior (0 pass / 117 fail)

All exercised sources remain byte-identical to Bun 4982b91e3702094330f3be3883354c52b8c01323.

14 days ago

Bun parity progress under #202: pushed 791b59386, removing both remaining FFI whole-file TODO rewrites.

The unchanged cc.test.ts and ffi.test.js matrices now execute through Home native addon routing with 17 pass, 11 upstream skips, 0 Home-added TODOs, 0 failures, 0 unsupported, and 982 assertions. This includes foreign-thread callback delivery, GC liveness, and the greater-than-63-symbol loading matrix. Sources and callback fixture remain byte-identical to Bun 4982b91e3702094330f3be3883354c52b8c01323.

Whole-file native TODO rewrite sites are down from 14 to 12.

14 days ago

Bun parity progress under #202: pushed 951c86eb4, removing the HTML manifest and static-server whole-file TODO rewrites.

The unchanged native matrices pass 20 tests with 10 snapshots, 118 assertions, 0 TODO/skips, 0 failures, and 0 unsupported. Sources remain byte-identical to Bun 4982b91e3702094330f3be3883354c52b8c01323. Whole-file native TODO sites are down from 12 to 10.

The adjacent HTML entry suite is 5/6; its sole missing contract is CLI expansion of *.html, now tracked in #681.

14 days ago

Progress update: pushed 6e27f3fc75cc4e1c1577df133c8bbd5d39d4d422 to main.

This batch removes two blanket TODO substitutions and restores exact native corpus behavior:

  • Bun server socket/abort matrix: js/bun/http/bun-server.test.ts now runs unchanged with 45 pass, 2 upstream skips, and 0 failures.
  • Chrome WebView websocket matrix: js/bun/webview/webview-chrome-ws.test.ts now runs unchanged and exposes its five upstream environment-gated todos instead of one Home-generated placeholder. There are 0 failures without an approved interactive Chrome remote-debugging session.

Both files match Bun checkout 4982b91e3702094330f3be3883354c52b8c01323 byte-for-byte. The focused ReleaseFast/JSC integration gate passed all three project targets. The blanket native TODO inventory is now 8 files, down from 10 at the start of this batch.

Strict unchanged probes also produced focused follow-up work:

  • #682 — null-body HTTP status response framing
  • #683 — Bun.serve option validation
  • #684 — development-mode /bun:info
  • #685 — streamed-response backpressure and drain behavior
  • #686 — spawnable absolute process.argv0 needed by the shell leak corpus

The complete serve.test.ts probe is at 188 pass / 1 skip / 1 todo / 11 fail. The shell leak probe is at 4 pass / 38 fail, with all 38 blocked at child spawn by the same executable-path contract.

No workarounds or weakened upstream coverage were introduced.

14 days ago

Progress update: pushed b4effd236ab23cd3572d28ccc56665b9785e2972 to main.

This batch ports four real Bun server contracts without modifying tests:

  • Responses with statuses 204, 205, and 304 no longer write body bytes; the implementation also matches Bun's 101/103 null-body path.
  • TLSOptions.requestCert, rejectUnauthorized, and lowMemoryMode now require booleans and throw the exact Bun diagnostics instead of truthy-coercing invalid values.

The targeted unchanged matrix is 5 pass / 0 fail. The complete unchanged serve.test.ts matrix is now:

  • 192 pass
  • 1 upstream skip
  • 1 upstream todo
  • 7 fail

That is four additional native passes with no regressions. #682 and #683 are complete and closed. The remaining seven failures are isolated in #684 (/bun:info, two cases) and #685 (response-stream backpressure, five cases).

Validation passed:

  • ReleaseFast/JSC install build;
  • ReleaseFast/JSC home_rt test-mode gate: all 4 targets;
  • exact full upstream server file: 201 tests / 3,475 assertions.

Shell leak correction: the earlier 4/38 result used an ad hoc relative Home invocation. A harness-equivalent absolute invocation yields 41 pass / 1 fail; #686 was corrected in place to track only the real fdleak_ls exit-139 crash. Bun and Home both preserve the original invocation string in process.argv0, so no incorrect absolute-path behavior was added.

No workarounds or weakened coverage were introduced. The whole-file TODO inventory remains 8 while the remaining focused blockers are implemented.

14 days ago

Bun parity batch pushed to main:

  • fe85ff1dd7be5d4026839513294ff1d93aa7bc77 (fix(runtime): port Bun info and shell worker lifetimes)
  • f5ceee0b7b2d0a0aff6772471c0b5e6e1c96e0c1 (test(runtime): restore Bun shell leak corpus)

Completed:

  • #684: /bun:info now emits Bun version plus real OS/architecture/version metadata, accepts loopback TCP and Unix-socket clients, and falls through for non-loopback clients. The {} placeholder and macOS capability no-op are gone.
  • #686: fixed the intermittent shell worker use-after-free after a macOS crash report identified the exact post-enqueue EventLoopHandle dereference in touch. Audited and corrected touch, mkdir, glob expansion, and nested-shell completion.
  • #202: removed the now-stale whole-file TODO rewrite for js/bun/shell/leak.test.ts; blanket rewrite inventory is 7.

Measured validation:

  • /bun:info: 2 pass / 0 fail / 7 assertions.
  • unchanged full serve.test.ts: 194 pass / 1 upstream skip / 1 upstream todo / 5 fail / 3475 assertions. The five remaining failures are exactly #685.
  • unchanged full shell/leak.test.ts: 42/42 pass in four consecutive post-fix runs (168/168 total); pre-fix stress reproduced fdleak_ls as child exit 139.
  • ReleaseFast/JSC install build passed.
  • final ReleaseFast/JSC home_rt: substrate compiles: 4/4 passed.
  • corpus source is byte-identical to Bun 4982b91e3702094330f3be3883354c52b8c01323; router AST validation passed.

No test fixture edits, TODO substitutions, relaxed deadlines, reduced workloads, or coauthor trailers.

14 days ago

Bun parity checkpoint: cf32ab6 is pushed to main and closes #685.

This ports Bun 4982b91 response-stream backpressure end to end: native writable signaling, JS ReadableStream and async-generator pacing, RequestContext-owned uWS drain forwarding, tryEnd versus streaming offsets, queued small-write flushing, and checked sink readiness callbacks. The serve.test.ts whole-file TODO rewrite is removed.

Validation: ReleaseFast JSC install build passed; the test file remains byte-identical to Bun; four consecutive unchanged full-file runs each reported 199 pass, 0 fail, and 2 upstream todos. #202 now tracks only 6 remaining whole-file suppressions.

14 days ago

Bun parity batch landed on main: 010a6d8 (fix(runtime): activate Bun REPL and HTML glob entries).

Closed #680 and #681. The native REPL now passes the exact untouched upstream suite twice at 117/117 with 248 assertions, including PTY, Unicode editing, malformed UTF-8, Ctrl+C, module loading, async behavior, and secure history permissions. HTML glob entry serving passes the exact untouched upstream suite twice at 6/6 with 91 assertions and all expected routes. Both fixtures are byte-identical to Bun SHA 4982b91.

Whole-file TODO rewrites are down from six to four: patch internals (#679), Bun shell integration, and the two WebView suites. Continuing next with patch internals and another compatible feature batch.

14 days ago

Bun parity progress: ab08189 (fix(runtime): port Bun patch internals) is pushed to main and closes #679.

The native patch API now includes the real makeDiff binding, Zig 0.17 Git subprocess execution, stable path normalization, catchable long-rename errors, truncated-header safety, and correct parse string ownership. The exact untouched upstream file passes twice at 23/23 with no TODOs or unsupported results and remains byte-identical to Bun 4982b91.

Blanket whole-file TODO rewrites are down to three: the Bun shell integration matrix and the two WebView matrices. Continuing with the remaining native integration surface.

14 days ago

Bun shell parity advanced on main in e83b67b; focused issue #689 is complete.

Strict exact-fixture result, repeated twice:

  • Before: 357 pass, 83 upstream TODO, 21 fail, 1 inter-test error, 991 assertions
  • After: 369 pass, 83 upstream TODO, 9 fail, 0 inter-test errors, 1028 assertions
  • 461 tests, fixture byte-identical to Bun 4982b91
  • ReleaseFast/JSC production build passed

The port now preserves interpolated shell values as literal data across sentinel escaping, tilde and assignment parsing, glob expansion, diagnostics, and glob error routing. No workaround or test weakening was used.

Remaining shell failures are tracked in #690, #691, and #692. Corpus-routing work remains tracked in #202.

14 days ago

Pushed 0bc37d2 directly to main. This batch removed eight more unchanged Bun shell failures by synchronizing corpus PWD/cwd and porting ArrayBuffer redirect snapshot/pin lifetime semantics. Validation: ReleaseFast JSC build passed; bunshell.test.ts is byte-identical to Bun 4982b91; two consecutive full runs each produced 377 pass / 83 upstream todo / 1 fail / 1034 assertions across 461 tests. Repository-wide pickier still reports the known pre-existing vendored/corpus debt of 59,302 findings and changed no files. #690 and #691 are closed; #692 is now the sole active failure in this fixture.

14 days ago

Pushed f575a8d directly to main. This completes the current unchanged bunshell.test.ts parity pass: ReleaseFast JSC build passed, fixture byte identity against Bun 4982b91 passed, and the exact root-level command passed twice at 378 pass / 83 upstream todo / 0 fail / 1035 assertions across 461 tests. The fix preserves Bun repository-relative source/config topology in the native corpus launcher without modifying tests or adding shims. #692 is closed.

14 days ago

Current publication / remaining work (2026-09-07)

Published to origin/main as Chris Breuer, without coauthors: 2129e4a82. Home now 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; 100% logical Bun parity remains incomplete.

  • 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.
  • Final optimized native build: 46/46 steps. Focused compiled source-restoration regression: 1 pass, zero logged errors and leaks. Completed native runtime units: 1,826 pass / 19 skip / 0 fail.
  • The optimized aggregate is not passing and was interrupted (exit 143). TypeScript conformance: 1,418 pass / 1 fail, nested array-rest reassignment #695. Both optimized Bake integration scripts fail; an explicit opt-in reproduction confirms missing shared feature-flag behavior, alongside libdeflate opt-out #696. Default Debug aggregate behavior was not established by that run.
  • The unchanged bootstrap Request stress test reached 13.7 GB sampled footprint / 14.4 GB peak and was stopped: #697. 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.

14 days ago

Published e148e06c1 to origin/main as Chris Breuer, without coauthors. This paired batch fixes #695 and #696; whole-suite parity remains incomplete under #66.

  • Nested array-rest flow now preserves the remaining array or tuple slice instead of a single element. The strengthened existing regression requires zero diagnostics; new negative tests reject incorrect element types and tuple order. Focused checker 4/4; complete TypeScript conformance 1,419/1,419; the standalone original reproduction exits zero without diagnostics.
  • The shared runtime now honors typed Bake opt-in and libdeflate opt-out, retaining canary/debug defaults and the separate Bake debugging predicate. Optimized native build 46/46 steps. Feature-flag units 6/6 with defaults and 6/6 in each fresh process with both flags set to 0 and 1; unit build 23/23 steps.
  • Both complete Bake production and development/HMR integration scripts pass. These Home integration scripts explicitly enable the experimental feature, matching the upstream harness; their assertions are unchanged. The previous binary still fails the production script with opt-in. The final optimized binary rejects Bake with the flag absent, 0 or false, and creates no output.
  • Unchanged pinned gzip/fetch file: 24/24 / 43 assertions with libdeflate enabled, and 24/24 / 43 assertions with it disabled, using strict-native fresh processes. No upstream test bytes, assertions, workloads or deadlines changed.
  • The post-test pinned corpus audit still finds 12,996 paths present: 12,990 identical regular files, five identical symlinks, one differing expectations.txt, zero missing. Formatting, script syntax, documentation Pickier and whitespace checks pass; no new repository-wide lint pass is claimed.

The prior optimized full aggregate was interrupted and remains incomplete; these targeted repairs do not turn it into a full pass. #694 (intermittent Chrome first-navigation timeout), #697 (bootstrap Request stress memory growth), #202 (remaining adapters), external native build ownership and other full-suite gaps remain open.

14 days ago

Published 5e45c58a3 to origin/main as Chris Breuer, without coauthors.

All four unchanged js/web/request files now execute through Home's production native runtime. The public file/directory/subset/full-gate entry points initialize the bootstrap VM only for files that still need that adapter. The old bootstrap-only Request stress/subclass execution has been replaced with complete native coverage and retained-source checks for original loops, thresholds, type imports and subclass behavior.

  • Ordinary Request directory: 4 files / 24 pass / 0 fail / 0 TODO / 0 unsupported. All four files also pass separately. Pinned Bun and strict-native Home each pass the original 12 clone/allocation + 6 method-allocation + 2 subclass + 4 construction/body tests.
  • Direct native profiles retain every iteration: clone stress peak physical footprint 22,594,376 bytes; method stress 194,872,232 bytes. The ordinary clone run's RSS deltas are 0–13 MB, below the original 30 MB threshold. No counter, workload, deadline or assertion changes.
  • The new dedicated test-home-harness step supports -Dhome-test-test-filter. The entry point retains the real VM/generated-class/N-API exports and discovers nested source-file tests independently of named facade smoke tests. A registration-only selection is rejected. This removes test-selection dependencies without adding stubs.
  • Focused harness: 23/23 build steps, 4/4 tests, seven-second execution. Independently queried metadata confirms all three named Request routing/matrix/mixed-dispatch regressions plus the registration guard. Earlier registration-only runs receive no coverage credit.
  • Optimized native build: 46/46 steps. Shared-dispatch shell regression: 378 pass / 83 upstream TODO / 0 fail. Formatting, documentation Pickier and whitespace checks pass. The corpus audit remains 12,996 tracked paths present, 12,990 identical regular files, five identical symlinks, one differing expectations.txt, zero missing.

#697 is complete for replacing the failing obsolete stress execution with verified native Request coverage. This does not claim that the remaining bootstrap Request shim itself has been repaired; retirement of the remaining adapters stays in #202. The earlier interrupted full aggregate is still incomplete, and whole Bun parity is not achieved. #694 and external native build ownership remain open.

Next concrete batch: #698 records six Headers/Response files with 170 native passes per runtime under the correct fixture root and startup environment. Their ordinary native activation is still pending. The Response snapshot and release-Bun internal-module baseline failures were traced to those process-context requirements, without editing the fixtures or snapshots.

14 days ago

Published 649c3c48f to origin/main, authored and committed by Chris Breuer without coauthors.

  • All six original Headers/Response files now run natively through ordinary individual and combined Home commands: 170 passes / zero failures / zero TODOs / zero unsupported cases. Pinned Bun controls pass the same 170 tests with 750 assertions and the original Response inline snapshot.
  • Fixed the native corpus startup context and the additional absolute-path CLI root rewrite exposed by the first focused run. The real mirrored project root, startup internal-testing/GC defaults, explicit GC overrides and relative executable overrides are preserved. The source link points to Home's actual runtime source; fixture commands and snapshots are unchanged.
  • Final verification: 46/46 optimized build steps, 23/23 focused harness steps / 6/6 tests, independently verified metadata for all five named regressions plus the registration guard, and the isolated existing CLI path helper test. The earlier 4/5 matrix failure is retained as diagnosed evidence, not credited as a pass.
  • Adjacent ordinary Request, shell, WebKit, Node-script, bootstrap microtask and expected-failure routes pass. Existing shell/WebKit TODOs remain visible. Final corpus audit: 12,990 identical regular files, five identical symlinks, one historical expectations-file difference and zero missing paths.

#698 is complete. Full Bun parity and full aggregate execution remain incomplete under #66/#202; #694 remains open. Next is #699: native body/stream activation and removal of body-clone-specific substitutes. Its separate unchanged strict-native baselines are 9,467 passes / four upstream skips / zero failures per runtime.

Final binary SHA-256: f7e0abf6e3e75795c70f48221810814e986bcfa52c80cda7a6f614d82a29257f.

Implementation and verification details.

14 days ago

Published 04644b2d0 to origin/main, authored and committed by Chris Breuer without coauthors.

  • All seven unchanged body/stream files now execute in native Home. The ordinary grouped command reports 9,467 passes / four upstream skips / zero failures / zero unsupported cases, including the full 9,086-case stream matrix. The existing summary represents those skips in its TODO counter. This is per-file isolated native execution, not a single-VM full-suite aggregate.
  • Removed fabricated clone subprocess output, filename-specific chunk deduplication and special clone stream handling, including both helper definitions and all call sites. Original child processes, allocation/GC workloads, assertions, deadlines and skips remain intact.
  • Final build: 46/46 steps. Focused harness: 23/23 steps / 4/4 tests, with independent metadata confirming the three named regressions and registration guard. Adjacent Headers/Response passes 170/170, bootstrap FormData 5/5 and microtasks 2/2.
  • The adjacent Request directory failed its original deadline. The final clone case took 5,899.42 ms against 5,000 ms; its native file reports 11 passes / one failure / 12 assertions. One later diagnostic run each in Bun, previous Home and current Home passes, but does not erase or explain the failed ordinary run. This remains open in #701. No retry policy, extra warm-up, deadline increase or reduced workload was added.
  • Final corpus audit: 12,990 identical regular files, five identical symlinks, one historical expectations-file difference, zero missing paths. Formatting, documentation Pickier and whitespace checks pass.

#699 is complete for native body activation and clone-substitute removal. Full parity, aggregate execution, remaining adapters/build ownership and the Request/Chrome deadline failures remain incomplete under #66/#202/#701/#694. The next Blob activation/removal batch is #700, with separate native Home/Bun baselines of 65 passes / 215 assertions / four original snapshots per runtime.

Verified Home binary SHA-256: 68fcba6aed61397b1fe94fe1c2e4291644e68324c6ee4097f2a9f5adfabc181f.

Implementation and evidence.

14 days ago

Published f491cacd7 to origin/main, authored and committed by Chris Breuer without coauthors.

  • All six unchanged Blob files now execute natively through the ordinary grouped Home command: 65 passes / zero failures, TODOs or unsupported cases, including all four original snapshots. Pinned controls previously established the same 65 tests / 215 assertions / four snapshots.
  • Removed the UTF-16 child-process interception, filename-specific global Object.defineProperty override, and simulated prototype-descriptor lookup, including definitions and call sites. Original ownership loops, allocation-limit APIs, getter/array mutation, child code, GC calls and snapshots remain intact.
  • Final optimized build: 46/46 steps. Focused harness: 23/23 steps / 4/4 tests, with independent metadata confirming the full native matrix, retained bootstrap storage test, removal/workload checks and registration guard.
  • Adjacent ordinary commands pass in this run: body/stream 9,467 passes / four upstream skips, Headers/Response 170/170, Request 24/24, bootstrap FormData 5/5 and microtasks 2/2. The earlier Request deadline failure remains open in #701; this pass does not explain or repair it. #694 also remains open.
  • The stronger source audit compares directly with pinned Git blob objects, preserving raw symlink bytes and executable modes: 12,990 identical regular files / five identical symlinks / zero missing paths / zero mode differences. The sole content difference remains historical expectations.txt metadata. Formatting, documentation Pickier and whitespace checks pass.

#700 is complete for native Blob activation and substitute removal. Full logical parity, aggregate execution, remaining semantic substitutes and native build ownership remain incomplete. #202 now clearly marks the old adapter-green claim as historical evidence rather than current proof of parity. The next HTML web batch is #702: five original files have native Home/Bun baselines of 145 passes / one upstream platform skip / 530 assertions per runtime, with fake FormData child/RSS paths identified for removal.

Verified Home SHA-256: e444d3378dc349b89bf786228995209ae9f6e88d40ceb8ce80d34c12d7c90c65.

Implementation and evidence.

14 days ago

#702 is in implementation/testing: the complete five-file HTML web directory is routed natively and both fabricated FormData child-output/RSS paths are removed. The batched optimized build and focused harness are still running; no new passing result is claimed yet.

The broader exact-predicate/discovery audit is now tracked in #703. In this candidate, the 4,708-file Home inventory still routes 4,267 files through the bootstrap adapter; only 441 route natively. Pinned Bun's CI discovery selects 4,754 tracked paths before exclusions, with 78 absent from Home's classifier and 32 Home-only helper/fixture entries. Four mode differences and a missing upstream Node test config need semantic reconciliation. These are inventory findings, not suite passes. #703 is the next larger native execution migration after #702, and #202's historical adapter green result remains insufficient proof of logical parity. #701 and #694 remain open.

14 days ago

Progress from the corpus-scan lane. Two runtime fixes, plus three harness defects that were manufacturing failures.

Runtime fixes (4d83bdf19) — both the recurring shape: Bun fixed it on the Rust side, Home still carried the pre-fix Zig byte-identically.

  • dns.lookupService killed the process on a non-ASCII address. ZigString.slice() asserts 8-bit and panics on UTF-16; the panic text names the fix. Bun's live global_lookup_service takes a transcoding slice, and its stale dns.zig:3535 has the identical panicking line. Every other string argument in Home's own dns.zig already used toSlice — line 3623 was the lone holdout. js/bun/dns/resolve-dns.test.ts: crash → 79 pass / 0 fail.
  • CSS angle serialization spun forever on non-finite values. f32_length_with_5_digits divides by 10 until the value drops below 1; infinity never does, so calc(infinity * 1rad) and radians above ~3.4e33 hung in fmodf. Bun's live version returns usize::MAX for non-finite input. angle-serialization-hang: 0/1 (5s timeout) → 1 pass / 0 fail in 116ms. It also stops a second file exhausting memory — nested-function-backtracking goes oom → ordinary assertion failure.

Measured state

  • js/node: 261 pass / 6 fail / 0 crash / 0 hang of 267. Of the 6, three (dns, double-connect, node-tls-connect) fail identically in pinned Bun — environmental. The other three (cp, abort-signal-leak-read-write-file, pathToFileURL) pass at 46/0, 1/0, 2/0 once the debug build gets time proportional to its slowness; they only "fail" against timeouts calibrated for a release build.
  • js/bun/css: 7 pass / 7 fail / 1 slow / 1 oom / 0 crash of 16.

Corrections to earlier reports in this thread

Three harness defects, all the same shape — an observation about the harness recorded as a verdict about the code:

  1. A scan bound of 25s filed http-backpressure-max (needs ~46s, ~4.8 GB) and worker_heap_snapshot_gc (needs ~42s, allows itself 120s) as hangs. Both pass. Bound-hits are now re-run once at a higher bound.
  2. Per-test timeouts calibrated for a release build filed three debug-build slowdowns as failures. Timeout-only failures are now re-run and recorded as slow.
  3. The guard refused to start at kernel pressure level 2 (WARN — macOS sits there routinely), and the scanner classified the refusal as crash. That invented five CSS crashes; there were none. Refusals are now defer.

Note for anyone differential-testing CSS: the pinned release Bun lacks bun:internal-for-testing, so it cannot run css.test.ts, nested-selector-list-expansion, nested-vendor-prefix-duplication, duplicate-declaration-merge-hang or token-list-backtracking at all. It is not a valid control for those five — Home runs more of them than release Bun does.

Remaining, verified against Bun: atan2-backtracking-hang (Home 0/1, Bun 1/0), nested-selector-expansion (2/2 vs 4/0), nested-function-backtracking (2/3 vs 5/0). All three want Bun's un-ported CSS parser hardening: MAX_NESTING_DEPTH = 512 plus the unclosed_block_at_eof memo that stops the exponential re-parse (css_parser.rs:602,651). Neither exists in the stale Zig, so Home has neither.

14 days ago

Implementation is now committed on main after integrating the concurrent runtime fixes through 2babc1595470d2339e4e9b744093b11691455a22. Commit: e1a5d0e20be95fbbb5478fe9712a5ccae733f641, authored and committed as Chris Breuer without coauthors.

The previous build sessions and temporary logs disappeared during an interruption. A subsequent build was deliberately superseded when origin/main's runtime changes were integrated. The combined source is now rebuilding; final HTML/adjacent test verification is still pending, so this issue remains open and no new runtime pass count is claimed. Durable logs now live in zig-out/bun-port-702/.

The repository now includes scripts/audit-bun-corpus-discovery.py and docs/docs/bun-corpus-discovery-audit.json. The command independently reproduces the #703 discovery/route findings and source hashes without running the corpus. Pinned-source integrity remains 12,990 identical regular files, five identical raw symlinks, zero missing paths/mode differences, and the historical expectations metadata difference.

14 days ago

Published to origin/main as Chris Breuer, with no coauthors:

  • e1a5d0e20be95fbbb5478fe9712a5ccae733f641: all five HTML web files execute natively; fabricated FormData JSON child output and RSS results are removed; reproducible discovery audit added.
  • 6448d628a4cf985dc960a2adc40344f9732e1927: native triage scanner preserves original test deadlines and no longer retries timeout-only failures with an override.
  • 1cbac2921af857bf5ce081f53b3cc0c4c3ab7a9f: final integrated verification record.

The combined runtime includes origin/main's fixes through 2babc1595. Final optimized build 46/46 steps; focused harness 23/23 steps / 3/3 tests. Independent metadata confirms the actual original-file matrix, substitute-removal/workload checks and registration guard.

Both ordinary HTML directory execution and a separate single-native-VM HTML aggregate pass 145 tests / one upstream Linux-only skip / zero failures; the native aggregate has 530 assertions, matching the fresh pinned-Bun aggregate. Home's real file-error child reports 100 iterations / 1.78 MB growth, versus 1.75 MB in pinned Bun, within the unchanged 10 MB limit. An initial reference invocation used incorrect startup variable names and failed to load the internal allocation-test binding; that setup log remains separate from the corrected control. No original assertions, source bytes or deadlines changed.

Adjacent ordinary 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 open and unexplained despite this Request pass; #694 also remains open.

The deadline-scanner negative control ran a deliberately timed-out fixture exactly once and retained fail. This is scanner validation, not Home corpus coverage. Shell syntax, scoped Pickier, Zig formatting and whitespace checks pass. Pinned-object integrity verifies 12,990 identical regular files, five raw-identical symlinks, zero missing paths and zero executable-mode differences; only the historical expectations metadata differs.

Durable logs: zig-out/bun-port-702/. Verified Home SHA-256: 4a937ded48d609b76e336fdc192dd96439653a228073a234aaafcba176a5e783.

#702 is complete for HTML native activation and its two substitute removals. Full logical parity is not complete. #703 owns the next broad native discovery/execution migration: 4,267 of the 4,708 currently classified paths still use the adapter; pinned upstream pre-exclusion discovery has 4,754 tracked paths, with 78 missing and 32 extra Home classifications. Full native aggregate, platform execution and independent native build ownership remain unfinished under #66/#202/#703. The audit is reproducible with python3 scripts/audit-bun-corpus-discovery.py --zig /path/to/zig --output audit.json.

14 days ago

Published native-only corpus migration: 1d62a395b3cb1f467e84c3d2b295d33b5f92f417 on origin/main, as Chris Breuer without coauthors. It includes the shared runtime fixes through 5e9a3a049.

  • Removed the corpus's synthetic JavaScript prelude, source-rewrite engine, fixture-specific outputs and adapter-only test infrastructure (about 160,000 lines). Every selected original file now executes in Home's production runtime; the former 4,267-file bootstrap fallback is gone.
  • Discovery matches 4,754 pinned pre-exclusion CI entries: 1,863 test-runner entries and 2,891 scripts, with zero missing/extra paths or mode differences. A deeper check of spawnBunTest corrected the two cluster entries to script mode. The audit separately identifies 23 comment-only sources, which receive no passing-feature credit.
  • Restored the exact upstream Node config, preserved explicit CLI config, retained real native execution/workload matrices, and removed the old N-API concurrency override. Added real child-failure, Node-assertion, static-ESM and inventory controls.
  • Standalone discovery tests pass 11/11. The optimized build and focused native controls are now running; new native runtime pass counts are not yet claimed. The earlier compiler processes were superseded to correct the cluster modes before testing the final source.

The full CI execution profile remains explicit work: Bun's launcher sets its own test/file deadlines and reporter options, while ordinary Home test deadlines remain unchanged; native capture still has its existing 120-second outer file bound. CI/service/vendor setup, complete outcome retention, broad native feature failures, other platforms and independent native build ownership remain unfinished. #66, #202 and #703 remain open. The previous historical adapter green result is not valid completion evidence.

Audit: scripts/audit-bun-corpus-discovery.py, docs/docs/bun-corpus-discovery-audit.json; the previous inventory is preserved in docs/docs/bun-corpus-discovery-audit-before-native.json. Durable build/test logs: zig-out/bun-port-703/.

14 days ago

Native-only verification update for #703 / #66:

Published config correction 82156e60d as Chris Breuer, without coauthors. The initial native-only production build passed 46/46 steps, but the focused harness was 5/6, not green. Its Node assertion control exposed an incorrect split --config path argument. The launcher now emits the exact pinned CI form --config=path; direct Home and pinned Bun controls reach and fail the intended Node assertion. The corrected optimized and focused builds are running.

Retained ordinary native routes passed: HTML 145/one original skip, Blob 65, body/stream 9,467/four original skips, Headers/Response 170, Request 24, FormData boundary 5, microtasks 2. A separate HTML native aggregate matched 530 assertions and 145/one skip. Source audit: 12,990 regular files and five symlinks match pinned bytes/modes; only existing expectations metadata differs. Scoped lint and format checks pass.

All 4,754 discovered entries still route natively with zero path/mode differences. The comparison plan now retains each individual Home and pinned Bun result for all 78 formerly missed files; it runs after the corrected build completes. This is an ordinary execution baseline, not full CI launch-profile equivalence. Inactive Docker guards receive no Docker coverage credit. Full parity, #701/#694, CI profiles, outcome accounting, service/vendor/platform setup and independent build ownership remain unfinished.

14 days ago

Progress under #703 / #66:

The config-fixed runtime 82156e60d passed 46/46 production steps and all six focused controls. Its complete 78-file comparison retained 156 first-attempt logs: 69 files exit zero in both runtimes, four Docker guards are inactive, four fail only in Home, and one certificate-expiry failure occurs in both. The per-file baseline and log hashes are published in docs/docs/bun-native-newly-discovered-baseline.json.

The Home accounting/extension corrections are published in 1e2f39847: manual-assertion process checks are separate from registered test counts, failed processes retain their actual registered results, original TAP skips/comment-only files have separate counters, and the CLI accepts every discovered JavaScript/TypeScript extension. The audit now checks the CLI's actual target classifier too; all 4,754 entries classify as files. Corrected native verification is still pending.

A host restart interrupted the first build. Two later supervised attempts hit false tree-memory limits: a real two-process probe showed the guard was adding the aggregate Summary Footprint to the individual process totals. Fixed in ab44979a9 on main; regression tests and live positive/negative controls pass. The default limit and host-pressure checks remain enabled. Production and focused builds are now running sequentially with correct measurement. No test deadline was extended, and no incomplete build is reported as passing.

The missing native create command is tracked in #709; its initial native activation and filesystem/process API port are prepared in an isolated checkout, pending compilation and integration. The shared expired TLS fixture is tracked in #710; its original validation and pinned bytes remain intact. All completed publications are as Chris Breuer without coauthors. Full Bun parity remains incomplete.

14 days ago

Native create activation is on main in 7725c33aed043c7b5f956b8d3f26ced7e771a942, alongside the pending accounting changes from #703. The command no longer selects system Bun; npm/scoped/versioned templates use the native package executor, while local/GitHub/catalog and JSX paths are activated together.

This is not yet a verified create port. Type-checking the previously dormant full command exposed old filesystem APIs, missing facade exports for existing native helpers, and JSX generator initialization/path contracts. Those are being repaired together. First compiler outcomes are retained under zig-out/bun-port-709/build-{first,second,third,fourth,fifth,sixth}.log; no failed attempt is counted as a pass.

Prepared verification preserves the original template tests (local directories, scoped npm errors, GitHub archive/install, lifecycle tasks), original JSX create-to-build tests, and the unchanged rsbuild create/install/build integration. Each original file gets one Home attempt and one pinned Bun control with ordinary test deadlines, plus separate positive and negative accounting checks from #703. Complete CI-profile, platform and broader runtime parity remain open under #66.

The default executable build also no longer emits optional API docs (62f2f2cbf); the explicit docs target remains to be verified. Build resource stops are incomplete results, and the stricter host-pressure supervisor remains enabled.

14 days ago

Pushed 66a6d6e444ed9c6be2817f1b2901b67aacb06f4b to origin/main as Chris Breuer, without coauthors. Production build passed 46/46 steps with the complete native create command activated (measured peak tree footprint 13,319 MB). Runtime SHA256: 435b57f0b492e01ef40deb0254fdf79b0ea6409b45eeb7ff077714189933d743.

The original cli/install/bun-create.test.ts reports 13 passed, 0 failed. The unchanged rsbuild integration now completes its real native create, 89-package install, production build, and all assertions, with no system Bun delegation. It is correctly reported as one process check, zero registered test passes. The original HTTP batch passes 29 registered tests plus the separate http-spec.ts process check, whose original output confirms 40/40 custom checks.

The negative accounting control initially lacked its private tracked-file manifest and therefore did not reach execution. That invalid setup outcome is retained. After adding the control manifest, Home correctly exits 1 with the real Node assertion diagnostic, zero registered passes, one successful process check, one failed file, one comment-only file. No pinned test source changed.

JSX is still failing. Home's first original JSX file run is 1 pass / 12 failures: leading --only-missing caused install to be treated as a script. A general native dependency-command classification fix for leading flags is now rebuilding together with the six focused corpus harness tests. The pinned Bun JSX control also failed (3 pass / 10 fail), from snapshot differences and original 5-second deadline failures; those do not excuse the Home dispatch defect. No snapshots or deadlines were changed.

Evidence is retained under zig-out/bun-port-709/, and a compact per-result report with hashes is prepared at docs/docs/bun-native-create-accounting-baseline.json. The ordinary baseline is not full upstream CI-profile equivalence or 4,754-file coverage. Successful child stderr retention is still incomplete, so the template gate's 13 registered passes alone cannot independently exclude its existing GitHub rate-limit early return. Explicit API-doc generation also remains to be verified. #66, #703, #709 and #438 remain open.

14 days ago

Everything from this batch is committed and pushed to origin/main through 9e1656f7c3cd4b76200819e88a630f09b028e5c7, as Chris Breuer without coauthors. The newer native HTTP Request change was merged without dropping work.

Verified runtime remains 66a6d6e444ed9c6be2817f1b2901b67aacb06f4b, SHA256 435b57f0b492e01ef40deb0254fdf79b0ea6409b45eeb7ff077714189933d743:

  • Production build: 46/46 steps.
  • Original native create templates: 13 registered passes; unchanged rsbuild create/install/build succeeds as one real process check.
  • Original HTTP accounting cases: 29 registered passes plus the script's actual 40/40 manual checks. The corrected private negative control fails correctly with its real Node assertion.
  • Retained regressions: 9,878 registered passes, five original skips/todos, zero unexpected failures across HTML, Blob, body/stream, Headers/Response, Request, FormData boundary and microtasks. The alternate whole-VM HTML route also passes its same 145 cases plus one original skip; it is not additional distinct coverage.
  • Discovery audit: all 4,754 pinned entries match, with no missing, extra, CLI-routing or native-mode differences. Integrity audit still finds 12,990 identical regular files and five identical symlinks; only the known expectations metadata differs.

Newer source is pending full runtime verification. 62d020e94 fixes leading native dependency flags. 6775d0ba9 streams each completed file's stdout, stderr and process status for every CLI gate, avoiding discarded successful stderr and repeated aggregate-buffer copying; its regression extends the existing focused harness with success-after-failure output and sink-error checks. Syntax, formatting and discovery checks passed. No claim that those new runtime tests have run yet.

The compiler was stopped through its supervisor when disk space fell below 350 MB; the volume then filled completely and briefly prevented Git writes. Only this task's inactive generated artifacts were reclaimed. 643c20934 now guards actual working/temp-volume free space; all six live disk/scanner controls pass, including refusal, cleanup, measurement failure and distinguishing a child's own exit 123. Disk stops remain incomplete outcomes, never feature passes.

The latest full build now safely refuses admission: 1,464 MB free, 8,192 MB required, exit 123 (zig-out/bun-port-709/final-full-build-admission.log). The user has been asked to free at least 10 GB. Once space is available, the next batch is the full rebuild and six focused harness tests, offline leading-flag dependency controls, original JSX tests, and explicit API-doc generation. The earlier JSX results remain Home 1 pass / 12 fail and Bun 3 pass / 10 fail; snapshots and original deadlines remain unchanged. Full CI-profile, platform and 100% suite parity remain unfinished.

Compact verified evidence and hashes: docs/docs/bun-native-create-accounting-baseline.json. Detailed local logs and continuation state are under zig-out/bun-port-709/. #66, #703, #709 and #438 stay open.

14 days ago

The goal is now marked blocked, after three consecutive goal turns confirmed insufficient disk for the required full native rebuild and verification. Only about 1.1 GB remains; no verification process is running. All changes through 9e1656f7c3cd4b76200819e88a630f09b028e5c7 are committed and pushed to origin/main.

The full Bun-to-Home objective is unchanged and remains incomplete. The user has been asked to free at least 10 GB. Resume with the full rebuild, six focused corpus harness tests, leading-flag dependency controls, original JSX tests, and explicit API-doc generation. The prior verified runtime and all failure evidence remain recorded in the previous checkpoint. This issue stays open.

14 days ago

The disk-space block is cleared. Following the explicit instruction to delete generated data and continue, I removed inactive Home compiler cache, old app-update staging files, and Bun download/transpilation caches after checking for open files. Available space increased from 1.07 GiB to 9.26 GiB; source changes, installed reference binaries, and retained test evidence were preserved.

The combined native build and six focused corpus tests are now running against 9e1656f7c3cd4b76200819e88a630f09b028e5c7, covering the pending leading-flag routing, complete per-file output reporting, and merged HTTP Request changes. The build still uses the machine lock, memory bounds, and disk admission/live guards. Runtime verification remains pending; this is not a passing-suite claim. Follow-up remains tracked in #703, #709, and #438.

14 days ago

Disk cleanup restored enough space for verification. On source 9e1656f7c3cd4b76200819e88a630f09b028e5c7 (Home SHA-256 5e7a26d1b366fad80626c7ff19052d119cb19235b84f15a8f85378e49bb4f3ed):

  • Native build: 23/23 steps; focused corpus harness: 6/6 tests.
  • Retained HTTP/web regressions: 9,919 registered passes and 5 original skips/todos, including all 41 HTTP route cases.
  • Original create templates: 13/13, 25 expects, complete stdout/stderr retained; no GitHub 403 early-return diagnostic.
  • Original Rsbuild create/install/build script completes as one process check, with zero fabricated registered passes.
  • Accounting controls pass, including real Node assertion failure propagation.
  • JSX: Home 1 pass/12 fail; pinned Bun 3 pass/10 fail. Leading-flag installs now execute; the next Home gap is generated dev dispatch into the language watcher. Original deadlines and snapshots are unchanged.
  • The independent leading-flag sequence exposed duplicate local dependency keys in both executables. This is a logical failure, tracked in #713; parsed JSON checks that collapse duplicates are insufficient.

32a172e61 fixes native package dev dispatch and create elapsed-time initialization, with a regression that fails on the prior binary. That new build is now running; these newest fixes are not yet runtime verified. The detailed checkpoint is committed in fe8045c38, preserving earlier outcomes in docs/docs/bun-native-create-accounting-baseline.json. Refs #703, #709, #438, #713. Full inventory, CI launch profile, API-doc target, and platform/build ownership work remain open.

14 days ago

The new native-create entrypoint regression caught an additional executable-identity failure after the dev dispatch fix. The 32a172e build completed 46/46 steps, and package arguments forwarded correctly, but nested bun ./dev.mjs resolved to system Bun 1.3.14 rather than the Home executable. This result is retained as a failure in zig-out/bun-port-709/create-entrypoints-after-fix.log; no passing native parity is claimed.

The cause is in RunCommand.privateNodePath: it creates node/node and node/bun in the private executable directory, while the ordinary script PATH includes the outer directory. That directory was missing its intended bun link. cb7d597e5 restores the native executable alias in the actual PATH directory and verifies its target through the existing path-validation code. This fixes general nested package commands, without forcing ordinary Node commands onto another runtime.

The new build is running under the same resource guards. The regression will require the exact Home process.execPath, argument forwarding, failure exit status, and valid create timing before acceptance. Refs #66, #438, #709.

14 days ago

During the cb7d597 native build, /Users/chris/Code/Home/lang-bun-port disappeared, along with several other worktree directories. The cause is not determined. The affected build was stopped through its own supervisor and returned 130. All source commits had already been pushed to origin/main; the checkout was restored at cb7d597. The pinned Bun reference hash is unchanged.

The removed worktree contained local-only logs, fixtures and installed binaries in zig-out/bun-port-703 and zig-out/bun-port-709. Their previously committed result counts and hashes survive, but the raw paths are no longer inspectable. The baseline now says this explicitly in b46705b. This is not a passing build result.

A recovered build is running. New evidence is stored under the shared Git metadata directory, outside the disposable worktree, and exposed through zig-out/bun-port-recovery. Next verification remains native create/package/bunx executable identity and the original create tests. Refs #66, #703, #709, #438, #713.

14 days ago

Recovery verification progressed: native package-run and bunx regressions pass with exact Home executable identity; ab611fa fixes absolute local template detection and the complete native-create entrypoint regression now passes (argument forwarding, exit status, local copying and elapsed time). zig build install docs completed 49/49 steps; the API-doc index and all three referenced local assets exist.

The original templates still pass 13/13 and the Rsbuild create/install/build process passes. The recovered JSX run reached LolHtmlUnavailable: the removed worktree contained the isolated native HTML library, and build.zig silently treated its absence as an optional feature. That run is explicitly a reduced build configuration, not full native-runtime parity evidence. Home had 1 pass/12 fail; the unchanged pinned Bun control had 5 pass/8 fail.

The library is restored through scripts/build-lolhtml.sh (96 native C-API exports). fcb3461 makes it mandatory for JavaScript-enabled builds. Three live configuration controls pass: missing parser rejects JavaScript configuration, non-JavaScript configuration remains available, restored parser succeeds. A new guarded native build with the real parser is running. No test assertions, snapshots, or deadlines were weakened.

Frozen dependency provisioning has a separate verified-archive extraction failure for aws-cdk-lib, tracked in #714. The duplicate local dependency metadata defect remains #713. Fresh logs/checkpoints survive under shared Git metadata and will be retained in the published baseline. Refs #66, #703, #709, #438.

14 days ago

The native HTML rebuild is verified: fcb3461 completed all 49 build/docs steps. Executable SHA-256: 3b9412bb55f7c2750c15d6abf1761910924e32e8ebc09683583e5e4eb3838cfd.

  • Native create regression passes: nested package commands use Home itself; dev arguments and failure status propagate; absolute local templates copy correctly and timing is bounded by real elapsed time.
  • Original HTML corpus: 145 registered passes, zero failures, one upstream skip/todo. Original create templates: Home and Bun each 13/13; Rsbuild completes successfully as a process check.
  • JSX now reaches real native development serving and production builds. Both runtimes report 5 passes/8 failures, including four development-server snapshot mismatches and four shadcn deadlines. Ordinary execution appended snapshots; the diff is retained and originals restored. These aggregate totals are provisional, not immutable snapshot verification or completed parity.
  • Native Home frozen provisioning exits 1 before AWS extraction. Isolated controls show Home rejects the same frozen lock that Bun accepts, despite identical serialized bytes. New #715 tracks this separately from #714. Verbose comparison diagnostics from e36a99a are building now; validation and pinned dependencies remain unchanged.

Fresh raw logs and manifests are now committed as lossless gzip evidence in 9391b1ca2, under docs/docs/bun-port-evidence/2026-09-08-native-create/. This preserves actual surviving evidence, including failures; no lost earlier logs were reconstructed. The baseline update is a6f5cb9. All commits are pushed to origin/main as Chris, without coauthors. Full parity remains open, including #713, #714, #715, the complete inventory/CI profile/platform matrix, and independent native build ownership.

Sign in to comment on this issue.