Upstream parity baselines & diff workflow

On this page 4

This is the durable index for the "once we reach parity, diff against the latest official upstream and plan tasks from that diff" workflow. It records where Home ported from for each upstream, how to compute the live delta, and how to triage the result.

UpstreamPin (where Home ported from)Pin locationReference checkoutDiff computable today?
Bun (engine)fd0b6f1a271fca0b8124b69f230b100f4d636af6packages/runtime/UPSTREAM_SHA.txt (enforced by scripts/sync-bun-tests.sh)~/Code/bun✅ yes — after git fetch
typescript-go (canonical TypeScript 7 reference)24fabe95acba758c05fcb349bf427a3a0c8ad676_submodules/typescript-go gitlink_submodules/typescript-go✅ yes — pinned submodule tracking main

Bun

Pin is real and the delta is large — and growing. As of 2026-07-02, ~/Code/bun origin/main is at 1498d7b77a, 634 commits ahead of the pinned fd0b6f1a27 (was 425 on 2026-06-23 — Bun moves ~15 commits/day). The pin has NOT advanced. Full snapshot + engine-vs-Rust-side triage: BUN_UPSTREAM_DIFF_fd0b6f1a27.md.

Regenerate the live delta:

cd ~/Code/bun && git fetch origin
git rev-list --count "$(cat <repo>/packages/runtime/UPSTREAM_SHA.txt)..origin/main"
git log --oneline "$(cat <repo>/packages/runtime/UPSTREAM_SHA.txt)..origin/main"

Triage note: engine vs Rust-side

Home maintains Bun's engine (parser, JSC bindings, runtime APIs, node: modules); Bun has moved package-manager / install / app-build subsystems to Rust, which are not Home's port surface. Bucket the diff before planning:

  • Home-relevant (engine): node (18), sql/postgres/mysql/sql_jsc (21), parser/js_parser (16), resolver (8), jsc (7), fetch (7), bundler (6), fs (5), http (4), websocket (3), crypto (3), webcore/runtime (4), zlib (1), shell/sys (10).
  • Likely Rust-side / app / noise (skip or low-priority): install (22), css (19), ci (13), yaml (10), test (11), build.

The engine buckets are the candidate task list. node:http2, node:stream, node:fs were each synced to Node v26.3.0 upstream in this range — large, self-contained porting targets.

typescript-go

microsoft/typescript-go is now Home's repository-owned source of truth for TypeScript 7 behavior. The gitlink pins tsgo main at 24fabe95acba758c05fcb349bf427a3a0c8ad676; that revision pins its inherited TypeScript corpus at 4d4f005c8541e0255a9d8791205fdce326e462bc.

The 2026-08-08 transition moved tsgo forward 64 commits from b8276f35 while leaving the nested TypeScript pin unchanged. The tsgo-native compiler corpus grew from 300 to 321 source files and from 299 to 320 expanded cases. With family-aware native baseline discovery, Home initially passed 192/320 exactly, with 128 failures. A fresh-cache survey on 2026-08-09 after the native-parity porting waves passes 275/320 exactly, with 45 remaining failures. The former 299/299 claim was measured while the harness searched one directory above testdata/baselines/reference/compiler, so native error baselines were treated as absent; it was not a valid parity measurement. The inherited TypeScript inventory remains 5,907 expanded cases.

Initialize the reproducible two-level checkout with:

git submodule update --init --recursive --depth 1

The conformance harness uses _submodules/typescript-go by default and still accepts HOME_TS_CONFORMANCE_ROOT=/path/to/typescript-go for surveying another revision. To compute the live native-compiler delta:

git -C _submodules/typescript-go fetch origin main
git -C _submodules/typescript-go log --oneline HEAD..origin/main

The TS diagnostic-code lane remains diff-driven: regenerate it with node scripts/gen-ts-reachability.mjs after a tsgo bump, then triage new live emission sites separately from API, LSP, build, and CI-only changes. The open compiler frontier remains exact diagnostic parity against tsgo's inherited conformance baselines.

Status of the "diff → task list" automation

No generator exists yet. Parity waves triage upstream commits by hand (docs/TS_PARITY_PLAN.md wave log). A future scripts/gen-upstream-tasklist.mjs can read both machine pins, run each upstream log range, and classify compiler-observable changes separately from API, editor, build, and CI noise.

Released under the MIT License.