Context
After #559 lets unchanged bake/dev/request-cookies.test.ts finish its experimental React dependency resolution, Home writes malformed npm package resolutions into bun.lock:
"react": [""react"@0.0.0-experimental-2dc7da79-20260828", ...]The harness's next unchanged bun install rejects every affected entry, ignores the lockfile, and installs an incompatible fallback React graph. Bake then cannot resolve react/jsx-dev-runtime or react-dom/client.
Pinned Bun source: 4982b91e3702094330f3be3883354c52b8c01323.
Root cause
packages/runtime/src/semver/shim.zig discards the caller's JSON formatter options and always uses defaults. Semver.String.fmtJson(..., .{ .quote = false }) therefore emits surrounding quotes inside the lockfile string that already owns its quotes.
Acceptance criteria
- Preserve
formatJSONStringUTF8options through the semver shim. - Add focused coverage for quoted and pre-quoted semver strings.
- A newly generated experimental React
bun.lockparses on the next native install. - Unchanged
request-cookies.test.tsadvances to its next independent boundary or passes 2/2. - Keep #555 and #66 updated with exact results.