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

TypeScript parity checkpoint pushed directly to main as 063ce79, tracked in #783.

The qualified type-reference recovery path now preserves provenance for its six real diagnostic families instead of checking only TS2749 on the wrong anchor. Full checker and conformance gates pass, stripped ReleaseFast builds below the 3,840 MB ceiling, and two pinned Zod runs remain normalized-identical at 196 TS diagnostics plus the unchanged 3/3 HM9002 ratchet.

14 days ago

Another TypeScript parity checkpoint is on main as 709d07b, tracked in #783.

An unimported generic alias from a sibling virtual module now keeps checker-recovery provenance after its authoritative TS2304, while an explicitly imported alias remains modeled. Full checker, conformance, stripped ReleaseFast, and two deterministic pinned-Zod gates pass below the 3,840 MB ceiling; Zod remains at 196 TS diagnostics and the unchanged 3/3 HM9002 ratchet.

14 days ago

A third TypeScript parity checkpoint is now on main as 8b52089, tracked in #783.

Missing import-type modules now preserve checker-recovery provenance using their exact emitted TS2307/TS2792 code, while resolved import-type members remain modeled. Full checker, conformance, stripped ReleaseFast, and two deterministic pinned-Zod gates pass below the 3,840 MB ceiling; Zod remains at 196 TS diagnostics and the unchanged 3/3 HM9002 ratchet.

14 days ago

