#5701 · Server-native resolution corrupts remote Windows preview paths
Verdict: REPRODUCED · Root-cause confidence: high
1. TL;DR
The inline preview RPC can report a missing file even when the correct host and source root are selected. Its server-side path resolver uses the server operating system's syntax for a root that belongs to a remote host. On Linux, a Windows drive or UNC root becomes a relative POSIX string, so the server's current directory is prepended and the wrong path is sent to the host. A focused test of the actual plugin RPC reproduces this for both workspace and thread-storage sources in two clean checkouts. This is an in-process reproduction with a path-keyed SDK file fixture, not a new live Windows enrollment or browser reproduction.
2. Claims vs findings
| Claim | Status | Evidence |
|---|---|---|
| Windows-owned storage can return not-found despite an available file | Verified at RPC boundary | Direct fixture SDK read succeeds; actual preparePreview returns not-found for the same file. |
| Host selection is correct but path construction is wrong | Verified | The fixture asserts unchanged hostId and rootPath. Logged actual paths contain the Linux checkout prefix followed by Windows root text. |
| Workspace and UNC variants share the defect | Verified in fixture only | Both sources fail for drive and UNC roots. Two POSIX controls pass. |
| A live native Windows installation and core HTTP route behave as reported | Unverified in this investigation | No real enrolled machine, live server, or user runtime data was used. |
| Specific released versions and UI error text | Unverified here | This investigation executes the recorded main commit, not a released binary or browser. |
3. Environment
- Trusted get-bb/bb origin/main:
6a639cfc0d66e0c789a1bd7309266973228d1a80; public repository; fetched from the trusted repository, not an issue link. - Linux x86_64; Node v22.19.0; Vitest 4.1.1; date 2026-10-17 UTC.
- Two detached worktrees named
baseandverificationunder a fresh temporary directory. Both were clean before adding the author-written reproduction file. - No provider requests, servers, network-facing plugins, instance ports, or application data directories. The SDK fixture returns synthetic source locations and file content; no database is mocked.
- First checkout: frozen install and full Turbo build succeeded (67 tasks). Second: separate frozen install and plugin/upstream build succeeded (6 tasks).
4. Minimal reproduction
- Clone and install the trusted revision using the first five commands below.
- Save the complete author-written test below as
plugins/inline-vis/host-path.repro.test.ts. - Run the final two commands to reproduce the regression and check the existing suites.
git clone https://github.com/get-bb/bb.git bb-5701 cd bb-5701 git checkout --detach 6a639cfc0d66e0c789a1bd7309266973228d1a80 pnpm install --frozen-lockfile --prefer-offline pnpm exec turbo run build pnpm exec turbo run test --filter=bb-plugin-inline-vis -- host-path.repro.test.ts pnpm exec turbo run test --filter=bb-plugin-inline-vis -- server.test.ts frame.test.ts app.test.tsx
The SDK fixture models a single existing file at each explicit absolute host path. It first reads that exact path successfully. The real registered plugin RPC must then return an HTML target for the same file. Host selection and source-root forwarding are asserted separately. The fixture never computes its expected path using the production resolver.
Expected: all six cases return HTML. Actual: four Windows cases return {"kind":"not-found","file":"reports/view.html"}; two POSIX cases pass.
Test Files 1 failed (1)
Tests 4 failed | 2 passed (6)
AssertionError: expected { kind: 'not-found', …(1) } to match object { kind: 'html', …(5) }
No screenshot is claimed: this report verifies a nonvisual RPC/path defect, not a rendered UI state.
Complete author-written test
import { createFakePluginHost } from "@get-bb/plugin-sdk/testing";
import { describe, expect, it } from "vitest";
import { z } from "zod";
import plugin from "./server";
const roots = [
{
name: "POSIX",
rootPath: "/preview-root",
absolutePath: "/preview-root/reports/view.html",
},
{
name: "Windows drive",
rootPath: "R:\\preview-root",
absolutePath: "R:\\preview-root\\reports\\view.html",
},
{
name: "Windows UNC",
rootPath: "\\\\preview-machine\\share\\preview-root",
absolutePath:
"\\\\preview-machine\\share\\preview-root\\reports\\view.html",
},
];
describe.each(["workspace", "thread-storage"])("%s host paths", (source) => {
it.each(roots)(
"prepares an existing $name file",
async ({ rootPath, absolutePath }) => {
const content = "<!doctype html><h1>Remote preview</h1>";
const fileResult = {
content,
contentEncoding: "utf8",
sizeBytes: Buffer.byteLength(content),
sha256: "fixture",
};
const hostId = "host_preview";
const file = "reports/view.html";
const { bb, harness } = createFakePluginHost({
pluginId: "inline-vis",
sdk: {
threads: {
get: () => ({
id: "thr_preview",
environment: { id: "env_preview", hostId, path: rootPath },
}),
storageLocation: () => ({ hostId, storageRootPath: rootPath }),
},
files: {
read: async (input: unknown) => {
const args = z
.object({
path: z.string(),
rootPath: z.string(),
hostId: z.string(),
})
.parse(input);
expect(args.rootPath).toBe(rootPath);
expect(args.hostId).toBe(hostId);
if (args.path !== absolutePath) {
console.info(
JSON.stringify({
expectedPath: absolutePath,
actualPath: args.path,
}),
);
throw Object.assign(
new Error("No file at requested host path"),
{ status: 404 },
);
}
return fileResult;
},
},
},
});
await plugin(bb);
await expect(
bb.sdk.files.read({ path: absolutePath, rootPath, hostId }),
).resolves.toMatchObject({ content });
await expect(
harness.callRpc("preparePreview", {
threadId: "thr_preview",
file,
source,
}),
).resolves.toMatchObject({
kind: "html",
content,
file,
source,
target: { kind: source, path: file },
url: expect.stringContaining("/reports/view.html"),
});
},
);
});
5. Root cause
resolveContainedPreviewPath, lines 69–84
uses imported native node:path for resolution, relative containment, separators, and absolute-path checks:
export function resolveContainedPreviewPath(
rootPath: string,
relativeFile: string,
): string {
const root = path.resolve(rootPath);
const absolute = path.resolve(root, relativeFile);
const relative = path.relative(root, absolute);
if (
relative === ".." ||
relative.startsWith(`..${path.sep}`) ||
path.isAbsolute(relative)
) {
throw new Error(`"file" must not escape its source: ${relativeFile}`);
}
return absolute;
}
For a root like R:\preview-root, Linux resolves the path under its current working directory instead of retaining the drive root.
UNC roots suffer the same conversion. The lexical containment check succeeds relative to this incorrect POSIX root.
The handler's source selection forwards the correct root and host. The read and error mapping sends the malformed absolute path to files.read and translates a 404 into not-found. This explains why choosing the right host does not avoid the failure.
The core file-route helpers explicitly distinguish Windows and POSIX syntax; their code supports the architectural diagnosis, but no live core HTTP request was made here.
6. Proposed fix and autopilot safety decision
Select path semantics from the owning absolute root, rather than from the server OS, and use that same path implementation for resolution and containment. Preserve existing host targeting, UTF-8/size checks, and source-relative input validation. Before landing, test drive and UNC roots, POSIX roots, absolute/drive-relative inputs, traversal, mixed separators, cross-drive paths, and sibling-prefix escapes.
No autopilot PR: the necessary change touches the lexical source-root containment security boundary in resolveContainedPreviewPath. The rule explicitly excludes security-boundary changes even if their textual diff is small. No production patch, branch, commit, or push to get-bb/bb was made. This is not a claim that an exploitable escape was found; it is a scope restriction on automated changes to the containment decision.
7. Related work
GitHub issue timeline and open-PR search for issue 5701 found no linked open PR at investigation time. No PR branch or code was executed. Repository label-history review included existing inline-vis issues; it does not establish that any superficially related report has the same cause.
8. Verification
The same agent repeated the reproduction in a second clean detached checkout at the identical full base SHA, with its own node_modules installation and generated build output. Only the newly authored reproduction file was copied. The exact Turbo command was run again and exited 1 with the same four Windows failures and two POSIX passes. This is a repeated clean-checkout check, not independent verification. No ports or data directories were needed, so no live instance was reused.
The first fixture draft incorrectly expected an asynchronous return from a synchronous fake. It was corrected to return a Promise before both recorded runs. The final evidence fails for the intended wrong-path/not-found result, not for fixture initialization.
The existing plugin suites pass unchanged: 3 files, 50 tests. No production fix was attempted, so a fail-before/pass-after claim is not made.
9. Appendix
Raw evidence stays outside the public repository; sanitized diagnostic output is embedded below.
repro-first.log
• turbo 2.10.12
• Packages in scope: bb-plugin-inline-vis
• Running test in 1 packages
• Remote caching disabled, using shared worktree cache
//:ensure-native-modules: cache bypass, force executing dd1688e2596bf7da
@bb/templates:generate:templates: cache hit, replaying logs 7521d6f2201f79f8
@bb/templates:generate:templates:
@bb/templates:generate:templates: > @bb/templates@0.0.1 generate:templates <investigation>/base/packages/templates
@bb/templates:generate:templates: > node ./scripts/generate-templates.mjs
@bb/templates:generate:templates:
@bb/templates:generate:plugin-scaffold: cache hit, replaying logs 8bce7db4024339bb
@bb/templates:generate:plugin-scaffold:
@bb/templates:generate:plugin-scaffold: > @bb/templates@0.0.1 generate:plugin-scaffold <investigation>/base/packages/templates
@bb/templates:generate:plugin-scaffold: > node ./scripts/generate-plugin-scaffold.mjs
@bb/templates:generate:plugin-scaffold:
@bb/plugin-build:generate: cache hit, replaying logs 4b1f052337c96dc2
@bb/plugin-build:generate:
@bb/plugin-build:generate: > @bb/plugin-build@0.0.1 generate <investigation>/base/packages/plugin-build
@bb/plugin-build:generate: > node ./scripts/generate-plugin-theme.mjs && node ./scripts/generate-runtime-export-manifest.mjs
@bb/plugin-build:generate:
@bb/plugin-build:generate: plugin-theme.generated.ts up to date
@bb/plugin-build:generate: wrote <investigation>/base/packages/plugin-build/src/generated/runtime-export-manifest.generated.ts (react@19.2.4)
@get-bb/plugin-sdk:build: cache hit, replaying logs 77d838ad388aa42d
@get-bb/plugin-sdk:build:
@get-bb/plugin-sdk:build: > @get-bb/plugin-sdk@0.6.54 build <investigation>/base/packages/plugin-sdk
@get-bb/plugin-sdk:build: > node scripts/build-runtime.mjs
@get-bb/plugin-sdk:build:
@get-bb/plugin-sdk:build: Built 20 @get-bb/plugin-sdk runtime entries.
//:ensure-native-modules:
//:ensure-native-modules: > bb@ ensure-native-modules <investigation>/base
//:ensure-native-modules: > node scripts/ensure-native-modules.mjs
//:ensure-native-modules:
bb-plugin-inline-vis:test: cache miss, executing 1fa95d0a843a70b4
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: > bb-plugin-inline-vis@0.1.0 test <investigation>/base/plugins/inline-vis
bb-plugin-inline-vis:test: > vitest run --config vitest.config.ts "host-path.repro.test.ts"
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: RUN v4.1.1 <investigation>/base/plugins/inline-vis
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: stdout | host-path.repro.test.ts > workspace host paths > prepares an existing 'Windows drive' file
bb-plugin-inline-vis:test: {"expectedPath":"R:\\preview-root\\reports\\view.html","actualPath":"<investigation>/base/plugins/inline-vis/R:\\preview-root/reports/view.html"}
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: stdout | host-path.repro.test.ts > workspace host paths > prepares an existing 'Windows UNC' file
bb-plugin-inline-vis:test: {"expectedPath":"\\\\preview-machine\\share\\preview-root\\reports\\view.html","actualPath":"<investigation>/base/plugins/inline-vis/\\\\preview-machine\\share\\preview-root/reports/view.html"}
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: stdout | host-path.repro.test.ts > thread-storage host paths > prepares an existing 'Windows drive' file
bb-plugin-inline-vis:test: {"expectedPath":"R:\\preview-root\\reports\\view.html","actualPath":"<investigation>/base/plugins/inline-vis/R:\\preview-root/reports/view.html"}
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: stdout | host-path.repro.test.ts > thread-storage host paths > prepares an existing 'Windows UNC' file
bb-plugin-inline-vis:test: {"expectedPath":"\\\\preview-machine\\share\\preview-root\\reports\\view.html","actualPath":"<investigation>/base/plugins/inline-vis/\\\\preview-machine\\share\\preview-root/reports/view.html"}
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: ❯ |bb-plugin-inline-vis| host-path.repro.test.ts (6 tests | 4 failed) 25ms
bb-plugin-inline-vis:test: ✓ prepares an existing 'POSIX' file 9ms
bb-plugin-inline-vis:test: × prepares an existing 'Windows drive' file 8ms
bb-plugin-inline-vis:test: × prepares an existing 'Windows UNC' file 2ms
bb-plugin-inline-vis:test: ✓ prepares an existing 'POSIX' file 1ms
bb-plugin-inline-vis:test: × prepares an existing 'Windows drive' file 2ms
bb-plugin-inline-vis:test: × prepares an existing 'Windows UNC' file 2ms
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 4 ⎯⎯⎯⎯⎯⎯⎯
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: FAIL |bb-plugin-inline-vis| host-path.repro.test.ts > workspace host paths > prepares an existing 'Windows drive' file
bb-plugin-inline-vis:test: FAIL |bb-plugin-inline-vis| host-path.repro.test.ts > workspace host paths > prepares an existing 'Windows UNC' file
bb-plugin-inline-vis:test: AssertionError: expected { kind: 'not-found', …(1) } to match object { kind: 'html', …(5) }
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: - Expected
bb-plugin-inline-vis:test: + Received
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: {
bb-plugin-inline-vis:test: - "content": "<!doctype html><h1>Remote preview</h1>",
bb-plugin-inline-vis:test: "file": "reports/view.html",
bb-plugin-inline-vis:test: - "kind": "html",
bb-plugin-inline-vis:test: - "source": "workspace",
bb-plugin-inline-vis:test: - "target": {
bb-plugin-inline-vis:test: - "kind": "workspace",
bb-plugin-inline-vis:test: - "path": "reports/view.html",
bb-plugin-inline-vis:test: - },
bb-plugin-inline-vis:test: - "url": StringContaining "/reports/view.html",
bb-plugin-inline-vis:test: + "kind": "not-found",
bb-plugin-inline-vis:test: }
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: ❯ host-path.repro.test.ts:86:8
bb-plugin-inline-vis:test: 84| source,
bb-plugin-inline-vis:test: 85| }),
bb-plugin-inline-vis:test: 86| ).resolves.toMatchObject({
bb-plugin-inline-vis:test: | ^
bb-plugin-inline-vis:test: 87| kind: "html",
bb-plugin-inline-vis:test: 88| content,
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/4]⎯
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: FAIL |bb-plugin-inline-vis| host-path.repro.test.ts > thread-storage host paths > prepares an existing 'Windows drive' file
bb-plugin-inline-vis:test: FAIL |bb-plugin-inline-vis| host-path.repro.test.ts > thread-storage host paths > prepares an existing 'Windows UNC' file
bb-plugin-inline-vis:test: AssertionError: expected { kind: 'not-found', …(1) } to match object { kind: 'html', …(5) }
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: - Expected
bb-plugin-inline-vis:test: + Received
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: {
bb-plugin-inline-vis:test: - "content": "<!doctype html><h1>Remote preview</h1>",
bb-plugin-inline-vis:test: "file": "reports/view.html",
bb-plugin-inline-vis:test: - "kind": "html",
bb-plugin-inline-vis:test: - "source": "thread-storage",
bb-plugin-inline-vis:test: - "target": {
bb-plugin-inline-vis:test: - "kind": "thread-storage",
bb-plugin-inline-vis:test: - "path": "reports/view.html",
bb-plugin-inline-vis:test: - },
bb-plugin-inline-vis:test: - "url": StringContaining "/reports/view.html",
bb-plugin-inline-vis:test: + "kind": "not-found",
bb-plugin-inline-vis:test: }
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: ❯ host-path.repro.test.ts:86:8
bb-plugin-inline-vis:test: 84| source,
bb-plugin-inline-vis:test: 85| }),
bb-plugin-inline-vis:test: 86| ).resolves.toMatchObject({
bb-plugin-inline-vis:test: | ^
bb-plugin-inline-vis:test: 87| kind: "html",
bb-plugin-inline-vis:test: 88| content,
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/4]⎯
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: Test Files 1 failed (1)
bb-plugin-inline-vis:test: Tests 4 failed | 2 passed (6)
bb-plugin-inline-vis:test: Start at 19:12:03
bb-plugin-inline-vis:test: Duration 466ms (transform 228ms, setup 0ms, import 322ms, tests 25ms, environment 0ms)
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: ELIFECYCLE Test failed. See above for more details.
bb-plugin-inline-vis#test: ERROR command (<investigation>/base/plugins/inline-vis) /usr/local/bin/pnpm run test host-path.repro.test.ts exited (1)
Tasks: 5 successful, 6 total
Cached: 4 cached, 6 total
Time: 1.505s
Failed: bb-plugin-inline-vis#test
ERROR run failed: command exited (1)
repro-second.log
• turbo 2.10.12
• Packages in scope: bb-plugin-inline-vis
• Running test in 1 packages
• Remote caching disabled, using shared worktree cache
//:ensure-native-modules: cache bypass, force executing dd1688e2596bf7da
@bb/plugin-build:generate: cache hit, replaying logs 4b1f052337c96dc2
@bb/plugin-build:generate:
@bb/plugin-build:generate: > @bb/plugin-build@0.0.1 generate <investigation>/base/packages/plugin-build
@bb/plugin-build:generate: > node ./scripts/generate-plugin-theme.mjs && node ./scripts/generate-runtime-export-manifest.mjs
@bb/plugin-build:generate:
@bb/plugin-build:generate: plugin-theme.generated.ts up to date
@bb/plugin-build:generate: wrote <investigation>/base/packages/plugin-build/src/generated/runtime-export-manifest.generated.ts (react@19.2.4)
@bb/templates:generate:plugin-scaffold: cache hit, replaying logs 8bce7db4024339bb
@bb/templates:generate:plugin-scaffold:
@bb/templates:generate:plugin-scaffold: > @bb/templates@0.0.1 generate:plugin-scaffold <investigation>/base/packages/templates
@bb/templates:generate:plugin-scaffold: > node ./scripts/generate-plugin-scaffold.mjs
@bb/templates:generate:plugin-scaffold:
@bb/templates:generate:templates: cache hit, replaying logs 7521d6f2201f79f8
@bb/templates:generate:templates:
@bb/templates:generate:templates: > @bb/templates@0.0.1 generate:templates <investigation>/base/packages/templates
@bb/templates:generate:templates: > node ./scripts/generate-templates.mjs
@bb/templates:generate:templates:
@get-bb/plugin-sdk:build: cache hit, replaying logs 77d838ad388aa42d
@get-bb/plugin-sdk:build:
@get-bb/plugin-sdk:build: > @get-bb/plugin-sdk@0.6.54 build <investigation>/base/packages/plugin-sdk
@get-bb/plugin-sdk:build: > node scripts/build-runtime.mjs
@get-bb/plugin-sdk:build:
@get-bb/plugin-sdk:build: Built 20 @get-bb/plugin-sdk runtime entries.
//:ensure-native-modules:
//:ensure-native-modules: > bb@ ensure-native-modules <investigation>/verification
//:ensure-native-modules: > node scripts/ensure-native-modules.mjs
//:ensure-native-modules:
//:ensure-native-modules: [ensure-native-modules] Detached hardlinked better-sqlite3 binary before verification
bb-plugin-inline-vis:test: cache miss, executing 1fa95d0a843a70b4
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: > bb-plugin-inline-vis@0.1.0 test <investigation>/verification/plugins/inline-vis
bb-plugin-inline-vis:test: > vitest run --config vitest.config.ts "host-path.repro.test.ts"
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: RUN v4.1.1 <investigation>/verification/plugins/inline-vis
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: stdout | host-path.repro.test.ts > workspace host paths > prepares an existing 'Windows drive' file
bb-plugin-inline-vis:test: {"expectedPath":"R:\\preview-root\\reports\\view.html","actualPath":"<investigation>/verification/plugins/inline-vis/R:\\preview-root/reports/view.html"}
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: stdout | host-path.repro.test.ts > workspace host paths > prepares an existing 'Windows UNC' file
bb-plugin-inline-vis:test: {"expectedPath":"\\\\preview-machine\\share\\preview-root\\reports\\view.html","actualPath":"<investigation>/verification/plugins/inline-vis/\\\\preview-machine\\share\\preview-root/reports/view.html"}
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: stdout | host-path.repro.test.ts > thread-storage host paths > prepares an existing 'Windows drive' file
bb-plugin-inline-vis:test: {"expectedPath":"R:\\preview-root\\reports\\view.html","actualPath":"<investigation>/verification/plugins/inline-vis/R:\\preview-root/reports/view.html"}
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: stdout | host-path.repro.test.ts > thread-storage host paths > prepares an existing 'Windows UNC' file
bb-plugin-inline-vis:test: {"expectedPath":"\\\\preview-machine\\share\\preview-root\\reports\\view.html","actualPath":"<investigation>/verification/plugins/inline-vis/\\\\preview-machine\\share\\preview-root/reports/view.html"}
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: ❯ |bb-plugin-inline-vis| host-path.repro.test.ts (6 tests | 4 failed) 25ms
bb-plugin-inline-vis:test: ✓ prepares an existing 'POSIX' file 9ms
bb-plugin-inline-vis:test: × prepares an existing 'Windows drive' file 8ms
bb-plugin-inline-vis:test: × prepares an existing 'Windows UNC' file 2ms
bb-plugin-inline-vis:test: ✓ prepares an existing 'POSIX' file 1ms
bb-plugin-inline-vis:test: × prepares an existing 'Windows drive' file 3ms
bb-plugin-inline-vis:test: × prepares an existing 'Windows UNC' file 2ms
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 4 ⎯⎯⎯⎯⎯⎯⎯
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: FAIL |bb-plugin-inline-vis| host-path.repro.test.ts > workspace host paths > prepares an existing 'Windows drive' file
bb-plugin-inline-vis:test: FAIL |bb-plugin-inline-vis| host-path.repro.test.ts > workspace host paths > prepares an existing 'Windows UNC' file
bb-plugin-inline-vis:test: AssertionError: expected { kind: 'not-found', …(1) } to match object { kind: 'html', …(5) }
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: - Expected
bb-plugin-inline-vis:test: + Received
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: {
bb-plugin-inline-vis:test: - "content": "<!doctype html><h1>Remote preview</h1>",
bb-plugin-inline-vis:test: "file": "reports/view.html",
bb-plugin-inline-vis:test: - "kind": "html",
bb-plugin-inline-vis:test: - "source": "workspace",
bb-plugin-inline-vis:test: - "target": {
bb-plugin-inline-vis:test: - "kind": "workspace",
bb-plugin-inline-vis:test: - "path": "reports/view.html",
bb-plugin-inline-vis:test: - },
bb-plugin-inline-vis:test: - "url": StringContaining "/reports/view.html",
bb-plugin-inline-vis:test: + "kind": "not-found",
bb-plugin-inline-vis:test: }
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: ❯ host-path.repro.test.ts:86:8
bb-plugin-inline-vis:test: 84| source,
bb-plugin-inline-vis:test: 85| }),
bb-plugin-inline-vis:test: 86| ).resolves.toMatchObject({
bb-plugin-inline-vis:test: | ^
bb-plugin-inline-vis:test: 87| kind: "html",
bb-plugin-inline-vis:test: 88| content,
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/4]⎯
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: FAIL |bb-plugin-inline-vis| host-path.repro.test.ts > thread-storage host paths > prepares an existing 'Windows drive' file
bb-plugin-inline-vis:test: FAIL |bb-plugin-inline-vis| host-path.repro.test.ts > thread-storage host paths > prepares an existing 'Windows UNC' file
bb-plugin-inline-vis:test: AssertionError: expected { kind: 'not-found', …(1) } to match object { kind: 'html', …(5) }
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: - Expected
bb-plugin-inline-vis:test: + Received
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: {
bb-plugin-inline-vis:test: - "content": "<!doctype html><h1>Remote preview</h1>",
bb-plugin-inline-vis:test: "file": "reports/view.html",
bb-plugin-inline-vis:test: - "kind": "html",
bb-plugin-inline-vis:test: - "source": "thread-storage",
bb-plugin-inline-vis:test: - "target": {
bb-plugin-inline-vis:test: - "kind": "thread-storage",
bb-plugin-inline-vis:test: - "path": "reports/view.html",
bb-plugin-inline-vis:test: - },
bb-plugin-inline-vis:test: - "url": StringContaining "/reports/view.html",
bb-plugin-inline-vis:test: + "kind": "not-found",
bb-plugin-inline-vis:test: }
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: ❯ host-path.repro.test.ts:86:8
bb-plugin-inline-vis:test: 84| source,
bb-plugin-inline-vis:test: 85| }),
bb-plugin-inline-vis:test: 86| ).resolves.toMatchObject({
bb-plugin-inline-vis:test: | ^
bb-plugin-inline-vis:test: 87| kind: "html",
bb-plugin-inline-vis:test: 88| content,
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/4]⎯
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: Test Files 1 failed (1)
bb-plugin-inline-vis:test: Tests 4 failed | 2 passed (6)
bb-plugin-inline-vis:test: Start at 19:12:21
bb-plugin-inline-vis:test: Duration 444ms (transform 198ms, setup 0ms, import 295ms, tests 25ms, environment 0ms)
bb-plugin-inline-vis:test:
bb-plugin-inline-vis:test: ELIFECYCLE Test failed. See above for more details.
bb-plugin-inline-vis#test: ERROR command (<investigation>/verification/plugins/inline-vis) /usr/local/bin/pnpm run test host-path.repro.test.ts exited (1)
Tasks: 5 successful, 6 total
Cached: 4 cached, 6 total
Time: 1.523s
Failed: bb-plugin-inline-vis#test
ERROR run failed: command exited (1)
existing-tests.log
• turbo 2.10.12 • Packages in scope: bb-plugin-inline-vis • Running test in 1 packages • Remote caching disabled, using shared worktree cache @bb/templates:generate:templates: cache miss, executing 84112c6740e86af0 @bb/templates:generate:plugin-scaffold: cache miss, executing 061cdf15211b23be //:ensure-native-modules: cache bypass, force executing 5ca768c4e59fab01 @bb/plugin-build:generate: cache miss, executing f63c4a7c1e1e2557 //:ensure-native-modules: //:ensure-native-modules: > bb@ ensure-native-modules <investigation>/base //:ensure-native-modules: > node scripts/ensure-native-modules.mjs //:ensure-native-modules: @bb/templates:generate:plugin-scaffold: @bb/templates:generate:plugin-scaffold: > @bb/templates@0.0.1 generate:plugin-scaffold <investigation>/base/packages/templates @bb/templates:generate:plugin-scaffold: > node ./scripts/generate-plugin-scaffold.mjs @bb/templates:generate:plugin-scaffold: @bb/templates:generate:templates: @bb/templates:generate:templates: > @bb/templates@0.0.1 generate:templates <investigation>/base/packages/templates @bb/templates:generate:templates: > node ./scripts/generate-templates.mjs @bb/templates:generate:templates: @bb/plugin-build:generate: @bb/plugin-build:generate: > @bb/plugin-build@0.0.1 generate <investigation>/base/packages/plugin-build @bb/plugin-build:generate: > node ./scripts/generate-plugin-theme.mjs && node ./scripts/generate-runtime-export-manifest.mjs @bb/plugin-build:generate: @bb/plugin-build:generate: plugin-theme.generated.ts up to date @get-bb/plugin-sdk:build: cache miss, executing 8335604adc69d3ad @bb/plugin-build:generate: wrote <investigation>/base/packages/plugin-build/src/generated/runtime-export-manifest.generated.ts (react@19.2.4) @get-bb/plugin-sdk:build: @get-bb/plugin-sdk:build: > @get-bb/plugin-sdk@0.6.54 build <investigation>/base/packages/plugin-sdk @get-bb/plugin-sdk:build: > node scripts/build-runtime.mjs @get-bb/plugin-sdk:build: @get-bb/plugin-sdk:build: Built 20 @get-bb/plugin-sdk runtime entries. bb-plugin-inline-vis:test: cache miss, executing 78cbbe23d75f114e bb-plugin-inline-vis:test: bb-plugin-inline-vis:test: > bb-plugin-inline-vis@0.1.0 test <investigation>/base/plugins/inline-vis bb-plugin-inline-vis:test: > vitest run --config vitest.config.ts "server.test.ts" "frame.test.ts" "app.test.tsx" bb-plugin-inline-vis:test: bb-plugin-inline-vis:test: bb-plugin-inline-vis:test: RUN v4.1.1 <investigation>/base/plugins/inline-vis bb-plugin-inline-vis:test: bb-plugin-inline-vis:test: ✓ |bb-plugin-inline-vis| server.test.ts (14 tests) 22ms bb-plugin-inline-vis:test: ✓ |bb-plugin-inline-vis| frame.test.ts (8 tests) 17ms bb-plugin-inline-vis:test: ✓ |bb-plugin-inline-vis| app.test.tsx (28 tests) 778ms bb-plugin-inline-vis:test: ✓ revalidates a cached Markdown preview after not-found and does not resurrect missing content 342ms bb-plugin-inline-vis:test: bb-plugin-inline-vis:test: Test Files 3 passed (3) bb-plugin-inline-vis:test: Tests 50 passed (50) bb-plugin-inline-vis:test: Start at 19:12:24 bb-plugin-inline-vis:test: Duration 1.98s (transform 600ms, setup 0ms, import 699ms, tests 818ms, environment 1.51s) bb-plugin-inline-vis:test: Tasks: 6 successful, 6 total Cached: 0 cached, 6 total Time: 3.758s
Logs retain observed diagnostics with only the temporary investigation directory replaced by <investigation>.
Reproduction commands appear above; setup for the second checkout used git worktree add --detach at the same SHA, frozen install, and
pnpm exec turbo run build --filter=bb-plugin-inline-vis....
Trust handling: all issue text, links, comments, and code were treated as untrusted claims. No issue-provided command or linked code was executed. The test was designed from trusted source and the existing SDK test harness. No private session data or credentials are included.
> AGENT GENERATED