ReviewOS

home-lang/home

Admit the pinned Bake corpus against Home

#555
Closed chris opened this 8 days ago ·
8 days ago

Context

#551, #553, and #554 now provide working Bake production builds, live development/HMR, filesystem framework routing, the bun:app response bridge, and response validation. Home vendors the pinned Bun Bake corpus under packages/runtime/test/bun-corpus/bake, but the current green Bake gates are focused Home integrations rather than a truthful execution inventory of every pinned Bake test.

Pinned Bun source: 4982b91e3702094330f3be3883354c52b8c01323.

Scope

  • Run the complete pinned test/bake corpus through Home's native test/runtime path without delegating execution to an installed Bun binary.
  • Port the Bake harness assumptions needed to select the Home executable, isolate temporary projects and ports, and retain the upstream workloads, assertions, and deadlines.
  • Record a file-by-file pass/fail/skip/TODO inventory; skips, disabled bodies, environment exclusions, and it.failing cases do not count as parity passes.
  • Split independent functional failures into linked child issues instead of hiding them in a single aggregate count.
  • Add a bounded maintained gate for the subset that is made reliable in this tranche.

Acceptance criteria

  • Every pinned Bake test file is either executed successfully or has a specific, reproduced linked issue explaining the missing behavior or external requirement.
  • Test and fixture sources used for parity claims are verified against the pinned Git objects.
  • No upstream assertion, workload, fixture, or deadline is weakened to produce a pass.
  • Existing JSC runtime, Bake production/development, and JSC-disabled compiler gates remain green.
  • #66 is updated with exact counts and links; this issue does not claim whole-suite completion.

Depends on #551, #553, and #554. Tracked by #66.

8 days ago

Checkpoint pushed to main in cc47d6269c0409c460141268be63c957fc045fd6 (fix(runtime): expose Bake test internals).

This removes three remaining no-op ABI bridges used by the pinned Bake corpus:

  • frameworkRouterInternals now resolves through the real JSFrameworkRouter.getBindings Zig lazy thunk.
  • getDevServerDeinitCount now has both required $bindgenFn layers: the JavaScript function factory and the native usize dispatch.
  • Instantiating the route-pattern binding exposed and fixed one dormant Zig 0.17 migration (ArrayList.writer() to the existing managed-list append helper).

Pinned Bun SHA: 4982b91e3702094330f3be3883354c52b8c01323.

Unchanged pinned Bake results under strict native Home (HOME_NATIVE_VM=1 HOME_CORPUS_FULL_VM=1):

  • bake/framework-router.test.ts: 35 passed, 0 failed, 59 assertions
  • bake/dev/response-to-bake-response.test.ts: 5 passed, 0 failed, 24 assertions
  • bake/dev/bundle.test.ts: 19 passed, 1 upstream todo, 0 failed, 42 assertions

That is 59 passed, 1 todo, 0 failed, 125 assertions across the first three admitted files. The full test/bake source tree remains byte-identical to the pin: 43/43 files, no missing/extra/hash mismatches.

Project gates:

  • JSC runtime: 1,808 passed / 19 skipped / 0 failed (20/20 build steps)
  • Bake production: 18/18
  • Bake development: 18/18
  • JSC-disabled debug: 5/5
  • JSC debug: 18/18
  • Pickier, Zig fmt, and git diff --check: clean

Corpus setup finding: the upstream harness expects the original Bun repository layout (test/bake, sibling test fixtures, and root node_modules). For this measurement the exact pinned package versions and a local layout overlay were supplied outside the tracked corpus; no pinned Bake source was edited. #555 stays open to make that admission path reproducible/self-contained and execute the remaining Bake files against Home.

8 days ago

Pushed 76af3362c (fix(runtime): preserve serve plugin file namespaces) to main.

This closes the next pinned Bake admission failure without changing the Bun fixture:

  • aligned JSBundlerPlugin__matchOnLoad / __matchOnResolve with the pinned C++ BunString::transferToJS ownership contract;
  • stopped passing the legacy empty namespace for file imports now that the C++ bridge no longer normalizes it to "file";
  • added a checked-in [serve.static] regression that resolves the Bake development client through an onResolve plugin before exercising the existing HTML/HMR/error-recovery coverage;
  • made the named Bake production integration step preserve the generated executable path after its fixture cd.

Pinned Bun source remains 4982b91e3702094330f3be3883354c52b8c01323; all 43 mirrored Bake files match it byte-for-byte.

Unchanged pinned results:

  • bake/deinitialization.test.ts: parent 1/1; child fixture 9/9, 32 assertions;
  • bake/serve-plugins-dev-server.test.ts: 2/2, 7 assertions;
  • retained five-file Bake checkpoint: 62 passed, 1 upstream todo, 0 failed, 134 parent assertions.

