ci: split general-server tests into five shards with refreshed durations (#10925)

## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work.
> - The PR workflow runs the server vitest suite across sharded runners
because the suite is pinned to one worker.
> - In successful PR run 30930345729 (2026-08-04), shard `server (3/4)`
took 311 seconds of wall time and was the slowest check in the run.
> - The suite has grown to about 946 seconds of serial vitest time, but
the duration manifest was last sampled on 2026-08-01 at about 882
seconds.
> - This pull request refreshes the per-suite duration manifest from
that run's logs and splits the lane into five shards.
> - The benefit is a shorter PR critical path: each shard carries about
196 seconds of suite time, level with the other lanes.

## Linked Issues or Issue Description

Refs #10663 (previous split of this lane into four shards).
Related: #10923 splits the separate serialized-suites lane into five
shards. Both PRs touch `.github/workflows/pr.yml` in different matrix
blocks; whichever merges second needs a trivial rebase.

**What existing behavior does this improve?**

The `general-server` vitest lane runs in four shards with a duration
manifest sampled on 2026-08-01.

**Current behavior**

In PR run 30930345729, shard 3/4 ran for 311 seconds (273 seconds in the
test step) and was the longest check in the run. The suite now totals
about 946 seconds of serial vitest time.

**Proposed behavior**

Run the same suite set in five shards, balanced with a per-suite
duration manifest refreshed from that run's shard logs (279 suites
measured by diffing consecutive completion timestamps).

**Reason and benefit**

The refreshed LPT partition balances at about 196 seconds of suite time
per shard (about 240 seconds per job), level with the other PR lanes. No
test coverage is lost.

**Breaking changes**

None. The change only alters the CI partition size and the duration
manifest.

## What Changed

- Bump the `general-server` shard matrix in `.github/workflows/pr.yml`
from four to five shards.
- Refresh `scripts/general-server-shard-durations.json` from the
2026-08-04 run's shard logs.
- Update `SHARD_COUNT` in
`scripts/__tests__/run-vitest-stable-shard.test.mjs` to five.

## Verification

- `node --test scripts/__tests__/run-vitest-stable-shard.test.mjs` — 9/9
pass, including the complete non-overlapping partition proof and the
duration-balance check.
- `node --test scripts/__tests__/release-verify-workflow.test.mjs` — 2/2
pass.
- `node --test scripts/__tests__/e2e-shard.test.mjs` — 7/7 pass.
- A 5-way dry-run partition covers all suites exactly once with equal
projected weights.

## Risks

- Low risk. The change only alters CI partition size and duration
weights; the suite set is unchanged.
- One more runner is used per PR run for this lane.
- Stale duration weights degrade gracefully: suites missing from the
manifest get the median weight.

## Model Used

- Claude (Anthropic), Claude Code CLI, model ID `claude-fable-5`,
extended thinking with tool use enabled.

## Checklist

- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` / `Closes
#` / `Refs #` OR (b) described the issue in-PR following the relevant
issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip`
URLs)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
(workflow comments explain the new shard math)
- [x] I have considered and documented any risks above
- [ ] All Paperclip CI gates are green
- [ ] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge

Co-authored-by: Claude <claude@paperclip.ing>
Co-authored-by: Paperclip <noreply@paperclip.ing>
This commit is contained in:
Devin Foley 2026-08-05 16:44:29 -07:00 committed by GitHub
parent b6e58019f2
commit 00a24d7e8f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 300 additions and 315 deletions

View File

@ -149,26 +149,31 @@ jobs:
include:
# The server suite is pinned to maxWorkers=1 (server/vitest.config.ts),
# so it can only be parallelized across runners. Shard it to keep this
# lane off the PR critical path. Four shards because the suite has
# grown to ~880s of serial vitest wall time (run 30723165356,
# 2026-08-01): at three shards the worst shard ran 313s and was the
# slowest check in the whole PR run; four brings each shard to ~220s.
# lane off the PR critical path. Five shards because the suite has
# grown to ~946s of serial vitest wall time (run 30930345729,
# 2026-08-04): at four shards the worst shard ran 311s and was the
# slowest check in the whole PR run; five brings each shard to ~196s
# of suite time (~240s job), level with the other ~250-300s lanes.
- group: general-server
group_label: server (1/4)
group_label: server (1/5)
shard_index: 0
shard_count: 4
shard_count: 5
- group: general-server
group_label: server (2/4)
group_label: server (2/5)
shard_index: 1
shard_count: 4
shard_count: 5
- group: general-server
group_label: server (3/4)
group_label: server (3/5)
shard_index: 2
shard_count: 4
shard_count: 5
- group: general-server
group_label: server (4/4)
group_label: server (4/5)
shard_index: 3
shard_count: 4
shard_count: 5
- group: general-server
group_label: server (5/5)
shard_index: 4
shard_count: 5
- group: general-workspaces-a
group_label: workspaces-a
- group: general-workspaces-b

View File

@ -28,9 +28,10 @@ function dryRunJson(args) {
return JSON.parse(result.stdout);
}
const SHARD_COUNT = 4;
const SHARD_COUNT = 5;
const SERIALIZED_SHARD_COUNT = 5;
test("the serialized shards form a complete, non-overlapping partition", () => {
const shards = Array.from({ length: SERIALIZED_SHARD_COUNT }, (_, index) =>
dryRunJson(["--mode", "serialized", "--shard-index", String(index), "--shard-count", String(SERIALIZED_SHARD_COUNT)]),

View File

@ -1,306 +1,285 @@
{
"$comment": "Per-suite wall-clock durations (ms) for the general-server vitest lane, used by scripts/general-server-shard.mjs to balance suites across the PR shard matrix. Sampled from a real PR run of .github/workflows/pr.yml (actions run 30723165356, 2026-08-01) by diffing consecutive per-suite completion timestamps in the 'Run grouped general test suites' logs \u2014 that captures each suite's true serial cost (import + collect + tests), not just the vitest-reported test time. Suites missing here get the median weight, so the manifest only needs occasional refreshes.",
"$comment": "Per-suite wall-clock durations (ms) for the general-server vitest lane, used by scripts/general-server-shard.mjs to balance suites across the PR shard matrix. Sampled from a real PR run of .github/workflows/pr.yml (actions run 30930345729, 2026-08-04) by diffing consecutive per-suite completion timestamps in the 'Run grouped general test suites' logs \u2014 that captures each suite's true serial cost (import + collect + tests), not just the vitest-reported test time. Suites missing here get the median weight, so the manifest only needs occasional refreshes.",
"unit": "ms",
"durations": {
"server/src/__tests__/access-service.test.ts": 5304,
"server/src/__tests__/access-validators.test.ts": 376,
"server/src/__tests__/activity-log-responsible-user.test.ts": 4009,
"server/src/__tests__/activity-service.test.ts": 4368,
"server/src/__tests__/adapter-models.test.ts": 900,
"server/src/__tests__/adapter-registry.test.ts": 869,
"server/src/__tests__/adapter-session-codecs.test.ts": 368,
"server/src/__tests__/agent-auth-jwt.test.ts": 343,
"server/src/__tests__/agent-auth-middleware.test.ts": 946,
"server/src/__tests__/agent-instructions-service.test.ts": 228,
"server/src/__tests__/agent-invokability.test.ts": 888,
"server/src/__tests__/agent-permissions-service.test.ts": 318,
"server/src/__tests__/agent-shortname-collision.test.ts": 1394,
"server/src/__tests__/agent-skill-contract.test.ts": 222,
"server/src/__tests__/agents-adapter-config-user-secret.test.ts": 5334,
"server/src/__tests__/agents-pending-approval-config.test.ts": 5994,
"server/src/__tests__/agents-service-clear-error.test.ts": 5886,
"server/src/__tests__/agents-service-secret-bindings.test.ts": 4856,
"server/src/__tests__/api-compression.test.ts": 277,
"server/src/__tests__/app-hmr-port.test.ts": 2005,
"server/src/__tests__/app-private-hostname-gate.test.ts": 3503,
"server/src/__tests__/app-vite-dev-routing.test.ts": 2039,
"server/src/__tests__/approvals-service.test.ts": 782,
"server/src/__tests__/attachment-types.test.ts": 404,
"server/src/__tests__/attention-service.test.ts": 5183,
"server/src/__tests__/authorization-service.test.ts": 5278,
"server/src/__tests__/aws-secrets-manager-provider.test.ts": 320,
"server/src/__tests__/better-auth.test.ts": 873,
"server/src/__tests__/board-claim.test.ts": 4834,
"server/src/__tests__/board-mutation-guard.test.ts": 240,
"server/src/__tests__/body-limits.test.ts": 165,
"server/src/__tests__/budgets-service.test.ts": 4297,
"server/src/__tests__/build-commit.test.ts": 216,
"server/src/__tests__/build-version.test.ts": 203,
"server/src/__tests__/built-in-agents.test.ts": 11393,
"server/src/__tests__/bundled-plugins.test.ts": 191,
"server/src/__tests__/change-consent-gate.test.ts": 4146,
"server/src/__tests__/claude-local-adapter-environment.test.ts": 647,
"server/src/__tests__/claude-local-adapter.test.ts": 262,
"server/src/__tests__/claude-local-execute.test.ts": 2644,
"server/src/__tests__/claude-local-skill-sync.test.ts": 294,
"server/src/__tests__/cleanup-removal-service.test.ts": 5233,
"server/src/__tests__/cloud-image-bundled-plugins.test.ts": 229,
"server/src/__tests__/codex-auth-reconciliation.test.ts": 1054,
"server/src/__tests__/codex-local-adapter-environment.test.ts": 296,
"server/src/__tests__/codex-local-adapter.test.ts": 329,
"server/src/__tests__/codex-local-execute.test.ts": 1440,
"server/src/__tests__/codex-local-skill-injection.test.ts": 318,
"server/src/__tests__/codex-local-skill-sync.test.ts": 293,
"server/src/__tests__/companies-service.test.ts": 6576,
"server/src/__tests__/company-artifacts-service.test.ts": 5890,
"server/src/__tests__/company-portability-import-batching.test.ts": 7925,
"server/src/__tests__/company-search-extract-service.test.ts": 4340,
"server/src/__tests__/company-search-service.test.ts": 5187,
"server/src/__tests__/company-skill-import-boundary.test.ts": 4859,
"server/src/__tests__/company-skill-policy-service.test.ts": 4482,
"server/src/__tests__/company-skill-test-runs-service.test.ts": 7446,
"server/src/__tests__/company-skills-catalog-service.test.ts": 7480,
"server/src/__tests__/company-skills-detail.test.ts": 4740,
"server/src/__tests__/company-skills-service.test.ts": 16803,
"server/src/__tests__/company-skills.test.ts": 1298,
"server/src/__tests__/config-file.test.ts": 399,
"server/src/__tests__/cursor-local-adapter-environment.test.ts": 487,
"server/src/__tests__/cursor-local-adapter.test.ts": 309,
"server/src/__tests__/cursor-local-execute.test.ts": 1233,
"server/src/__tests__/cursor-local-skill-injection.test.ts": 228,
"server/src/__tests__/cursor-local-skill-sync.test.ts": 275,
"server/src/__tests__/dashboard-service.test.ts": 4166,
"server/src/__tests__/decision-training.test.ts": 5790,
"server/src/__tests__/decision-wakeup.test.ts": 173,
"server/src/__tests__/decisions-service.test.ts": 6732,
"server/src/__tests__/dev-runner-output.test.ts": 223,
"server/src/__tests__/dev-runner-paths.test.ts": 213,
"server/src/__tests__/dev-runner-snapshot.test.ts": 208,
"server/src/__tests__/dev-runner-worktree.test.ts": 210,
"server/src/__tests__/dev-server-status.test.ts": 180,
"server/src/__tests__/dev-watch-ignore.test.ts": 216,
"server/src/__tests__/docker-entrypoint.test.ts": 280,
"server/src/__tests__/document-annotations-service.test.ts": 5245,
"server/src/__tests__/documents-service.test.ts": 4609,
"server/src/__tests__/documents.test.ts": 889,
"server/src/__tests__/effective-run-config-fingerprints.test.ts": 176,
"server/src/__tests__/environment-config.test.ts": 1200,
"server/src/__tests__/environment-custom-image-terminal-ws.test.ts": 2962,
"server/src/__tests__/environment-custom-images-service.test.ts": 6969,
"server/src/__tests__/environment-execution-target.test.ts": 527,
"server/src/__tests__/environment-live-ssh.test.ts": 1323,
"server/src/__tests__/environment-probe.test.ts": 1427,
"server/src/__tests__/environment-run-orchestrator.test.ts": 1223,
"server/src/__tests__/environment-runtime-driver-contract.test.ts": 5082,
"server/src/__tests__/environment-runtime.test.ts": 10230,
"server/src/__tests__/environment-service.test.ts": 4331,
"server/src/__tests__/environment-test-harness.test.ts": 388,
"server/src/__tests__/error-handler.test.ts": 439,
"server/src/__tests__/execution-lock-orphan-cleanup.test.ts": 5717,
"server/src/__tests__/execution-workspace-policy.test.ts": 479,
"server/src/__tests__/execution-workspaces-service.test.ts": 10891,
"server/src/__tests__/export-fidelity.test.ts": 4019,
"server/src/__tests__/external-objects-service.test.ts": 5043,
"server/src/__tests__/feedback-flush-controller.test.ts": 2076,
"server/src/__tests__/feedback-service.test.ts": 4890,
"server/src/__tests__/feedback-share-client.test.ts": 177,
"server/src/__tests__/file-resources.test.ts": 8357,
"server/src/__tests__/first-admin-claim.test.ts": 3777,
"server/src/__tests__/folders-service.test.ts": 5698,
"server/src/__tests__/forbidden-tokens.test.ts": 181,
"server/src/__tests__/gemini-local-adapter-environment.test.ts": 354,
"server/src/__tests__/gemini-local-adapter.test.ts": 288,
"server/src/__tests__/gemini-local-execute.test.ts": 512,
"server/src/__tests__/gemini-local-skill-sync.test.ts": 225,
"server/src/__tests__/google-sheets-gallery.test.ts": 1467,
"server/src/__tests__/grok-local-skill-sync.test.ts": 264,
"server/src/__tests__/heartbeat-accepted-plan-workspace-refresh.test.ts": 7971,
"server/src/__tests__/heartbeat-active-run-output-watchdog.test.ts": 54470,
"server/src/__tests__/heartbeat-agent-session-message.test.ts": 2430,
"server/src/__tests__/heartbeat-archived-company-guard.test.ts": 4909,
"server/src/__tests__/heartbeat-auto-checkout.test.ts": 1346,
"server/src/__tests__/heartbeat-comment-wake-batching.test.ts": 9868,
"server/src/__tests__/heartbeat-context-summary.test.ts": 1415,
"server/src/__tests__/heartbeat-cost-accounting.test.ts": 1336,
"server/src/__tests__/heartbeat-issue-rewake-throttle.test.ts": 8207,
"server/src/__tests__/heartbeat-ledger-billing-code.test.ts": 1694,
"server/src/__tests__/heartbeat-list.test.ts": 5178,
"server/src/__tests__/heartbeat-local-environment.test.ts": 9551,
"server/src/__tests__/heartbeat-lock-release-on-reassignment.test.ts": 5037,
"server/src/__tests__/heartbeat-model-profile.test.ts": 1718,
"server/src/__tests__/heartbeat-plugin-environment.test.ts": 5394,
"server/src/__tests__/heartbeat-project-env.test.ts": 1468,
"server/src/__tests__/heartbeat-referenced-projects.test.ts": 4918,
"server/src/__tests__/heartbeat-remote-referenced-projects.test.ts": 1434,
"server/src/__tests__/heartbeat-responsible-user-invariant.test.ts": 6896,
"server/src/__tests__/heartbeat-retry-scheduling.test.ts": 9571,
"server/src/__tests__/heartbeat-run-log.test.ts": 1667,
"server/src/__tests__/heartbeat-run-status-payload.test.ts": 1655,
"server/src/__tests__/heartbeat-run-summary.test.ts": 208,
"server/src/__tests__/heartbeat-runtime-mcp-servers.test.ts": 4906,
"server/src/__tests__/heartbeat-runtime-skills.test.ts": 6987,
"server/src/__tests__/heartbeat-runtime-state.test.ts": 5073,
"server/src/__tests__/heartbeat-scheduling-suppression.test.ts": 1607,
"server/src/__tests__/heartbeat-stale-queue-invalidation.test.ts": 18374,
"server/src/__tests__/heartbeat-start-lock.test.ts": 419,
"server/src/__tests__/heartbeat-timer-wake-session-reset-pf4.test.ts": 1422,
"server/src/__tests__/heartbeat-workspace-branch-containment.test.ts": 8505,
"server/src/__tests__/heartbeat-workspace-finalize-branch.test.ts": 6790,
"server/src/__tests__/heartbeat-workspace-ready-comment.test.ts": 1335,
"server/src/__tests__/heartbeat-workspace-session.test.ts": 2022,
"server/src/__tests__/heartbeat-worktree-suppression.test.ts": 8319,
"server/src/__tests__/heartbeat-zombie-guard.test.ts": 1408,
"server/src/__tests__/hire-hook.test.ts": 968,
"server/src/__tests__/http-log-policy.test.ts": 216,
"server/src/__tests__/http-log-redaction.test.ts": 258,
"server/src/__tests__/inbox-dismissals.test.ts": 5254,
"server/src/__tests__/instance-settings-managed-overlay.test.ts": 912,
"server/src/__tests__/instance-settings-service.test.ts": 944,
"server/src/__tests__/instrumentation.test.ts": 196,
"server/src/__tests__/invite-join-grants.test.ts": 398,
"server/src/__tests__/invite-rate-limit.test.ts": 167,
"server/src/__tests__/invite-token-entropy.test.ts": 1850,
"server/src/__tests__/issue-blocker-attention.test.ts": 6110,
"server/src/__tests__/issue-comment-redaction.test.ts": 5411,
"server/src/__tests__/issue-continuation-summary.test.ts": 926,
"server/src/__tests__/issue-execution-policy.test.ts": 463,
"server/src/__tests__/issue-goal-fallback.test.ts": 209,
"server/src/__tests__/issue-liveness.test.ts": 408,
"server/src/__tests__/issue-monitor-scheduler.test.ts": 11200,
"server/src/__tests__/issue-recovery-actions.test.ts": 7969,
"server/src/__tests__/issue-references-service.test.ts": 4270,
"server/src/__tests__/issue-rewake-throttle.test.ts": 179,
"server/src/__tests__/issue-thread-interactions-service.test.ts": 7260,
"server/src/__tests__/issue-thread-interactions-telemetry.test.ts": 4518,
"server/src/__tests__/issue-tree-control-service-unit.test.ts": 725,
"server/src/__tests__/issue-tree-control-service.test.ts": 4666,
"server/src/__tests__/issues-list-query-parsing.test.ts": 941,
"server/src/__tests__/issues-user-context.test.ts": 889,
"server/src/__tests__/join-request-dedupe.test.ts": 225,
"server/src/__tests__/json-schema-secret-refs.test.ts": 202,
"server/src/__tests__/live-events-ws.test.ts": 788,
"server/src/__tests__/log-redaction.test.ts": 216,
"server/src/__tests__/logger-tz.test.ts": 241,
"server/src/__tests__/managed-config.test.ts": 411,
"server/src/__tests__/mcp-http.test.ts": 165,
"server/src/__tests__/monthly-spend-service.test.ts": 1692,
"server/src/__tests__/openclaw-gateway-adapter.test.ts": 328,
"server/src/__tests__/opencode-local-adapter.test.ts": 287,
"server/src/__tests__/opencode-local-skill-sync.test.ts": 224,
"server/src/__tests__/paperclip-env.test.ts": 465,
"server/src/__tests__/paperclip-skill-utils.test.ts": 250,
"server/src/__tests__/parse-status-filter.test.ts": 1075,
"server/src/__tests__/pi-local-adapter-environment.test.ts": 309,
"server/src/__tests__/pi-local-execute.test.ts": 424,
"server/src/__tests__/pi-local-skill-sync.test.ts": 268,
"server/src/__tests__/pipelines-service.test.ts": 6851,
"server/src/__tests__/plugin-access-authorization-host-services.test.ts": 5294,
"server/src/__tests__/plugin-agent-sessions.test.ts": 1630,
"server/src/__tests__/plugin-config-startup-delivery.test.ts": 3893,
"server/src/__tests__/plugin-database.test.ts": 4724,
"server/src/__tests__/plugin-dev-watcher.test.ts": 502,
"server/src/__tests__/plugin-environment-driver-ready-recovery.test.ts": 3502,
"server/src/__tests__/plugin-environment-driver-seam.test.ts": 525,
"server/src/__tests__/plugin-execution-workspace-bridge.test.ts": 221,
"server/src/__tests__/plugin-install-autobuild.test.ts": 6870,
"server/src/__tests__/plugin-install-guard.test.ts": 1046,
"server/src/__tests__/plugin-lifecycle-restart.test.ts": 1017,
"server/src/__tests__/plugin-local-folders.test.ts": 285,
"server/src/__tests__/plugin-managed-agents.test.ts": 5460,
"server/src/__tests__/plugin-managed-routines.test.ts": 5584,
"server/src/__tests__/plugin-managed-skills.test.ts": 6803,
"server/src/__tests__/plugin-orchestration-apis.test.ts": 8315,
"server/src/__tests__/plugin-sandbox-provider-config-validation.test.ts": 209,
"server/src/__tests__/plugin-sdk-orchestration-contract.test.ts": 481,
"server/src/__tests__/plugin-sdk-testing.test.ts": 398,
"server/src/__tests__/plugin-secrets-handler.test.ts": 4589,
"server/src/__tests__/plugin-telemetry-bridge.test.ts": 1825,
"server/src/__tests__/plugin-tenant-isolation.test.ts": 5019,
"server/src/__tests__/plugin-tool-dispatcher-pluginDbId.test.ts": 830,
"server/src/__tests__/plugin-ui-static.test.ts": 920,
"server/src/__tests__/plugin-worker-manager.test.ts": 1149,
"server/src/__tests__/private-hostname-guard.test.ts": 278,
"server/src/__tests__/productivity-review-service.test.ts": 9394,
"server/src/__tests__/project-icon-persistence.test.ts": 5775,
"server/src/__tests__/project-list-metrics.test.ts": 784,
"server/src/__tests__/project-shortname-resolution.test.ts": 991,
"server/src/__tests__/qa-routine-secrets-e2e.test.ts": 5272,
"server/src/__tests__/quota-windows-service.test.ts": 170,
"server/src/__tests__/quota-windows.test.ts": 360,
"server/src/__tests__/recovery-classifiers.test.ts": 1490,
"server/src/__tests__/recovery-observability.test.ts": 4447,
"server/src/__tests__/recovery-stale-issue-lock-sweep.test.ts": 4853,
"server/src/__tests__/redact-sensitive.test.ts": 219,
"server/src/__tests__/remote-http-endpoint-guard.test.ts": 211,
"server/src/__tests__/routable-blocked.test.ts": 168,
"server/src/__tests__/routine-run-telemetry.test.ts": 4859,
"server/src/__tests__/routines-service.test.ts": 9383,
"server/src/__tests__/run-continuations.test.ts": 767,
"server/src/__tests__/run-liveness.test.ts": 226,
"server/src/__tests__/runtime-api.test.ts": 173,
"server/src/__tests__/sandbox-provider-runtime.test.ts": 174,
"server/src/__tests__/secret-provider-registry.test.ts": 289,
"server/src/__tests__/secrets-service-user-secret-owner-scoped.test.ts": 4889,
"server/src/__tests__/secrets-service.test.ts": 7056,
"server/src/__tests__/server-info.test.ts": 597,
"server/src/__tests__/server-package-build-script.test.ts": 210,
"server/src/__tests__/server-startup-feedback-export.test.ts": 1325,
"server/src/__tests__/shared-telemetry-events.test.ts": 186,
"server/src/__tests__/skills-catalog-service.test.ts": 210,
"server/src/__tests__/smoke-lab.test.ts": 5240,
"server/src/__tests__/source-trust.test.ts": 4173,
"server/src/__tests__/static-index-html.test.ts": 300,
"server/src/__tests__/status-card-update-engine.test.ts": 327,
"server/src/__tests__/status-cards.test.ts": 7663,
"server/src/__tests__/storage-local-provider.test.ts": 185,
"server/src/__tests__/summary-slots.test.ts": 6169,
"server/src/__tests__/task-watchdogs-classifier.test.ts": 1103,
"server/src/__tests__/task-watchdogs-scheduler.test.ts": 5996,
"server/src/__tests__/teams-catalog-install-no-overrides.test.ts": 7509,
"server/src/__tests__/teams-catalog-service.test.ts": 492,
"server/src/__tests__/telemetry-client-flush.test.ts": 214,
"server/src/__tests__/tool-access-policy-service.test.ts": 5303,
"server/src/__tests__/tool-access-service.test.ts": 16497,
"server/src/__tests__/tool-content-guards.test.ts": 220,
"server/src/__tests__/tool-gateway-service.test.ts": 7360,
"server/src/__tests__/tool-gateway.test.ts": 11686,
"server/src/__tests__/tool-oauth-legacy-backfill.test.ts": 4623,
"server/src/__tests__/trust-preset-resolver.test.ts": 396,
"server/src/__tests__/trust-proxy.test.ts": 275,
"server/src/__tests__/ui-branding.test.ts": 210,
"server/src/__tests__/version.test.ts": 190,
"server/src/__tests__/vite-html-renderer.test.ts": 164,
"server/src/__tests__/work-products.test.ts": 789,
"server/src/__tests__/work-timeline-service.test.ts": 5529,
"server/src/__tests__/workspace-runtime.test.ts": 35281,
"server/src/__tests__/worktree-config.test.ts": 230,
"server/src/__tests__/write-path-membership.test.ts": 914,
"server/src/adapters/claude-agent-id-header.test.ts": 207,
"server/src/adapters/http/execute.test.ts": 354,
"server/src/instrumentation.test.ts": 229,
"server/src/middleware/cloud-tenant-actor.test.ts": 814,
"server/src/services/adapter-models-env.test.ts": 199,
"server/src/services/adapter-registry-bootstrap.reconcile.test.ts": 852,
"server/src/services/adapter-registry-bootstrap.test.ts": 823,
"server/src/services/environment-custom-image-terminal-sessions.test.ts": 218,
"server/src/services/execution-allowlist.test.ts": 175,
"server/src/services/execution-policy-bootstrap.test.ts": 696,
"server/src/services/heartbeat-run-runtime-status.test.ts": 227,
"server/src/services/heartbeat-stop-metadata.test.ts": 213,
"server/src/services/hot-restart.test.ts": 301,
"server/src/services/issue-thread-interactions.test.ts": 1104,
"server/src/services/managed-environments.test.ts": 1190,
"server/src/services/recovery/model-profile-hint.test.ts": 163,
"server/src/services/recovery/provider-failure-classification.test.ts": 1548,
"server/src/services/recovery/service.pause-durability.test.ts": 1497,
"server/src/services/recovery/successful-run-handoff.test.ts": 809,
"server/src/services/responsible-user-denial-run-outcomes.test.ts": 958,
"server/src/services/routines-formatter-cache.test.ts": 2665,
"server/src/services/run-log-store.test.ts": 645,
"server/src/services/run-scratch.test.ts": 232,
"server/src/services/session-workspace-cwd.test.ts": 197,
"server/src/services/workspace-runtime-read-model.test.ts": 749,
"server/src/services/workspace-runtime-ready-comment.test.ts": 1012,
"server/src/shutdown.test.ts": 261
"server/src/__tests__/access-service.test.ts": 4415,
"server/src/__tests__/access-validators.test.ts": 385,
"server/src/__tests__/activity-log-responsible-user.test.ts": 8591,
"server/src/__tests__/activity-service.test.ts": 4704,
"server/src/__tests__/adapter-models.test.ts": 875,
"server/src/__tests__/adapter-registry.test.ts": 880,
"server/src/__tests__/adapter-session-codecs.test.ts": 343,
"server/src/__tests__/agent-auth-jwt.test.ts": 408,
"server/src/__tests__/agent-auth-middleware.test.ts": 1102,
"server/src/__tests__/agent-instructions-service.test.ts": 1648,
"server/src/__tests__/agent-invokability.test.ts": 2416,
"server/src/__tests__/agent-permissions-service.test.ts": 439,
"server/src/__tests__/agent-shortname-collision.test.ts": 1432,
"server/src/__tests__/agent-skill-contract.test.ts": 218,
"server/src/__tests__/agents-adapter-config-user-secret.test.ts": 4910,
"server/src/__tests__/agents-pending-approval-config.test.ts": 4632,
"server/src/__tests__/agents-service-clear-error.test.ts": 7537,
"server/src/__tests__/agents-service-secret-bindings.test.ts": 4929,
"server/src/__tests__/api-compression.test.ts": 337,
"server/src/__tests__/app-hmr-port.test.ts": 4092,
"server/src/__tests__/app-private-hostname-gate.test.ts": 2486,
"server/src/__tests__/app-vite-dev-routing.test.ts": 2494,
"server/src/__tests__/approvals-service.test.ts": 962,
"server/src/__tests__/attachment-types.test.ts": 397,
"server/src/__tests__/attention-service.test.ts": 6385,
"server/src/__tests__/authorization-service.test.ts": 5178,
"server/src/__tests__/aws-secrets-manager-provider.test.ts": 234,
"server/src/__tests__/better-auth.test.ts": 707,
"server/src/__tests__/board-claim.test.ts": 4169,
"server/src/__tests__/board-mutation-guard.test.ts": 325,
"server/src/__tests__/body-limits.test.ts": 139,
"server/src/__tests__/budgets-service.test.ts": 4078,
"server/src/__tests__/build-commit.test.ts": 204,
"server/src/__tests__/build-version.test.ts": 2984,
"server/src/__tests__/built-in-agents.test.ts": 12350,
"server/src/__tests__/bundled-plugins.test.ts": 243,
"server/src/__tests__/change-consent-gate.test.ts": 4031,
"server/src/__tests__/claude-local-adapter-environment.test.ts": 656,
"server/src/__tests__/claude-local-adapter.test.ts": 350,
"server/src/__tests__/claude-local-execute.test.ts": 3017,
"server/src/__tests__/claude-local-skill-sync.test.ts": 292,
"server/src/__tests__/cleanup-removal-service.test.ts": 5080,
"server/src/__tests__/cloud-image-bundled-plugins.test.ts": 227,
"server/src/__tests__/codex-auth-reconciliation.test.ts": 1018,
"server/src/__tests__/codex-local-adapter-environment.test.ts": 295,
"server/src/__tests__/codex-local-adapter.test.ts": 343,
"server/src/__tests__/codex-local-execute.test.ts": 1427,
"server/src/__tests__/codex-local-skill-injection.test.ts": 301,
"server/src/__tests__/codex-local-skill-sync.test.ts": 287,
"server/src/__tests__/companies-service.test.ts": 6464,
"server/src/__tests__/company-artifacts-service.test.ts": 5752,
"server/src/__tests__/company-portability-import-batching.test.ts": 8001,
"server/src/__tests__/company-search-extract-service.test.ts": 4856,
"server/src/__tests__/company-search-service.test.ts": 6275,
"server/src/__tests__/company-skill-import-boundary.test.ts": 5181,
"server/src/__tests__/company-skill-policy-service.test.ts": 4598,
"server/src/__tests__/company-skill-test-runs-service.test.ts": 8229,
"server/src/__tests__/company-skills-catalog-service.test.ts": 7482,
"server/src/__tests__/company-skills-detail.test.ts": 4940,
"server/src/__tests__/company-skills-service.test.ts": 17289,
"server/src/__tests__/company-skills.test.ts": 1551,
"server/src/__tests__/config-file.test.ts": 270,
"server/src/__tests__/cursor-local-adapter-environment.test.ts": 343,
"server/src/__tests__/cursor-local-adapter.test.ts": 315,
"server/src/__tests__/cursor-local-execute.test.ts": 1075,
"server/src/__tests__/cursor-local-skill-injection.test.ts": 492,
"server/src/__tests__/cursor-local-skill-sync.test.ts": 498,
"server/src/__tests__/dashboard-service.test.ts": 4449,
"server/src/__tests__/decision-retention-service.test.ts": 5741,
"server/src/__tests__/decision-training.test.ts": 6474,
"server/src/__tests__/decision-wakeup.test.ts": 233,
"server/src/__tests__/decisions-service.test.ts": 6434,
"server/src/__tests__/dev-runner-output.test.ts": 232,
"server/src/__tests__/dev-runner-paths.test.ts": 141,
"server/src/__tests__/dev-runner-snapshot.test.ts": 1148,
"server/src/__tests__/dev-runner-worktree.test.ts": 213,
"server/src/__tests__/dev-server-status.test.ts": 140,
"server/src/__tests__/dev-watch-ignore.test.ts": 145,
"server/src/__tests__/docker-entrypoint.test.ts": 276,
"server/src/__tests__/document-annotations-service.test.ts": 5650,
"server/src/__tests__/documents-service.test.ts": 4497,
"server/src/__tests__/documents.test.ts": 611,
"server/src/__tests__/effective-run-config-fingerprints.test.ts": 253,
"server/src/__tests__/environment-config.test.ts": 1745,
"server/src/__tests__/environment-custom-image-terminal-ws.test.ts": 3025,
"server/src/__tests__/environment-custom-images-service.test.ts": 7289,
"server/src/__tests__/environment-execution-target.test.ts": 513,
"server/src/__tests__/environment-live-ssh.test.ts": 943,
"server/src/__tests__/environment-probe.test.ts": 1489,
"server/src/__tests__/environment-run-orchestrator.test.ts": 1013,
"server/src/__tests__/environment-runtime-driver-contract.test.ts": 5388,
"server/src/__tests__/environment-runtime.test.ts": 5862,
"server/src/__tests__/environment-service.test.ts": 4714,
"server/src/__tests__/environment-test-harness.test.ts": 460,
"server/src/__tests__/error-handler.test.ts": 442,
"server/src/__tests__/execution-lock-orphan-cleanup.test.ts": 5168,
"server/src/__tests__/execution-workspace-policy.test.ts": 484,
"server/src/__tests__/execution-workspaces-service.test.ts": 11057,
"server/src/__tests__/export-fidelity.test.ts": 4157,
"server/src/__tests__/external-objects-service.test.ts": 5386,
"server/src/__tests__/feedback-flush-controller.test.ts": 3756,
"server/src/__tests__/feedback-service.test.ts": 4651,
"server/src/__tests__/feedback-share-client.test.ts": 146,
"server/src/__tests__/file-resources.test.ts": 14085,
"server/src/__tests__/first-admin-claim.test.ts": 4124,
"server/src/__tests__/folders-service.test.ts": 6404,
"server/src/__tests__/forbidden-tokens.test.ts": 209,
"server/src/__tests__/gemini-local-adapter-environment.test.ts": 379,
"server/src/__tests__/gemini-local-adapter.test.ts": 330,
"server/src/__tests__/gemini-local-execute.test.ts": 472,
"server/src/__tests__/gemini-local-skill-sync.test.ts": 285,
"server/src/__tests__/git-credentials.test.ts": 1528,
"server/src/__tests__/google-sheets-gallery.test.ts": 994,
"server/src/__tests__/grok-local-skill-sync.test.ts": 273,
"server/src/__tests__/heartbeat-accepted-plan-workspace-refresh.test.ts": 8428,
"server/src/__tests__/heartbeat-active-run-output-watchdog.test.ts": 53902,
"server/src/__tests__/heartbeat-agent-session-message.test.ts": 2466,
"server/src/__tests__/heartbeat-archived-company-guard.test.ts": 5273,
"server/src/__tests__/heartbeat-auto-checkout.test.ts": 1122,
"server/src/__tests__/heartbeat-comment-wake-batching.test.ts": 8686,
"server/src/__tests__/heartbeat-context-summary.test.ts": 1645,
"server/src/__tests__/heartbeat-cost-accounting.test.ts": 1621,
"server/src/__tests__/heartbeat-issue-rewake-throttle.test.ts": 6959,
"server/src/__tests__/heartbeat-ledger-billing-code.test.ts": 1758,
"server/src/__tests__/heartbeat-list.test.ts": 4922,
"server/src/__tests__/heartbeat-local-environment.test.ts": 10973,
"server/src/__tests__/heartbeat-lock-release-on-reassignment.test.ts": 5081,
"server/src/__tests__/heartbeat-managed-clone-credentials.test.ts": 1255,
"server/src/__tests__/heartbeat-model-profile.test.ts": 1678,
"server/src/__tests__/heartbeat-plugin-environment.test.ts": 5596,
"server/src/__tests__/heartbeat-project-env.test.ts": 1685,
"server/src/__tests__/heartbeat-referenced-projects.test.ts": 6589,
"server/src/__tests__/heartbeat-remote-referenced-projects.test.ts": 1714,
"server/src/__tests__/heartbeat-responsible-user-invariant.test.ts": 7223,
"server/src/__tests__/heartbeat-retry-scheduling.test.ts": 10283,
"server/src/__tests__/heartbeat-run-log.test.ts": 1604,
"server/src/__tests__/heartbeat-run-status-payload.test.ts": 1639,
"server/src/__tests__/heartbeat-run-summary.test.ts": 435,
"server/src/__tests__/heartbeat-runtime-mcp-servers.test.ts": 5094,
"server/src/__tests__/heartbeat-runtime-skills.test.ts": 6782,
"server/src/__tests__/heartbeat-runtime-state.test.ts": 5485,
"server/src/__tests__/heartbeat-scheduling-suppression.test.ts": 1603,
"server/src/__tests__/heartbeat-stale-queue-invalidation.test.ts": 18475,
"server/src/__tests__/heartbeat-start-lock.test.ts": 437,
"server/src/__tests__/heartbeat-timer-wake-session-reset-pf4.test.ts": 1137,
"server/src/__tests__/heartbeat-workspace-branch-containment.test.ts": 8615,
"server/src/__tests__/heartbeat-workspace-busy.test.ts": 9802,
"server/src/__tests__/heartbeat-workspace-finalize-branch.test.ts": 7704,
"server/src/__tests__/heartbeat-workspace-ready-comment.test.ts": 1154,
"server/src/__tests__/heartbeat-workspace-session.test.ts": 1365,
"server/src/__tests__/heartbeat-worktree-suppression.test.ts": 6472,
"server/src/__tests__/heartbeat-zombie-guard.test.ts": 1704,
"server/src/__tests__/hire-hook.test.ts": 986,
"server/src/__tests__/http-log-policy.test.ts": 228,
"server/src/__tests__/http-log-redaction.test.ts": 167,
"server/src/__tests__/inbox-dismissals.test.ts": 7200,
"server/src/__tests__/instance-settings-managed-overlay.test.ts": 909,
"server/src/__tests__/instance-settings-service.test.ts": 915,
"server/src/__tests__/instrumentation.test.ts": 189,
"server/src/__tests__/invite-join-grants.test.ts": 592,
"server/src/__tests__/invite-rate-limit.test.ts": 218,
"server/src/__tests__/invite-token-entropy.test.ts": 1922,
"server/src/__tests__/issue-blocker-attention.test.ts": 6309,
"server/src/__tests__/issue-comment-redaction.test.ts": 6354,
"server/src/__tests__/issue-continuation-summary.test.ts": 932,
"server/src/__tests__/issue-execution-policy.test.ts": 462,
"server/src/__tests__/issue-goal-fallback.test.ts": 204,
"server/src/__tests__/issue-liveness.test.ts": 444,
"server/src/__tests__/issue-monitor-scheduler.test.ts": 10856,
"server/src/__tests__/issue-recovery-actions.test.ts": 7768,
"server/src/__tests__/issue-references-service.test.ts": 4311,
"server/src/__tests__/issue-rewake-throttle.test.ts": 209,
"server/src/__tests__/issue-thread-interactions-service.test.ts": 9148,
"server/src/__tests__/issue-thread-interactions-telemetry.test.ts": 4652,
"server/src/__tests__/issue-tree-control-service-unit.test.ts": 904,
"server/src/__tests__/issue-tree-control-service.test.ts": 6218,
"server/src/__tests__/issues-list-query-parsing.test.ts": 1797,
"server/src/__tests__/issues-user-context.test.ts": 1136,
"server/src/__tests__/join-request-dedupe.test.ts": 203,
"server/src/__tests__/json-schema-secret-refs.test.ts": 142,
"server/src/__tests__/live-events-ws.test.ts": 549,
"server/src/__tests__/log-redaction.test.ts": 1177,
"server/src/__tests__/logger-tz.test.ts": 158,
"server/src/__tests__/managed-config.test.ts": 414,
"server/src/__tests__/mcp-http.test.ts": 206,
"server/src/__tests__/monthly-spend-service.test.ts": 1193,
"server/src/__tests__/openclaw-gateway-adapter.test.ts": 234,
"server/src/__tests__/opencode-local-adapter.test.ts": 196,
"server/src/__tests__/opencode-local-skill-sync.test.ts": 186,
"server/src/__tests__/paperclip-env.test.ts": 302,
"server/src/__tests__/paperclip-skill-utils.test.ts": 252,
"server/src/__tests__/parse-status-filter.test.ts": 1335,
"server/src/__tests__/pi-local-adapter-environment.test.ts": 393,
"server/src/__tests__/pi-local-execute.test.ts": 334,
"server/src/__tests__/pi-local-skill-sync.test.ts": 1133,
"server/src/__tests__/pipelines-service.test.ts": 7263,
"server/src/__tests__/plugin-access-authorization-host-services.test.ts": 5438,
"server/src/__tests__/plugin-agent-sessions.test.ts": 1682,
"server/src/__tests__/plugin-config-startup-delivery.test.ts": 4023,
"server/src/__tests__/plugin-database.test.ts": 4601,
"server/src/__tests__/plugin-dev-watcher.test.ts": 508,
"server/src/__tests__/plugin-environment-driver-ready-recovery.test.ts": 2887,
"server/src/__tests__/plugin-environment-driver-seam.test.ts": 541,
"server/src/__tests__/plugin-execution-workspace-bridge.test.ts": 229,
"server/src/__tests__/plugin-host-services-span.test.ts": 1789,
"server/src/__tests__/plugin-install-autobuild.test.ts": 7316,
"server/src/__tests__/plugin-install-guard.test.ts": 1163,
"server/src/__tests__/plugin-lifecycle-restart.test.ts": 724,
"server/src/__tests__/plugin-local-folders.test.ts": 277,
"server/src/__tests__/plugin-managed-agents.test.ts": 5174,
"server/src/__tests__/plugin-managed-routines.test.ts": 5685,
"server/src/__tests__/plugin-managed-skills.test.ts": 6856,
"server/src/__tests__/plugin-orchestration-apis.test.ts": 8002,
"server/src/__tests__/plugin-sandbox-provider-config-validation.test.ts": 296,
"server/src/__tests__/plugin-sdk-orchestration-contract.test.ts": 454,
"server/src/__tests__/plugin-sdk-testing.test.ts": 272,
"server/src/__tests__/plugin-secrets-handler.test.ts": 4609,
"server/src/__tests__/plugin-telemetry-bridge.test.ts": 1224,
"server/src/__tests__/plugin-tenant-isolation.test.ts": 5093,
"server/src/__tests__/plugin-tool-dispatcher-pluginDbId.test.ts": 960,
"server/src/__tests__/plugin-ui-static.test.ts": 1092,
"server/src/__tests__/plugin-worker-manager.test.ts": 1327,
"server/src/__tests__/private-hostname-guard.test.ts": 301,
"server/src/__tests__/productivity-review-service.test.ts": 9612,
"server/src/__tests__/project-icon-persistence.test.ts": 4155,
"server/src/__tests__/project-list-metrics.test.ts": 950,
"server/src/__tests__/project-shortname-resolution.test.ts": 1177,
"server/src/__tests__/qa-routine-secrets-e2e.test.ts": 5304,
"server/src/__tests__/quota-windows-service.test.ts": 215,
"server/src/__tests__/quota-windows.test.ts": 366,
"server/src/__tests__/recovery-classifiers.test.ts": 1574,
"server/src/__tests__/recovery-observability.test.ts": 4389,
"server/src/__tests__/recovery-stale-issue-lock-sweep.test.ts": 9167,
"server/src/__tests__/redact-sensitive.test.ts": 144,
"server/src/__tests__/remote-http-endpoint-guard.test.ts": 635,
"server/src/__tests__/routable-blocked.test.ts": 210,
"server/src/__tests__/routine-run-telemetry.test.ts": 5025,
"server/src/__tests__/routines-service.test.ts": 13035,
"server/src/__tests__/run-continuations.test.ts": 808,
"server/src/__tests__/run-liveness.test.ts": 143,
"server/src/__tests__/runtime-api.test.ts": 223,
"server/src/__tests__/sandbox-provider-runtime.test.ts": 144,
"server/src/__tests__/secret-provider-registry.test.ts": 187,
"server/src/__tests__/secrets-service-user-secret-owner-scoped.test.ts": 4753,
"server/src/__tests__/secrets-service.test.ts": 7274,
"server/src/__tests__/server-info.test.ts": 846,
"server/src/__tests__/server-package-build-script.test.ts": 427,
"server/src/__tests__/server-startup-feedback-export.test.ts": 1249,
"server/src/__tests__/shared-telemetry-events.test.ts": 230,
"server/src/__tests__/skills-catalog-service.test.ts": 260,
"server/src/__tests__/smoke-lab.test.ts": 6063,
"server/src/__tests__/source-trust.test.ts": 5476,
"server/src/__tests__/static-index-html.test.ts": 294,
"server/src/__tests__/status-card-update-engine.test.ts": 385,
"server/src/__tests__/status-cards.test.ts": 8233,
"server/src/__tests__/storage-local-provider.test.ts": 234,
"server/src/__tests__/summary-slots.test.ts": 6587,
"server/src/__tests__/task-watchdogs-classifier.test.ts": 762,
"server/src/__tests__/task-watchdogs-scheduler.test.ts": 6386,
"server/src/__tests__/teams-catalog-install-no-overrides.test.ts": 9170,
"server/src/__tests__/teams-catalog-service.test.ts": 461,
"server/src/__tests__/telemetry-client-flush.test.ts": 1208,
"server/src/__tests__/tool-access-policy-service.test.ts": 6548,
"server/src/__tests__/tool-access-service.test.ts": 14498,
"server/src/__tests__/tool-content-guards.test.ts": 240,
"server/src/__tests__/tool-gateway-service.test.ts": 6241,
"server/src/__tests__/tool-gateway.test.ts": 24463,
"server/src/__tests__/tool-oauth-legacy-backfill.test.ts": 7051,
"server/src/__tests__/trust-preset-resolver.test.ts": 409,
"server/src/__tests__/trust-proxy.test.ts": 168,
"server/src/__tests__/ui-branding.test.ts": 223,
"server/src/__tests__/version.test.ts": 229,
"server/src/__tests__/vite-html-renderer.test.ts": 136,
"server/src/__tests__/work-products.test.ts": 521,
"server/src/__tests__/work-timeline-service.test.ts": 5712,
"server/src/__tests__/workspace-instance-cleanup.test.ts": 265,
"server/src/__tests__/workspace-runtime.test.ts": 37401,
"server/src/__tests__/worktree-config.test.ts": 280,
"server/src/__tests__/write-path-membership.test.ts": 736
}
}
}