diff --git a/docs/reference/test.md b/docs/reference/test.md index 20a76ccf9a2..e864f9eca67 100644 --- a/docs/reference/test.md +++ b/docs/reference/test.md @@ -15,7 +15,7 @@ title: "Tests" - `pnpm test`: runs the full wrapper. It keeps only a small behavioral override manifest in git, then uses a checked-in timing snapshot to peel the heaviest measured unit files into dedicated lanes. - Unit files default to `threads` in the wrapper; keep fork-only or `forkBatched` exceptions documented in `test/fixtures/test-parallel.behavior.json`. - `pnpm test:extensions` now defaults to `threads` via `vitest.extensions.config.ts`; the March 22, 2026 direct full-suite control run passed clean without extension-specific fork exceptions. -- Files marked `forkBatched` stay on `forks`, but the wrapper batches them into low-concurrency `forks` lanes with `maxWorkers=1` instead of spawning one fresh Vitest process per file. Tune lane count with `OPENCLAW_TEST_UNIT_FORK_BATCH_LANES=`; the old `OPENCLAW_TEST_SINGLETON_ISOLATED_LANES=` alias still works. +- Files marked `forkBatched` stay on `forks`, but the wrapper batches them into low-concurrency `forks` lanes with `maxWorkers=1` instead of spawning one fresh Vitest process per file. Tune lane count with `OPENCLAW_TEST_UNIT_FORK_BATCH_LANES=`. - `pnpm test:channels`: runs channel-heavy suites. - `pnpm test:extensions`: runs extension/plugin suites. - `pnpm test:perf:update-timings`: refreshes the checked-in slow-file timing snapshot used by `scripts/test-parallel.mjs`. diff --git a/scripts/test-parallel.mjs b/scripts/test-parallel.mjs index 445f2bcb76d..a8656b269f3 100644 --- a/scripts/test-parallel.mjs +++ b/scripts/test-parallel.mjs @@ -395,10 +395,10 @@ const defaultForkBatchLaneCount = : lowMemLocalHost ? Math.ceil(unitForkBatchFiles.length / 12) : Math.ceil(unitForkBatchFiles.length / 10); -const configuredForkBatchLaneCount = - parseEnvNumber("OPENCLAW_TEST_UNIT_FORK_BATCH_LANES", null) ?? - // Backward-compatible alias for the old manifest terminology. - parseEnvNumber("OPENCLAW_TEST_SINGLETON_ISOLATED_LANES", defaultForkBatchLaneCount); +const configuredForkBatchLaneCount = parseEnvNumber( + "OPENCLAW_TEST_UNIT_FORK_BATCH_LANES", + defaultForkBatchLaneCount, +); const forkBatchLaneCount = unitForkBatchFiles.length === 0 ? 0 diff --git a/test/fixtures/test-parallel.behavior.json b/test/fixtures/test-parallel.behavior.json index 3099355d791..a2998b6e01e 100644 --- a/test/fixtures/test-parallel.behavior.json +++ b/test/fixtures/test-parallel.behavior.json @@ -1,322 +1,365 @@ { + "base": { + "threadPinned": [ + { + "file": "src/commands/backup.test.ts", + "reason": "Measured ~16% faster under threads than forks on base config after removing process.chdir() from the test." + }, + { + "file": "src/auto-reply/reply/commands-acp/install-hints.test.ts", + "reason": "Measured ~35% faster under threads than forks on base config after removing process.chdir() from the test." + }, + { + "file": "src/agents/pi-extensions/compaction-safeguard.test.ts", + "reason": "Measured ~27% faster under threads than forks on base config after removing process.chdir() from the test." + } + ] + }, "unit": { "isolated": [ - { - "file": "src/plugins/contracts/runtime.contract.test.ts", - "reason": "Async runtime imports + provider refresh seams; keep out of the shared lane." - }, - { - "file": "src/security/temp-path-guard.test.ts", - "reason": "Filesystem guard scans are sensitive to contention." - }, - { - "file": "src/infra/git-commit.test.ts", - "reason": "Mutates process.cwd() and core loader seams." - }, - { - "file": "src/config/doc-baseline.integration.test.ts", - "reason": "Rebuilds bundled config baselines through many channel schema subprocesses; keep out of the shared lane." - }, { "file": "extensions/imessage/src/monitor.shutdown.unhandled-rejection.test.ts", "reason": "Touches process-level unhandledRejection listeners." } ], - "singletonIsolated": [ + "forkBatched": [], + "threadPinned": [ { - "file": "src/cli/command-secret-gateway.test.ts", - "reason": "Clean in isolation, but can hang after sharing the broad lane." + "file": "src/cli/secrets-cli.test.ts", + "reason": "Measured ~11% faster under threads than forks on base config while keeping secrets CLI coverage green." }, { - "file": "src/config/doc-baseline.integration.test.ts", - "reason": "Builds the full bundled config schema graph and is safer outside the shared unit-fast heap." + "file": "src/cli/plugin-registry.test.ts", + "reason": "Measured ~11% faster under threads than forks on base config while keeping plugin registry CLI coverage green." }, { - "file": "src/config/schema.help.quality.test.ts", - "reason": "Help quality coverage loads a broad schema/help data graph and retained a top shared unit-fast heap spike on Linux CI." + "file": "src/cli/exec-approvals-cli.test.ts", + "reason": "Measured ~15% faster under threads than forks on base config while keeping approvals CLI coverage green." }, { - "file": "src/secrets/runtime.test.ts", - "reason": "Secrets runtime coverage retained the largest unit-fast heap spike in CI and is safer outside the shared lane." + "file": "src/cli/browser-cli-manage.timeout-option.test.ts", + "reason": "Measured ~14% faster under threads than forks on base config while keeping browser manage timeout coverage green." }, { - "file": "src/secrets/runtime.integration.test.ts", - "reason": "Secrets runtime activation/write-through integration coverage is CPU-heavy and safer outside the shared unit-fast lane." + "file": "src/cli/browser-cli-manage.test.ts", + "reason": "Measured ~14% faster under threads than forks on base config while keeping browser manage coverage green." }, { - "file": "src/memory/index.test.ts", - "reason": "Memory index coverage retained nearly 1 GiB in unit-fast on Linux CI and is safer in its own fork." + "file": "src/cli/deps.test.ts", + "reason": "Measured ~81% faster under threads than forks on base config while keeping dependency checks green." }, { - "file": "src/plugins/http-registry.test.ts", - "reason": "Plugin HTTP registry coverage retained a broad plugin graph in unit-fast and is safer outside the shared lane." + "file": "src/cli/nodes-cli.coverage.test.ts", + "reason": "Measured ~12% faster under threads than forks on base config while keeping nodes CLI coverage green." }, { - "file": "src/infra/channel-summary.test.ts", - "reason": "Channel summary coverage retained a large channel/plugin graph in unit-fast on Linux CI." + "file": "src/cli/daemon-cli/restart-health.test.ts", + "reason": "Measured ~35% faster under threads than forks on base config while keeping daemon restart health coverage green." }, { - "file": "src/config/redact-snapshot.test.ts", - "reason": "Snapshot redaction coverage produced a large retained heap jump in unit-fast on Linux CI." + "file": "src/cli/program/config-guard.test.ts", + "reason": "Measured ~14% faster under threads than forks on base config while keeping program config guard coverage green." }, { - "file": "src/config/redact-snapshot.restore.test.ts", - "reason": "Snapshot restore coverage retains a broad schema/redaction graph and is safer outside the shared lane." + "file": "src/cli/update-cli/restart-helper.test.ts", + "reason": "Measured ~12% faster under threads than forks on base config while keeping update restart helper coverage green." }, { - "file": "src/config/redact-snapshot.schema.test.ts", - "reason": "Schema-backed redaction round-trip coverage loads the full config schema graph and is safer outside the shared lane." + "file": "src/cli/security-cli.test.ts", + "reason": "Measured ~31% faster under threads than forks on base config while keeping security CLI coverage green." }, { - "file": "src/infra/outbound/message-action-runner.media.test.ts", - "reason": "Outbound media action coverage retained a large media/plugin graph in unit-fast." + "file": "src/cli/plugin-install-plan.test.ts", + "reason": "Measured ~14% faster under threads than forks on base config while keeping plugin install planning coverage green." }, { - "file": "src/media-understanding/apply.echo-transcript.test.ts", - "reason": "Media understanding echo transcript coverage retained a large processing graph in unit-fast." + "file": "src/cli/memory-cli.test.ts", + "reason": "Measured ~50% faster under threads than forks on base config while keeping memory CLI coverage green." }, { - "file": "src/plugin-sdk/index.test.ts", - "reason": "Plugin SDK index coverage retained a broad export graph in unit-fast and is safer outside the shared lane." + "file": "src/cli/program.nodes-test-helpers.test.ts", + "reason": "Measured ~22% faster under threads than forks on base config while keeping nodes test helper coverage green." }, { - "file": "src/plugin-sdk/index.bundle.test.ts", - "reason": "Plugin SDK bundle validation builds and imports the full bundled export graph and is safer outside the shared lane." + "file": "src/cli/skills-cli.test.ts", + "reason": "Measured ~27% faster under threads than forks on base config while keeping skills CLI coverage green." }, { - "file": "src/config/sessions.cache.test.ts", - "reason": "Session cache coverage retained a large config/session graph in unit-fast on Linux CI." + "file": "src/cli/run-main.exit.test.ts", + "reason": "Measured ~12% faster under threads than forks on base config while keeping run-main exit coverage green." }, { - "file": "src/secrets/runtime.coverage.test.ts", - "reason": "Secrets runtime coverage tests retained substantial heap in unit-fast and are safer isolated." + "file": "src/cli/completion-fish.test.ts", + "reason": "Measured ~41% faster under threads than forks on base config while keeping fish completion coverage green." }, { - "file": "src/channels/plugins/contracts/registry.contract.test.ts", - "reason": "Plugin contract registry coverage retained a large cross-plugin graph in both failing unit-fast shards." + "file": "src/cli/config-set-mode.test.ts", + "reason": "Measured ~11% faster under threads than forks on base config while keeping config set mode coverage green." }, { - "file": "src/memory/manager.get-concurrency.test.ts", - "reason": "Memory manager cache concurrency coverage can spike shared unit-fast heap on Linux Node 24." + "file": "src/cli/program/build-program.version-alias.test.ts", + "reason": "Measured ~13% faster under threads than forks on base config while keeping version alias coverage green." }, { - "file": "src/memory/manager.vector-dedupe.test.ts", - "reason": "Vector dedupe coverage exercises the memory manager/sqlite stack and is safer outside shared unit-fast forks." + "file": "src/cli/program/register.agent.test.ts", + "reason": "Measured ~11% faster under threads than forks on base config while keeping register agent coverage green." }, { - "file": "src/memory/manager.watcher-config.test.ts", - "reason": "Watcher config coverage reuses memory manager caches and is safer outside shared unit-fast forks." + "file": "test/vitest-unit-paths.test.ts", + "reason": "Measured ~11% faster under threads than forks on base config while keeping unit path checks green." }, { - "file": "src/memory/manager.embedding-batches.test.ts", - "reason": "Embedding batch coverage inflates memory manager state and is safer outside shared unit-fast forks." + "file": "test/scripts/check-channel-agnostic-boundaries.test.ts", + "reason": "Measured ~29% faster under threads than forks on base config while keeping channel-agnostic boundary checks green." }, { - "file": "src/memory/manager.readonly-recovery.test.ts", - "reason": "Readonly recovery coverage exercises sqlite reopen flows and is safer outside shared unit-fast forks." + "file": "test/plugin-npm-release.test.ts", + "reason": "Measured ~10% faster under threads than forks on base config while keeping npm release checks green." }, { - "file": "src/acp/persistent-bindings.test.ts", - "reason": "Persistent bindings coverage retained a large unit-fast heap spike on Linux CI and is safer outside the shared lane." + "file": "src/cli/daemon-cli-compat.test.ts", + "reason": "Measured ~12% faster under threads than forks on base config while keeping daemon CLI compatibility coverage green." }, { - "file": "src/channels/plugins/setup-wizard-helpers.test.ts", - "reason": "Setup wizard helper coverage retained the largest shared unit-fast heap spike on Linux Node 24 CI." + "file": "src/cli/program/command-registry.test.ts", + "reason": "Measured ~10% faster under threads than forks on base config while keeping command registry coverage green." }, { - "file": "src/cli/config-cli.integration.test.ts", - "reason": "Config CLI integration coverage retained a large shared unit-fast heap spike on Linux CI." + "file": "src/cli/program.force.test.ts", + "reason": "Measured ~14% faster under threads than forks on base config while keeping force option coverage green." }, { - "file": "src/cli/config-cli.test.ts", - "reason": "Config CLI coverage retained a large shared unit-fast heap spike on Linux Node 24 CI." + "file": "src/cli/cli-utils.test.ts", + "reason": "Measured ~15% faster under threads than forks on base config while keeping CLI utility coverage green." }, { - "file": "src/cli/plugins-cli.test.ts", - "reason": "Plugins CLI coverage retained a broad plugin graph in shared unit-fast forks on Linux CI." + "file": "src/cli/devices-cli.test.ts", + "reason": "Measured ~21% faster under threads than forks on base config while keeping devices CLI coverage green." }, { - "file": "src/config/plugin-auto-enable.test.ts", - "reason": "Plugin auto-enable coverage retained a large shared unit-fast heap spike on Linux Node 22 CI." + "file": "src/cli/message-secret-scope.test.ts", + "reason": "Measured ~16% faster under threads than forks on base config while keeping message secret scope coverage green." }, { - "file": "src/cron/service.runs-one-shot-main-job-disables-it.test.ts", - "reason": "One-shot cron service coverage retained a top shared unit-fast heap spike in the March 19, 2026 Linux Node 22 OOM lane." + "file": "src/cli/banner.test.ts", + "reason": "Measured ~30% faster under threads than forks on base config while keeping banner rendering coverage green." }, { - "file": "src/cron/isolated-agent.direct-delivery-core-channels.test.ts", - "reason": "Direct-delivery isolated-agent coverage retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 OOM lane." + "file": "src/cli/gateway-cli.coverage.test.ts", + "reason": "Measured ~18% faster under threads than forks on base config while keeping gateway CLI coverage green." }, - { - "file": "src/cron/service.issue-regressions.test.ts", - "reason": "Issue regression cron coverage retained the largest shared unit-fast heap spike in the March 20, 2026 Linux Node 22 and Node 24 OOM lanes." - }, - { - "file": "src/cron/store.test.ts", - "reason": "Cron store coverage retained a large shared unit-fast heap spike on Linux Node 24 CI." - }, - { - "file": "src/context-engine/context-engine.test.ts", - "reason": "Context-engine coverage retained the largest shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 1 OOM lane." - }, - { - "file": "src/acp/control-plane/manager.test.ts", - "reason": "ACP control-plane manager coverage retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 22 and Node 24 OOM lanes." - }, - { - "file": "src/acp/translator.stop-reason.test.ts", - "reason": "ACP translator stop-reason coverage retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 2 OOM lane." - }, - { - "file": "src/infra/exec-approval-forwarder.test.ts", - "reason": "Exec approval forwarder coverage retained a top shared unit-fast heap spike in the March 19, 2026 Linux Node 22 OOM lane." - }, - { - "file": "src/infra/restart-stale-pids.test.ts", - "reason": "Restart-stale-pids coverage retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 1 OOM lane." - }, - { - "file": "src/infra/heartbeat-runner.respects-ackmaxchars-heartbeat-acks.test.ts", - "reason": "Heartbeat ack max chars coverage retained a recurring shared unit-fast heap spike across Linux CI lanes." - }, - { - "file": "src/infra/heartbeat-runner.returns-default-unset.test.ts", - "reason": "Heartbeat default-unset coverage retained a large shared unit-fast heap spike on Linux Node 22 CI." - }, - { - "file": "src/infra/heartbeat-runner.ghost-reminder.test.ts", - "reason": "Mocks jiti at file scope, so it is safer outside shared Vitest workers." - }, - { - "file": "src/infra/heartbeat-runner.transcript-prune.test.ts", - "reason": "Mocks jiti at file scope, so it is safer outside shared Vitest workers." - }, - { - "file": "src/infra/heartbeat-runner.sender-prefers-delivery-target.test.ts", - "reason": "Mocks jiti at file scope, so it is safer outside shared Vitest workers." - }, - { - "file": "src/infra/heartbeat-runner.model-override.test.ts", - "reason": "Mocks jiti at file scope, so it is safer outside shared Vitest workers." - }, - { - "file": "src/plugins/loader.git-path-regression.test.ts", - "reason": "Constructs a real Jiti boundary and is safer outside shared workers that may have mocked jiti earlier." - }, - { - "file": "src/infra/outbound/outbound-session.test.ts", - "reason": "Outbound session coverage retained a large shared unit-fast heap spike on Linux Node 22 CI." - }, - { - "file": "src/infra/outbound/payloads.test.ts", - "reason": "Outbound payload coverage retained a large shared unit-fast heap spike on Linux Node 24 CI." - }, - { - "file": "src/memory/manager.mistral-provider.test.ts", - "reason": "Mistral provider coverage retained a large shared unit-fast heap spike on Linux Node 24 CI." - }, - { - "file": "src/memory/manager.batch.test.ts", - "reason": "Memory manager batch coverage retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 22 and Node 24 OOM lanes." - }, - { - "file": "src/memory/qmd-manager.test.ts", - "reason": "QMD manager coverage retained recurring shared unit-fast heap spikes across Linux CI lanes." - }, - { - "file": "src/media-understanding/providers/image.test.ts", - "reason": "Image provider coverage retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 2 OOM lane." - }, - { - "file": "src/plugins/contracts/auth.contract.test.ts", - "reason": "Plugin auth contract coverage retained a large shared unit-fast heap spike on Linux Node 24 CI." - }, - { - "file": "src/plugins/contracts/discovery.contract.test.ts", - "reason": "Plugin discovery contract coverage retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 1 OOM lane." - }, - { - "file": "src/plugins/hooks.phase-hooks.test.ts", - "reason": "Phase hooks coverage retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 2 OOM lane." - }, - { - "file": "src/channels/plugins/plugins-core.test.ts", - "reason": "Core plugin coverage retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 22 OOM lane." - }, - { - "file": "src/secrets/apply.test.ts", - "reason": "Secrets apply coverage retained a large shared unit-fast heap spike on Linux Node 22 CI." - }, - { - "file": "src/tui/tui-command-handlers.test.ts", - "reason": "TUI command handler coverage retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 2 OOM lane." - }, - { - "file": "src/node-host/invoke-system-run.test.ts", - "reason": "Missing from unit timings and retained the largest shared unit-fast heap spike across the March 20, 2026 Linux Node 22 and Node 24 OOM lanes." - }, - { - "file": "src/media-understanding/apply.test.ts", - "reason": "Missing from unit timings and retained a top shared unit-fast heap spike across the March 20, 2026 Linux Node 22 and Node 24 OOM lanes." - }, - { - "file": "src/plugins/commands.test.ts", - "reason": "Missing from unit timings and retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 22 OOM lane." - }, - { - "file": "src/infra/outbound/message-action-runner.plugin-dispatch.test.ts", - "reason": "Missing from unit timings and retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 22 OOM lane." - }, - { - "file": "src/acp/translator.session-rate-limit.test.ts", - "reason": "Missing from unit timings and retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 22 OOM lane." - }, - { - "file": "src/config/schema.hints.test.ts", - "reason": "Missing from unit timings and retained a recurring shared unit-fast heap spike across the March 20, 2026 Linux Node 22 and Node 24 OOM lanes." - }, - { - "file": "src/tui/tui-event-handlers.test.ts", - "reason": "Missing from unit timings and retained the largest shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 1 OOM lane." - }, - { - "file": "src/memory/manager.read-file.test.ts", - "reason": "Missing from unit timings and retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 1 OOM lane." - }, - { - "file": "src/plugin-sdk/webhook-targets.test.ts", - "reason": "Missing from unit timings and retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 1 OOM lane." - }, - { - "file": "src/daemon/systemd.test.ts", - "reason": "Missing from unit timings and retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 1 OOM lane." - }, - { - "file": "src/cron/isolated-agent/delivery-target.test.ts", - "reason": "Missing from unit timings and retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 1 OOM lane." - }, - { - "file": "src/cron/delivery.test.ts", - "reason": "Missing from unit timings and retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 2 OOM lane." - }, - { - "file": "src/memory/manager.sync-errors-do-not-crash.test.ts", - "reason": "Missing from unit timings and retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 2 OOM lane." - }, - { - "file": "src/tui/tui.test.ts", - "reason": "Missing from unit timings and retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 2 OOM lane." - }, - { - "file": "src/cron/service.every-jobs-fire.test.ts", - "reason": "Missing from unit timings and retained a top shared unit-fast heap spike in the March 20, 2026 Linux Node 24 shard 2 OOM lane." - } - ], - "threadSingleton": [ { "file": "src/channels/plugins/actions/actions.test.ts", "reason": "Terminates cleanly under threads, but not process forks on this host." }, + { + "file": "test/extension-plugin-sdk-boundary.test.ts", + "reason": "Measured ~12% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/hooks/install.test.ts", + "reason": "Measured ~14% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/hooks/plugin-hooks.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/hooks/hooks-install.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/hooks/workspace.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/hooks/loader.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/conversation-binding.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/hooks/bundled/session-memory/handler.test.ts", + "reason": "Measured ~16% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugin-sdk/subpaths.test.ts", + "reason": "Measured ~23% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugin-sdk/channel-import-guardrails.test.ts", + "reason": "Measured ~30% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/contracts/wizard.contract.test.ts", + "reason": "Measured ~9% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/contracts/auth-choice.contract.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/channels/plugins/contracts/outbound-payload.contract.test.ts", + "reason": "Measured ~15% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/install.test.ts", + "reason": "Measured ~18% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/interactive.test.ts", + "reason": "Measured ~9% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/marketplace.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/status.test.ts", + "reason": "Measured ~10% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/bundled-dir.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/sdk-alias.test.ts", + "reason": "Measured ~17% faster under threads than forks on this host after removing process.chdir() from the test." + }, + { + "file": "src/config/config.plugin-validation.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/config/config.web-search-provider.test.ts", + "reason": "Measured ~14% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/config/config-misc.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/config/schema.help.quality.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/config/sessions/store.pruning.integration.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/config/sessions.test.ts", + "reason": "Measured ~16% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/config/sessions/store.pruning.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/config/sessions/sessions.test.ts", + "reason": "Measured ~14% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/config/sessions/targets.test.ts", + "reason": "Measured ~12% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/config/config.nix-integration-u3-u5-u9.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/config/config.legacy-config-detection.accepts-imessage-dmpolicy.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/isolated-agent.uses-last-non-empty-agent-text-as.test.ts", + "reason": "Measured ~15% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/isolated-agent.skips-delivery-without-whatsapp-recipient-besteffortdeliver-true.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/isolated-agent/run.cron-model-override.test.ts", + "reason": "Measured ~25% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/isolated-agent/run.skill-filter.test.ts", + "reason": "Measured ~15% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/isolated-agent/run.owner-auth.test.ts", + "reason": "Measured ~19% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/isolated-agent.lane.test.ts", + "reason": "Measured ~14% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/isolated-agent.direct-delivery-forum-topics.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/isolated-agent.auth-profile-propagation.test.ts", + "reason": "Measured ~22% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/isolated-agent.delivers-response-has-heartbeat-ok-but-includes.test.ts", + "reason": "Measured ~12% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/isolated-agent/delivery-dispatch.named-agent.test.ts", + "reason": "Measured ~14% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/isolated-agent.subagent-model.test.ts", + "reason": "Measured ~21% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/service.store-load-invalid-main-job.test.ts", + "reason": "Measured ~16% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/service.store-migration.test.ts", + "reason": "Measured ~14% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/service.failure-alert.test.ts", + "reason": "Measured ~17% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/service.persists-delivered-status.test.ts", + "reason": "Measured ~15% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/session-reaper.test.ts", + "reason": "Measured ~12% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cron/service.session-reaper-in-finally.test.ts", + "reason": "Measured ~21% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/loader.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/discovery.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/manifest-registry.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/providers.test.ts", + "reason": "Measured ~10% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/stage-bundled-plugin-runtime.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, { "file": "src/infra/outbound/deliver.test.ts", "reason": "Terminates cleanly under threads, but not process forks on this host." @@ -337,16 +380,226 @@ "file": "src/infra/outbound/message-action-runner.context.test.ts", "reason": "Terminates cleanly under threads, but not process forks on this host." }, + { + "file": "src/infra/provider-usage.test.ts", + "reason": "Measured ~17% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/git-commit.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host after removing process.chdir() from related thread-blocking tests." + }, + { + "file": "src/infra/provider-usage.auth.normalizes-keys.test.ts", + "reason": "Measured ~12% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/provider-usage.auth.plugin.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/provider-usage.load.plugin.test.ts", + "reason": "Measured ~12% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/outbound/targets.test.ts", + "reason": "Measured ~14% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/outbound/agent-delivery.test.ts", + "reason": "Measured ~17% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/outbound/outbound-policy.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/outbound/outbound.test.ts", + "reason": "Measured ~14% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/update-runner.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/device-pairing.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/fs-pinned-write-helper.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/run-node.test.ts", + "reason": "Measured ~9% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/fs-safe.test.ts", + "reason": "Measured ~17% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/archive-staging.test.ts", + "reason": "Measured ~12% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/state-migrations.test.ts", + "reason": "Measured ~17% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/matrix-legacy-crypto.test.ts", + "reason": "Measured ~15% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/infra/matrix-migration-config.test.ts", + "reason": "Measured ~14% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/media/store.outside-workspace.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/media/input-files.fetch-guard.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/config/io.write-config.test.ts", + "reason": "Measured ~12% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/acp/server.startup.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/acp/client.test.ts", + "reason": "Measured ~18% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/acp/translator.cancel-scoping.test.ts", + "reason": "Measured ~10% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/node-host/invoke-browser.test.ts", + "reason": "Measured ~10% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/node-host/invoke-system-run-plan.test.ts", + "reason": "Measured ~10% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cli/daemon-cli/install.integration.test.ts", + "reason": "Measured ~12% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cli/mcp-cli.test.ts", + "reason": "Measured ~12% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/channels/channels-misc.test.ts", + "reason": "Measured ~12% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/channels/plugins/contracts/registry-backed.contract.test.ts", + "reason": "Measured ~19% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/pairing/setup-code.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/daemon/schtasks.startup-fallback.test.ts", + "reason": "Measured ~15% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/memory/embeddings.test.ts", + "reason": "Measured ~10% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/memory/batch-gemini.test.ts", + "reason": "Measured ~10% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/memory/embeddings-voyage.test.ts", + "reason": "Measured ~14% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/canvas-host/server.test.ts", + "reason": "Measured ~10% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/web-search-providers.runtime.test.ts", + "reason": "Measured ~17% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/plugins/contracts/registry.contract.test.ts", + "reason": "Measured ~14% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/media-understanding/runtime.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/media-understanding/resolve.test.ts", + "reason": "Measured ~9% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/media-understanding/runner.skip-tiny-audio.test.ts", + "reason": "Measured ~23% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/media-understanding/runner.proxy.test.ts", + "reason": "Measured ~55% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/media-understanding/runner.auto-audio.test.ts", + "reason": "Measured ~23% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/media-understanding/runner.video.test.ts", + "reason": "Measured ~25% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/secrets/audit.test.ts", + "reason": "Measured ~14% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/secrets/runtime-web-tools.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/entry.version-fast-path.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/security/audit.test.ts", + "reason": "Measured ~40% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "ui/src/ui/views/chat.test.ts", + "reason": "Measured ~25% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/tui/tui-session-actions.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/tui/gateway-chat.test.ts", + "reason": "Measured ~11% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cli/program/preaction.test.ts", + "reason": "Measured ~21% faster under threads than forks on this host while keeping the file green." + }, + { + "file": "src/cli/program.smoke.test.ts", + "reason": "Measured ~13% faster under threads than forks on this host while keeping the file green." + }, { "file": "src/tts/tts.test.ts", "reason": "Terminates cleanly under threads, but not process forks on this host." } ], - "vmForkSingleton": [ - { - "file": "src/channels/plugins/contracts/inbound.telegram.contract.test.ts", - "reason": "Needs the vmForks lane when targeted." - } - ] + "vmForkPinned": [] + }, + "extensions": { + "isolated": [] } }