Skip to content

Rebase onto upstream/master (2026-08-26): 558 commits (d5b9f6c8..821573ed) #573

Rebase onto upstream/master (2026-08-26): 558 commits (d5b9f6c8..821573ed)

Rebase onto upstream/master (2026-08-26): 558 commits (d5b9f6c8..821573ed) #573

Triggered via pull request August 26, 2026 08:36
Status Cancelled
Total duration 6m 38s
Artifacts 4

pr.yml

on: pull_request
Matrix: e2e_shards
Matrix: general_tests
Typecheck + Release Registry
1m 47s
Typecheck + Release Registry
Build
2m 9s
Build
Matrix: verify_serialized_server
Fit to window
Zoom out
Zoom in

Annotations

60 errors
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > the mission step, reached with a company that already exists > still writes the mission when the pre-write read also fails: ui/src/components/OnboardingWizard.step.test.tsx#L481
AssertionError: expected "vi.fn()" to be called with arguments: [ 'company-1', ObjectContaining{…} ] Number of calls: 0 ❯ src/components/OnboardingWizard.step.test.tsx:481:35
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > the mission step, reached with a company that already exists > saves the mission it asked for: ui/src/components/OnboardingWizard.step.test.tsx#L393
AssertionError: expected "vi.fn()" to be called with arguments: [ 'company-1', ObjectContaining{…} ] Number of calls: 0 ❯ src/components/OnboardingWizard.step.test.tsx:393:35
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > re-decides the company when the route names a different one: ui/src/components/OnboardingWizard.step.test.tsx#L312
AssertionError: expected 'other' to be 'agent' // Object.is equality Expected: "agent" Received: "other" ❯ src/components/OnboardingWizard.step.test.tsx:312:27
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > does not move an open wizard when the dialog is re-opened with a new step: ui/src/components/OnboardingWizard.step.test.tsx#L303
AssertionError: expected 'other' to be 'mission' // Object.is equality Expected: "mission" Received: "other" ❯ src/components/OnboardingWizard.step.test.tsx:303:27
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > does not move an open wizard when a later refetch finds a mission: ui/src/components/OnboardingWizard.step.test.tsx#L273
AssertionError: expected 'other' to be 'agent' // Object.is equality Expected: "agent" Received: "other" ❯ src/components/OnboardingWizard.step.test.tsx:273:27
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > opens on the agent step when the goals lookup fails outright: ui/src/components/OnboardingWizard.step.test.tsx#L261
AssertionError: expected 'other' to be 'agent' // Object.is equality Expected: "agent" Received: "other" ❯ src/components/OnboardingWizard.step.test.tsx:261:27
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > opens on the agent step without waiting for the goals lookup: ui/src/components/OnboardingWizard.step.test.tsx#L252
AssertionError: expected 'other' to be 'agent' // Object.is equality Expected: "agent" Received: "other" ❯ src/components/OnboardingWizard.step.test.tsx:252:27
[@paperclipai/ui] src/components/OnboardingWizard.step.test.tsx > OnboardingWizard — which step it lands on > opens a company that already has its mission on the agent step: ui/src/components/OnboardingWizard.step.test.tsx#L233
AssertionError: expected 'other' to be 'agent' // Object.is equality Expected: "agent" Received: "other" ❯ src/components/OnboardingWizard.step.test.tsx:233:27
Verify serialized server suites (2/5)
Process completed with exit code 1.
[@paperclipai/server] src/__tests__/invite-url-public-base-url.test.ts > invite URL: authPublicBaseUrl precedence > strips trailing slash from authPublicBaseUrl before joining with invite path: server/src/routes/access.ts#L2658
Error: [vitest] No "instanceSettingsService" export is defined on the "../services/index.js" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("../services/index.js"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ accessRoutes src/routes/access.ts:2658:28 ❯ createApp src/__tests__/invite-url-public-base-url.test.ts:101:5 ❯ src/__tests__/invite-url-public-base-url.test.ts:159:17
[@paperclipai/server] src/__tests__/invite-url-public-base-url.test.ts > invite URL: authPublicBaseUrl precedence > falls back to request-derived host when authPublicBaseUrl is not configured: server/src/routes/access.ts#L2658
Error: [vitest] No "instanceSettingsService" export is defined on the "../services/index.js" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("../services/index.js"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ accessRoutes src/routes/access.ts:2658:28 ❯ createApp src/__tests__/invite-url-public-base-url.test.ts:101:5 ❯ src/__tests__/invite-url-public-base-url.test.ts:144:17
[@paperclipai/server] src/__tests__/invite-url-public-base-url.test.ts > invite URL: authPublicBaseUrl precedence > uses authPublicBaseUrl for inviteUrl when configured, ignoring request host: server/src/routes/access.ts#L2658
Error: [vitest] No "instanceSettingsService" export is defined on the "../services/index.js" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("../services/index.js"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ accessRoutes src/routes/access.ts:2658:28 ❯ createApp src/__tests__/invite-url-public-base-url.test.ts:101:5 ❯ src/__tests__/invite-url-public-base-url.test.ts:126:17
General tests (workspaces-b)
Process completed with exit code 1.
[@paperclipai/adapter-utils] src/execution-target-sandbox.test.ts > sandbox adapter execution targets > applies the remote sandbox fallback when adapter timeoutSec is unset: packages/adapter-utils/src/execution-target-sandbox.test.ts#L1523
Error: Calling the suite function inside test function is not allowed. It can be only called at the top level or inside another suite function. ❯ src/execution-target-sandbox.test.ts:1523:3
Verify serialized server suites (1/5)
Process completed with exit code 1.
[@paperclipai/server] src/__tests__/heartbeat-process-recovery.test.ts > heartbeat orphaned process recovery > soft-drains: a second heartbeat service instance also suppresses new-run dispatch once shutdown begins: server/src/services/heartbeat.ts#L10997
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator)) ❯ Object.drainRunningRunsForShutdown src/services/heartbeat.ts:10997:41 ❯ src/__tests__/heartbeat-process-recovery.test.ts:2070:28
[@paperclipai/server] src/__tests__/heartbeat-process-recovery.test.ts > heartbeat orphaned process recovery > soft-drains: a sub-interval drain timeout never oversleeps past the deadline: server/src/services/heartbeat.ts#L10997
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator)) ❯ Object.drainRunningRunsForShutdown src/services/heartbeat.ts:10997:41 ❯ src/__tests__/heartbeat-process-recovery.test.ts:2025:21
[@paperclipai/server] src/__tests__/heartbeat-process-recovery.test.ts > heartbeat orphaned process recovery > soft-drains: the wait is bounded by the drain timeout: server/src/services/heartbeat.ts#L10997
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator)) ❯ Object.drainRunningRunsForShutdown src/services/heartbeat.ts:10997:41 ❯ src/__tests__/heartbeat-process-recovery.test.ts:1987:21
[@paperclipai/server] src/__tests__/heartbeat-process-recovery.test.ts > heartbeat orphaned process recovery > soft-drains: a run still running at the drain deadline is interrupted and retried: server/src/services/heartbeat.ts#L10997
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator)) ❯ Object.drainRunningRunsForShutdown src/services/heartbeat.ts:10997:41 ❯ src/__tests__/heartbeat-process-recovery.test.ts:1951:36
[@paperclipai/server] src/__tests__/heartbeat-process-recovery.test.ts > heartbeat orphaned process recovery > soft-drains: new-run dispatch is quiesced before the drain wait begins: server/src/services/heartbeat.ts#L10997
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator)) ❯ Object.drainRunningRunsForShutdown src/services/heartbeat.ts:10997:41 ❯ src/__tests__/heartbeat-process-recovery.test.ts:1932:21
[@paperclipai/server] src/__tests__/heartbeat-process-recovery.test.ts > heartbeat orphaned process recovery > soft-drains: a run that finishes within the drain window is not interrupted: server/src/services/heartbeat.ts#L10997
TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator)) ❯ Object.drainRunningRunsForShutdown src/services/heartbeat.ts:10997:41 ❯ src/__tests__/heartbeat-process-recovery.test.ts:1888:36
[@paperclipai/ui] src/components/CompanySettingsSidebar.test.tsx > CompanySettingsSidebar operator-hidden entries > hides operator-hidden company pages: ui/src/components/CompanySettingsSidebar.test.tsx#L628
AssertionError: expected 'PaperclipProfileEnvironmentsAccessHea…' to contain 'General' Expected: "General" Received: "PaperclipProfileEnvironmentsAccessHeartbeatsExperimentalPluginsAdapters" ❯ src/components/CompanySettingsSidebar.test.tsx:628:35
[@paperclipai/ui] src/components/CompanySettingsSidebar.test.tsx > CompanySettingsSidebar operator-hidden entries > skips operator-hidden pages and their queries: ui/src/components/CompanySettingsSidebar.test.tsx#L595
AssertionError: expected 'PaperclipProfileEnvironmentsAccessExp…' to contain 'General' Expected: "General" Received: "PaperclipProfileEnvironmentsAccessExportImportExperimentalAdapters" ❯ src/components/CompanySettingsSidebar.test.tsx:595:35
[@paperclipai/ui] src/components/CompanySettingsSidebar.test.tsx > CompanySettingsSidebar > degrades closed: gated entries hidden while capabilities are unavailable: ui/src/components/CompanySettingsSidebar.test.tsx#L503
AssertionError: expected 'PaperclipProfileEnvironmentsAccessHea…' to contain 'Company Settings' Expected: "Company Settings" Received: "PaperclipProfileEnvironmentsAccessHeartbeatsExportImportExperimentalPluginsAdapters" ❯ src/components/CompanySettingsSidebar.test.tsx:503:35
[@paperclipai/ui] src/components/CompanySettingsSidebar.test.tsx > CompanySettingsSidebar > renders instance plugin links while filtering sandbox-provider-only plugins: ui/src/components/CompanySettingsSidebar.test.tsx#L419
AssertionError: expected [ …(4) ] to deeply equal [ …(2) ] - Expected + Received [ "/company/settings/instance/plugins/linear", "/company/settings/instance/plugins/hybrid", + "/company/settings/instance/plugins/linear", + "/company/settings/instance/plugins/hybrid", ] ❯ src/components/CompanySettingsSidebar.test.tsx:419:66
[@paperclipai/ui] src/components/CompanySettingsSidebar.test.tsx > CompanySettingsSidebar > renders one unified settings list without company or instance headers: ui/src/components/CompanySettingsSidebar.test.tsx#L238
AssertionError: expected Set{ '/company/settings', …(1) } to deeply equal Set{ '/company/settings' } - Expected + Received Set { "/company/settings", + "/company/settings/instance/general", } ❯ src/components/CompanySettingsSidebar.test.tsx:238:8
[@paperclipai/ui] src/components/AgentConfigForm.render.test.tsx > AgentConfigForm environment selector > labels the platform-managed instance default by name, without the driver key: ui/src/components/AgentConfigForm.render.test.tsx#L836
AssertionError: expected 'Default: LocalPaperclip Computer' to contain 'Default: Paperclip Computer' Expected: "Default: Paperclip Computer" Received: "Default: LocalPaperclip Computer" ❯ src/components/AgentConfigForm.render.test.tsx:836:35
[@paperclipai/ui] src/pages/NewAgent.test.tsx > NewAgent Claude subscription login > applies a stored token first and starts a replacement login with the captured version: ui/src/pages/NewAgent.test.tsx#L379
Error: Test timed out in 5000ms. If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". ❯ src/pages/NewAgent.test.tsx:379:3
[@paperclipai/ui] src/pages/NewAgent.test.tsx > NewAgent Claude subscription login > stores the secret and adds the fixed binding through the create request, with no token in the DOM: ui/src/pages/NewAgent.test.tsx#L338
Error: Test timed out in 5000ms. If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". ❯ src/pages/NewAgent.test.tsx:338:3
[@paperclipai/ui] src/pages/NewAgent.test.tsx > NewAgent Claude subscription login > shows Log in for a Claude sandbox before Create agent: ui/src/pages/NewAgent.test.tsx#L329
AssertionError: expected undefined to be truthy - Expected: true + Received: undefined ❯ src/pages/NewAgent.test.tsx:329:25
e2e shard (3/3)
Process completed with exit code 1.
[@paperclipai/server] src/__tests__/environment-runtime.test.ts > environmentRuntimeService > persists the plugin's resolved adapter type and image into the reusable lease scope when the server has no per-run hint: server/src/services/environment-runtime.ts#L1817
TypeError: pluginWorkerManager.getWorker is not a function ❯ Object.acquireRunLease src/services/environment-runtime.ts:1817:31 ❯ Object.acquireRunLease src/services/environment-runtime.ts:3478:21 ❯ src/__tests__/environment-runtime.test.ts:5943:22
[@paperclipai/server] src/__tests__/environment-runtime.test.ts > environmentRuntimeService > does not reuse a plugin-backed sandbox lease scoped to a different concrete adapter type: server/src/services/environment-runtime.ts#L1817
TypeError: pluginWorkerManager.getWorker is not a function ❯ Object.acquireRunLease src/services/environment-runtime.ts:1817:31 ❯ Object.acquireRunLease src/services/environment-runtime.ts:3478:21 ❯ src/__tests__/environment-runtime.test.ts:5810:22
[@paperclipai/server] src/__tests__/environment-runtime.test.ts > environmentRuntimeService > does not reuse a plugin-backed sandbox lease when both the stored scope and the run's adapter type are null: server/src/services/environment-runtime.ts#L1817
TypeError: pluginWorkerManager.getWorker is not a function ❯ Object.acquireRunLease src/services/environment-runtime.ts:1817:31 ❯ Object.acquireRunLease src/services/environment-runtime.ts:3478:21 ❯ src/__tests__/environment-runtime.test.ts:5762:22
[@paperclipai/server] src/__tests__/environment-runtime.test.ts > environmentRuntimeService > does not reuse a plugin-backed sandbox lease scoped to a concrete adapter type when the run requests none: server/src/services/environment-runtime.ts#L1817
TypeError: pluginWorkerManager.getWorker is not a function ❯ Object.acquireRunLease src/services/environment-runtime.ts:1817:31 ❯ Object.acquireRunLease src/services/environment-runtime.ts:3478:21 ❯ src/__tests__/environment-runtime.test.ts:5714:22
[@paperclipai/server] src/__tests__/environment-runtime.test.ts > environmentRuntimeService > does not reuse a plugin-backed sandbox lease whose stored scope has a null adapter type when the run requests one: server/src/services/environment-runtime.ts#L1817
TypeError: pluginWorkerManager.getWorker is not a function ❯ Object.acquireRunLease src/services/environment-runtime.ts:1817:31 ❯ Object.acquireRunLease src/services/environment-runtime.ts:3478:21 ❯ src/__tests__/environment-runtime.test.ts:5668:22
[@paperclipai/server] src/__tests__/environment-runtime.test.ts > environmentRuntimeService > resumes a legacy secret-blind reusable sandbox lease via the runtime fallback when the environment has no secret refs: server/src/services/environment-runtime.ts#L1817
TypeError: pluginWorkerManager.getWorker is not a function ❯ Object.acquireRunLease src/services/environment-runtime.ts:1817:31 ❯ Object.acquireRunLease src/services/environment-runtime.ts:3478:21 ❯ src/__tests__/environment-runtime.test.ts:5549:22
[@paperclipai/server] src/__tests__/environment-runtime.test.ts > environmentRuntimeService > does not resume a legacy secret-blind reusable sandbox lease for a secret-bearing environment even on the same active run: server/src/services/environment-runtime.ts#L1817
TypeError: pluginWorkerManager.getWorker is not a function ❯ Object.acquireRunLease src/services/environment-runtime.ts:1817:31 ❯ Object.acquireRunLease src/services/environment-runtime.ts:3478:21 ❯ src/__tests__/environment-runtime.test.ts:5468:22
[@paperclipai/server] src/__tests__/environment-runtime.test.ts > environmentRuntimeService > does not resume released reusable plugin sandbox leases after an in-place secret value change under the same version: server/src/services/environment-runtime.ts#L1817
TypeError: pluginWorkerManager.getWorker is not a function ❯ Object.acquireRunLease src/services/environment-runtime.ts:1817:31 ❯ Object.acquireRunLease src/services/environment-runtime.ts:3478:21 ❯ src/__tests__/environment-runtime.test.ts:5203:19
[@paperclipai/server] src/__tests__/environment-runtime.test.ts > environmentRuntimeService > fails closed and does not resume when a worker restart drops the resume method after the capability snapshot: server/src/__tests__/environment-runtime.test.ts#L4530
AssertionError: expected "vi.fn()" to be called with arguments: [ …(4) ] Received: 1st vi.fn() call: [ "fa8cbbbd-3ab4-43ca-a549-422178e97494", - "environmentDestroyLease", - ObjectContaining { + "environmentAcquireLease", + { + "adapterType": undefined, + "agentId": "3733353f-6e83-4509-a78c-508adfc6f298", + "companyId": "4a0f024c-6e37-44c0-a433-3673b433c0b6", + "config": { + "image": "fake:test", + "reuseLease": true, + "timeoutMs": 1234, + }, "driverKey": "fake-plugin", - "providerLeaseId": "stale-plugin-lease", + "environmentId": "d0272c00-bde7-472b-8cac-ba463bdd2451", + "executionWorkspaceId": "705fd0f3-1fd5-4ce0-8f6e-6e10c7f86e46", + "issueId": null, + "runId": "33515f6a-d4ac-40b4-98fe-e1d65473bfda", + "workspaceMode": "shared_workspace", }, 31234, ] Number of calls: 1 ❯ src/__tests__/environment-runtime.test.ts:4530:32
[@paperclipai/server] src/__tests__/environment-runtime.test.ts > environmentRuntimeService > falls back to acquire when plugin-backed sandbox lease resume throws: server/src/__tests__/environment-runtime.test.ts#L4324
AssertionError: expected 1st "vi.fn()" call to have been called with [ …(4) ] - Expected + Received [ "67a79845-120c-4aca-9894-2e688e7d8071", - "environmentResumeLease", + "environmentAcquireLease", { + "adapterType": undefined, + "agentId": "c832118d-72e1-4c5a-8794-08df5d5ad7d4", + "companyId": "0137f3f4-e72b-4440-a2e0-d5df14dc2e2c", + "config": { + "image": "fake:test", + "reuseLease": true, + "timeoutMs": 1234, + }, "driverKey": "fake-plugin", - "providerLeaseId": "stale-plugin-lease", + "environmentId": "57a1eeca-8348-45b3-94b6-30a3fa9d826a", + "executionWorkspaceId": "91f2f4f5-5caa-4d24-a1b7-64eb0623ec7a", + "issueId": null, + "runId": "4492b1cb-0034-42f7-916c-ed1ce9a9fc28", + "workspaceMode": "shared_workspace", }, 31234, ] ❯ src/__tests__/environment-runtime.test.ts:4324:32
General tests (server (4/5))
Canceling since a higher priority waiting request for pr-334 exists
General tests (server (4/5))
The operation was canceled.
General tests (server (2/5))
Canceling since a higher priority waiting request for pr-334 exists
General tests (server (2/5))
The operation was canceled.
e2e shard (2/3)
Canceling since a higher priority waiting request for pr-334 exists
General tests (server (1/5))
Canceling since a higher priority waiting request for pr-334 exists
e2e shard (2/3)
The operation was canceled.
General tests (server (1/5))
The operation was canceled.
General tests (server (5/5))
Canceling since a higher priority waiting request for pr-334 exists
General tests (server (5/5))
The operation was canceled.
e2e
Process completed with exit code 1.
verify
Process completed with exit code 1.
PR
Canceling since a higher priority waiting request for pr-334 exists

Artifacts

Produced during runtime
Name Size Digest
playwright-report-0
354 KB
sha256:bfa3246744be4180594dc113f0bffa0cfebe638640d2f83b60070ad4097f9e37
playwright-report-1
45.7 KB
sha256:f74e35022e2c78da9db6c81b0b57605c48b43185d8d3c3d660d0f992be5ca5f1
playwright-report-2
535 KB
sha256:2a50ef312e11b91055618e42c7c80bdd171316d3e2ae1f0e7179b057fa4f12e3
pr-lockfile Expired
159 KB
sha256:6f82f7ed6128c62957e05181358d81beeeabb194c232a35ec627da8230de6b31