Skip to content

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

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

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

Triggered via pull request August 26, 2026 08:30
Status Cancelled
Total duration 5m 11s
Artifacts 2

pr.yml

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

Annotations

58 errors and 2 warnings
General tests (workspaces-b)
Process completed with exit code 1.
[@paperclipai/db] src/issue-thread-interaction-resolver-policy-migration.test.ts > issue interaction resolver policy migration > replays safely and completes a partial prior run: packages/db/src/issue-thread-interaction-resolver-policy-migration.test.ts#L20
Error: ENOENT: no such file or directory, open '/home/runner/work/paperclip/paperclip/packages/db/src/migrations/0218_mushy_jack_murdock.sql' ❯ resolverPolicyMigrationStatements src/issue-thread-interaction-resolver-policy-migration.test.ts:20:24 ❯ src/issue-thread-interaction-resolver-policy-migration.test.ts:95:24 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errno: -2, code: 'ENOENT', syscall: 'open', path: '/home/runner/work/paperclip/paperclip/packages/db/src/migrations/0218_mushy_jack_murdock.sql' }
[@paperclipai/db] src/issue-comment-on-behalf-migration.test.ts > issue comment on-behalf attribution migration > reapplies the migration and round-trips the nullable user attribution FK: packages/db/src/issue-comment-on-behalf-migration.test.ts#L17
Error: ENOENT: no such file or directory, open '/home/runner/work/paperclip/paperclip/packages/db/src/migrations/0205_narrow_shiva.sql' ❯ migrationHash src/issue-comment-on-behalf-migration.test.ts:17:19 ❯ src/issue-comment-on-behalf-migration.test.ts:38:79 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errno: -2, code: 'ENOENT', syscall: 'open', path: '/home/runner/work/paperclip/paperclip/packages/db/src/migrations/0205_narrow_shiva.sql' }
[@paperclipai/db] src/heartbeat-context-snapshot-index-migration.test.ts > heartbeat context_snapshot expression index migration > applies full migration chain and uses the new indexes: packages/db/src/heartbeat-context-snapshot-index-migration.test.ts#L67
Error: ENOENT: no such file or directory, open '/home/runner/work/paperclip/paperclip/packages/db/src/migrations/0209_heartbeat_context_snapshot_indexes.sql' ❯ src/heartbeat-context-snapshot-index-migration.test.ts:67:28 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errno: -2, code: 'ENOENT', syscall: 'open', path: '/home/runner/work/paperclip/paperclip/packages/db/src/migrations/0209_heartbeat_context_snapshot_indexes.sql' }
[@paperclipai/db] src/decision-queue-migrations.test.ts > decision queue migrations > can be reapplied without changing schema or existing data: packages/db/src/decision-queue-migrations.test.ts#L26
Error: ENOENT: no such file or directory, open '/home/runner/work/paperclip/paperclip/packages/db/src/migrations/0198_decision_queues_and_triage.sql' ❯ reapplyDecisionQueueMigrations src/decision-queue-migrations.test.ts:26:22 ❯ src/decision-queue-migrations.test.ts:69:9 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errno: -2, code: 'ENOENT', syscall: 'open', path: '/home/runner/work/paperclip/paperclip/packages/db/src/migrations/0198_decision_queues_and_triage.sql' }
[@paperclipai/db] src/company-secret-proposals-migration.test.ts > company secret proposals migration > can be reapplied after its migration journal entry is removed: packages/db/src/company-secret-proposals-migration.test.ts#L14
Error: ENOENT: no such file or directory, open '/home/runner/work/paperclip/paperclip/packages/db/src/migrations/0207_moaning_amazoness.sql' ❯ migrationHash src/company-secret-proposals-migration.test.ts:14:19 ❯ src/company-secret-proposals-migration.test.ts:38:77 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errno: -2, code: 'ENOENT', syscall: 'open', path: '/home/runner/work/paperclip/paperclip/packages/db/src/migrations/0207_moaning_amazoness.sql' }
[@paperclipai/db] src/client.test.ts > applyPendingMigrations > preserves legacy runs while adding native persistence and replay-safe status versioning: packages/db/src/client.test.ts#L26
Error: ENOENT: no such file or directory, open '/home/runner/work/paperclip/paperclip/packages/db/src/migrations/0227_modern_pandemic.sql' ❯ migrationHash src/client.test.ts:26:19 ❯ src/client.test.ts:1415:37 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { errno: -2, code: 'ENOENT', syscall: 'open', path: '/home/runner/work/paperclip/paperclip/packages/db/src/migrations/0227_modern_pandemic.sql' }
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
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
[@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
Verify serialized server suites (5/5)
Canceling since a higher priority waiting request for pr-334 exists
Verify serialized server suites (5/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.
General tests (server (3/5))
Canceling since a higher priority waiting request for pr-334 exists
General tests (server (3/5))
The operation was canceled.
Canary Dry Run
Canceling since a higher priority waiting request for pr-334 exists
Canary Dry Run
The operation was canceled.
Verify serialized server suites (4/5)
Canceling since a higher priority waiting request for pr-334 exists
Verify serialized server suites (4/5)
The operation was canceled.
General tests (server (1/5))
Canceling since a higher priority waiting request for pr-334 exists
General tests (server (1/5))
The operation was canceled.
e2e shard (2/3)
Canceling since a higher priority waiting request for pr-334 exists
e2e shard (2/3)
The operation was canceled.
Verify serialized server suites (3/5)
Canceling since a higher priority waiting request for pr-334 exists
Verify serialized server suites (3/5)
The operation was canceled.
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 (workspaces-a (2/2))
Canceling since a higher priority waiting request for pr-334 exists
General tests (workspaces-a (2/2))
The operation was canceled.
e2e shard (3/3)
Canceling since a higher priority waiting request for pr-334 exists
e2e shard (3/3)
The operation was canceled.
e2e shard (1/3)
Canceling since a higher priority waiting request for pr-334 exists
e2e shard (1/3)
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.
PR
Canceling since a higher priority waiting request for pr-334 exists
verify
Process completed with exit code 1.
e2e shard (2/3)
No files were found with the provided path: tests/e2e/playwright-report/ tests/e2e/test-results/. No artifacts will be uploaded.
e2e shard (1/3)
No files were found with the provided path: tests/e2e/playwright-report/ tests/e2e/test-results/. No artifacts will be uploaded.

Artifacts

Produced during runtime
Name Size Digest
playwright-report-2
136 KB
sha256:9369388854aa1c51dd14be0ef77720402cb60e8bc60e32ec9b9ea020f5ca97f6
pr-lockfile Expired
159 KB
sha256:6c08639f462f76d2a269c8a13d24810b8b60e72501ef867af3ce10efbe362230