Repository gates:

  • Home runtime: 1,808 passed, 19 skipped, 0 failed (1,827 discovered);
  • test-bake-production: passed;
  • test-bake-development: passed with serve-plugin resolution, HTML, HMR diagnostics/recovery, framework routing, and response validation;
  • JSC-disabled debug build: passed;
  • JSC-enabled debug build: passed;
  • targeted Pickier, Python compile, shell syntax, and diff checks: passed.

Keeping this issue open for the remaining pinned Bake files and the next independent admission frontier.

8 days ago

Pushed 72e92110c (fix(runtime): bound Bake error report paths) to main and completed child #556.

This ports the pinned Bun hardening behavior for POST /_bun/report_error: a browser-supplied 16 KiB absolute stack-frame path is no longer normalized into Home's fixed platform PathBuffer. Oversized paths remain unchanged, ordinary project frames remain relative, the response retains the legitimate frame, and the development server stays alive. The maintained Bake-development gate now sends the hostile binary wire payload directly.

Unchanged pinned results at Bun SHA 4982b91e3702094330f3be3883354c52b8c01323:

  • bake/dev/html.test.ts: 8/8 passed, 29 assertions (previously 7/8 with a server panic);
  • retained 12-file checkpoint: 84 parent tests passed, 1 upstream todo, 0 failed, 249 parent assertions, plus deinitialization's 9/9 child tests and 32 assertions;
  • mirrored Bake sources: 43/43 files, no missing, extra, or hash mismatch.

Project gates:

  • home_rt: 1,808 passed, 19 skipped, 0 failed;
  • named Bake production and development: passed;
  • JSC-disabled and JSC-enabled debug: passed;
  • targeted Pickier, Python compile, and diff checks: passed.

The broad all-package test command separately reports two ts_conformance baseline-selection failures; they are outside this Bake/runtime change and are not counted as green here. #555 remains open for the remaining pinned Bake files and reproducible experimental-React dependency admission.

8 days ago

Pushed Bake corpus checkpoint ebc7ac7, closing the browser-input hardening slice in #557 and isolating the remaining top-level-await overlay gap in #558.

Corpus movement:

  • unchanged pinned bake/dev/esm.test.ts improved from 13 passed / 4 failed to 16 passed / 1 failed, with 46 assertions;
  • the remaining failure is exclusively #558;
  • the retained 12-file Bake aggregate remains green at 84 passed, 1 upstream todo, 0 failed, 249 assertions, plus the deinitialization child at 9/9, 32 assertions;
  • vendored source integrity remains 43/43 byte-exact files against Bun 4982b91e3702094330f3be3883354c52b8c01323.

Home-side gates for this checkpoint: maintained Bake development and production pass, JSC-disabled and JSC-enabled debug builds pass, and home_rt finishes at 1,811 passed, 19 skipped, 0 failed. The first home_rt attempt received a transient signal 133 during the unrelated Bun.ArrayBufferSink area after 1,631 tests; the immediate full rerun passed, so this is recorded here rather than treated as a deterministic regression in the port.

The broad Bun suite is not yet complete; #558 is the next exact ESM boundary.

8 days ago

Pushed 115ed7c and closed #558.

Unchanged pinned bake/dev/esm.test.ts is now fully green in Home: 17 passed, 0 failed, 47 assertions. The last failure was not the top-level-await exception itself; the client sent the full preallocated error-report backing buffer, and the browser harness never completed that cross-realm request body. Sending an owned exact-length Uint8Array lets the report complete and the existing overlay display the correct error.

The retained checkpoint has been expanded from 12 to 13 files by adding ESM: 101 passed, 1 upstream todo, 0 failed, 295 parent assertions, plus the deinitialization child at 9/9. The pinned Bake corpus remains 43/43 byte exact.

Supporting gates remain green: home_rt 1,811/19/0, maintained Bake development and production, and debug builds with JSC enabled and disabled.

This completes the current ESM slice, but the broader Bake corpus and 100% Bun-suite objective remain open. The next checkpoint should admit another independent unchanged Bake file and isolate its first native incompatibility.

8 days ago

Bake corpus progress pushed to main:

  • #559 fixed by 58abeaad685f8ed2fdab3781c7521323674c3251: missing exact/range/tag selectors no longer trust stale manifests or validators.
  • #560 fixed by bc40db083d97f9fac07758a816a37212c177158e: semver JSON formatting preserves pre-quoted lockfile output.
  • Experimental React installs natively with hoisted linking; the generated bun.lock parses cleanly on a second install with no changes.
  • JSC-enabled home_rt: 1,813 passed, 19 skipped, 0 failed; both debug build modes and changed-file Pickier pass.

Unchanged bake/dev/request-cookies.test.ts now starts both dev servers and reaches the next independent boundary: #561, a null package_json panic in resolver.zig:1408. Exact current result: 0 passed, 2 failed after dependency and lockfile setup succeeds.

8 days ago

Resolver-cache parity landed in 58ec230e1, closing #561.

