• turbo 2.8.3 • Packages in scope: @bb/server • Running test in 1 packages • Remote caching disabled, using shared worktree cache @bb/templates:generate:templates: cache bypass, force executing e0588148a9ac9c5b //:ensure-native-modules: cache bypass, force executing 1023a8b347275236 @bb/plugin-build:generate: cache bypass, force executing 3ef49b4bdd14fc8a @bb/templates:generate:plugin-scaffold: cache bypass, force executing 98e909477d5a744b @get-bb/plugin-sdk:build:types: cache bypass, force executing b22056523c0abe8c @bb/templates:generate:templates: @bb/templates:generate:templates: > @bb/templates@0.0.1 generate:templates /tmp/bb-report-2547-investigate-SQfjR0/packages/templates @bb/templates:generate:templates: > node ./scripts/generate-templates.mjs @bb/templates:generate:templates: @bb/templates:generate:plugin-scaffold: @bb/templates:generate:plugin-scaffold: > @bb/templates@0.0.1 generate:plugin-scaffold /tmp/bb-report-2547-investigate-SQfjR0/packages/templates @bb/templates:generate:plugin-scaffold: > node ./scripts/generate-plugin-scaffold.mjs @bb/templates:generate:plugin-scaffold: //:ensure-native-modules: //:ensure-native-modules: > bb@ ensure-native-modules /tmp/bb-report-2547-investigate-SQfjR0 //:ensure-native-modules: > node scripts/ensure-native-modules.mjs //:ensure-native-modules: @bb/plugin-build:generate: @bb/plugin-build:generate: > @bb/plugin-build@0.0.1 generate /tmp/bb-report-2547-investigate-SQfjR0/packages/plugin-build @bb/plugin-build:generate: > node ./scripts/generate-plugin-theme.mjs && node ./scripts/generate-runtime-export-manifest.mjs @bb/plugin-build:generate: @get-bb/plugin-sdk:build:types: @get-bb/plugin-sdk:build:types: > @get-bb/plugin-sdk@0.4.24 build:types /tmp/bb-report-2547-investigate-SQfjR0/packages/plugin-sdk @get-bb/plugin-sdk:build:types: > node scripts/build-bundled-dts.mjs @get-bb/plugin-sdk:build:types: @bb/plugin-build:generate: plugin-theme.generated.ts up to date @bb/plugin-build:generate: wrote /tmp/bb-report-2547-investigate-SQfjR0/packages/plugin-build/src/generated/runtime-export-manifest.generated.ts (react@19.2.4) @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk.d.ts @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk-app.d.ts @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk-provider-bridge.d.ts @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk-ai-services.d.ts @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk-provider-bridge-testing.d.ts @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk-provider-bridge-acp.d.ts @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk-host.d.ts @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk-internal-composer-customization-validation.d.ts @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk-internal-composer-view.d.ts @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk-internal-file-navigation-validation.d.ts @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk-internal-host-policy.d.ts @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk-internal-plugin-app-collector.d.ts @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk-testing.d.ts @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk-testing-app.d.ts @get-bb/plugin-sdk:build:types: Unchanged bundled-types/bb-plugin-sdk-testing-host.d.ts @get-bb/plugin-sdk:build: cache bypass, force executing cf344ffd8a52a718 @get-bb/plugin-sdk:build: @get-bb/plugin-sdk:build: > @get-bb/plugin-sdk@0.4.24 build /tmp/bb-report-2547-investigate-SQfjR0/packages/plugin-sdk @get-bb/plugin-sdk:build: > node scripts/build-runtime.mjs @get-bb/plugin-sdk:build: @get-bb/plugin-sdk:build: Built 17 @get-bb/plugin-sdk runtime entries. @bb/server:test: cache bypass, force executing d05fb4765d2ab479 @bb/server:test: @bb/server:test: > @bb/server@0.0.1 test /tmp/bb-report-2547-investigate-SQfjR0/apps/server @bb/server:test: > vitest run --config vitest.config.ts @bb/server:test: @bb/server:test: @bb/server:test: RUN v4.1.1 /tmp/bb-report-2547-investigate-SQfjR0/apps/server @bb/server:test: @bb/server:test: ✓ |@bb/server:isolated| test/ai/commit-message.test.ts (9 tests) 1034ms @bb/server:test: ✓ retries once when commit message inference times out 585ms @bb/server:test: ✓ |@bb/server:isolated| test/services/plugin-catalog/third-party-marketplaces.test.ts (22 tests) 3061ms @bb/server:test: ✓ |@bb/server:isolated| test/system/event-loop-stall-monitor.test.ts (9 tests) 21ms @bb/server:test: ✓ |@bb/server:isolated| test/services/plugins/heroes.test.ts (5 tests) 1306ms @bb/server:test: ✓ bb docs search returns excerpts from the bundled docs via the CLI endpoint 815ms @bb/server:test: ✓ webhook → spawn → thread.idle → chat.postMessage, end to end 342ms @bb/server:test: ✓ |@bb/server:isolated| test/skills/registry-skill-install.test.ts (6 tests) 71ms @bb/server:test: ✓ |@bb/server:isolated| test/services/telemetry.test.ts (6 tests) 115ms @bb/server:test: ✘ [ERROR] Expected identifier but found end of file @bb/server:test: @bb/server:test: app.tsx:2:0: @bb/server:test: 2 │ @bb/server:test: ╵ ^ @bb/server:test: @bb/server:test: ✓ |@bb/server:isolated| test/ai/voice-transcription.test.ts (9 tests) 1766ms @bb/server:test: ✓ rejects empty audio before calling the service 606ms @bb/server:test: ✓ returns retryable unavailable after exhausting rate limit retries 306ms @bb/server:test: ✓ |@bb/server:isolated| test/public/public-project-skills.test.ts (30 tests) 2168ms @bb/server:test: ✓ lists configured shared roots as read-only provider-neutral skills 631ms @bb/server:test: ✘ [ERROR] Expected identifier but found end of file @bb/server:test: @bb/server:test: app.tsx:2:0: @bb/server:test: 2 │ @bb/server:test: ╵ ^ @bb/server:test: @bb/server:test: ✓ |@bb/server:isolated| test/services/plugins/plugin-agent-tools.test.ts (19 tests) 2952ms @bb/server:test: ✓ rejects duplicate tool names within one factory execution 322ms @bb/server:test: ✓ thread.start dynamicTools include plugin tools with per-tool instructions 358ms @bb/server:test: ✓ |@bb/server:isolated| test/threads/generated-branch-names.test.ts (17 tests) 2996ms @bb/server:test: ✓ uses generated branch slugs for managed worktree provisioning 655ms @bb/server:test: ✓ uses two timeout attempts for managed worktree metadata inference 305ms @bb/server:test: ✓ uses the fallback model and renames an idle non-managed thread 353ms @bb/server:test: ✓ |@bb/server:isolated| test/services/plugins/plugin-wire.test.ts (22 tests) 3540ms @bb/server:test: ✓ serves a registered route for local requests (no origin, and app origins) 1039ms @bb/server:test: ✓ rpc resolves the handler after the body arrives, so a reload during the body read never runs a stale handler 349ms @bb/server:test: ✓ |@bb/server:isolated| test/services/plugins/prebuilt-server-loading.test.ts (4 tests) 787ms @bb/server:test: ✓ prefers a fresh dist/server.js for git installs (source never evaluated) 380ms @bb/server:test: ✘ [ERROR] Expected ";" but found "is" @bb/server:test: @bb/server:test: ../../../bb-plugin-update-BWaEhF/data/plugins/cache/git/local/tmp/bb-plugin-update-BWaEhF/repo/ff0224bc02c8a1da7030a9f27c8c7ce971a9e35e.staging/server.ts:1:47: @bb/server:test: 1 │ export default function plugin(bb: any) { this is not valid typescript @bb/server:test: │ ~~ @bb/server:test: ╵ ; @bb/server:test: @bb/server:test: ✘ [ERROR] Expected identifier but found end of file @bb/server:test: @bb/server:test: app.tsx:2:0: @bb/server:test: 2 │ @bb/server:test: ╵ ^ @bb/server:test: @bb/server:test: ✓ |@bb/server:isolated| test/services/plugins/plugin-app-bundle.test.ts (13 tests) 5467ms @bb/server:test: ✓ builds path installs at install time and serves hash-cached assets 1007ms @bb/server:test: ✓ erases a type-only backend RPC contract import from the frontend bundle 345ms @bb/server:test: ✓ rebuilds a path plugin at load when the recorded SDK version is stale 446ms @bb/server:test: ✓ clears the served bundle and sets a status detail when a required rebuild fails 347ms @bb/server:test: ✓ refuses npm installs without a prebuilt bundle and accepts prebuilt ones 2741ms @bb/server:test: ✓ |@bb/server:isolated| test/services/plugins/plugin-service.test.ts (29 tests) 6399ms @bb/server:test: ✓ installs a path plugin, runs its factory, and reports running 310ms @bb/server:test: ✓ times out a hung factory and reports error 2128ms @bb/server:test: ✓ |@bb/server:isolated| test/public/public-thread-data.test.ts (79 tests) 6626ms @bb/server:test: ✓ manages sections through the canonical public route lifecycle 613ms @bb/server:test: ✓ expands the newest slice when a large delegation parent completes last 844ms @bb/server:test: ✓ |@bb/server:isolated| test/services/plugins/builtin-plugins.test.ts (26 tests) 7015ms @bb/server:test: ✓ ships Provider retry enabled on a fresh database 413ms @bb/server:test: ✓ hot-reloads a source-layout builtin server instead of a compatible dist artifact 478ms @bb/server:test: ✓ rebuilds a source-layout builtin app changed while the server was stopped 834ms @bb/server:test: ✓ surfaces builtin app build failures in status until the next successful build 1278ms @bb/server:test: ✓ installs and loads a packaged builtin whose source files are omitted 666ms @bb/server:test: ✓ explicitly installs a packaged builtin without rebuilding its app bundle 350ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-interactions.test.ts (25 tests) 2545ms @bb/server:test: ✓ lists, gets, and resolves thread-owned interactions 547ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-fork.test.ts (20 tests) 2677ms @bb/server:test: ✓ reuses a switched directory from a personal-project source 550ms @bb/server:test: ✓ |@bb/server| test/services/pending-interactions.test.ts (30 tests) 2730ms @bb/server:test: ✓ returns a plugin response only through memory and persists metadata only 478ms @bb/server:test: ✓ |@bb/server| test/system/execution-options.test.ts (36 tests) 2326ms @bb/server:test: ✓ |@bb/server| test/threads/thread-runtime-config.test.ts (30 tests) 2749ms @bb/server:test: ✓ carries a configured ACP agent's launch spec on thread start and turn submit 685ms @bb/server:test: ✓ |@bb/server| test/threads/thread-create-seed-without-run.test.ts (24 tests) 2248ms @bb/server:test: ✓ captures initial user messages 461ms @bb/server:test: ✓ |@bb/server| test/public/public-terminals.test.ts (36 tests) 3064ms @bb/server:test: ✓ lists terminal sessions for a thread 488ms @bb/server:test: ✓ |@bb/server| test/app/hub.test.ts (25 tests) 219ms @bb/server:test: ✓ |@bb/server| test/environments/environment-provisioning.test.ts (11 tests) 568ms @bb/server:test: ✓ |@bb/server| test/internal/internal-interactive-requests.test.ts (13 tests) 822ms @bb/server:test: ✓ |@bb/server| test/threads/thread-edit-message.test.ts (42 tests) 3529ms @bb/server:test: ✓ preserves an agent caller and applies agent permission policy 568ms @bb/server:test: ✓ |@bb/server| test/public/public-project-commands.test.ts (18 tests) 2692ms @bb/server:test: ✓ adds configured shared skills to the provider-neutral catalog 403ms @bb/server:test: ✓ returns an error response when the host is offline 1044ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-logo.test.ts (21 tests) 1100ms @bb/server:test: ✓ |@bb/server| test/services/managed-environment-cleanup-recovery.test.ts (12 tests) 339ms @bb/server:test: ✓ |@bb/server| test/public/public-threads.defaults.test.ts (12 tests) 454ms @bb/server:test: ✓ |@bb/server| test/system/app-keybindings.test.ts (8 tests) 254ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-mention-providers.test.ts (13 tests) 1162ms @bb/server:test: ✓ |@bb/server| test/internal/background-task-reconciliation.test.ts (11 tests) 372ms @bb/server:test: ✓ |@bb/server| test/threads/thread-send-dispatch.test.ts (10 tests) 452ms @bb/server:test: ✓ |@bb/server| test/skills/injected-skills.test.ts (14 tests) 59ms @bb/server:test: ✓ |@bb/server| test/threads/deferred-thread-messages.test.ts (9 tests) 526ms @bb/server:test: ✓ |@bb/server| test/services/plugin-catalog/plugin-catalog-service.test.ts (36 tests) 5254ms @bb/server:test: ✓ |@bb/server| test/hosts/online-rpc.test.ts (9 tests) 592ms @bb/server:test: ✓ |@bb/server| test/internal/internal-event-append-ownership.test.ts (13 tests) 2809ms @bb/server:test: ✓ notifies a parent when a child provider process exits 2057ms @bb/server:test: ✓ |@bb/server| test/internal/internal-extension-payloads.test.ts (6 tests) 591ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-authoring-docs.test.ts (15 tests) 10ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-parenting.test.ts (11 tests) 1279ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-state-snapshot.test.ts (7 tests) 1089ms @bb/server:test: ✓ |@bb/server| test/internal/internal-presentation-icons.test.ts (7 tests) 551ms @bb/server:test: ✓ |@bb/server| test/services/threads/timeline-in-turn-window.test.ts (26 tests) 9454ms @bb/server:test: ✓ pages a compact byte slice with hundreds of item identities 1237ms @bb/server:test: ✓ pages through a finished turn that exceeds the event-data byte limit 1208ms @bb/server:test: ✓ keeps latest byte-page row identities stable while a turn grows 720ms @bb/server:test: ✓ caps stored outputs before it expands a byte-budget slice 308ms @bb/server:test: ✓ expands each delegated byte-budget slice with realistic parent ordering 1308ms @bb/server:test: ✓ gives a straddling item to exactly one byte page's details, completed 1169ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-sdk.test.ts (8 tests) 2194ms @bb/server:test: ✓ binds typed host calls and ignores worker exits from stale generations 439ms @bb/server:test: ✓ rejects host calls during candidate factory registration 543ms @bb/server:test: ✓ returns the server-side Standard Schema output after the host JSON wire 400ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-settings-storage.test.ts (12 tests) 2090ms @bb/server:test: ✓ get() is load-safe and applies typed defaults 312ms @bb/server:test: ✓ |@bb/server| test/services/providers/native-roots.test.ts (8 tests) 263ms @bb/server:test: Synthetic 10019-event thread: 12 pages, 1398 rows projected, full walk min 320.5 ms, p50 377.3 ms (samples 390.8, 333.5, 400.2, 377.3, 320.5) @bb/server:test: ✓ |@bb/server| test/provider-corpus/timeline-perf.test.ts (1 test) 3312ms @bb/server:test: ✓ projects every page of a 10000-event thread under 1500 ms 3312ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-background.test.ts (16 tests) 3724ms @bb/server:test: ✓ serializes concurrent reloads so a slow-stopping service never double-starts 1039ms @bb/server:test: ✓ |@bb/server| test/threads/thread-provisioning-recovery.test.ts (6 tests) 388ms @bb/server:test: ✓ |@bb/server| test/threads/thread-default-policy.test.ts (31 tests) 123ms @bb/server:test: ✓ |@bb/server| test/services/threads/thread-runtime-display.test.ts (9 tests) 1517ms @bb/server:test: ✓ builds active list entries above the SQLite variable limit 537ms @bb/server:test: ✓ |@bb/server| test/public/public-host-management.test.ts (10 tests) 1281ms @bb/server:test: ✓ asks the connect plugin to revoke the removed host's cloud machine 852ms @bb/server:test: ✓ |@bb/server| test/services/plugin-catalog/marketplace-manifest.test.ts (22 tests) 33ms @bb/server:test: ✓ |@bb/server| test/public/public-environment-action-regressions.test.ts (8 tests) 725ms @bb/server:test: ✘ [ERROR] Could not resolve "missing-host-runtime" @bb/server:test: @bb/server:test: ../../../bb-plugin-ai-service-test-VmJP1l/bb-plugin-broken-host-ai/host.ts:1:7: @bb/server:test: 1 │ import "missing-host-runtime"; @bb/server:test: ╵ ~~~~~~~~~~~~~~~~~~~~~~ @bb/server:test: @bb/server:test: You can mark the path "missing-host-runtime" as external to exclude it from the bundle, which will remove this error and leave the unresolved path in the bundle. @bb/server:test: @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-thread-events.test.ts (11 tests) 2110ms @bb/server:test: ✓ delivers thread.active once when run.started enters active 374ms @bb/server:test: ✓ stops delivering to a disabled plugin 315ms @bb/server:test: ✓ |@bb/server| test/services/prompt-history.test.ts (9 tests) 1155ms @bb/server:test: ✘ [ERROR] Could not resolve "missing-host-runtime" @bb/server:test: @bb/server:test: ../../../bb-plugin-ai-service-test-rVSKYv/bb-plugin-dual-service-first/host.ts:1:7: @bb/server:test: 1 │ import "missing-host-runtime"; @bb/server:test: ╵ ~~~~~~~~~~~~~~~~~~~~~~ @bb/server:test: @bb/server:test: You can mark the path "missing-host-runtime" as external to exclude it from the bundle, which will remove this error and leave the unresolved path in the bundle. @bb/server:test: @bb/server:test: ✓ |@bb/server| test/system/event-pruning.test.ts (7 tests) 1371ms @bb/server:test: ✓ prunes idle-thread noise rows and resolved item deltas 440ms @bb/server:test: ✓ |@bb/server| test/services/threads/timeline-event-budget.test.ts (5 tests) 924ms @bb/server:test: ✓ reaches every user message that the unbudgeted build reaches 314ms @bb/server:test: ✓ |@bb/server| test/providers/plugin-provider-registration.test.ts (8 tests) 31ms @bb/server:test: ✘ [ERROR] Could not resolve "missing-provider-runtime" @bb/server:test: @bb/server:test: ../../../bb-plugin-provider-test-JyFwim/bb-plugin-failed-agent/bridge.ts:1:7: @bb/server:test: 1 │ import "missing-provider-runtime"; @bb/server:test: ╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~ @bb/server:test: @bb/server:test: You can mark the path "missing-provider-runtime" as external to exclude it from the bundle, which will remove this error and leave the unresolved path in the bundle. @bb/server:test: @bb/server:test: ✓ |@bb/server| test/public/public-thread-banner-actions.test.ts (9 tests) 1136ms @bb/server:test: ✓ persists a successful Plan cancellation and returns zero after refetch 433ms @bb/server:test: ↓ |@bb/server| test/provider-corpus/row-snapshots.test.ts (0 test) @bb/server:test: ✓ |@bb/server| test/internal/internal-events-tool-calls.test.ts (25 tests) 9023ms @bb/server:test: ✓ returns the response head before a plugin tool completes 547ms @bb/server:test: ✓ does not notify a parent when a child thread nested turn completes 2192ms @bb/server:test: ✓ notifies a parent when a hidden delegated child root turn completes 2156ms @bb/server:test: ✓ does not notify a parent when a side-chat child root turn completes 2185ms @bb/server:test: ✓ |@bb/server| test/services/plugins/update-resolver.test.ts (16 tests) 5058ms @bb/server:test: ✓ lists only [prefix]vX.Y.Z tags, peels annotated ones, and orders them 513ms @bb/server:test: ✓ asks the remote for release tags only, so unrelated tags cost nothing 604ms @bb/server:test: ✓ selects the highest satisfying release and excludes prereleases 515ms @bb/server:test: ✓ resolves a range for an install and reports a range with no match 488ms @bb/server:test: ✓ offers newer satisfying tags and refuses a tag that moved 589ms @bb/server:test: ✓ carries the selected release tag on the resolution 568ms @bb/server:test: ✓ walks down to the newest release this bb can run 613ms @bb/server:test: ✓ stays current and reports the blocked release when nothing newer runs 506ms @bb/server:test: ✓ refuses to downgrade when the recorded range tag disappeared 452ms @bb/server:test: ✘ [ERROR] Could not resolve "missing-host-runtime" @bb/server:test: @bb/server:test: ../../../bb-plugin-ai-service-test-M5Ewf7/bb-plugin-dual-provider-first/host.ts:1:7: @bb/server:test: 1 │ import "missing-host-runtime"; @bb/server:test: ╵ ~~~~~~~~~~~~~~~~~~~~~~ @bb/server:test: @bb/server:test: You can mark the path "missing-host-runtime" as external to exclude it from the bundle, which will remove this error and leave the unresolved path in the bundle. @bb/server:test: @bb/server:test: ✓ |@bb/server| test/services/threads/thread-events.test.ts (10 tests) 680ms @bb/server:test: ✓ |@bb/server| test/threads/thread-live-start-handoff.test.ts (7 tests) 665ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-cli.test.ts (12 tests) 1843ms @bb/server:test: ✓ |@bb/server| test/environments/workspace-read-cache-routes.test.ts (3 tests) 328ms @bb/server:test: ✓ |@bb/server| test/app/host-shared-ports.test.ts (8 tests) 1241ms @bb/server:test: ✓ distinguishes unknown, unenrolled, and enrolled-but-offline hosts 359ms @bb/server:test: ✓ always accepts empty declarations for offline, unenrolled, and removed hosts 320ms @bb/server:test: ✓ |@bb/server| test/providers/provider-registry.test.ts (14 tests) 5ms @bb/server:test: ✓ |@bb/server| test/provider-corpus/row-diff-classes.test.ts (10 tests) 5ms @bb/server:test: ✓ |@bb/server| test/system/bb-app-managed-config.test.ts (11 tests) 22ms @bb/server:test: ✓ |@bb/server| test/services/threads/child-thread-notifications.test.ts (11 tests) 5ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-icons.test.ts (14 tests) 2107ms @bb/server:test: ✓ serves a provider whose icon names a declared icon through the provider logo route 451ms @bb/server:test: ✓ fails the load when a provider icon names an icon the plugin did not declare 352ms @bb/server:test: ✓ |@bb/server| test/files/host-file-routes.test.ts (7 tests) 520ms @bb/server:test: ✓ |@bb/server| test/public/public-environments.test.ts (8 tests) 568ms @bb/server:test: ✓ |@bb/server| test/system/app-version.test.ts (16 tests) 11ms @bb/server:test: ✓ |@bb/server| test/public/public-project-workspace-routing.test.ts (3 tests) 153ms @bb/server:test: ✓ |@bb/server| test/system/appearance.test.ts (14 tests) 944ms @bb/server:test: ✓ |@bb/server| test/services/threads/timeline-workflow-progress-window.test.ts (3 tests) 1291ms @bb/server:test: ✓ does not emit the spawning turn's summary on byte pages of a later turn 915ms @bb/server:test: ✓ |@bb/server| test/services/plugin-catalog/plugin-catalog-routes.test.ts (6 tests) 792ms @bb/server:test: ✓ |@bb/server| test/services/plugins/heroes-phase2.test.ts (4 tests) 403ms @bb/server:test: ✓ |@bb/server| test/services/threads/timeline-parented-pagination.test.ts (2 tests) 274ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-queue-gone-environment.test.ts (5 tests) 309ms @bb/server:test: ✓ |@bb/server| test/public/public-provider-installations.test.ts (5 tests) 1286ms @bb/server:test: ✓ preserves the host unavailable route error when the target host is offline 1035ms @bb/server:test: ✓ |@bb/server| test/public/public-threads.project-default.test.ts (7 tests) 599ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-stop-runtime.test.ts (7 tests) 494ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-agent-contributions.test.ts (4 tests) 550ms @bb/server:test: ✓ |@bb/server| test/internal/internal-environment-change.test.ts (9 tests) 485ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-compaction.test.ts (3 tests) 207ms @bb/server:test: ✓ |@bb/server| test/app/watch-interests.test.ts (10 tests) 1080ms @bb/server:test: ✓ |@bb/server| test/host-join-enroll.test.ts (7 tests) 494ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-ai-services.test.ts (10 tests) 4257ms @bb/server:test: ✓ fails the load on the host build error when a first install's bb.host entry does not build 552ms @bb/server:test: ✓ keeps the provider listed as unavailable when the host entry of a plugin that also registers an AI service fails to build (service-first) 1015ms @bb/server:test: ✓ keeps the provider listed as unavailable when the host entry of a plugin that also registers an AI service fails to build (provider-first) 783ms @bb/server:test: ✓ refuses the reserved server-direct id "openai" at the register call 344ms @bb/server:test: ✓ fails a later plugin's load at the register call when another plugin holds the id 549ms @bb/server:test: ✓ calls the plugin's host entry with the AI services contract, the caller's budget, and parses the answer 412ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-provider-registration.test.ts (8 tests) 3875ms @bb/server:test: ✓ adds the provider to the composed listing and removes it when the plugin is disabled 824ms @bb/server:test: ✓ keeps a failed provider in the listing as unavailable 1044ms @bb/server:test: ✓ makes the registered provider usable by thread policy end to end 431ms @bb/server:test: ✓ re-registers wholesale on reload instead of colliding with itself 542ms @bb/server:test: ✓ serves a path-shaped icon as declared even when it carries an event handler 317ms @bb/server:test: ✓ rejects a live id claimed by another plugin as a load failure 357ms @bb/server:test: ✓ |@bb/server| test/system/provider-routing.test.ts (5 tests) 255ms @bb/server:test: ✓ |@bb/server| test/services/periodic-sweeps.test.ts (6 tests) 248ms @bb/server:test: ✓ |@bb/server| src/services/environments/workspace-read-cache.test.ts (9 tests) 4ms @bb/server:test: ✓ |@bb/server| test/services/threads/thread-execution-plan.test.ts (10 tests) 397ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-timeline-delta.test.ts (5 tests) 325ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-timeline-output-preview.test.ts (5 tests) 308ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-manifest.test.ts (23 tests) 225ms @bb/server:test: ✓ |@bb/server| test/services/database-maintenance-sweep.test.ts (6 tests) 946ms @bb/server:test: ✓ |@bb/server| test/services/threads/lifecycle-outcome.test.ts (4 tests) 444ms @bb/server:test: ✓ |@bb/server| test/services/threads/timeline-head-state.test.ts (2 tests) 337ms @bb/server:test: ✓ |@bb/server| test/app/skeleton.test.ts (12 tests) 1039ms @bb/server:test: ✓ |@bb/server| test/internal/session-owner-runtime-status.test.ts (3 tests) 657ms @bb/server:test: ✓ publishes the disconnect fan-out in a statement count that does not grow with the host's thread count 485ms @bb/server:test: ✓ |@bb/server| test/public/public-project-attachments.test.ts (4 tests) 556ms @bb/server:test: ✓ |@bb/server| test/threads/thread-stop-retry.test.ts (4 tests) 316ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-pinning.test.ts (4 tests) 414ms @bb/server:test: ✓ |@bb/server| test/services/plugins/official-plugins.test.ts (8 tests) 1111ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-collection-manifest.test.ts (10 tests) 115ms @bb/server:test: ✓ |@bb/server| test/legacy-automations-export.test.ts (4 tests) 50ms @bb/server:test: ✓ |@bb/server| test/system/install-cli-skills.test.ts (6 tests) 591ms @bb/server:test: ✓ |@bb/server| test/public/public-project-clone-sources.test.ts (4 tests) 401ms @bb/server:test: ✓ |@bb/server| test/threads/thread-create-shared-workspace-path.test.ts (4 tests) 344ms @bb/server:test: ✓ |@bb/server| test/system/provider-states.test.ts (3 tests) 230ms @bb/server:test: ✓ |@bb/server| test/services/plugin-catalog/marketplace-schema-parity.test.ts (2 tests) 124ms @bb/server:test: ✓ |@bb/server| test/threads/thread-parent.test.ts (12 tests) 846ms @bb/server:test: ✓ |@bb/server| test/security/api-origin-guard.test.ts (9 tests) 967ms @bb/server:test: ✓ |@bb/server| test/public/public-system-usage-limits.test.ts (4 tests) 300ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-tabs.test.ts (3 tests) 194ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-environment-decoupling.test.ts (5 tests) 469ms @bb/server:test: ✓ |@bb/server| test/services/threads/thread-execution-override.test.ts (10 tests) 2ms @bb/server:test: ✓ |@bb/server| test/app/static-cache.test.ts (1 test) 67ms @bb/server:test: ✓ |@bb/server| test/public/public-threads.named-base-branch.test.ts (5 tests) 400ms @bb/server:test: ✓ |@bb/server| src/services/environments/pull-request.test.ts (9 tests) 2ms @bb/server:test: ✓ |@bb/server| src/services/projects/attachments.test.ts (11 tests) 39ms @bb/server:test: ✓ |@bb/server| test/app/client-protocol.test.ts (9 tests) 6ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-timeline-work-rows.test.ts (1 test) 78ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-open.test.ts (6 tests) 296ms @bb/server:test: ✓ |@bb/server| test/public/public-authorization-regressions.test.ts (4 tests) 179ms @bb/server:test: ✓ |@bb/server| test/skills/skill-listing.test.ts (17 tests) 3ms @bb/server:test: ✓ |@bb/server| test/services/entity-lookup.test.ts (5 tests) 560ms @bb/server:test: ✓ |@bb/server| test/internal/internal-session-protocol-version.test.ts (1 test) 176ms @bb/server:test: ✓ |@bb/server| test/services/threads/timeline-provider-input.test.ts (1 test) 125ms @bb/server:test: ✓ |@bb/server| test/permissions/permission-matrix.test.ts (59 tests) 7ms @bb/server:test: ✓ |@bb/server| test/threads/workspace-path-claims.test.ts (7 tests) 492ms @bb/server:test: ✓ |@bb/server| src/routes/diff-tiering.test.ts (18 tests) 3ms @bb/server:test: ✓ |@bb/server| test/app/api-json-compression.test.ts (5 tests) 160ms @bb/server:test: ✓ |@bb/server| test/ai/inference.test.ts (8 tests) 569ms @bb/server:test: ✓ |@bb/server| test/services/threads/project-execution-defaults.test.ts (3 tests) 426ms @bb/server:test: ✓ |@bb/server| src/static-shell.test.ts (8 tests) 125ms @bb/server:test: ✓ |@bb/server| test/services/threads/thread-model-recovery.test.ts (2 tests) 266ms @bb/server:test: ✓ |@bb/server| test/public/public-projects-local-host.test.ts (5 tests) 4514ms @bb/server:test: ✓ creates a project when a personal thread already uses its folder 1090ms @bb/server:test: ✓ returns the existing project when its local folder is added again 1043ms @bb/server:test: ✓ creates projects and local sources when inspection is unavailable 2094ms @bb/server:test: ✓ |@bb/server| test/machine-auth.test.ts (4 tests) 864ms @bb/server:test: ✓ |@bb/server| test/threads/archive-pruned-environment.test.ts (4 tests) 551ms @bb/server:test: ✓ |@bb/server| test/services/threads/timeline-cache.test.ts (6 tests) 2ms @bb/server:test: ✓ |@bb/server| test/skills/registry-parse.test.ts (26 tests) 8ms @bb/server:test: ✓ |@bb/server| test/services/plugin-catalog/marketplace-publishers.test.ts (6 tests) 806ms @bb/server:test: ✓ |@bb/server| test/system/experiments.test.ts (5 tests) 628ms @bb/server:test: ✓ |@bb/server| test/threads/thread-create-helpers.test.ts (10 tests) 131ms @bb/server:test: ✓ |@bb/server| test/services/worktree-base-branch.test.ts (7 tests) 2ms @bb/server:test: ✓ |@bb/server| test/security/browser-websocket-origin.test.ts (3 tests) 552ms @bb/server:test: ✓ |@bb/server| test/services/threads/conversation-outline-performance.test.ts (2 tests) 333ms @bb/server:test: ✓ |@bb/server| test/internal/internal-event-envelope-threadid-regression.test.ts (2 tests) 265ms @bb/server:test: ✓ |@bb/server| test/internal/internal-plugin-host-artifacts.test.ts (5 tests) 110ms @bb/server:test: ✓ |@bb/server| test/internal/internal-project-attachment-content.test.ts (3 tests) 324ms @bb/server:test: ✓ |@bb/server| test/threads/thread-provisioning-state.test.ts (2 tests) 356ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-mention-resolution.test.ts (2 tests) 179ms @bb/server:test: ✓ |@bb/server| test/hosts/daemon-file-response.test.ts (5 tests) 2ms @bb/server:test: ✓ |@bb/server| test/public/public-threads.execution-override.test.ts (5 tests) 480ms @bb/server:test: ✓ |@bb/server| test/system/custom-themes.test.ts (7 tests) 99ms @bb/server:test: ✓ |@bb/server| test/services/plugin-catalog/marketplace-icons.test.ts (6 tests) 16ms @bb/server:test: ✓ |@bb/server| test/environments/environment-cleanup.test.ts (1 test) 127ms @bb/server:test: ✓ |@bb/server| test/skills/submit-a-plugin.test.ts (4 tests) 308ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-search.test.ts (2 tests) 215ms @bb/server:test: ✓ |@bb/server| test/services/threads/provider-command-typeahead.test.ts (4 tests) 1ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-review-fixes.test.ts (3 tests) 1178ms @bb/server:test: ✓ enabling an already-running plugin disposes the previous instance instead of orphaning it 632ms @bb/server:test: ✓ dispose drains in-flight rpc invocations before invalidating 398ms @bb/server:test: ✓ |@bb/server| test/services/threads/timeline-latest-rows-cache.test.ts (3 tests) 2ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-dev-build-problems.test.ts (2 tests) 358ms @bb/server:test: ✓ |@bb/server| test/system/general-settings.test.ts (4 tests) 456ms @bb/server:test: ✓ |@bb/server| test/public/public-thread-unhandled-events.test.ts (2 tests) 240ms @bb/server:test: ✓ |@bb/server| test/services/threads/timeline-output-truncation.test.ts (3 tests) 3ms @bb/server:test: ✓ |@bb/server| test/app/startup-diagnostics.test.ts (4 tests) 9ms @bb/server:test: ✓ |@bb/server| test/services/plugin-catalog/marketplace-http.test.ts (20 tests) 10ms @bb/server:test: ✓ |@bb/server| test/hosts/live-command.test.ts (1 test) 93ms @bb/server:test: ✓ |@bb/server| test/internal/interactive-request-blocker-summary.test.ts (3 tests) 1ms @bb/server:test: ✓ |@bb/server| test/request-context.test.ts (3 tests) 4ms @bb/server:test: ✓ |@bb/server| test/services/plugins/ask-user-question-plugin.test.ts (2 tests) 2124ms @bb/server:test: ✓ advertises the tool to codex with Claude's exact schema 1420ms @bb/server:test: ✓ withholds the tool from claude-code, which asks natively 703ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-reload-route.test.ts (2 tests) 528ms @bb/server:test: ✓ answers ok with the plugin list when the reload applied 408ms @bb/server:test: ✓ |@bb/server| test/app/hub-open-file.test.ts (2 tests) 2ms @bb/server:test: ✓ |@bb/server| test/internal/internal-skill-trees.test.ts (2 tests) 151ms @bb/server:test: ✓ |@bb/server| test/threads/thread-data.test.ts (2 tests) 273ms @bb/server:test: ✓ |@bb/server| test/internal/internal-plugin-host-events.test.ts (2 tests) 186ms @bb/server:test: ✓ |@bb/server| test/services/async-ttl-memo.test.ts (3 tests) 2ms @bb/server:test: ✓ |@bb/server| test/services/plugins/app-asset-compression-cache.test.ts (2 tests) 2ms @bb/server:test: ✓ |@bb/server| src/services/hosts/primary-host.test.ts (3 tests) 219ms @bb/server:test: ✓ |@bb/server| test/threads/title-generation.test.ts (6 tests) 1ms @bb/server:test: ✓ |@bb/server| test/system/provider-logo.test.ts (3 tests) 216ms @bb/server:test: ✓ |@bb/server| test/services/threads/timeline-pagination.test.ts (1 test) 1ms @bb/server:test: ✓ |@bb/server| test/services/plugins/sdk-compat.test.ts (5 tests) 4ms @bb/server:test: ✓ |@bb/server| test/threads/worktree-paths.test.ts (15 tests) 3ms @bb/server:test: ✓ |@bb/server| test/skills/builtin-skills-copy.test.ts (2 tests) 45ms @bb/server:test: ✓ |@bb/server| test/services/error-log-fields.test.ts (3 tests) 1ms @bb/server:test: ✓ |@bb/server| test/internal/internal-tool-call-regressions.test.ts (1 test) 74ms @bb/server:test: ✓ |@bb/server| test/app/hub-plugin-signal.test.ts (1 test) 2ms @bb/server:test: ✓ |@bb/server| test/system/server-url.test.ts (4 tests) 258ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-sdk-alias.test.ts (1 test) 1ms @bb/server:test: ✓ |@bb/server| test/threads/thread-reasoning-policy.test.ts (2 tests) 1ms @bb/server:test: ✓ |@bb/server| test/public/public-system-version.test.ts (1 test) 52ms @bb/server:test: ✓ |@bb/server| test/system/local-helper-ports.test.ts (1 test) 77ms @bb/server:test: ✓ |@bb/server| src/services/system/provider-maintenance-concurrency.test.ts (1 test) 38ms @bb/server:test: ✓ |@bb/server| test/services/plugins/git-source-intent.test.ts (1 test) 164ms @bb/server:test: ✓ |@bb/server| test/system/attention.test.ts (1 test) 114ms @bb/server:test: ✓ |@bb/server| test/services/plugins/plugin-authoring-doc-examples.test.ts (1 test) 3712ms @bb/server:test: ✓ calls and destructures bb.sdk the way the SDK actually declares it 3712ms @bb/server:test: ✓ |@bb/server| test/app/install-machine-script.test.ts (17 tests) 15143ms @bb/server:test: ✓ uses bb-app from PATH and passes the launcher join flags verbatim 1351ms @bb/server:test: ✓ accepts the daemon's normalized loopback server URL 1366ms @bb/server:test: ✓ installs the server tarball even when a same-version bb-app is on PATH 1477ms @bb/server:test: ✓ prefers the server-matched tarball when bb-app is absent 1592ms @bb/server:test: ✓ falls back to npm only when the server artifact returns 404 1450ms @bb/server:test: ✓ defaults the data dir to a per-server directory under ~/.bb-machines 1425ms @bb/server:test: ✓ refuses a data dir enrolled for a different host instead of faking success 315ms @bb/server:test: ✓ assigns a different port when the first enrolled-daemon port is occupied 1550ms @bb/server:test: ✓ atomically reserves different ports for concurrent custom data directories 591ms @bb/server:test: ✓ redeems and persists a connect machine code before joining through the tunnel 1817ms @bb/server:test: ✓ reports periodic progress while a host daemon is still joining 642ms @bb/server:test: ✓ installs an idempotent macOS launch agent for joined state 547ms @bb/server:test: ✓ restarts an active Linux systemd user unit after replacing it 401ms @bb/server:test: ✓ |@bb/server| test/threads/system-message-taxonomy-stamping.test.ts (7 tests) 9117ms @bb/server:test: ✓ stamps a single completed child outcome as child-completed 2136ms @bb/server:test: ✓ stamps a single failed child outcome as child-failed 2132ms @bb/server:test: ✓ stamps a single interrupted child outcome as child-interrupted 2084ms @bb/server:test: ✓ stamps a multi-child batch as child-outcome-batch with a count subject 2137ms @bb/server:test: ✓ stamps a needs-attention notification as child-needs-attention 305ms @bb/server:test: ✓ |@bb/server| test/app/bb-app-artifact.test.ts (12 tests) 8826ms @bb/server:test: ✓ resolves and packs a structurally valid npm package 439ms @bb/server:test: ✓ rebuilds the artifact after package contents change without a version or protocol change 760ms @bb/server:test: ✓ builds a fresh artifact when the protocol changes at the same package version 754ms @bb/server:test: ✓ keeps serving the previous artifact when a rebuild fails, and retries after 935ms @bb/server:test: ✓ resolves and packs a structurally valid npm package 550ms @bb/server:test: ✓ rebuilds the artifact after package contents change without a version or protocol change 875ms @bb/server:test: ✓ builds a fresh artifact when the protocol changes at the same package version 1033ms @bb/server:test: ✓ keeps serving the previous artifact when a rebuild fails, and retries after 706ms @bb/server:test: ✓ rebuilds the artifact after package contents change without a version or protocol change 728ms @bb/server:test: ✓ builds a fresh artifact when the protocol changes at the same package version 679ms @bb/server:test: ✓ keeps serving the previous artifact when a rebuild fails, and retries after 1079ms @bb/server:test: ✓ |@bb/server:isolated| test/providers/echo-provider-canary.test.ts (2 tests) 30068ms @bb/server:test: ✓ persists every grammar v3 capability the third-party bridge emits 12362ms @bb/server:test: ✓ runs a turn with the built-in skills tier staged and sends the bridge only the requests it handles 17705ms @bb/server:test: ✓ |@bb/server| test/services/plugins/keep-awake.test.ts (1 test) 20435ms @bb/server:test: ✓ owns its configuration and reconciles it without a core adapter 20434ms @bb/server:test: ❯ |@bb/server:isolated| test/services/plugins/plugin-install.test.ts (57 tests | 1 failed) 112497ms @bb/server:test: ✓ parses git URLs, tracks HEAD by default, and rejects traversal 12ms @bb/server:test: ✓ reads git semver ranges, explicit selectors, and tag prefixes 7ms @bb/server:test: ✓ classifies omitted, exact, range, and dist-tag npm specs 1ms @bb/server:test: ✓ treats bare non-URL strings and path: as local paths with no managed dir 0ms @bb/server:test: ✓ enforces parsed command output limits in UTF-8 bytes 44ms @bb/server:test: ✓ keeps script-policy npm config out of git/npm children 36ms @bb/server:test: ✓ keeps scoped npm and nested git cache paths inside their roots 1ms @bb/server:test: ✓ installs and tracks the default branch when the ref is omitted 913ms @bb/server:test: ✓ stamps catalog provenance for a git official catalog entry 752ms @bb/server:test: ✓ refuses a git commit that changed after marketplace confirmation 225ms @bb/server:test: ✓ refuses a catalog entry whose plugin requires another plugin SDK 340ms @bb/server:test: ✓ refuses a listed npm registry that is not a public https host 121ms @bb/server:test: ✓ guards a listed npm registry while it resolves an install plan 118ms @bb/server:test: ✓ refuses a git catalog install whose manifest id differs from the entry 215ms @bb/server:test: ✓ clones a pinned tag into its exact immutable cache dir and loads it 756ms @bb/server:test: ✓ resolves a semver range over release tags and tracks compatible 982ms @bb/server:test: ✓ refuses a range spec that is also a ref, and honors the explicit forms 1062ms @bb/server:test: ✓ resolves a prefixed range and reports one with no matching tag 810ms @bb/server:test: ✓ installs a catalog entry that lists a semver range 633ms @bb/server:test: ✓ refuses a git plugin that shadows a builtin after materialization 192ms @bb/server:test: ✓ installs a pinned commit sha via clone + checkout 767ms @bb/server:test: ✓ never reuses an exact-resolution artifact owned by another plugin 2105ms @bb/server:test: ✓ serializes concurrent installs of the same exact resolution 795ms @bb/server:test: ✓ refuses a managed reinstall and points to the update command 763ms @bb/server:test: ✓ refuses a managed frontend reinstall before validating a broken new tip or creating an artifact 1005ms @bb/server:test: ✓ keeps the previous install intact when a reinstall fails validation 1121ms @bb/server:test: ✓ rebuilds a git plugin's server bundle over any committed dist 857ms @bb/server:test: ✓ hard-fails install on an engines.bb mismatch and cleans up the clone 265ms @bb/server:test: ✓ hard-fails managed install on an engines.bbPluginSdk mismatch 267ms @bb/server:test: ✓ remove retains immutable git artifacts and never touches a path source 1404ms @bb/server:test: ✓ refuses a cached artifact whose engine range no longer matches 1134ms @bb/server:test: ✓ refuses a git url without the git binary being asked to run arbitrary flags 111ms @bb/server:test: ✓ builds both bundles for a git plugin 789ms @bb/server:test: ✓ builds a Git host entry without installing the SDK at runtime 1509ms @bb/server:test: × restores a target moved aside by an interrupted promotion 60234ms @bb/server:test: ✓ ignores a repository .npmrc when installing dependencies 1201ms @bb/server:test: ✓ inlines a git plugin's third-party dependency into its bundles 1437ms @bb/server:test: ✓ installs two plugins of one repository into one shared checkout 2370ms @bb/server:test: ✓ promotes an in-repository symlinked plugin after a sibling 2206ms @bb/server:test: ✓ keeps a nested sibling intact when the repository root installs too 4507ms @bb/server:test: ✓ refreshes a root artifact hash after a nested install 4770ms @bb/server:test: ✓ keeps a symlinked nested plugin when the repository root installs 2315ms @bb/server:test: ✓ reinstalls a nested plugin whose directory was collected 2978ms @bb/server:test: ✓ lists the collection entries when no plugin is selected 515ms @bb/server:test: ✓ refuses an unknown entry name and an escaping subdirectory 779ms @bb/server:test: ✓ installs a collection entry from a local path repository 356ms @bb/server:test: ✓ refuses a collection entry whose directory leaves the repository 251ms @bb/server:test: ✓ refuses a collection entry symlinked to the repository root 409ms @bb/server:test: ✓ rejects an artifact whose pluginId does not match the manifest 332ms @bb/server:test: ✓ rejects an unknown artifactFormatVersion 254ms @bb/server:test: ✓ accepts metadata that matches the manifest and this SDK 430ms @bb/server:test: ✓ keeps path installs developer-friendly while surfacing SDK incompatibility 631ms @bb/server:test: ✓ registers a path install with stale backend artifact metadata 400ms @bb/server:test: ✓ installs a scoped package into the immutable cache and retains it on removal 2185ms @bb/server:test: ✓ refuses an npm package whose derived id shadows a builtin before install 188ms @bb/server:test: ✓ refuses a path plugin whose manifest id shadows a builtin 406ms @bb/server:test: ✓ the bb plugin new scaffold installs and loads through the plugin service 3228ms @bb/server:test: ❯ |@bb/server| test/services/plugins/first-party-provider-plugins.test.ts (3 tests | 3 failed) 180009ms @bb/server:test: × are the sole source of the built-in providers 60004ms @bb/server:test: × pins the client-read ProviderInfo fields of the four core providers 60001ms @bb/server:test: × disabling a provider plugin removes its provider, and re-enabling restores its position 60004ms @bb/server:test: fatal error: all goroutines are asleep - deadlock! @bb/server:test: ❯ |@bb/server:isolated| test/services/plugins/plugin-update.test.ts (27 tests | 4 failed) 280372ms @bb/server:test: ✓ waits one full interval when no plugins are eligible for update checks 181ms @bb/server:test: ✓ keeps a multi-plugin check usable when one npm registry is offline 930ms @bb/server:test: ✓ reports legacy retired-marketplace installs as unavailable without fetching 790ms @bb/server:test: ✓ checks, reads persisted state, and updates through the exact HTTP contract 1407ms @bb/server:test: ✓ checks a git candidate without installing or building it 1521ms @bb/server:test: ✓ checks for updates after marketplace removal converts provenance 1101ms @bb/server:test: ✓ returns an actionable 422 and keeps the installed commit for an incompatible candidate 878ms @bb/server:test: ✓ serializes two updates for one plugin so only one applies 1247ms @bb/server:test: × rolls back when a background service crashes during stabilization 60647ms @bb/server:test: × finishes an interrupted rollback before loading plugins after restart 60899ms @bb/server:test: × sweeps on start when a plugin was never checked, then waits out the interval across restarts 61277ms @bb/server:test: ✓ shares one in-flight full sweep between concurrent callers 1541ms @bb/server:test: ✓ keeps the guarded registry policy for catalog installs during a check 913ms @bb/server:test: × retains rollback state through the grace period and collects it afterward 60631ms @bb/server:test: ✓ orders removal after an in-flight update without resurrecting the plugin 1322ms @bb/server:test: ✓ orders disablement after an in-flight update without re-enabling it 2130ms @bb/server:test: ✓ uses isolated staging directories for concurrent check and update 2248ms @bb/server:test: ✓ checks, updates, and rolls back a nested git plugin 4052ms @bb/server:test: ✓ refuses a pinned git tag unless the source is changed explicitly 1245ms @bb/server:test: ✓ loads a legacy-layout plugin unchanged, then migrates lazily on update 2037ms @bb/server:test: ✓ offers and applies a newer tag inside a git semver range 3395ms @bb/server:test: ✓ refuses to resolve a release tag that was moved to another commit 2116ms @bb/server:test: ✓ protects an unclassified Phase 1 exact-tag row in a full update sweep 2148ms @bb/server:test: ✓ refuses to turn a legacy tag pin into a same-name branch 1898ms @bb/server:test: ✓ falls back to the newest compatible release in a range 2033ms @bb/server:test: ✓ installs the newest compatible release from a git range 822ms @bb/server:test: ✓ refuses an exact-tag install whose tag moved 960ms @bb/server:test: @bb/server:test: ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 8 ⎯⎯⎯⎯⎯⎯⎯ @bb/server:test: @bb/server:test: FAIL |@bb/server| test/services/plugins/first-party-provider-plugins.test.ts > first-party provider plugins > are the sole source of the built-in providers @bb/server:test: Error: Test timed out in 60000ms. @bb/server:test: If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". @bb/server:test: ❯ test/services/plugins/first-party-provider-plugins.test.ts:159:3 @bb/server:test: 157| @bb/server:test: 158| describe("first-party provider plugins", () => { @bb/server:test: 159| it("are the sole source of the built-in providers", async () => { @bb/server:test: | ^ @bb/server:test: 160| await withTestHarness( @bb/server:test: 161| { seedFirstPartyProviders: false }, @bb/server:test: @bb/server:test: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/8]⎯ @bb/server:test: @bb/server:test: FAIL |@bb/server| test/services/plugins/first-party-provider-plugins.test.ts > first-party provider plugins > pins the client-read ProviderInfo fields of the four core providers @bb/server:test: Error: Test timed out in 60000ms. @bb/server:test: If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". @bb/server:test: ❯ test/services/plugins/first-party-provider-plugins.test.ts:242:3 @bb/server:test: 240| }, 60_000); @bb/server:test: 241| @bb/server:test: 242| it("pins the client-read ProviderInfo fields of the four core provid… @bb/server:test: | ^ @bb/server:test: 243| // Registry equality: the fields clients already read must come ou… @bb/server:test: 244| // declarations exactly as they did before the target-state fields… @bb/server:test: @bb/server:test: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/8]⎯ @bb/server:test: @bb/server:test: FAIL |@bb/server| test/services/plugins/first-party-provider-plugins.test.ts > first-party provider plugins > disabling a provider plugin removes its provider, and re-enabling restores its position @bb/server:test: Error: Test timed out in 60000ms. @bb/server:test: If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". @bb/server:test: ❯ test/services/plugins/first-party-provider-plugins.test.ts:381:3 @bb/server:test: 379| }, 60_000); @bb/server:test: 380| @bb/server:test: 381| it("disabling a provider plugin removes its provider, and re-enablin… @bb/server:test: | ^ @bb/server:test: 382| await withTestHarness( @bb/server:test: 383| { seedFirstPartyProviders: false }, @bb/server:test: @bb/server:test: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/8]⎯ @bb/server:test: @bb/server:test: FAIL |@bb/server:isolated| test/services/plugins/plugin-install.test.ts > plugin install flows > git sources > restores a target moved aside by an interrupted promotion @bb/server:test: Error: Test timed out in 60000ms. @bb/server:test: If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". @bb/server:test: ❯ test/services/plugins/plugin-install.test.ts:1177:5 @bb/server:test: 1175| // This performs an initial git install and a second startup recov… @bb/server:test: 1176| // loaded runners need more headroom than the suite's 30s default. @bb/server:test: 1177| it("restores a target moved aside by an interrupted promotion", as… @bb/server:test: | ^ @bb/server:test: 1178| const repoDir = join(workDir, "repo-interrupted-promotion"); @bb/server:test: 1179| await writePluginFixture(repoDir, { @bb/server:test: @bb/server:test: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/8]⎯ @bb/server:test: @bb/server:test: FAIL |@bb/server:isolated| test/services/plugins/plugin-update.test.ts > plugin update service and routes > rolls back when a background service crashes during stabilization @bb/server:test: Error: Test timed out in 60000ms. @bb/server:test: If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". @bb/server:test: ❯ test/services/plugins/plugin-update.test.ts:551:3 @bb/server:test: 549| // A real git update is built, promoted, crashed, and rolled back he… @bb/server:test: 550| // Under full-workspace load it can exceed the suite's 30s default. @bb/server:test: 551| it("rolls back when a background service crashes during stabilizatio… @bb/server:test: | ^ @bb/server:test: 552| const installedCommit = getInstalledPluginRegistration( @bb/server:test: 553| db, @bb/server:test: @bb/server:test: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/8]⎯ @bb/server:test: @bb/server:test: FAIL |@bb/server:isolated| test/services/plugins/plugin-update.test.ts > plugin update service and routes > finishes an interrupted rollback before loading plugins after restart @bb/server:test: Error: Test timed out in 60000ms. @bb/server:test: If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". @bb/server:test: ❯ test/services/plugins/plugin-update.test.ts:624:3 @bb/server:test: 622| }, 60_000); @bb/server:test: 623| @bb/server:test: 624| it("finishes an interrupted rollback before loading plugins after re… @bb/server:test: | ^ @bb/server:test: 625| const pluginDir = join(workDir, "data", "plugins", "updater"); @bb/server:test: 626| const databasePath = join(pluginDir, "data.db"); @bb/server:test: @bb/server:test: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/8]⎯ @bb/server:test: @bb/server:test: FAIL |@bb/server:isolated| test/services/plugins/plugin-update.test.ts > plugin update service and routes > sweeps on start when a plugin was never checked, then waits out the interval across restarts @bb/server:test: Error: Test timed out in 60000ms. @bb/server:test: If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". @bb/server:test: ❯ test/services/plugins/plugin-update.test.ts:821:3 @bb/server:test: 819| } @bb/server:test: 820| @bb/server:test: 821| it("sweeps on start when a plugin was never checked, then waits out … @bb/server:test: | ^ @bb/server:test: 822| const HOUR = 60 * 60 * 1_000; @bb/server:test: 823| let clock = Date.now(); @bb/server:test: @bb/server:test: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/8]⎯ @bb/server:test: @bb/server:test: FAIL |@bb/server:isolated| test/services/plugins/plugin-update.test.ts > plugin update service and routes > retains rollback state through the grace period and collects it afterward @bb/server:test: Error: Test timed out in 60000ms. @bb/server:test: If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". @bb/server:test: ❯ test/services/plugins/plugin-update.test.ts:887:3 @bb/server:test: 885| }); @bb/server:test: 886| @bb/server:test: 887| it("retains rollback state through the grace period and collects it … @bb/server:test: | ^ @bb/server:test: 888| await service.stop(); @bb/server:test: 889| let clock = Date.now(); @bb/server:test: @bb/server:test: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/8]⎯ @bb/server:test: @bb/server:test: @bb/server:test: Test Files 3 failed | 211 passed | 1 skipped (215) @bb/server:test: Tests 8 failed | 2042 passed (2050) @bb/server:test: Start at 16:02:27 @bb/server:test: Duration 284.61s (transform 52.49s, setup 0ms, import 115.91s, tests 853.93s, environment 20ms) @bb/server:test: @bb/server:test:  ELIFECYCLE  Test failed. See above for more details. @bb/server:test: ERROR: command finished with error: command (/tmp/bb-report-2547-investigate-SQfjR0/apps/server) /home/sawyer/.local/share/pnpm/store/v11/links/@pnpm/exe/9.15.0/0cb0bed5359cd168a914de4ae70b4e04bc16c903df0764391acdba407e24b0c2/bin/pnpm run test exited (1) @bb/server#test: command (/tmp/bb-report-2547-investigate-SQfjR0/apps/server) /home/sawyer/.local/share/pnpm/store/v11/links/@pnpm/exe/9.15.0/0cb0bed5359cd168a914de4ae70b4e04bc16c903df0764391acdba407e24b0c2/bin/pnpm run test exited (1) Tasks: 6 successful, 7 total Cached: 0 cached, 7 total Time: 5m4.963s Failed: @bb/server#test ERROR run failed: command exited (1)