Skip to content

fix(cross-runtime): keep Node and Bun gates fail-loud - #3537

Merged
kojiwakayama merged 4 commits into
mainfrom
fix/cross-runtime-followup-gates
Aug 10, 2026
Merged

kojiwakayama merged 4 commits into
mainfrom
fix/cross-runtime-followup-gates

Conversation

@kojiwakayama

@kojiwakayama kojiwakayama commented Aug 10, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Follows #3526 with the remaining verified cross-runtime gate hardening and residue cleanup.

  • Adds fail-loud Node/Bun build dependency gates and npm-link checks so stale local links cannot silently pass.
  • Carries the post-review cross-runtime residue fixes from the verified tree.
  • Adds Node/Bun CI gates for the clean-state runtime suites.
  • Regenerates the API reference from the resolved combined tree.

Verification

Local verification completed before this follow-up handoff:

  • Deno: 4246 pass / 32114 steps / 1 ignored
  • Node clean-state suite: 4031 pass
  • Bun: 6 contracts plus 1297 files
  • deno task lint:ci
  • deno task typecheck
  • deno fmt --check
  • git diff --check

Push hook verification on this branch also passed:

  • Format check: 4980 files
  • Lint check
  • Typecheck
  • Generated assets
  • Unit tests: 3784 passed / 28095 steps / 1 ignored

Summary by CodeRabbit

  • Bug Fixes

    • Improved upload handling for MIME types with parameters such as charset.
    • Added safer JSON schema processing for unusual object keys.
    • Prevented duplicate WebSocket protocol headers.
    • Improved server shutdown handling and validation for invalid port values.
    • Improved cross-project module URL handling and retry stream behavior.
  • New Features

    • Added configurable WebSocket upgrade handling for broader runtime compatibility.
    • Expanded Bun and Node runtime support.
  • Documentation

    • Refreshed API source links and clarified extension documentation.

@coderabbitai

coderabbitai Bot commented Aug 10, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@kojiwakayama, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 4 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 2bf390ec-56b5-4eec-9dfe-522547f0c525

📥 Commits

Reviewing files that changed from the base of the PR and between 8d6b811 and 9657771.

📒 Files selected for processing (11)
  • extensions/ext-yaml/src/adapter.ts
  • src/extensions/first-party-import.test.ts
  • src/modules/server/classify.test.ts
  • src/transforms/esm/http-cache-helpers.test.ts
  • src/transforms/esm/http-cache-helpers.ts
  • tests/bun/run-tests.mjs
  • tests/bun/runner-args.test.mjs
  • tests/bun/workspace-packages.mjs
  • tests/bun/workspace-packages.test.mjs
  • tests/ensure-npm-links.mjs
  • tests/ensure-npm-links.test.mjs
📝 Walkthrough

Walkthrough

The pull request adds Node and Bun CI jobs, expands cross-runtime test infrastructure, updates import and workspace resolution, and adjusts runtime adapters and test harnesses. It also applies focused fixes for media types, URL normalization, server lifecycle handling, schema safety, and compatibility behavior.

Changes

Cross-runtime CI and resolution