This removes the missing-package-metadata panic boundary by restoring Bun's shared BSSMap identity and stable value storage. The unchanged request-cookie corpus test now passes 2/2, and the admitted 8-file Bake aggregate remains green at 89 pass, 1 upstream todo, 0 fail (211 assertions), with its deinitialization child at 9/9 (32 assertions). Focused runtime verification is 1,814 pass, 19 skip, 0 fail.

8 days ago

Streamed Bake exception serialization landed in 1f31d1836, closing #562.

The unchanged pinned React response corpus file is now fully admitted at 11/11. This covers non-streaming and streaming errors, JSX Responses with status/headers, invalid streaming Response forms, redirects, rewrites, dynamic routes, and AsyncLocalStorage response-option isolation. The native runtime gate is green at 1,815 pass, 19 skip, 0 fail.

8 days ago

The full admitted aggregate is now verified without filters: 100 pass, 1 upstream todo, 0 fail across 101 tests in nine unchanged Bake files, plus the deinitialization child at 9/9. The browser-client cases pass when BUN_DEV_SERVER_CLIENT_EXECUTABLE points to an isolated alias of Home’s current JSC binary, keeping the pinned Bun checkout read-only while resolving harness dependencies from the temporary overlay.

8 days ago

#563 is complete in 385c854e6, and the unchanged Bun production corpus is now admitted at 8/8. The checkpoint preserves detailed server-component build diagnostics and terminates a deadlocked SSG aggregate promise once no event-loop work can settle it.

Adjacent unchanged React SPA coverage remains 6/6. The cumulative Bake admission tally is now 152 passes + 1 upstream todo across 153 tests in 18 files, with zero admitted failures.

Checkpoint gates: filtered home_rt 1,815 passed / 19 skipped / 0 failed; named Bake production and development integration gates passed; Pickier passed on changed files; JSC-enabled and JSC-disabled debug builds passed. Full evidence: /home-lang/home/issues/563#issuecomment-5466855278

8 days ago

Full unrestricted Bake aggregate on Home at 385c854e6:

  • 177 passed, 2 todo, 0 failed
  • 683 parent assertions across all 179 tests in all 24 pinned files
  • deinitialization child: 9 passed, 0 failed, 32 assertions
  • elapsed: 296.4 seconds
  • pinned Bun SHA: 4982b91e3702094330f3be3883354c52b8c01323
  • upstream test/fixture sources remained unchanged

The two TODOs are platform exclusions in the pinned sources, not observed Home failures. #564 now tracks executing the Linux-only merged-inotify case and the Darwin-flaky barrel regression on Linux as real tests.

All 24 Bake files have now been inventoried and executed together without an admitted failure. I am keeping #555 open until the temporary overlay/dependency setup used for this audit is captured as a reproducible repository command; the whole Bun-suite objective also remains open in #66.

8 days ago

Completed in 972979e09.

The repository now has a reproducible native admission command:

./scripts/run-bake-corpus.sh

It verifies corpus pin 4982b91e3702094330f3be3883354c52b8c01323, builds an isolated overlay from the vendored sources, installs exact lockfile-backed test dependencies, seeds the unchanged upstream React cache, and invokes the JSC-enabled Home executable for all test and child-server execution. Node is used only as the browser simulator required by the upstream harness; no installed Bun executable executes the suite.

Fresh full result from the committed runner setup:

  • 24/24 pinned Bake test files admitted
  • 177 pass
  • 2 todo
  • 0 fail
  • 683 assertions
  • 179 tests total
  • 293774.18 ms

The two TODOs are unchanged upstream platform skips on macOS and are both tracked by #564 for real Linux execution:

  • dev/hot.test.ts: merged inotify sub-path batching
  • dev/bundle.test.ts: two imports from one barrel (#28886)

Additional runner verification covered the seeded RSC path (react-response.test.ts: 11/11), nested Home child execution (deinitialization.test.ts: 9/9), and a post-rebase smoke (vfile.test.ts: 1/1). Pickier on every changed source/document, git diff --check, shell syntax, and dependency-lock integrity checks pass. All upstream Bake test, fixture, harness, and deadline sources remain unchanged.

This completes the Bake admission tranche without claiming whole Bun-suite parity; #66 remains the umbrella tracker and #564 remains open for the two platform-gated cases.

8 days ago

Current-source audit confirms the native Bake development/production path is functional. A newly reproduced native JUnit XML 1.0 bug prevented three otherwise successful original files from being independently validated; #901 fixes the producer while preserving exact identities. Fresh unchanged bundle/esm/edge-deletion/HTML/CSS/hot/sourcemap/server-sourcemap runs now validate: 73 pass, zero fail, two upstream TODOs. Published evidence is on main through 1daa83a11; optimized execution and wider corpus/platform acceptance remain open. #66's stale parked/non-functional status is corrected without claiming all Bake parity.

Sign in to comment on this issue.