TypeScript provenance checkpoint pushed directly to main as 963c4f1 (#783). This closes two additional diagnosed-any gaps without changing TypeScript diagnostics: reserved typeof function retains its existing TS2552 suggestion, and missing indexed properties on typeof globalThis retain TS2339 provenance with correct diagnostic/recovery ownership.

All guarded gates pass under the 3,840 MB ceiling: complete checker 4,471/4,471, conformance 16/16 + 86/86 + 586/586, stripped ReleaseFast build, two normalized-identical pinned-Zod runs at 196 TS diagnostics and 3/3 HM9002, and hermetic ratchet controls. Highest supervised peak was 2,872 MB.

14 days ago

Published two direct-main commits as Chris Breuer, without coauthors: 2a043b12a and 02517756a.

This batch removes 31 exact TypeScript iterator regressions while retaining checker-recovery provenance through sync/async loops and nested destructuring. All 47 affected unchanged upstream fixtures pass. Missing corpora, empty selections and compiler-family exact mismatches now fail; ten controls are wired into CI.

Complete checker passes 4,473/4,473; normal conformance passes 1,432/1,432 (16/16 smoke, 86/86 category, 586/586 baseline-aware). The uninterrupted exact prefix improves from 2,985/3,020 to 3,016/3,020, correctly exiting nonzero for four residual fixtures. The stripped compiler builds; two pinned Zod runs remain identical at 196 TS diagnostics and 3/3 HM9002. The 3,840 MB guard and upstream fixtures were preserved.

Details and the four residual cases are in #832; related provenance work remains in #783. Raw logs and source pins are retained on main. Full logical Bun parity remains incomplete.

14 days ago

Pushed d6a5c1e14 directly to main as Chris Breuer, without coauthors. The four prior exact TypeScript mismatches are repaired through proper recovery semantics and JSDoc origin ownership.

The uninterrupted prefix is now 3,020/3,020 exact, with zero skips. Complete checker passes 4,477/4,477; normal conformance passes 1,432/1,432 (16/16, 86/86, 586/586). The stripped compiler builds, and two pinned Zod runs remain identical at 196 TS diagnostics and 3/3 HM9002 under the unchanged ceiling.

The next 200-case window measures 198/200; overloadTag2 and checkJsdocTypeTag5 remain in #832. Durable evidence is on main. Broader provenance work stays in #783, and full logical Bun parity remains incomplete.

14 days ago

Published e2f49901c directly to main as Chris Breuer, without coauthors. This repairs mutable-field literal widening and JSDoc return-contract ownership/name retention. Both unchanged failing upstream fixtures now pass.

The uninterrupted verified prefix expands to 3,220/3,220 exact, zero skips. Complete checker passes 4,480/4,480; normal conformance passes 1,432/1,432 (16/16, 86/86, 586/586). The stripped compiler builds, and two pinned Zod runs remain identical at 196 TS diagnostics and 3/3 HM9002 under the unchanged ceiling.

The next window at 3220 passes 200/200. At 3420, 198/200 match; typeOnlyMerge2 and computedPropertyName remain in #832. Durable raw evidence is on main. Full logical Bun parity remains incomplete.

14 days ago

Published 0234bc59818bd3ab20fd0cee6fadb2fb802bd1ad directly to origin/main as Chris Breuer without coauthors, following compiler 8e12ac031 and harness correction d739fdfea.

The harness no longer replaces actual diagnostics for 2,499 named fixtures, bypasses compilation for 13 names, copies expected library errors, rescues mismatches, or drops option-validation errors. Both compilation routes retain actual diagnostics; coarse and exact modes use the same route. Prior exact-prefix and full coarse-corpus 100% claims are withdrawn.

The compiler preserves namespace meaning through erased exports, accepts non-emitting computed keys, and applies the real any/unknown/undefined and definite-assignment rules to computed fields. Required fields still fail. The first original target run exposed an extra TS2564; that failed log is retained, and the compiler fix now gives 2/2 exact matches on the unchanged typeOnlyMerge2 and computedPropertyName cases.

Observed validation:

  • complete final checker: 4,483/4,483; program tests: 228/228;
  • harness honesty controls: 4/4; semantic field controls: 4/4 including module root;
  • real survey controls: 10/10, including absent corpora, empty selections and mismatches;
  • final stripped compiler builds; pinned 106-file Zod output remains normalized-identical at 196 TS errors and three HM9002 warnings, unchanged ceiling three;
  • fresh leading exact survey: 172/200, 28 actual failures, zero skips, exits 1;
  • normal conformance at d739fdfea: 1,400/1,423, 23 retained failures; baseline survey 582/586 with four mismatches. This older aggregate is not claimed as a rerun of the final field-initialization change.

Source/binary/fixture/baseline hashes and compressed successful and failing logs are committed here. All commands use the normal machine lock and 3,840 MB ceiling. Original upstream inputs, deadlines, skips, TODOs and ratchet ceiling remain unchanged. Twenty inactive local Zig object directories (about 1,445 MiB) were deleted after preserving evidence.

#841 tracks remaining baseline-derived strictness, real declaration/library mounting, file inclusion and upstream variant/configuration fidelity. These intermediate corpus observations do not establish faithful full-corpus parity. #840 and #832 remain open; full Bun acceptance remains incomplete in #66. TypeScript controls earn no original Bun case credit.

14 days ago

Published cc1128f62 directly to origin/main as Chris Breuer without coauthors.

Compiler inputs are now independent of expected diagnostic contents. The pinned TS7 GetStrictOptionValue returns true when strict is unset (Strict != TSFalse); this is applied consistently, then overridden by actual tsconfig, harness directives and explicitly selected variant options. No diagnostic-code scanning supplies strictness, and no expected header supplies the actual filename. Boolean variant parsing is limited to exact keys inside the selected filename's option list.

The fabricated any-exporting absolute package declarations are removed. Missing targets remain missing. Real nested TypeScript tests/lib bytes are mounted at /.lib; libFiles creates real program roots. Library imports, absolute package types and globals retain their declaration types. Actual skipLibCheck settings are preserved through configuration/variant selection and both compile paths. Direct skip directives were already supported in the program route; the corrected handling extends the missing paths and removes the raw text-based config approximation.

Observed results:

  • final input controls 6/6, including mutated-header invariance, physical library/package/global type preservation, missing input rejection and application errors under skipLibCheck;
  • real survey-gate controls 10/10;
  • unchanged type-only regression fixtures 2/2 exact;
  • corrected leading exact prefix 166/200, 34 actual failures, zero skips, exits 1;
  • full normal conformance attempt stopped with exit 125 at the unchanged 3,840 MB ceiling; no complete aggregate. This attempt preceded final library-policy wiring. The driver still eagerly evaluates declaration semantics before suppressing their diagnostics. A retained process sample shows repeated generic substitutions in the baseline survey on the real React graph.

Raw evidence and source/binary/library hashes include successful controls, compilation failures, the aborted run and process sample. No upstream source, baseline, skip, TODO, deadline or memory/ratchet limit was changed. The patch only changes the conformance harness, so no new standalone compiler or Zod result is claimed.

#842 now tracks the real declaration-graph substitution and checking cost. #841 remains open for complete variant execution, root-file inclusion and real default-library/compiler API inputs. #832 and full Bun acceptance in #66 remain open. These intermediate survey outcomes do not prove full TypeScript or Bun parity; controls earn no original Bun case credit.

14 days ago

Published source e2c643d68 and integrated evidence through 348e36e92 to origin/main. Main includes the concurrently published #839 export-owner improvements; no work was overwritten or force-pushed.

The source batch fixes five related behaviors:

  • Member-predicate metadata follows the actual rebuilt signature's binder. It no longer re-instantiates a member or its already substituted signature predicate a second time. Receiver-specific predicates preserve their separate substitution path.
  • Signature constraints/defaults share the original memo while their local substitution environment is unchanged; separate environments still produce independent binders.
  • Explicit skipLibCheck in declaration files avoids diagnostic-only interface inheritance/index relation passes while retaining inherited shapes, checked metadata and syntax diagnostics. Application validation remains active; other declaration processing still runs.
  • Program checking and cached emit use each file's .ts/.d.ts/.tsx syntax mode. A JSX root no longer forces JSX parsing onto its declaration dependencies.
  • Contextual parameter names such as object work in ordinary/assertion predicates, preserving parameter indices and regular non-predicate returns.

Observed gates: substitution controls 4/4; declaration-policy controls 3/3; complete checker 4,486/4,486; driver 198/198; latest program 232/232; parser/precedence 905/905; real survey controls 10/10. Latest stripped compiler builds under the 3,840 MB ceiling. Pinned 106-file Zod stays at 196 TS diagnostics and three HM9002 recoveries with the ceiling unchanged. Its diagnostic text changed from the prior checkpoint, and the normalized diff is retained; latest integrated output matches the first substitution build. This is a recovery ratchet, not a passing Zod project.

Real original-case evidence is deliberately not green:

  • Before the contextual-predicate parser fix, correcting per-file JSX mode reduced the two original React cases' peak from 3,597 MB to 154 MB, but both still failed exact comparison. This isolated real object-is-ReactElement syntax errors instead of fabricated JSX errors inside declaration comments.
  • Restoring that real predicate syntax exposes additional semantic work. The original React selection stopped at 3,851 MB against the unchanged 3,840 MB ceiling while intraExpressionInferencesJsx was active; its second case was unstarted.
  • The fresh integrated leading 200-case attempt stopped at the same ceiling (3,842 MB) on multiline.tsx and produced no complete aggregate. The previous 166/200 result remains historical to pre-predicate syntax and is not a latest-tree passing count.
  • A retained sample shows collectProgramCommonJsExports -> moduleExportAssignmentInfo -> compileSource -> full declaration checking. Export discovery is still recompiling/checking an owner instead of consuming the retained bound source. This is the next concrete #842 target, alongside correct generic/declaration resolution.

Evidence, failures, samples and hashes are committed. Disk-critical/admission failures and a known-bug intermediate interruption are retained. Only inactive generated test/build caches and regenerable download/HTTP caches were reclaimed; source, pinned Bun build objects and pinned WebKit libraries were preserved. No fixture, baseline, original skip/TODO, deadline or memory/ratchet ceiling was modified. No unfinished, interrupted or skipped test earns passing-case credit.

#842 remains open for these real owner/type-graph costs. #841 retains complete input/variant/default-library fidelity, #832 full TS corpus evidence, and #66 full Bun acceptance. The persistent full-port goal remains active.

14 days ago

Published source 51db032e9 and evidence 1602e3d63 to origin/main.

Declaration export-assignment discovery now inspects the retained compilation instead of reparsing and fully checking it. The independent source query prepares syntax, and conformance resolver callbacks reuse their bound owner. Normal compilation still checks declaration semantics: a control verifies the same owner later reports a genuinely missing type.

Validation:

  • Complete Program suite: 234/234.
  • Retained resolver controls: 4/4; opt-in runner controls: 3/3; survey admission/mismatch controls: 10/10.
  • Standalone compiler builds under the unchanged 3,840 MB ceiling, with 2,866 MB observed peak.
  • Pinned 106-file Zod recovery check retains 196 TS diagnostics and three HM9002 recoveries, ceiling three, at 596 MB. Diagnostics match the preceding checkpoint after normalizing only its temporary directory; this is not a passing Zod project.

The two original React cases were requested with unchanged declarations, baselines and the original 900-second deadline. The first, intraExpressionInferencesJsx, stops at 3,844 MB against the unchanged 3,840 MB ceiling (exit 125). The second, contextuallyTypedStringLiteralsInJsxAttributes02, is unstarted. No complete aggregate or passing-case credit exists. The retained process sample now places the work in normal declaration member lowering/generic substitution, rather than the removed export-discovery check.

An initial compiler admission attempt expired while waiting for the shared lock before compilation began; the same-limit retry succeeds. Both attempts are retained. Pins, source hashes, successful controls, resource failure and sample are in docs/docs/bun-port-evidence/2026-10-07-ts-export-assignment-owners.

Remaining work is correct shared/cyclic type substitution and faithful declaration-check policy in #842, with input fidelity in #841 and complete corpus/Bun acceptance in #832/#66. Full parity remains incomplete; previously fabricated corpus claims remain withdrawn (#840).

14 days ago

Published source b1242be3a and evidence 0b0339a21 to origin/main.

Generic signatures now share a substitution memo once their local binder map is fixed, across parameter, return, receiver and predicate types. The enclosing memo is restored afterward, so separate binder environments remain independent. Two new controls fail on the preceding implementation (excessive graph rebuilding and different parameter/receiver identities) and pass without changing their expectations. Nested binders/defaults and assertion-predicate identity are checked.

Validation: substitution controls 6/6; complete checker 4,488/4,488; driver 198/198; Program 234/234; opt-in runner controls 3/3; survey admission/mismatch controls 10/10. The standalone compiler builds at 3,024 MB observed peak. Pinned 106-file Zod retains 196 TS diagnostics and three HM9002 recoveries, ceiling unchanged, at 617 MB. Diagnostic text matches the preceding checkpoint after normalizing only its temporary directory; this is a recovery check, not a passing project.

The original React retry still stops at the unchanged 3,840 MB ceiling, observed 3,841 MB, exit 125. intraExpressionInferencesJsx started; contextuallyTypedStringLiteralsInJsxAttributes02 is unstarted. No complete aggregate or passing-case credit exists. Original declarations, expected diagnostics, skips, TODOs and the 900-second deadline are unchanged. A retained sample from the earlier disk-stopped attempt on the same source shows declaration member lowering and recursive inheritance-base metadata substitution (decl_single_base). Signature-map sharing does not solve these remaining recursive costs.

Disk admission refusals, the critical-disk interruption, and successful retries are retained separately. Inactive generated test/build caches and older registry-cache copies were reclaimed while preserving source, installed runtimes and pinned Bun/WebKit artifacts. All retries used unchanged resource limits. Pins, source/artifact hashes, negative controls and raw results are in docs/docs/bun-port-evidence/2026-10-08-ts-signature-memo-scopes.

#842 remains open for correct recursive/shared substitution and faithful declaration-check policy; #841 tracks input fidelity and #832/#66 full corpus/Bun acceptance. Full parity remains incomplete. Previously fabricated corpus claims remain withdrawn (#840).

14 days ago

Published source 0b8d584c1 and evidence 53167b7e5 to origin/main.

Receiver predicates now share their callable's rebuilt target when their resolved original targets match, while retaining receiver-owned annotation locations, parameter indices and assertion kinds. Unknown targets with different annotation nodes remain independently resolvable. This prevents creating another local binder when only a source location or receiver override differs.

Negative controls are retained: the preceding implementation fails the location/binder control (2 pass / 1 fail); the initial correction then fails an added receiver-override control (3 pass / 1 fail). Final controls pass 4/4 without weakening their assertions, including guard/assertion variants, independent string/number environments and different unresolved targets.

Complete checker 4,491/4,491, driver 198/198, Program 234/234, opt-in runner controls 3/3 and survey admission/mismatch controls 10/10 pass. The standalone compiler builds at 2,993 MB peak. Pinned 106-file Zod retains 196 TS diagnostics and three HM9002 recoveries, ceiling unchanged, at 615 MB. Its diagnostics match the preceding checkpoint after normalizing only its temporary directory; this recovery check does not establish a passing project.

The unchanged original React attempt stops at 3,844 MB against the unchanged 3,840 MB ceiling (exit 125). intraExpressionInferencesJsx starts; contextuallyTypedStringLiteralsInJsxAttributes02 is unstarted. No complete aggregate or passing-case credit exists. Original fixtures, declarations, baselines, skips, TODOs and the 900-second deadline remain unchanged.

The retained sample pins the remaining repeated work to decl_single_base inheritance-base metadata substitution at check.zig:166393, reached during declaration member lowering. Earlier signature-memo notes and issue comments are corrected to name this inheritance path rather than receiver predicates. The reproduced predicate defects are fixed; recursive inheritance metadata remains unresolved.

Pins, source/artifact hashes, all controls, failure and sample are in docs/docs/bun-port-evidence/2026-10-08-ts-receiver-predicate-targets. #842 remains open for recursive/shared substitution and faithful declaration-check policy; #841 tracks input fidelity and #832/#66 complete corpus/Bun acceptance. Full parity remains incomplete, and fabricated corpus claims remain withdrawn (#840).

14 days ago

TypeScript harness-input parity advanced in #841 via 3698c7a. Home now executes every explicit configured fixture variant instead of selecting one expected-baseline filename; focused guarded evidence is 5/5 helper tests, 4/4 synthetic variants, 3/3 pinned target-matrix cases, and 87/87 named local cases. #841 remains open for root-file admission and real default-library/compiler-API inputs, so this is not a full TypeScript-conformance or Bun-suite completion claim. Detailed checkpoint: docs/docs/bun-port-evidence/2026-10-08-ts-variant-execution/README.md.

14 days ago

Additional TypeScript input-fidelity progress landed in #841 via ab5d774. Home now separates compiler roots from other virtual-filesystem inputs using the pinned runner rules; focused controls pass, three representative pinned fixtures pass 3/3, and the existing local gate remains 87/87. #841 stays open for inherited configs, real default libraries/compiler-API inputs, and unsupported/skip accounting, so this is not a full corpus or Bun-suite completion claim. Evidence: docs/docs/bun-port-evidence/2026-10-08-ts-root-admission/README.md.

14 days ago

TypeScript parity checkpoint: 10a2a8cf1 is now on main, adding inherited virtual-tsconfig resolution and the accompanying resolver fix. Guarded focused coverage is green (10/10 controls, 4/4 pinned compiler fixtures, 2/2 pinned conformance fixtures, 87/87 local categories, full ts_resolver). Full scope and remaining #841 work: /home-lang/home/issues/841#issuecomment-6061524157

14 days ago

TypeScript input-fidelity checkpoint: 17b45081a landed directly on main and is detailed in #841.

It ports TypeScript's inherited config unset/null semantics and recoverable exact TS5024 diagnostics for malformed string lists and extends values. Guarded focused results are green (tsconfig 138/138; local configured category 87/87); the separate unfiltered conformance attempt hit the unchanged 3,840 MB ceiling and remains explicitly inconclusive. No complete-corpus or full Bun-parity claim is made.

14 days ago

TypeScript parity checkpoint pushed to main in a85f89e5b.

Home now mirrors the pinned typescript-go compiler runner dynamic unsupported-option accounting: unsupported configured variants remain visible as skips and cannot be counted as passes. The focused ES5/ES2015 matrix reports exactly 1 pass + 1 skip, while the real named category regression remains 87/87 passed with zero skips. All substantial commands were serial and guarded below the 3,840 MB ceiling; Pickier, formatting, docs checks, and the 110-page docs build passed.

Detailed evidence: 2026-10-08-ts-upstream-skips. This is a bounded harness-fidelity checkpoint, not a full Bun-suite claim; static fixture skips and remaining TypeScript/Bun parity work stay open.

14 days ago

Another trustworthy TypeScript/Bun parity checkpoint is on main: 5ed51684c.

Home now preserves the pinned compiler runner static 45-file exclusion surface as explicit skips: one per disabled source, before reading or configured-variant expansion, with zero pass credit. Both real reason-group controls (APILibCheck.ts and preserveUnusedImports.ts) report total 1 / skipped 1 / passed 0 / failed 0. The prior dynamic-option matrix still reports one ES5 skip plus one ES2015 pass, and the synchronized named category gate remains 87/87 passed.

All substantial runs were serial under the unchanged 3,840 MB ceiling; no fixture, baseline, expected diagnostic, or limit changed. Evidence: 2026-10-08-ts-static-skips. This is a bounded harness-fidelity checkpoint, not a full Bun-suite claim.

14 days ago

TypeScript input-fidelity checkpoint landed on main in f25b1c8, tracked in #841.\n\nHome now selects the same default library entry points as the pinned native typescript-go runner, including LatestStandard -> lib.es2025.full.d.ts, ES2015 -> lib.es6.d.ts, full entry points for ES2016+, and lib.d.ts for ES3/ES5. The complete ts_program package passed under the 3,840 MB guard with a 2,110 MB peak; Pickier, formatting, diff checks, and the 112-page docs build also passed.\n\nThis is a focused selector checkpoint only. Real bundled-library mounting and compiler-API input fidelity remain open in #841; it is not a complete TypeScript or Bun parity claim.

14 days ago

TypeScript input-parity progress landed directly on main in 07f774bbc (fix(ts): mount pinned compiler libraries (#841)).

Home now mounts all 108 exact standard-library files from the pinned typescript-go tree under an isolated compiler-host namespace for conformance Program runs. It carries effective target/lib/noLib/type inputs, ports the explicit library alias map, gives noLib the same precedence as upstream, and keeps skipDefaultLibCheck distinct from skipLibCheck.

Guarded verification under 3,840 MB: complete ts_program and ts_driver packages passed; exact-byte mount and real-byte Program controls passed; the named category gate remained 87/87; documentation audits and the 113-page scoped BunPress build passed. A DOM-heavy exact fixture hit the unchanged 600-second wall bound and is explicitly retained as a non-result.

Detailed evidence and remaining scope are recorded in #841 and 2026-10-08-ts-bundled-libraries. This does not claim full TypeScript or Bun corpus completion.

14 days ago

Mapped inheritance-base references and lifetime fixes are published in 4656fcaf3, with retained evidence.

  • Exact source bodies, declaration binders and mapped arguments remain pool-owned; consumers resolve the base surface on demand. Non-parameter rewrites retain general substitution. No mapper escapes its scope.
  • Controls cover independent arguments, eight-level metadata deferral, own/inherited ordering, normalization, ownership transfer and forced member-pool relocation. Original negative failures and the initial crash are retained.
  • Tested source stage ab5d774e4: checker 4,501/4,501, driver 199/199, Program 238/238, opt-in 3/3; compiler build completes. Pinned Zod reports 195 TS diagnostics / three HM9002 recoveries, with the ceiling unchanged. Its normalized output differs from the preceding 196-diagnostic checkpoint; the diff is retained.
  • Later fixture-harness stage 773ca888f: opt-in 3/3, survey admission/mismatch controls 10/10. These are control results, not original corpus-case credit; subsequent fixture-library changes are not covered by these aggregates.
  • Original React on 4656fcaf3 exits 125 at 3,842 MB against the unchanged 3,840 MB ceiling; diagnostic replay exits 125 at 3,844 MB. The first fixture is unfinished and the second unstarted. No complete aggregate. The replay sample now shows structural member/union substitution in generic interface instantiation as the remaining dominant work.

Shared/cyclic substitution and faithful declaration-check policy remain open in #842; input fidelity and complete corpus acceptance remain open in #841/#832/#66. Fixtures, expectations, original skips/TODOs, deadline and resource ceilings were not weakened.

14 days ago

Owned cyclic substitution references and lexical binder scope are on main in 9e98f427d and 774f72f16, with retained evidence.

Back edges preserve exact source bodies, declaration-parameter identities and mapped arguments. Completed shared ancestors can memoize without retaining an unsubstituted recursive edge. Consumers use the generic resolver for structural assignability. A subsequent regression caught loss of a recursive generic method binder; lexical scope now preserves that binder, constraints and defaults. Non-parameter rewrite maps retain the unresolved guarded path; full graph/declaration-policy acceptance remains open.

Corrected source 774f72f16 passes 4,508/4,508 checker, 200/200 driver, 241/241 Program, 6/6 focused tests, 3/3 opt-in controls and 10/10 survey admission/mismatch controls. The compiler builds at 2,896 MB. Pinned 106-file Zod retains 195 TS diagnostics / three HM9002 recoveries, ceiling three, at 512 MB. Normalized diagnostics are unchanged from the preceding checkpoint; Zod is not a passing project.

The unchanged original React selection exits 124 at the original 900-second deadline, under the normal machine lock and 3,840 MB ceiling. intraExpressionInferencesJsx is unfinished; contextuallyTypedStringLiteralsInJsxAttributes02 is unstarted. No complete aggregate or passing-case credit. The timeout path does not report its final memory peak, and this run does not establish that the earlier memory failure is solved or a controlled performance improvement across fixture-input changes.

Retained samples distinguish phases: owner-specific transfer at about one minute; interface/base refresh and UMD source scans at about seven minutes; generic constraint comparison dominated by relation.Engine.substituteTpDeepLimit at about ten minutes. The engine's separate structural substitution is the next graph-correctness target. Initial negative failures, the binder regression, an unsuccessful scope compile and deliberately interrupted first React attempt remain in the evidence. Original fixtures, declarations, expectations, skips/TODOs and limits were not weakened.

Remaining work stays linked in #842, #841, #832 and #66.

14 days ago

CommonJS repeated-member lookup work from #848 is now on main under Glenn's identity without coauthors:

  • 3c397539e canonicalizes the Program-owned CommonJS export table once and changes checker queries to binary ranges while preserving original first-match metadata order.
  • 5976d10d3 publishes the brief README table, detailed report and checksum-covered raw evidence.

Current gates pass checker 4,509/4,509, Program 242/242, driver 200/200, CLI 74/74, and tsc_main 35/35. Pinned Zod remains byte-for-byte equivalent after path normalization at 195 TS + 3 HM9002 across 106 production files. The guarded peak was 3,097 MB under the unchanged 3,840 MB ceiling.

Exact-parent performance: official CommonJS 34.325 → 33.478 ms, 25/30 wins, saving CI +0.429 to +1.255 ms; independent 1,024-family scale 563.116 → 473.763 ms, 30/30 wins, saving CI +79.260 to +93.304 ms. The noisy first scale phase and all neutral/adverse-looking screen observations remain retained. Deep-type and large-predicate independent rechecks both span zero; no regression-equivalence claim is made.

Full #848 evidence/update: /home-lang/home/issues/848#issuecomment-6064989053 Expanded-matrix provenance/C++ follow-up: /home-lang/home/issues/838#issuecomment-6064994582

This is a TypeScript performance/correctness checkpoint, not a 100% Bun-suite completion claim. #66 remains open for the broader parity scope.

14 days ago

The relation substitution service is published in d1b893abf, with source-qualified evidence.

Checked-source comparisons retain callable, receiver-predicate and declaration metadata through the owning checker. The standalone graph walk memoizes a fixed mapper, preserves owned recursive references and maps tuple/reference arguments without expanding their bodies. Positional maps apply simultaneously, matching the pinned reference compiler. Generic binders retain constraints, defaults, variance, constness and declaration origins; callback destruction detaches only its active owner.

Negative controls exposed repeated shared-graph work, lost receiver/predicate metadata, unmapped tuple/reference arguments, transitive positional renaming, a recursive-edge failure and partial completion-cache entries. Allocation-failure injection also exposed a pre-existing 32,768-byte L1 leak when L2 construction failed; cleanup now releases it. Those failures, an initial compile error and disk admission rejection are retained. The original admission/resource floors were not bypassed.

After preserving the concurrent CommonJS-index integration, source d1b893abf passes 4,519/4,519 checker, 200/200 driver, 242/242 Program, 8/8 graph tests, 4/4 metadata/ownership/recovery tests, 3/3 opt-in controls and 10/10 survey admission/mismatch controls. Compiler builds at 2,901 MB. Pinned 106-file Zod retains 195 TS diagnostics / three HM9002 recoveries, ceiling three, at 478 MB; normalized diagnostics are unchanged. Zod is not a passing project.

The original React selection is running at the retained 2026-10-08 18:06:59 UTC snapshot, under the normal lock, unchanged 900-second deadline and 3,840 MB ceiling. intraExpressionInferencesJsx is unfinished and contextuallyTypedStringLiteralsInJsxAttributes02 unstarted. No terminal result, complete aggregate or passing-case credit is claimed. Its four-minute sample shows repeated UMD namespace source scans during interface checking; sampled footprint is not a final peak. The earlier pre-integration attempt was deliberately interrupted to validate the combined source and is retained as exit 130.

The running measurement still needs its terminal evidence. Earlier timeout/memory failures are not proved solved. Full graph/declaration-policy, input fidelity and corpus/Bun acceptance remain open in #842/#841/#832/#66. Original fixtures, declarations, expectations, skips/TODOs and limits were not weakened.

14 days ago

Progress checkpoint on main: 74b181394 closes TS checker issue #849 with an allocation-safe grouped require-binding index, complete exact-parent evidence, README/docs, and an integrated 4,521/4,521 checker pass. All heavy work stayed under the 3,840 MB guard.

This is adjacent TypeScript-frontend work, not a claim that Bun runtime parity or the Bun suite is complete. The expanded fair compiler matrix remains open in #838 and still requires TypeScript 6, tsgo, Bun check, tsc-rs, and the active C++ port under one admitted protocol. This tracker remains open for its existing runtime and whole-suite items.

14 days ago

Parsed UMD namespace facts and exact indexed lookups are published in 30ab18c8c, with retained evidence.

The parser retains decoded names, source nodes, top-level scope and external-module eligibility alongside the erased declaration. Checker and Program use these facts instead of independently scanning raw text. Comments, strings and nested invalid declarations do not create UMD globals; token trivia and escaped names remain valid. Exact lookup caching preserves root/virtual-file restrictions and noImplicitReferences, and invalidates on source attachment, declaration mode and importer-path changes. Dynamic import expressions do not promote declaration-only scripts into modules.

Retained negative controls show two checker failures and one Program failure against the old scanners. Focused controls pass 6/6, parser selection 1,065/1,065, and the combined source after preserving require-binding integration passes 4,526/4,526 checker, 200/200 driver, 243/243 Program, 3/3 opt-in controls and 10/10 survey admission/mismatch controls. The compiler builds at 2,915 MB. Pinned 106-file Zod retains 195 TS diagnostics / three HM9002 recoveries, ceiling three, at 545 MB, with normalized output unchanged. Zod is not a passing project.

The unchanged original React selection on 30ab18c8c ends with exit 125 at observed 3,874 MB against the unchanged 3,840 MB ceiling. intraExpressionInferencesJsx is unfinished and contextuallyTypedStringLiteralsInJsxAttributes02 unstarted. No complete aggregate or passing-case credit. Its sample at about six minutes shows Program.importProgramGlobals through owner import, checked transfer and type_transfer.prepare/materialization, including repeated mapped argument allocation/free. The sampled 2.1 GB footprint is not the final peak; a later sample attempt found the process already terminal and produced no sample. These are phase observations, not a controlled performance claim.

The preceding relation-service measurement is no longer merely a running checkpoint: its terminal 900-second timeout and late UMD scan sample are published in bea9ab4ec. The first UMD-source probe was deliberately interrupted for combined-source validation and is retained as exit 130. Original fixtures, declarations, expectations, skips/TODOs, deadline and resource limits were not weakened.

Correct owner-specific graph transfer and declaration policy remain open in #842; input fidelity and complete corpus/Bun acceptance remain open in #841/#832/#66.

14 days ago

Owner-transfer scratch reuse and member batching are published in bdb366c03, with retained evidence.

The builder reuses separate bounded buffers for mapped type arguments, template text and tuple elements. Interner consumers copy those borrowed results before reuse; signature parameters are consumed before generic binder mapping uses the same buffer. Object finalization reserves the member batch once. Every source type, source owner, declaration identity, metadata table and validation remains represented, and existing unpublished-pool rollback remains active on allocation/callback failure.

A 64-row control alternates widths and exercises receiver/constructor signatures, generic binders, tuple optionality, template text and nested references. It destroys the source and changes callbacks before validating destination contents. Both transfer selections pass 11/11, including exhaustive allocation-failure rollback, cancellation, malformed-input rejection and distinct owner identities. On this exact workload, measured destination allocations fall 256 → 81. This is an allocation count for the control, not a whole-compiler improvement or completion claim.

Tested source passes 4,527/4,527 checker, 200/200 driver, 243/243 Program, 3/3 opt-in controls and 10/10 survey admission/mismatch controls. Compiler builds at 3,067 MB. Pinned 106-file Zod retains 195 TS diagnostics / three HM9002 recoveries, ceiling three, at 490 MB; normalized diagnostics are unchanged. Zod is not a passing project. The concurrent source rebase included documentation only; recorded code hashes match the published source.

The unchanged original React selection exits 125 at observed 3,849 MB against the unchanged 3,840 MB ceiling. intraExpressionInferencesJsx is unfinished; contextuallyTypedStringLiteralsInJsxAttributes02 is unstarted. No complete aggregate or passing-case credit. A process sample attempt found the process already terminal and produced no sample. Scratch allocation reduction has not completed the owner-transfer graph or original corpus.

Correct graph transfer/declaration policy and complete input/corpus/Bun acceptance remain open in #842/#841/#832/#66. Original fixtures, declarations, expectations, skips/TODOs, 900-second deadline, resource ceilings and normal lock were not weakened.

14 days ago

TypeScript-side parity progress: 18fc11133 makes omitted allowJs inherit from checkJs, matching pinned TS6 and native TS7 while preserving explicit allowJs: false. Rebased verification passed tsconfig 158/158, driver 200/200, CLI 35/35, Program 247/247, checker 4,546/4,546, plus the exact three-way oracle cases.

This does not claim Bun runtime-suite completion; #66 remains open. The specific remaining JavaScript-admission work stays tracked in #846.

14 days ago

TypeScript parity progress landed in 5577bc2a3: source revisions now refresh transitive importers, resolver facts use admitted in-memory Program compilations, and watch mode reports importer diagnostics after dependency edits.

Verified full Program 248/248, tsc_main 36/36, ts_cli 74/74, production build 3/3, plus a live watch transition 0 errors -> importer TS2322 -> 0 errors. The full LSP test target remained resource-blocked at the unchanged 3,840 MB guard and is not claimed as passed. This is scoped #846 progress, not Bun runtime-suite completion; #66 remains open.

14 days ago

TypeScript parity progress: f60a1fa63 is pushed to main and fixes typed reads from admitted checked-JavaScript CommonJS named exports without weakening import-write checks.

Home now matches TypeScript 6.0.3 and native TypeScript 7.0.2 exactly on the focused exports.value = 1 cross-file repro: TS2322 at the typed read and TS2632 at the attempted write. Full verification was green (ts_checker 4547/4547, ts_program 250/250, tsc_main 36/36, ts_cli 74/74, plus the stripped ReleaseSafe production build).

Detailed evidence: #846 comment /home-lang/home/issues/846#issuecomment-6080996622

Both #846 and this umbrella remain open for the remaining parity backlog.

14 days ago

Native BroadcastChannel/MessageEvent source ownership is published on main in db130b6f1, with retained source and execution evidence.

Home compiles the channel, shared subscriber registry, JavaScript channel wrapper, MessageEvent and JavaScript event wrapper from its mirrored source. Generation validates matching headers, preserves unowned companion includes and rejects missing/duplicate ownership before output. The corresponding external unity object is excluded; source and ABI-header edits invalidate the generation cache. The native-runtime-bindings target and complete home target use the same object producers. The optional symbol-stripping setting preserves compiler/runtime features.

After integrating current main, the complete Debug build passes 28/28 steps, peaking at 5,687 MB under an 8,192 MB build ceiling. Native binding compilation passes 22/22 steps, peak 719 MB. Controls pass 4/4 Zig bindings, 8/8 generator/ABI tests (251 assertions), and 6/6 native worker/message-port lifecycle files. The private fixture's missing ScriptExecutionContext input is corrected; negative checks now verify each intended rejection reason. The first unsuccessful fixture run remains retained.

Both the pre-rebase and combined-source runs complete all six original selected entries with 46 registered passes, zero failures, zero skips, zero TODOs, plus one successful standalone Node process check. All six captures reach verified EOF, with validated raw capture and JUnit hashes. The standalone Node file contributes zero passing registered cases. The committed archives restore into fresh directories and reproduce successful validation. All 146 manifest-listed compressed artifacts are tracked and their decompressed hashes verified. All 22 audited original sources, headers, tests, helpers and configuration files match pinned Bun 4982b91e3702094330f3be3883354c52b8c01323 before and after execution. Combined executable SHA256: d686344103f9ac639c3273a05aaa37c191349206ccf706848866879542421824.

Release compilation remains unfinished in #855. Resource-supervised attempts retain observed 3,879/3,855/4,186 MB against 3,840 MB, 5,276 MB against 5,120 MB, and 8,215 MB (ReleaseFast) / 8,391 MB (ReleaseSmall) against 8,192 MB. A first PATH toolchain also failed configuration. The Debug sample records LLVM AArch64 code generation; it does not identify the release allocation cause or establish release performance. Build budgets changed as recorded; original corpus bodies, workloads, deadlines and the 3,840 MB test-run budget were preserved. None of the stopped builds receives successful-build credit.

The initial existing-binary 44-case diagnostic remains a separate baseline. Git's archive ignore rule excluded compressed files from the first evidence commit; publication 6d278e3a3 adds every manifest-listed archive and verifies its tracked contents.

Darwin source ownership and scoped execution are verified. #810 remains open for Linux; Windows, ASAN, the complete applicable primary/vendor suite and ownership of remaining external bindings/native dependencies are still unfinished. Full logical Bun parity is not achieved; #66 remains open.

14 days ago

Cross-project parity progress: 0ad247c0f landed directly on main under #846.

Home now carries checked CommonJS named-export types through synthetic default imports, import-equals module objects, readonly namespace objects, named imports, and checked-JS destructured require(...). Fresh owner constraints are retained for mutable writes while imported reads widen normally.

The production fixture emitted the same nine diagnostics—files, positions, codes, and messages—as repository-pinned TypeScript 6.0.3 and native TypeScript 7.0.2. Full Program/checker, CLI/driver, and stripped ReleaseSafe build gates passed sequentially under the 3,840 MB supervisor; the highest observed peak was 2,711 MB. No diagnostics were suppressed and no fixture or limit was weakened.

Detailed evidence: /home-lang/home/issues/846

14 days ago

Owned builtin generation now includes node:querystring, node:assert and node:assert/strict on main: source alignment 4e8646cbc, activation 7e5a73716, and source/capture/JUnit evidence.

The copied querystring/assert sources had older repeated-access patterns. They now match the pinned source byte for byte, preserving the first read of option getters, error messages and constructors. The source synchronization and builtin activation are separate commits. Generation maps the three modules to the linked enum, embeds their complete builtin functions, preserves all unowned literal bytes, and tracks the new source inputs for cache invalidation. Querystring's upstream CommonJS helper is retained; complete-function grammar and unresolved runtime-wrapper checks remain active.

Native binding compilation passes 22/22 steps (tree-footprint peak 1,596 MB), and the complete stripped Debug executable passes 28/28 steps (peak 5,640 MB under the recorded 8,192 MB build budget). Generation/ABI tests pass 8/8 with 262 assertions. Changed-file Pickier, Zig formatting and whitespace checks pass.

All 17 selected original entries complete successfully: 140 registered passes, zero failures/skips/TODOs, and seven separate successful process checks. All 17 captures reach verified EOF; the raw and case-level JUnit hashes validate. All 24 audited original source/test/helper/configuration inputs match Bun 4982b91e3702094330f3be3883354c52b8c01323 and retain their hashes during execution. Every one of the 116 compressed artifacts is tracked and its decompressed hash verified; restoring all 17 journals reproduces successful validation. Executable SHA256: 324249f24a565fabe3b3030b50bfedfee8f59df359d4ba44a0005fe671bc6957.

The existing native URL contract file now checks changing query option accessors, strict-assert identity and error message/constructor reads. Both the parent executable's linked builtins and the activated Home sources pass those controls. This is a source-alignment correction during ownership activation; it is not a newly reproduced parent runtime defect. Original upstream assertions, bodies, workloads, deadlines, skips/TODOs and the 3,840 MB test-run budget were unchanged.

This expands owned source and verifies the recorded Darwin selection. Internal assertion helpers, remaining builtins/native dependencies, other platforms, release compilation in #855 and complete applicable-suite execution remain unfinished. Full logical Bun parity is not achieved; #66 remains open.

14 days ago

Landed events, async-context and timers source ownership on main: a4dbdc673, 7782d97f7, and retained evidence.

Home generates node:events, node:async_hooks, node:timers, node:timers/promises and two internal hook helpers, and compiles its NodeAsyncHooks.cpp host functions. The pinned mirrors restore rejected events.once validation and per-instance TickObject hook removal. Parent and owned native controls both pass.

  • Native binding compilation: 23/23 steps. Integrated complete Debug build: 29/29, 5,570 MB peak under the existing 8,192 MB budget.
  • Generation/ABI controls: 8/8 tests, 307 assertions; changed-file Pickier, Zig formatting and whitespace checks pass.
  • Eight original corpus entries: 202 registered passes, zero failures/skips, three original TODOs. Both corpus runs validate complete captures and JUnit; 99 audited pinned inputs remain unchanged. All 145 retained artifacts are tracked and hash-verified; restored main journals validate.
  • Explicit TODO diagnostics preserve original fixtures/deadlines: direct-stream cancellation times out at 90,000 ms; WebSocket client context assertion reproduces in isolation; worker-message fixture exits one with lost context. The WebSocket TODO runner exits zero but its assertion is not a passing contract.

Opened #856 for these three gaps. The pinned createHook implementation is still limited to TickObject init, and full hook/resource support is unfinished. Remaining native objects/dependencies, release builds (#855), platforms and complete logical Bun-suite parity remain open.

14 days ago

Landed Worker/WebSocket creation-context delivery and verified evidence on main. Worker parent events run in their creation AsyncResource. WebSocket native delivery uses a GC-traced private context property and restores the caller afterward; synchronous user dispatch retains caller context. Home compiles its WebSocket, JSWebSocket and AsyncContextFrame sources.

  • Native bindings 23/23; complete Debug build 29/29, 5,657 MB peak under 8,192 MB. Generator/ABI checks 8/8 with 350 assertions. Native controls cover parent/worker VMs, forced GC, distinct registration context, errors, restoration and private metadata visibility.
  • Original 19-entry selection: 199 registered passes, zero failures/skips, one original TODO and one successful standalone process check. The unchanged worker-message fixture now passes directly. Its tracking-suite TODO remains explicit, without invented registered passing credit.
  • All 133 audited test/fixture/ABI inputs stay unchanged. All 162 artifacts are tracked and hash-verified; restoring all 19 journals reproduces validation. Failed initial compile/control attempts remain in the evidence.

Updated #856. The original WebSocket TODO still lacks open because its using server is disposed before waiting; it now retains close context, and lifetime-correct controls pass. Direct-stream probes expose cancellation not calling its underlying callback and a pending unflushed read not settling after cancellation. Opened #858 for owned core stream builtins, pinned source alignment and those semantics.

Full async hooks, remaining external objects/dependencies, release builds (#855), platforms (#810) and complete logical Bun-suite parity remain open.

14 days ago

Landed owned core stream generation and reader cancellation with verified source, captures and JUnit evidence on main.

Home regenerates 280 functions across 21 stream families, validates the linked ABI, preserves 83 unowned bodies byte for byte and compiles the replacement core builtin object. Direct cancellation now settles pending reads and invokes source cancel once with its reason, receiver and creation context; errors, lazy/reentrant/concurrent cancellation, releaseLock and late pull rejection are covered. Default and BYOB controls also pass. Native control completion requires both exit zero and its final marker. The parent control times out and gets no success credit.

  • Binding compilation: 25/25. Complete Debug build: 31/31, 5,628 MB peak under 8,192 MB. Generator/ABI controls: 10/10 tests, 818 assertions.
  • Original 18-entry selection: 9,540 registered passes, zero failures, 269 skips, three TODOs. The skips are 268 unavailable renderer-export cases and one ASAN-only case. No skip or TODO is counted as passing.
  • All 30 audited test/fixture inputs remain unchanged. All 451 retained artifacts are tracked and hash-verified; restored journals reproduce validation for all 18 complete captures.

Updated #858. Its demonstrated reader cancellation defects are fixed, while original fixture reachability, renderer/ASAN/platform coverage and wider native ownership remain unfinished. The original direct-stream TODO still waits for an unflushed write before cancellation; the WebSocket TODO still disposes its server too soon. Remaining builtins/dependencies, full hooks, #855 release builds and complete logical Bun-suite parity remain open.

14 days ago

Landed complete core builtin generation and IPC listener receipt with verified evidence on main. Home generates all 363 bodies across all 37 core families and their C++ scaffolding, validates the complete function set/header ABI, and validates wrapped Zig host source identities/signatures. The IPC handle-delivery no-op is removed.

Descriptor adoption uses the normal native poll/group lifecycle; Node's NODE_HANDLE msg field and prior Bun message spelling are supported. The native interop control runs its receiver/listener/TCP exchange in Home, with Node as protocol peer, and proves transferred-fd lifetime after Node closes its original listener. An ordinary-file fd is rejected without taking ownership.

  • Native bindings 25/25; final complete Debug build 31/31, 5,632 MB peak under 8,192 MB. Generator/ABI controls 11/11 with 743 assertions. Existing stream and Worker/WebSocket context controls pass.
  • Both original 32-entry runs validate 908 registered passes, zero failures, two original skips and three TODOs. Pending outcomes receive no passing credit.
  • All 78 audited pinned test/fixture files match. All 461 artifacts are tracked and hash-verified; all 32 restored final journals validate. Failed naming/linkage/platform-query/protocol attempts and refused disk admission remain retained.

Opened #860 for send-side socket/datagram descriptors and remaining receive variants. Listener receipt is not full IPC/platform parity. Registry modules, wider native object/dependency ownership, pending fixture coverage, full hooks, #855 release builds and whole-suite logical parity remain open.

14 days ago

Native TCP/UDP IPC source checkpoint is on origin/main: https://github.com/home-lang/home/commit/31f4be120

Home owns/generated node:net and node:dgram, compiles the IPC C++ bridge, transfers real TCP/UDP descriptors in both directions, and duplicates send descriptors through ACK/NACK/failure cleanup. Native controls passed between Node/Home and Home/Home, including 2 MiB envelopes, both keepOpen modes, rejection/retransmission, queued callbacks and disconnect ownership. The selected 11 unchanged original socket/UDP/IPC/cluster suites passed 316 cases with zero failures and four original skips. All 36 audited test/fixture files match the pinned Bun commit.

The final rebuilt executable completed 31/31 Debug steps; ABI rejection checks passed 45 tests / 767 assertions. Final native/original-suite repetition and evidence publication are queued behind another shared-machine job. The full-repository Pickier scan stopped at its file-count safety limit (165,616 files); targeted build-support checks passed.

#860 remains open for Windows transport, cluster connection tracking, malformed/closed handles, GC/stress and platform coverage. This checkpoint does not establish whole-suite parity under #66.

14 days ago

Native TCP/UDP IPC checkpoint (2026-10-09): source and verified evidence are on origin/main. Home generates node:net/node:dgram, compiles the IPC C++ bridge, and sends/receives real TCP/UDP descriptors. Send descriptors remain duplicated/owned through ACK, NACK retransmission and failure cleanup; SCM_RIGHTS accompanies only the first positive write. Eight native controls pass between Node/Home and Home/Home, including 2 MiB envelopes, both keepOpen modes, UDP source closure, rejection/retransmission, queued callbacks and disconnect ownership. Both 11-suite original runs validate 316 registered passes, zero failures and four original skips; all 36 audited pinned test/fixture files match. Final Debug 31/31, peak 5,658 MB under 8,192 MB; ABI/generator 45 tests / 767 assertions. All 369 committed compressed artifacts verify and all 11 final reports restore/validate. Repository-wide Pickier stops at its 165,616-file safety limit; targeted source checks pass. #860 remains open for Windows transport, cluster tracking, malformed/closed/connected handle variants, GC/stress and platform coverage. Complete native/registry ownership, full Bun-suite and Release/ASAN parity remain unfinished; original skips receive no passing credit.

Remaining IPC work is tracked in #860; #66 remains the full-parity tracker.

14 days ago

Native descriptor adoption-state checkpoint (2026-10-09): source and verified evidence are on origin/main. UDP descriptors preserve their existing kernel peer through Bun and node:dgram adoption; disconnect/close invalidate cached endpoints and port values. TCP consumes its already validated descriptor rather than rereading a getter; descriptor zero remains supported. Failed UDP poll registration removes partial registrations before freeing poll data while leaving the caller's fd open. All 13 native controls pass, including connected UDP via inherited fd, dgram fd and IPC, reconnect/close-cache transitions and changing fd getters, alongside prior transfer/ownership controls. Both 11-suite original runs validate 316 passes, zero failures and four original skips; all 36 pinned test/fixture files match. Final 31/31 Debug; 45 ABI tests / 767 assertions; 5,656 MB supervised tree footprint under 8,192 MB. All 207 committed compressed artifacts verify and all 11 final reports restore/validate. Existing dgram Pickier diagnostics remain four errors and one warning before/after this change; they are not passing lint. #860 remains open for asynchronous receive-adoption failure ownership, malformed/closed descriptors, cluster tracking, Windows and stress/platform coverage. Full native/registry, whole-suite and Release/ASAN parity remain unfinished.

Remaining IPC work continues under #860; full logical Bun parity remains open under #66.

14 days ago

Owned utilities / native ICU checkpoint (2026-10-09): source and verified evidence are on origin/main. Home now generates 30 registry JS modules, adding 17 path/util/domain/punycode/diagnostics/OS/DNS and internal utility sources. Eight native utility/ANSI implementations (Path, NodeValidator, NodeUtilTypesModule, MIME parameters, string width and slice/strip/wrap ANSI) are compiled from Home with a coherent shared-header graph, exact linked-header/native-dispatch checks and rejection of missing/duplicate ownership. Native ICU converter discovery and UTS #46 ToASCII/ToUnicode replace the parked process binding; native checks cover buffer growth, validation errors, resource cleanup and stable binding identity across GC. A JSON dependency absent from the Bun pin is restored from Node v18.20.8 with separate provenance/license; original test code/assertions/deadlines remain unchanged. 48 original suites now validate 1,451 registered passes, five process checks, zero failures, three original skips and three TODOs; all 57 audited Bun-pinned inputs match. Native objects 27/27; Debug 33/33; ABI 61 tests / 938 assertions; existing 13 IPC controls and node-core/ICU controls pass. Peak supervised footprint 5,643 MB under 8,192 MB. All 854 committed archives verify and all 48 final reports restore/validate. Failures and resource-stopped attempts are retained. #862 tracks remaining ICU operations/platform coverage. Other registry/native dependency ownership, whole-suite and Release/ASAN/all-platform parity remain unfinished; skips/TODOs receive no passing credit.

Remaining ICU work: #862. Full logical Bun parity remains open under #66.

14 days ago

Native ICU streaming / public transcode checkpoint (2026-10-09): source and verified evidence are on origin/main. Native ICU now owns stateful converter creation/decode, transcode, error names and Unicode width alongside ToASCII/ToUnicode/discovery. Branded GC-owned holders release ICU state; environment-free native finalizers execute instead of being dropped. Decode handles split UTF-8/UTF-16, BOM policy, fatal errors, flush/reset, shared/detached buffers and output growth. Public buffer.transcode replaces its parked factory method with native conversion and input/error handling. Factory headers resolve through the selected module-unity source rather than an assumed checkout layout. Native controls cover these operations, 1,024 converter holders and the existing 13 IPC controls. 60 original suites validate 1,610 registered passes, 13 process checks, zero failures, three original skips and three TODOs. Debug 33/33; native objects 27/27; ABI 63 tests / 954 assertions; supervised peak 5,651 MB under 8,192 MB. All 820 committed archives verify and all 60 final reports restore/validate. The first public transcode failure is retained without passing credit. Portable checks reproduce the compiled factory headers/unity wrapper; differing constants bytes are disclosed. #862 remains open for complete argument/lifetime stress and platform/ICU-data/Release/ASAN verification. Other registry/native dependencies and whole-Bun parity remain incomplete; skips/TODOs receive no passing credit.

Remaining ICU/platform verification: #862. Full logical Bun parity remains open under #66.

14 days ago

Diagnostics lifecycle checkpoint (2026-10-09): source and verified evidence are on origin/main. Active subscribers and bound stores now retain channels; stale finalizers cannot remove same-name replacements. Subscriber/transform errors are deferred through nextTick and delivered through uncaughtException without interrupting later subscribers or scoped work. The published parent fails the native retention regression; the changed runtime passes retention, replacement collection, scoped contexts, deferred errors and promise tracing, alongside expanded ICU/core checks. 17 unchanged original diagnostics core entries validate six registered passes, 16 process checks, zero failures and three original TODOs. All 17 audited inputs match the Bun pin. Debug 33/33; ABI 63 tests / 954 assertions; peak 5,630 MB under 8,192 MB. All 115 committed archives verify and all 17 captured reports restore/validate. Targeted Pickier has zero errors and the same existing quote warning as the parent. Runtime source bytes are unchanged across integration over the separately published TypeScript changes; those changes were outside the recorded native build. HTTP/UDP diagnostics integration is outside this selection. Original TODOs receive no passing credit; full-suite, registry/native dependency and Release/ASAN/all-platform parity remain unfinished.

14 days ago

Stream module graph checkpoint (2026-10-09): source and verified evidence are on origin/main. Home now generates 68 registry modules, adding 38 connected classic/promise/Web/consumer/iterable stream modules and primordial helpers. Web adapters are aligned with the Bun pin, including chunk validation, abort/cancel propagation, safe promise collection and error causes. Native ReadableStream, JSReadableStream and NodeModuleModule compile from Home. Reader lock/detachment and direct-reader teardown use the pinned lifecycle; discarded cancellation promises are handled. Native class identity dispatch is checked before output generation. 257 unchanged original entries validate 9,238 registered passes, 252 process checks, zero failures and six original TODOs: all 252 selected standalone stream scripts, two Node stream files and three Web/compression/fetch-body files. The body matrix passes HTTP/1.1 and HTTP/3 with HTTP/1 disabled in the HTTP/3 row. All 257 source files and four common helpers match the pin. Debug 33/33; ABI 70 tests / 1,122 assertions; five native regression groups including all 13 IPC controls pass; peak 5,692 MB under 8,192 MB. All 1,769 committed archives verify and all 257 reports restore/validate; the compiled generated output is retained and the three new native bodies match Home sources. Targeted Pickier and Zig formatting checks pass. The first ABI run's stale ownership-list failure receives no passing credit. Runtime files are unchanged across integration over separately published TypeScript documentation/evidence. Five original TODOs concern _events fields; the sixth is Bun.file pipe reading. These TODOs, remaining registry/native dependencies, full-suite and Release/ASAN/all-platform parity remain unfinished under #66/#858.

14 days ago

Filesystem/process lifecycle checkpoint (2026-10-10): source and verified evidence are on origin/main. Home now generates 80 registry modules, adding the filesystem binding/copy/glob/stream/watch/watchfile graph, child_process, cluster and node:test. Native coalescing retains distinct path/type notifications; URL errors distinguish scheme/path/host; SIGPIPE/SIGXFSZ startup dispositions let writes report errno. IPC preserves actual transport errors instead of treating failed writes as backpressure. Promise generation replaces removed WebKit intrinsics; direct-pull notification promises retain reader errors without extra unhandled rejections. Normal VM exit dispatch runs original cleanup/mustCall checks, and callback-style node:test waits for completion. 499 unchanged original entries validate 996 registered passes, 447 process checks, zero failures, 51 registered skips, five TODOs and 13 upstream-skipped files. All six native groups pass, including the 13 IPC controls and worker/filesystem shutdown. Debug 33/33, peak 5,637 MB under 8,192 MB; final tests peak 715 MB under 3,840 MB. All 8,313 committed archives verify and all 499 final reports restore/validate. Earlier watcher failures, parser crash, rejected-promise failure and two callback false passes are retained without passing credit. The host generator/ABI rerun is not passing (9 pass / 61 fail): minimal controls reproduce missing child captures / posix_spawn EBADF inside the host's test runner; standalone rejection diagnostics remain correct. This gate is tracked in #865 with assertions unchanged. Remaining registry/native dependencies, original pending outcomes, full-suite and Release/ASAN/all-platform parity remain incomplete. Skips/TODOs receive no passing credit.

14 days ago

Resolved the native Home generator/ABI gate tracked in #865 in source f5173883a. Broad test discovery retained directory handles; Darwin rejects posix_spawn file-action descriptors above 10,239 despite the raised NOFILE limit. Relative test arguments scan the tree; absolute file arguments avoid that scan, explaining the earlier launch-context observations. The saved parent fails the new 11,000-directory control with EBADF.

Home discovery now queues paths and closes directory handles after reading. Symlink classification avoids retaining handles. Per-read iterator state and explicit cache-hit traversal preserve repeated/overlapping root discovery without running selected tests twice. Filters, excludes, original assertions and deadlines remain unchanged.

The original relative-path generator/ABI invocation in Home passes all 70 tests / 1,158 assertions, with real child output and rejection diagnostics. All seven native groups pass, including the 11,000-directory regression, symlink/cached-root controls and 13 IPC controls. Three unchanged original CLI suites validate 16 registered passes, zero failures, no skips/TODOs. Debug build 33/33, peak 5,684 MB under 8,192 MB; final tests 545 MB under 3,840 MB. Targeted Pickier and Zig formatting pass.

All 58 committed archives verify; three final reports restore and validate. The failed parent, earlier relative-path ABI failures and absolute-path diagnostic control are retained. External Bun binaries were not rebuilt by this Home fix. Full parity remains open under #66.

14 days ago

TypeScript/Bun-parity checkpoint: a790000db landed directly on main and closes #846's explicit node_modules root/import-closure slice.

Home now follows TypeScript's implicit package/dot-directory wildcard exclusions while allowing literal include patterns to opt those directories in. On upstream NodeModulesSearch/maxDepthExceeded, Home now admits explicit m1 roots at depth 0, admits m2 at configured depth 1, elides nested m3, and emits the same TS2322/TS2540 diagnostics as pinned TypeScript 6.0.3 and native TypeScript 7.0.2. Full evidence and guarded-suite peaks are recorded in #846's update.

14 days ago

TypeScript parity checkpoint: fcefb7db1 landed directly on main under Glenn's identity, without coauthors. Home now matches TS6/native TS7 on upstream NodeModulesSearch/maxDepthIncreased: sibling @types declarations win over admitted package JavaScript, package identity and explain-file provenance are retained, and the prior spurious TS2339 is gone. Full details and guarded verification are recorded on #846.

14 days ago

TypeScript parity update: pushed 3726b9cbe (fix(ts): exclude configured output roots (#846)) to origin/main under Glenn's identity, with exactly three changed files.

This ports TypeScript's authoritative config-file exclusion rule across normal compile/build/dry/clean and conformance discovery, including ./ and absolute output roots. Home now matches TS 6.0.3 and native TS 7.0.2 across all eight upstream projectOption output-directory fixtures, explicit-exclude override behavior, absolute outDir, and declaration-only TS18003 output. The prior explicit node_modules root regression remains aligned.

Full root cause, tests, memory peaks, and control evidence: /home-lang/home/issues/846#issuecomment-6096920400

Sign in to comment on this issue.