Layer / File(s) Summary
Runtime test orchestration
.github/workflows/cicd.yml, deno.json
Adds Node and Bun CI jobs. The tasks build npm packages, configure runtime-specific test selections, and enable warm caches.
Bun workspace and import handling
tests/bun/*, tests/ensure-npm-links.mjs, tests/node/*
Adds isolated Bun test execution, workspace package generation, npm protocol rewriting, platform-aware npm links, and workspace resolver coverage.
Path and audit support
src/config/tsconfig-paths.ts, src/config/tsconfig-paths-parity.test.ts, scripts/lint/audit-cross-runtime-jsr.*, tsconfig.json
Adds flattened tsconfig path handling, local alias coverage, stricter baseline failure detection, and new source aliases.

Portable runtime behavior

Layer / File(s) Summary
Worker and WebSocket portability
src/modules/import-map/*, src/config/declarative-evaluator-worker-runner.ts, src/workflow/claude-code/websocket-publisher.*, src/platform/adapters/runtime/*
Adds Node worker fallbacks, Bun worker selection, injectable WebSocket upgrades, protocol-header handling, inherited shutdown-error detection, and port validation.
Data and request handling
src/chat/upload-handler.ts, src/embedding/upload-handler.ts, src/proxy/retry.ts, src/schemas/primitives.ts, src/transforms/esm/http-cache-helpers.ts
Normalizes media types, uses tee branches for retry bodies, protects JSON schema carriers, and parses raw URL queries before normalization.
Module and error compatibility
src/modules/server/classify.ts, src/extensions/first-party-import.ts, src/observability/telemetry-error.ts, src/platform/compat/std/testing/time.ts
Normalizes encoded cross-project paths, parses Bun module errors, reads native error stacks safely, and supports calling fake Date() without new.

Test harness updates

Layer / File(s) Summary
Runtime-neutral fixtures
src/agent/streaming/*, src/provider/veryfront-cloud/provider.test.ts, src/runtime/runtime-bridge.test.ts, src/security/input-validation/parsers.test.ts, src/server/handlers/*
Adds cross-runtime rejection observers, local readable-stream helpers, and explicit half-duplex request fixtures.
DOM and SSR isolation
src/react/runtime/head-client.test.tsx, src/rendering/client/router.test.ts, src/build/production-build/static-generation.test.ts, src/rendering/layouts/utils/applicator.test.ts
Adds controlled inline-script execution, descriptor-based DOM global restoration, injected ReactDOM server behavior, and esbuild cleanup.
Focused regression coverage
src/client/spa/*, src/platform/compat/*, src/utils/*, src/transforms/pipeline/cache-identity.test.ts, src/workflow/claude-code/websocket-publisher.test.ts
Updates tests for dynamic import budgets, timer resolution, poisoned globals, async cleanup, and injected WebSocket upgrades.

Documentation and assertions

Layer / File(s) Summary
API references
docs/api-reference/veryfront/*
Updates source line references and parser wording.
Extension and validation assertions
extensions/*
Updates blob validation expectations, esbuild runtime coverage, activation metadata, and extension documentation.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant CI
  participant DenoTask
  participant BunRunner
  participant WorkspacePackages
  participant BunTestFile

  CI->>DenoTask: run test:bun
  DenoTask->>WorkspacePackages: prepare generated workspace packages
  DenoTask->>BunRunner: select and schedule test files
  BunRunner->>BunTestFile: start isolated Bun process
  BunTestFile-->>BunRunner: return test result
  BunRunner->>WorkspacePackages: run cleanup
  BunRunner-->>CI: report aggregate status
Loading

Possibly related PRs

Suggested reviewers: kwakayama

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 22.92% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: fail-loud cross-runtime gates for Node and Bun.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/cross-runtime-followup-gates

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 142415cbf5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread tests/bun/run-tests.mjs Outdated
Comment thread tests/ensure-npm-links.mjs Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/config/declarative-evaluator-worker-runner.ts (1)

528-533: 🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

Do not rely on resourceLimits under Bun 1.3.6. Bun honors env: {}, but resourceLimits is not enforced. Use a runtime path that enforces the memory bound, or reject Bun for this evaluator. Add a Bun-specific regression test.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/config/declarative-evaluator-worker-runner.ts` around lines 528 - 533,
Update createRuntimeWorkerEndpoint so the Bun path does not use
createNodeWorkerEndpoint with unenforced resourceLimits; either route Bun
through a runtime endpoint that enforces the evaluator memory bound or
explicitly reject Bun. Add a Bun-specific regression test verifying the selected
behavior and preserving the existing Deno and Node paths.
🧹 Nitpick comments (6)
tests/bun/workspace-packages.test.mjs (1)

29-33: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Reconsider the hardcoded workspace count threshold.

assert.ok(publishedWorkspaces.length > 25) couples this test to the current number of published workspaces. A legitimate consolidation of extensions breaks the test with a message that does not name the real cause. The loop below already proves that every published workspace gets a generated package. Assert that the list is non-empty, or compare it against the generated package set instead of a magic number.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/bun/workspace-packages.test.mjs` around lines 29 - 33, Replace the
hardcoded publishedWorkspaces.length > 25 assertion with a non-empty check or a
comparison against the generated package set. Keep the loop’s per-workspace
generation coverage unchanged and avoid coupling the test to a fixed workspace
count.
tests/bun/preload.ts (1)

145-154: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Make the path separator handling consistent in the extension branch.

Line 146 matches /extensions/ext-<name>/src/ with forward slashes. Line 149 tests for ${sep}extensions${sep}. On Windows args.path uses backslashes, so the filter never matches extension sources and the sep test becomes unreachable. tests/bun/workspace-packages.mjs handles win32 junctions, so the harness targets Windows too. Normalize the path once and use the same form in both places.

♻️ Proposed normalization
       (args) => {
+        const posixPath = args.path.split(sep).join("/");
         const source = readFileSync(args.path, "utf8");
-        let contents = args.path.includes(`${sep}extensions${sep}`)
+        let contents = posixPath.includes("/extensions/")
           ? rewriteModuleSpecifiers(
             source,
             (specifier) => workspaceModuleSpecifier(args.path, specifier),
           ) ?? source
           : source;

Also relax the filter so it accepts both separators.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/bun/preload.ts` around lines 145 - 154, Normalize args.path to a
consistent separator form before matching, then use that normalized path for
both the build.onLoad filter and the extension-branch check. Relax the filter to
accept either slash style while preserving the existing extension-source pattern
and rewriteModuleSpecifiers behavior.
tests/bun/workspace-packages.mjs (1)

148-152: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Reuse the exported directory link helper.

tests/ensure-npm-links.mjs exports resolveDirectoryLinkType(platform), which returns the same "junction" or "dir" value. Import it here instead of repeating the platform test. One helper keeps both link paths in agreement.

♻️ Proposed reuse
     symlinkSync(
       sourceRoot,
       join(packageRoot, "source"),
-      process.platform === "win32" ? "junction" : "dir",
+      resolveDirectoryLinkType(),
     );

Add the import at the top of the file:

+import { resolveDirectoryLinkType } from "../ensure-npm-links.mjs";
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/bun/workspace-packages.mjs` around lines 148 - 152, Update the
symlinkSync call in the workspace package setup to use the exported
resolveDirectoryLinkType helper from tests/ensure-npm-links.mjs instead of
repeating the process.platform conditional, adding the required import and
passing the current platform to preserve the existing junction/dir behavior.
src/platform/adapters/runtime/node/http-server.ts (1)

583-585: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Add boundary tests for port validation.

The implementation now rejects non-integer ports and values outside 0 through 65_535. Add focused tests for the lower boundary, upper boundary, negative values, values above 65_535, and fractional values.

As per coding guidelines, behavior changes need a focused failing test before implementation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/platform/adapters/runtime/node/http-server.ts` around lines 583 - 585,
Add focused tests for the Node server port validation covering accepted
boundaries 0 and 65,535, plus rejection of negative values, values above 65,535,
and fractional ports. Place them with the existing runtime HTTP server tests and
assert the invalid cases throw RangeError.

Source: Coding guidelines

src/platform/compat/std/testing/time.ts (1)

226-228: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add a focused test for callable Date().

The apply trap changes the result of Date() to the fake clock time. Add a test that installs FakeTime, calls Date(), and compares the result with the expected Date string.

As per coding guidelines, behavior changes need a focused failing test before implementation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/platform/compat/std/testing/time.ts` around lines 226 - 228, Add a
focused test for the callable-date behavior handled by the apply trap: install
FakeTime with a controlled clock, invoke Date() without new, and assert the
returned string matches the expected Date string for that fake time. Place it
with the existing FakeTime tests and ensure it fails before the apply
implementation change.

Source: Coding guidelines

src/proxy/retry.ts (1)

203-209: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Add a regression test for sequential tee replay.

The body replay implementation changed from repeated Request.clone() calls to chained ReadableStream.tee() calls. Add a focused test that consumes each returned body in attempt order and verifies identical bytes for a multi-chunk body with more than one retry.

As per coding guidelines, behavior changes need a focused failing test before implementation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/proxy/retry.ts` around lines 203 - 209, Add a focused regression test for
the body replay logic around the sequential tee construction, using a
multi-chunk request body and more than one retry. Consume each body in attempt
order and assert that every replay produces identical bytes, ensuring the test
fails before the chained ReadableStream.tee implementation is applied.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@extensions/ext-yaml/src/adapter.ts`:
- Line 14: Update the explanatory comment near the parser-options description to
remove the duplicated “so” conjunction, leaving a grammatical, concise sentence
in direct public language.

In `@src/extensions/first-party-import.ts`:
- Around line 296-315: Add focused tests for the Bun missing-module parsing
branch covering relative specifiers, package specifiers, and object-shaped
errors whose message property is a string. Exercise the parser through its
existing public or nearest visible entry point and verify the expected
normalized result for each case before finalizing the implementation.

In `@src/modules/server/classify.ts`:
- Around line 36-45: Add focused tests in classify.test.ts for versioned
cross-project paths handled by normalizeCrossProjectVersionOperators, covering
both lowercase %5e and uppercase %5E before "/@/". Assert each case normalizes
to the expected caret-prefixed version path.

In `@src/transforms/esm/http-cache-helpers.ts`:
- Around line 189-201: Update parseURLSearchParams to avoid for...of over the
stringSplit result: create an empty IntrinsicURLSearchParams, iterate the parts
by numeric index, and append each decoded name/value pair through a captured
URLSearchParams.prototype.append intrinsic so duplicate keys remain preserved.
Add a focused poisoning test that replaces Array.prototype[Symbol.iterator] and
verifies query parsing and normalized cache identity are unchanged.

In `@tests/bun/run-tests.mjs`:
- Around line 120-142: Update runIsolatedTests to treat an empty runs/files
selection as failure before creating workers or reporting success. Return false
(and preserve the existing failure reporting style) when no test files are
available, while keeping normal worker execution unchanged for non-empty
selections.

In `@tests/bun/workspace-packages.mjs`:
- Around line 21-45: Update acquirePreparationLock to recover stale lock
directories when mkdirSync reports EEXIST: inspect the existing lock marker,
reclaim it if the marker is missing/invalid or its recorded process is confirmed
dead, then retry lock acquisition; continue throwing the active-lock error for a
live or indeterminate owner. Add the necessary marker-reading helper near
acquirePreparationLock and preserve cleanup of partially written locks.

In `@tests/ensure-npm-links.mjs`:
- Around line 9-16: Update ensureDirectorySymlink to ignore only EEXIST from
symlinkSync so concurrent link creation remains successful, while preserving the
original error for all other failures. Also capture the caught error and attach
it as the cause in the readdirSync catch blocks at the referenced locations,
without changing their existing error messages.

---

Outside diff comments:
In `@src/config/declarative-evaluator-worker-runner.ts`:
- Around line 528-533: Update createRuntimeWorkerEndpoint so the Bun path does
not use createNodeWorkerEndpoint with unenforced resourceLimits; either route
Bun through a runtime endpoint that enforces the evaluator memory bound or
explicitly reject Bun. Add a Bun-specific regression test verifying the selected
behavior and preserving the existing Deno and Node paths.

---

Nitpick comments:
In `@src/platform/adapters/runtime/node/http-server.ts`:
- Around line 583-585: Add focused tests for the Node server port validation
covering accepted boundaries 0 and 65,535, plus rejection of negative values,
values above 65,535, and fractional ports. Place them with the existing runtime
HTTP server tests and assert the invalid cases throw RangeError.

In `@src/platform/compat/std/testing/time.ts`:
- Around line 226-228: Add a focused test for the callable-date behavior handled
by the apply trap: install FakeTime with a controlled clock, invoke Date()
without new, and assert the returned string matches the expected Date string for
that fake time. Place it with the existing FakeTime tests and ensure it fails
before the apply implementation change.

In `@src/proxy/retry.ts`:
- Around line 203-209: Add a focused regression test for the body replay logic
around the sequential tee construction, using a multi-chunk request body and
more than one retry. Consume each body in attempt order and assert that every
replay produces identical bytes, ensuring the test fails before the chained
ReadableStream.tee implementation is applied.

In `@tests/bun/preload.ts`:
- Around line 145-154: Normalize args.path to a consistent separator form before
matching, then use that normalized path for both the build.onLoad filter and the
extension-branch check. Relax the filter to accept either slash style while
preserving the existing extension-source pattern and rewriteModuleSpecifiers
behavior.

In `@tests/bun/workspace-packages.mjs`:
- Around line 148-152: Update the symlinkSync call in the workspace package
setup to use the exported resolveDirectoryLinkType helper from
tests/ensure-npm-links.mjs instead of repeating the process.platform
conditional, adding the required import and passing the current platform to
preserve the existing junction/dir behavior.

In `@tests/bun/workspace-packages.test.mjs`:
- Around line 29-33: Replace the hardcoded publishedWorkspaces.length > 25
assertion with a non-empty check or a comparison against the generated package
set. Keep the loop’s per-workspace generation coverage unchanged and avoid
coupling the test to a fixed workspace count.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 777de500-1059-487a-9980-3c0b35e5eaa3

📥 Commits

Reviewing files that changed from the base of the PR and between 4731e9a and 8d6b811.

📒 Files selected for processing (94)
  • .github/workflows/cicd.yml
  • deno.json
  • docs/api-reference/veryfront/embedding.md
  • docs/api-reference/veryfront/eval.md
  • docs/api-reference/veryfront/extensions.md
  • docs/api-reference/veryfront/schemas.md
  • docs/api-reference/veryfront/workflow.md
  • extensions/ext-blob-gcs/src/gcs-storage.test.ts
  • extensions/ext-blob-s3/src/s3-storage.test.ts
  • extensions/ext-bundler-esbuild/src/binary.test.ts
  • extensions/ext-bundler-esbuild/src/binary.ts
  • extensions/ext-node-websocket-ws/src/package-boundary.test.ts
  • extensions/ext-yaml/README.md
  • extensions/ext-yaml/src/adapter.ts
  • scripts/lint/audit-cross-runtime-jsr.test.ts
  • scripts/lint/audit-cross-runtime-jsr.ts
  • src/agent/hosted/veryfront-cloud-agent-service.test.ts
  • src/agent/streaming/fork-runtime-stream.test.ts
  • src/build/asset-pipeline/css-optimizer/optimization-engine.ts
  • src/build/production-build/static-generation.test.ts
  • src/chat/upload-handler.test.ts
  • src/chat/upload-handler.ts
  • src/client/spa/ClientApp.reactivity.test.tsx
  • src/client/spa/component-loader.test.ts
  • src/config/declarative-evaluator-worker-runner.test.ts
  • src/config/declarative-evaluator-worker-runner.ts
  • src/config/tsconfig-paths-parity.test.ts
  • src/config/tsconfig-paths.ts
  • src/embedding/upload-handler.test.ts
  • src/embedding/upload-handler.ts
  • src/eval/runner.ts
  • src/extensions/first-party-import.ts
  • src/extensions/parser/index.ts
  • src/middleware/core/pipeline/pipeline.test.ts
  • src/modules/import-map/loader-primordial-poisoning.worker.ts
  • src/modules/import-map/loader.test.ts
  • src/modules/import-map/preloader-primordial-poisoning.worker.ts
  • src/modules/import-map/preloader.test.ts
  • src/modules/server/classify.test.ts
  • src/modules/server/classify.ts
  • src/observability/auto-instrument.test.ts
  • src/observability/telemetry-error.test.ts
  • src/observability/telemetry-error.ts
  • src/platform/adapters/fs/wrapper.test.ts
  • src/platform/adapters/runtime/bun/http-server.test.ts
  • src/platform/adapters/runtime/bun/websocket-adapter.test.ts
  • src/platform/adapters/runtime/bun/websocket-adapter.ts
  • src/platform/adapters/runtime/node/http-server.test.ts
  • src/platform/adapters/runtime/node/http-server.ts
  • src/platform/compat/http/pinned-fetch.test.ts
  • src/platform/compat/std/testing/time.test.ts
  • src/platform/compat/std/testing/time.ts
  • src/platform/compat/std/yaml.ts
  • src/provider/veryfront-cloud/provider.test.ts
  • src/proxy/retry.ts
  • src/proxy/routing-invalidation.test.ts
  • src/react/compat/ssr-adapter/string-renderer.test.ts
  • src/react/compat/ssr-adapter/test-setup.ts
  • src/react/components/ui/select.test.tsx
  • src/react/runtime/head-client.test.tsx
  • src/rendering/client/router.test.ts
  • src/rendering/layouts/utils/applicator.test.ts
  • src/rendering/rsc/server-renderer/rsc-renderer.test.ts
  • src/rendering/rsc/server-renderer/tree-processor.test.ts
  • src/runtime/runtime-bridge.test.ts
  • src/sandbox/sandbox.test.ts
  • src/schemas/primitives.ts
  • src/security/input-validation/parsers.test.ts
  • src/server/handlers/dev/dashboard/index.test.ts
  • src/server/handlers/dev/projects/method-policy.test.ts
  • src/server/handlers/request/api/api-handler-wrapper.test.ts
  • src/server/service-server.test.ts
  • src/skill/operation-budget.ts
  • src/transforms/esm/http-cache-helpers.ts
  • src/transforms/pipeline/cache-identity.test.ts
  • src/utils/hash-utils.test.ts
  • src/utils/response-body.test.ts
  • src/workflow/claude-code/websocket-publisher.test.ts
  • src/workflow/claude-code/websocket-publisher.ts
  • tests/bun/dynamic-alias-resolution.test.ts
  • tests/bun/npm-protocol-imports.ts
  • tests/bun/npm-protocol-resolution.test.ts
  • tests/bun/preload.ts
  • tests/bun/run-tests.mjs
  • tests/bun/runner-args.mjs
  • tests/bun/runner-args.test.mjs
  • tests/bun/workspace-packages.mjs
  • tests/bun/workspace-packages.test.mjs
  • tests/bun/workspace-resolution.test.ts
  • tests/ensure-npm-links.mjs
  • tests/ensure-npm-links.test.mjs
  • tests/node-resolver-workspace-imports.test.ts
  • tests/node/resolver-hooks.mjs
  • tsconfig.json

Comment thread extensions/ext-yaml/src/adapter.ts Outdated
Comment thread src/extensions/first-party-import.ts
Comment thread src/modules/server/classify.ts
Comment thread src/transforms/esm/http-cache-helpers.ts Outdated
Comment thread tests/bun/run-tests.mjs
Comment thread tests/bun/workspace-packages.mjs
Comment thread tests/ensure-npm-links.mjs Outdated
The first cross-runtime PR landed the Deno-side resolution, but the verified follow-up tree still carries the CI gates and residue cleanup that make Node and Bun failures visible instead of silently passing with stale links or unresolved runtime assumptions.

This keeps the already-merged #3526 behavior intact, preserves current main's filesystem adapter behavior, and regenerates the API reference from the combined tree so the public docs match the resolved exports.

Constraint: PR #3526 is merged, so this branch applies only the 31e6360..6750f88bf follow-up delta onto current origin/main.

Rejected: Push more changes to fix/cross-runtime-node-suite | the source PR is merged and stale.

Rejected: Restore the redundant node-filesystem-adapter-remove test | current main already carries the a63ffc0 filesystem adapter behavior this follow-up must preserve.

Confidence: high

Scope-risk: moderate

Reversibility: clean

Directive: Keep Node and Bun CI gates fail-loud; do not weaken these checks without re-running the clean-state runtime suites.

Tested: deno task lint:ci

Tested: deno task typecheck

Tested: deno fmt --check (4980 files)

Tested: git diff --check

Tested: Deno 4246 pass / 32114 steps / 1 ignored

Tested: Node clean-state 4031 pass

Tested: Bun 6 contracts plus 1297 files

Related: #3526
@kojiwakayama
kojiwakayama force-pushed the fix/cross-runtime-followup-gates branch from 8d6b811 to 9657771 Compare August 10, 2026 15:48
@kojiwakayama
kojiwakayama added this pull request to the merge queue Aug 10, 2026
Merged via the queue into main with commit 5c50b44 Aug 10, 2026
59 of 62 checks passed
@kojiwakayama
kojiwakayama deleted the fix/cross-runtime-followup-gates branch August 10, 2026 16:09
@kojiwakayama kojiwakayama mentioned this pull request Aug 10, 2026
@kwakayama kwakayama mentioned this pull request Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant