Skip to content

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

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

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

Triggered via pull request August 26, 2026 07:58
Status Cancelled
Total duration 7m 29s
Artifacts 4

pr.yml

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

Annotations

95 errors
Typecheck + Release Registry
Cannot find name 'currentTable'.
Typecheck + Release Registry
Cannot find name 'currentTable'.
Typecheck + Release Registry
Cannot find name 'insertedValues'. Did you mean 'insertedTables'?
Typecheck + Release Registry
Cannot find name 'currentTable'.
Typecheck + Release Registry
Namespace '"/home/runner/work/paperclip/paperclip/packages/shared/src/index"' has no exported member 'CloudUpstreamRunEvent'.
Typecheck + Release Registry
Namespace '"/home/runner/work/paperclip/paperclip/packages/shared/src/index"' has no exported member 'CloudUpstreamConflict'.
Typecheck + Release Registry
Namespace '"/home/runner/work/paperclip/paperclip/packages/shared/src/index"' has no exported member 'CloudUpstreamWarning'.
Typecheck + Release Registry
Namespace '"/home/runner/work/paperclip/paperclip/packages/shared/src/index"' has no exported member 'CloudUpstreamSummaryCount'.
Typecheck + Release Registry
Object literal may only specify known properties, and 'configuredAuthJson' does not exist in type '{ runId: string; companyId: string; configuredCodexHome: string | null; configuredApiKey: string | null; effectiveCodexHome: string; target: MaybeResolvedExecutionTarget; cwd: string; env?: ProcessEnv | undefined; onLog: (stream: "stderr" | "stdout", chunk: string) => Promise<...>; }'.
Typecheck + Release Registry
Argument of type '"credential_rejected"' is not assignable to parameter of type 'SandboxProbeDiagnosticClassification'.
Canary Dry Run
Process completed with exit code 2.
Canary Dry Run
Object literal may only specify known properties, and 'configuredAuthJson' does not exist in type '{ runId: string; companyId: string; configuredCodexHome: string | null; configuredApiKey: string | null; effectiveCodexHome: string; target: MaybeResolvedExecutionTarget; cwd: string; env?: ProcessEnv | undefined; onLog: (stream: "stderr" | "stdout", chunk: string) => Promise<...>; }'.
Verify serialized server suites (5/5)
Process completed with exit code 1.
[@paperclipai/server] src/__tests__/health.test.ts > GET /health > surfaces redacted database backup warnings for anonymous authenticated probes: server/src/__tests__/health.test.ts#L342
AssertionError: expected { status: 'ok', …(5) } to deeply equal { status: 'ok', …(7) } - Expected + Received { "bootstrapInviteActive": false, "bootstrapStatus": "ready", "commit": "0123456789abcdef0123456789abcdef01234567", - "databaseBackup": { - "enabled": true, - "status": "warning", - "warnings": [ - { - "code": "database_backup_stale", - "message": "Latest database backup is stale.", - }, - ], - }, "deploymentExposure": "public", "deploymentMode": "authenticated", "status": "ok", - "warnings": [ - { - "code": "database_backup_stale", - "message": "Latest database backup is stale.", - }, - ], } ❯ src/__tests__/health.test.ts:342:22
[@paperclipai/server] src/__tests__/health.test.ts > GET /health > finds conventional database backup failure markers without an explicit alert file: server/src/__tests__/health.test.ts#L284
AssertionError: expected undefined to match object { status: 'warning', …(2) } - Expected: { "lastFailure": { "message": "db-backup-to-s3 failed beside backups", "path": "/tmp/pcvt-2827-11-8rsAiT/t/paperclip-health-backups-root-oyFSP9/db-backup-to-s3.failure", }, "status": "warning", "warnings": [ { "code": "database_backup_last_failure", "message": "db-backup-to-s3 failed beside backups", }, ], } + Received: undefined ❯ src/__tests__/health.test.ts:284:37
[@paperclipai/server] src/__tests__/health.test.ts > GET /health > surfaces database backup failure markers in full health details: server/src/__tests__/health.test.ts#L251
AssertionError: expected undefined to match object { status: 'warning', …(2) } - Expected: { "lastFailure": { "message": "db-backup-to-s3 failed at 2026-07-06T03:17:00.000Z exit=1", "path": "/tmp/pcvt-2827-11-8rsAiT/t/paperclip-health-backups-6vqky1/db-backup-to-s3.failure", }, "status": "warning", "warnings": [ { "code": "database_backup_last_failure", "message": "db-backup-to-s3 failed at 2026-07-06T03:17:00.000Z exit=1", }, ], } + Received: undefined ❯ src/__tests__/health.test.ts:251:37
[@paperclipai/server] src/__tests__/health.test.ts > GET /health > surfaces a stale database backup warning in full health details: server/src/__tests__/health.test.ts#L217
AssertionError: expected undefined to match object { status: 'warning', …(4) } - Expected: { "backupDir": "/tmp/pcvt-2827-11-8rsAiT/t/paperclip-health-backups-15M7cP", "latestBackup": { "ageHours": 33.7, "name": "paperclip-20260705-031702.sql.gz", }, "maxAgeHours": 26, "status": "warning", "warnings": [ { "code": "database_backup_stale", }, ], } + Received: undefined ❯ src/__tests__/health.test.ts:217:37
Build
Process completed with exit code 2.
Build
Argument of type '"credential_rejected"' is not assignable to parameter of type 'SandboxProbeDiagnosticClassification'.
Build
Object literal may only specify known properties, and 'configuredAuthJson' does not exist in type '{ runId: string; companyId: string; configuredCodexHome: string | null; configuredApiKey: string | null; effectiveCodexHome: string; target: MaybeResolvedExecutionTarget; cwd: string; env?: ProcessEnv | undefined; onLog: (stream: "stderr" | "stdout", chunk: string) => Promise<...>; }'.
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/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
[@paperclipai/ui] src/pages/IssueDetail.test.tsx > IssueDetail > shows the properties sidebar immediately on a non-first task: ui/src/pages/IssueDetail.test.tsx#L2301
AssertionError: expected "vi.fn()" to not be called at all, but actually been called 1 times Received: 1st vi.fn() call: Array [ <IssueProperties checkingMonitorNow={false} childIssues={Array []} documentDeepLink={null} hasActiveRun={false} issue={ Object { "ancestors": Array [], "assigneeAdapterOverrides": null, "assigneeAgentId": null, "assigneeUserId": null, "billingCode": null, "cancelledAt": null, "checkoutRunId": null, "companyId": "company-1", "completedAt": null, "createdAt": 2026-04-21T00:00:00.000Z, "createdByAgentId": null, "createdByUserId": null, "currentExecutionWorkspace": null, "description": "Loads after the initial pending query.", "documentSummaries": Array [], "executionAgentNameKey": null, "executionLockedAt": null, "executionPolicy": null, "executionRunId": null, "executionState": null, "executionWorkspaceId": null, "executionWorkspacePreference": null, "executionWorkspaceSettings": null, "goalId": "goal-1", "hiddenAt": null, "id": "issue-1", "identifier": "PAP-1", "issueNumber": 1, "labelIds": Array [], "labels": Array [], "originFingerprint": "default", "originId": null, "originKind": "manual", "originRunId": null, "parentId": null, "priority": "medium", "projectId": null, "projectWorkspaceId": null, "requestDepth": 0, "startedAt": null, "status": "todo", "title": "Issue detail smoke", "updatedAt": 2026-04-21T00:00:00.000Z, } } onAddSubIssue={[Function anonymous]} onCheckMonitorNow={[Function onCheckMonitorNow]} onUpdate={[Function anonymous]} />, ] Number of calls: 1 ❯ src/pages/IssueDetail.test.tsx:2301:31
[@paperclipai/ui] src/pages/IssueDetail.test.tsx > IssueDetail > shows the plan decomposition panel when the experimental flag is enabled: ui/src/pages/IssueDetail.test.tsx#L2209
AssertionError: expected "vi.fn()" to not be called at all, but actually been called 1 times Received: 1st vi.fn() call: Array [ <IssueProperties checkingMonitorNow={false} childIssues={Array []} documentDeepLink={null} hasActiveRun={false} issue={ Object { "ancestors": Array [], "assigneeAdapterOverrides": null, "assigneeAgentId": null, "assigneeUserId": null, "billingCode": null, "cancelledAt": null, "checkoutRunId": null, "companyId": "company-1", "completedAt": null, "createdAt": 2026-04-21T00:00:00.000Z, "createdByAgentId": null, "createdByUserId": null, "currentExecutionWorkspace": null, "description": "Loads after the initial pending query.", "documentSummaries": Array [], "executionAgentNameKey": null, "executionLockedAt": null, "executionPolicy": null, "executionRunId": null, "executionState": null, "executionWorkspaceId": null, "executionWorkspacePreference": null, "executionWorkspaceSettings": null, "goalId": "goal-1", "hiddenAt": null, "id": "issue-1", "identifier": "PAP-1", "issueNumber": 1, "labelIds": Array [], "labels": Array [], "originFingerprint": "default", "originId": null, "originKind": "manual", "originRunId": null, "parentId": null, "priority": "medium", "projectId": null, "projectWorkspaceId": null, "requestDepth": 0, "startedAt": null, "status": "todo", "title": "Issue detail smoke", "updatedAt": 2026-04-21T00:00:00.000Z, } } onAddSubIssue={[Function anonymous]} onCheckMonitorNow={[Function onCheckMonitorNow]} onUpdate={[Function anonymous]} />, ] Number of calls: 1 ❯ src/pages/IssueDetail.test.tsx:2209:31
[@paperclipai/ui] src/pages/CloudUpstream.test.tsx > CloudUpstream > keeps retry only for failed or cancelled runs: ui/src/pages/CloudUpstream.test.tsx#L319
AssertionError: expected '' to contain 'Retry' - Expected + Received - Retry ❯ src/pages/CloudUpstream.test.tsx:319:35
[@paperclipai/ui] src/pages/CloudUpstream.test.tsx > CloudUpstream > does not retry the OAuth callback finish mutation after an error: ui/src/pages/CloudUpstream.test.tsx#L293
AssertionError: expected "vi.fn()" to be called 1 times, but got 0 times ❯ src/pages/CloudUpstream.test.tsx:293:51
[@paperclipai/ui] src/pages/CloudUpstream.test.tsx > CloudUpstream > sends a company-prefixed redirectUri when starting Connect: ui/src/pages/CloudUpstream.test.tsx#L181
AssertionError: expected null to be truthy - Expected: true + Received: null ❯ src/pages/CloudUpstream.test.tsx:181:19
[@paperclipai/ui] src/pages/CloudUpstream.test.tsx > CloudUpstream > binds the succeeded run activation checklist to imported category counts: ui/src/pages/CloudUpstream.test.tsx#L133
AssertionError: expected '' to contain 'Re-run' - Expected + Received - Re-run ❯ src/pages/CloudUpstream.test.tsx:133:35
[@paperclipai/ui] src/components/AgentConfigForm.render.test.tsx > AgentConfigForm environment selector > tests a Codex agent after clearing the primary model to the adapter default: ui/src/components/AgentConfigForm.render.test.tsx#L917
AssertionError: expected undefined to be truthy - Expected: true + Received: undefined ❯ src/components/AgentConfigForm.render.test.tsx:917:25
[@paperclipai/ui] src/components/AgentConfigForm.render.test.tsx > AgentConfigForm environment selector > tests both the primary and cheap models when a cheap profile is configured: ui/src/components/AgentConfigForm.render.test.tsx#L884
AssertionError: expected undefined to be truthy - Expected: true + Received: undefined ❯ src/components/AgentConfigForm.render.test.tsx:884:24
[@paperclipai/ui] src/components/AgentConfigForm.render.test.tsx > AgentConfigForm environment selector > renders non-local adapter config fields in the Adapter card: ui/src/components/AgentConfigForm.render.test.tsx#L855
AssertionError: expected null to be truthy - Expected: true + Received: null ❯ src/components/AgentConfigForm.render.test.tsx:855:92
[@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: the given combination of arguments (undefined and string) is invalid for this assertion. You can use an array, a map, an object, a set, a string, or a weakset instead of a string ❯ src/components/AgentConfigForm.render.test.tsx:836:35
[@paperclipai/ui] src/components/AgentConfigForm.render.test.tsx > AgentConfigForm environment selector > keeps an existing non-runnable override visible so it can be cleared: ui/src/components/AgentConfigForm.render.test.tsx#L816
AssertionError: expected '' to contain 'Environment override' - Expected + Received - Environment override ❯ src/components/AgentConfigForm.render.test.tsx:816:18
[@paperclipai/ui] src/components/AgentConfigForm.render.test.tsx > AgentConfigForm environment selector > shows the environment override for Kimi local agents: ui/src/components/AgentConfigForm.render.test.tsx#L794
AssertionError: expected '' to contain 'Environment override' - Expected + Received - Environment override ❯ src/components/AgentConfigForm.render.test.tsx:794:18
[@paperclipai/ui] src/components/AgentConfigForm.render.test.tsx > AgentConfigForm environment selector > shows the environment override for Grok local agents: ui/src/components/AgentConfigForm.render.test.tsx#L772
AssertionError: expected '' to contain 'Environment override' - Expected + Received - Environment override ❯ src/components/AgentConfigForm.render.test.tsx:772:18
[@paperclipai/ui] src/components/AgentConfigForm.render.test.tsx > AgentConfigForm environment selector > shows concise Environment copy when one runnable non-local environment exists: ui/src/components/AgentConfigForm.render.test.tsx#L745
AssertionError: expected '' to contain 'Environment' - Expected + Received - Environment ❯ src/components/AgentConfigForm.render.test.tsx:745:18
[@paperclipai/ui] src/components/AgentConfigForm.render.test.tsx > AgentConfigForm environment selector > renders secret access as dedicated form content: ui/src/components/AgentConfigForm.render.test.tsx#L725
AssertionError: expected '' to contain 'Secret access' - Expected + Received - Secret access ❯ src/components/AgentConfigForm.render.test.tsx:725:42
e2e shard (3/3)
Process completed with exit code 1.
[@paperclipai/server] src/middleware/cloud-tenant-actor.test.ts > resolveCloudTenantActor (shared-pool hardening) > ignores a blank stack slug header: server/src/middleware/cloud-tenant-actor.test.ts#L54
ReferenceError: currentTable is not defined ❯ Object.insert src/middleware/cloud-tenant-actor.test.ts:54:7 ❯ resolveCloudTenantActor src/middleware/auth.ts:533:6 ❯ src/middleware/cloud-tenant-actor.test.ts:238:25
[@paperclipai/server] src/middleware/cloud-tenant-actor.test.ts > resolveCloudTenantActor (shared-pool hardening) > captures the optional gateway stack slug on the stack context: server/src/middleware/cloud-tenant-actor.test.ts#L54
ReferenceError: currentTable is not defined ❯ Object.insert src/middleware/cloud-tenant-actor.test.ts:54:7 ❯ resolveCloudTenantActor src/middleware/auth.ts:533:6 ❯ src/middleware/cloud-tenant-actor.test.ts:225:25
[@paperclipai/server] src/middleware/cloud-tenant-actor.test.ts > resolveCloudTenantActor (shared-pool hardening) > exposes the stack context on the actor: server/src/middleware/cloud-tenant-actor.test.ts#L54
ReferenceError: currentTable is not defined ❯ Object.insert src/middleware/cloud-tenant-actor.test.ts:54:7 ❯ resolveCloudTenantActor src/middleware/auth.ts:533:6 ❯ src/middleware/cloud-tenant-actor.test.ts:219:25
[@paperclipai/server] src/middleware/cloud-tenant-actor.test.ts > resolveCloudTenantActor (shared-pool hardening) > maps a non-owner stack role through to the membership without elevating: server/src/middleware/cloud-tenant-actor.test.ts#L54
ReferenceError: currentTable is not defined ❯ Object.insert src/middleware/cloud-tenant-actor.test.ts:54:7 ❯ resolveCloudTenantActor src/middleware/auth.ts:533:6 ❯ src/middleware/cloud-tenant-actor.test.ts:209:25
[@paperclipai/server] src/middleware/cloud-tenant-actor.test.ts > resolveCloudTenantActor (shared-pool hardening) > resolves identically from a raw upgrade-request header map via the shim: server/src/middleware/cloud-tenant-actor.test.ts#L54
ReferenceError: currentTable is not defined ❯ Object.insert src/middleware/cloud-tenant-actor.test.ts:54:7 ❯ resolveCloudTenantActor src/middleware/auth.ts:533:6 ❯ src/middleware/cloud-tenant-actor.test.ts:198:25
[@paperclipai/server] src/middleware/cloud-tenant-actor.test.ts > resolveCloudTenantActor (shared-pool hardening) > resyncs an A to B to A context transition inside the debounce window: server/src/middleware/cloud-tenant-actor.test.ts#L54
ReferenceError: currentTable is not defined ❯ Object.insert src/middleware/cloud-tenant-actor.test.ts:54:7 ❯ resolveCloudTenantActor src/middleware/auth.ts:533:6 ❯ src/middleware/cloud-tenant-actor.test.ts:175:11
[@paperclipai/server] src/middleware/cloud-tenant-actor.test.ts > resolveCloudTenantActor (shared-pool hardening) > still upserts the user, company, and membership: server/src/middleware/cloud-tenant-actor.test.ts#L54
ReferenceError: currentTable is not defined ❯ Object.insert src/middleware/cloud-tenant-actor.test.ts:54:7 ❯ resolveCloudTenantActor src/middleware/auth.ts:533:6 ❯ src/middleware/cloud-tenant-actor.test.ts:164:11
[@paperclipai/server] src/middleware/cloud-tenant-actor.test.ts > resolveCloudTenantActor (shared-pool hardening) > purges stale instance_admin rows left by pre-hardening deployments: server/src/middleware/cloud-tenant-actor.test.ts#L54
ReferenceError: currentTable is not defined ❯ Object.insert src/middleware/cloud-tenant-actor.test.ts:54:7 ❯ resolveCloudTenantActor src/middleware/auth.ts:533:6 ❯ src/middleware/cloud-tenant-actor.test.ts:157:25
[@paperclipai/server] src/middleware/cloud-tenant-actor.test.ts > resolveCloudTenantActor (shared-pool hardening) > stays scoped to exactly the stack's company when the user has no other membership rows: server/src/middleware/cloud-tenant-actor.test.ts#L54
ReferenceError: currentTable is not defined ❯ Object.insert src/middleware/cloud-tenant-actor.test.ts:54:7 ❯ resolveCloudTenantActor src/middleware/auth.ts:533:6 ❯ src/middleware/cloud-tenant-actor.test.ts:147:25
[@paperclipai/server] src/middleware/cloud-tenant-actor.test.ts > resolveCloudTenantActor (shared-pool hardening) > does not grant instance admin by default (flag off): server/src/middleware/cloud-tenant-actor.test.ts#L54
ReferenceError: currentTable is not defined ❯ Object.insert src/middleware/cloud-tenant-actor.test.ts:54:7 ❯ resolveCloudTenantActor src/middleware/auth.ts:533:6 ❯ src/middleware/cloud-tenant-actor.test.ts:137:25
[@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: [ "2722f6fa-92d2-41c8-a2ae-9225bd936251", - "environmentDestroyLease", - ObjectContaining { + "environmentAcquireLease", + { + "adapterType": undefined, + "agentId": "54cf2265-57d0-46ed-968d-8c0e215b4771", + "companyId": "9dff568a-97f9-4de7-81e4-61fb6de9f190", + "config": { + "image": "fake:test", + "reuseLease": true, + "timeoutMs": 1234, + }, "driverKey": "fake-plugin", - "providerLeaseId": "stale-plugin-lease", + "environmentId": "5584d8fc-f1d3-4830-8046-787a183590f9", + "executionWorkspaceId": "554078ea-4929-462f-8fd7-697f7a29ba62", + "issueId": null, + "runId": "66fe2c9c-b611-4f85-94d6-1ec9ac1047c9", + "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 [ "e2862817-dd15-4ba3-b285-c833acaad28e", - "environmentResumeLease", + "environmentAcquireLease", { + "adapterType": undefined, + "agentId": "0b00ddcd-d3b3-405e-9937-36eb428796d5", + "companyId": "bab16eef-0b46-4517-8365-b6bf05fc43b0", + "config": { + "image": "fake:test", + "reuseLease": true, + "timeoutMs": 1234, + }, "driverKey": "fake-plugin", - "providerLeaseId": "stale-plugin-lease", + "environmentId": "ebb689e9-6a5b-423a-be14-1af86dd92db0", + "executionWorkspaceId": "5836ee8d-6a9a-41ff-bbe5-77fa2ecae8cb", + "issueId": null, + "runId": "717846c3-ce7d-4f72-8908-7393f2b2f30e", + "workspaceMode": "shared_workspace", }, 31234, ] ❯ src/__tests__/environment-runtime.test.ts:4324:32
e2e shard (2/3)
Process completed with exit code 1.
e2e
Process completed with exit code 1.
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.
[@paperclipai/server] src/__tests__/instance-settings-service.test.ts > instanceSettingsService with env overrides > getExperimental() applies overrides over stored values: server/src/__tests__/instance-settings-service.test.ts#L575
AssertionError: expected false to be true // Object.is equality - Expected + Received - true + false ❯ src/__tests__/instance-settings-service.test.ts:575:38
[@paperclipai/server] src/__tests__/instance-settings-service.test.ts > parseInstanceSettingsOverrides > strips server-managed worktree activation fields from experimental overrides: server/src/__tests__/instance-settings-service.test.ts#L490
AssertionError: expected { enableEnvironments: false, …(33) } to deeply equal { enableApps: true } - Expected + Received { + "autoRestartDevServerWhenIdle": false, + "cloudBilling": false, + "cloudTrialBanner": false, "enableApps": true, + "enableBetaSkills": false, + "enableBuiltInAgents": false, + "enableCases": false, + "enableClassicTaskInterface": false, + "enableCloudSync": false, + "enableConferenceRoomChat": false, + "enableDecisions": false, + "enableEnvironments": false, + "enableExperimentalFileViewer": false, + "enableExternalObjects": false, + "enableGoalsSidebarLink": false, + "enableIsolatedWorkspaces": false, + "enableIssueGraphLivenessAutoRecovery": false, + "enableIssuePlanDecompositions": false, + "enableManagedSandboxOnly": false, + "enableNativeRunner": false, + "enableOwnerInstanceAdmin": false, + "enablePipelines": false, + "enableSandboxDuplexBridge": false, + "enableServerInfoDebugView": false, + "enableSimplifiedEnglishInteractions": false, + "enableSmokeLab": false, + "enableStatusCards": false, + "enableStreamlinedLeftNavigation": true, + "enableSummaries": false, + "enableTaskWatchdogs": false, + "enableWorkspaceBranchReconcileForward": true, + "enableWorkspaceDirtyQuarantineRepair": true, + "enableWorktreeRunExecution": false, + "issueGraphLivenessAutoRecoveryLookbackHours": 24, } ❯ src/__tests__/instance-settings-service.test.ts:490:36
[@paperclipai/server] src/__tests__/instance-settings-service.test.ts > parseInstanceSettingsOverrides > drops a section that fails validation: server/src/__tests__/instance-settings-service.test.ts#L482
AssertionError: expected { censorUsernameInLogs: false, …(3) } to deeply equal { keyboardShortcuts: true } - Expected + Received { + "backupRetention": { + "dailyDays": 7, + "monthlyMonths": 1, + "weeklyWeeks": 4, + }, + "censorUsernameInLogs": false, + "feedbackDataSharingPreference": "prompt", "keyboardShortcuts": true, } ❯ src/__tests__/instance-settings-service.test.ts:482:31
[@paperclipai/server] src/__tests__/instance-settings-service.test.ts > parseInstanceSettingsOverrides > strips unknown keys within a section: server/src/__tests__/instance-settings-service.test.ts#L474
AssertionError: expected { enableEnvironments: false, …(33) } to deeply equal { enableApps: true } - Expected + Received { + "autoRestartDevServerWhenIdle": false, + "cloudBilling": false, + "cloudTrialBanner": false, "enableApps": true, + "enableBetaSkills": false, + "enableBuiltInAgents": false, + "enableCases": false, + "enableClassicTaskInterface": false, + "enableCloudSync": false, + "enableConferenceRoomChat": false, + "enableDecisions": false, + "enableEnvironments": false, + "enableExperimentalFileViewer": false, + "enableExternalObjects": false, + "enableGoalsSidebarLink": false, + "enableIsolatedWorkspaces": false, + "enableIssueGraphLivenessAutoRecovery": false, + "enableIssuePlanDecompositions": false, + "enableManagedSandboxOnly": false, + "enableNativeRunner": false, + "enableOwnerInstanceAdmin": false, + "enablePipelines": false, + "enableSandboxDuplexBridge": false, + "enableServerInfoDebugView": false, + "enableSimplifiedEnglishInteractions": false, + "enableSmokeLab": false, + "enableStatusCards": false, + "enableStreamlinedLeftNavigation": true, + "enableSummaries": false, + "enableTaskWatchdogs": false, + "enableWorkspaceBranchReconcileForward": true, + "enableWorkspaceDirtyQuarantineRepair": true, + "enableWorktreeRunExecution": false, + "issueGraphLivenessAutoRecoveryLookbackHours": 24, } ❯ src/__tests__/instance-settings-service.test.ts:474:36
[@paperclipai/server] src/__tests__/instance-settings-service.test.ts > parseInstanceSettingsOverrides > parses experimental boolean overrides: server/src/__tests__/instance-settings-service.test.ts#L450
AssertionError: expected { enableEnvironments: false, …(33) } to deeply equal { enableApps: true, …(1) } - Expected + Received { + "autoRestartDevServerWhenIdle": false, + "cloudBilling": false, + "cloudTrialBanner": false, "enableApps": true, + "enableBetaSkills": false, + "enableBuiltInAgents": false, + "enableCases": false, + "enableClassicTaskInterface": false, + "enableCloudSync": false, + "enableConferenceRoomChat": false, + "enableDecisions": false, + "enableEnvironments": false, + "enableExperimentalFileViewer": false, + "enableExternalObjects": false, + "enableGoalsSidebarLink": false, + "enableIsolatedWorkspaces": false, + "enableIssueGraphLivenessAutoRecovery": false, + "enableIssuePlanDecompositions": false, + "enableManagedSandboxOnly": false, + "enableNativeRunner": false, + "enableOwnerInstanceAdmin": false, "enablePipelines": true, + "enableSandboxDuplexBridge": false, + "enableServerInfoDebugView": false, + "enableSimplifiedEnglishInteractions": false, + "enableSmokeLab": false, + "enableStatusCards": false, + "enableStreamlinedLeftNavigation": true, + "enableSummaries": false, + "enableTaskWatchdogs": false, + "enableWorkspaceBranchReconcileForward": true, + "enableWorkspaceDirtyQuarantineRepair": true, + "enableWorktreeRunExecution": false, + "issueGraphLivenessAutoRecoveryLookbackHours": 24, } ❯ src/__tests__/instance-settings-service.test.ts:450:36
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.
[@paperclipai/server] src/__tests__/cli-auth-me-capabilities.test.ts > GET /cli-auth/me capabilities > reflects the visibility policy for non-admin members and flag toggles in features: server/src/__tests__/cli-auth-me-capabilities.test.ts#L102
AssertionError: expected false to be true // Object.is equality - Expected + Received - true + false ❯ src/__tests__/cli-auth-me-capabilities.test.ts:102:60
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
353 KB
sha256:a03171ff75a5404dfa097ef91e6ab08b298ffb30cf7a3b158209cda9deaa12a8
playwright-report-1
438 KB
sha256:782a5ddb0f3bb12e83c8a632bb63eb42080242edb7153b221f697197c7a387c7
playwright-report-2
543 KB
sha256:56a3f16863c0021d13c9f15346281422c6bf30a43ededc9ad5d626e5256af7a5
pr-lockfile Expired
159 KB
sha256:f0222c42d20774205926f96b262c816ac1e23ca938767c062429572bb15bd48e