Rebase onto upstream/master (2026-08-26): 558 commits (d5b9f6c8..821573ed) #565
pr.yml
on: pull_request
policy
46s
Matrix: e2e_shards
Matrix: general_tests
Canary Dry Run
1m 41s
Matrix: verify_serialized_server
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 > schedules an infra retry for a setup failure caused by a transient sandbox provider worker restart:
server/src/__tests__/heartbeat-process-recovery.test.ts#L3368
AssertionError: Target cannot be null or undefined.
❯ src/__tests__/heartbeat-process-recovery.test.ts:3368:18
|
|
[@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/InviteLanding.test.tsx > InviteLandingPage > refreshes the companies cache with the joined company before redirecting a fresh authenticated invitee:
ui/src/pages/InviteLanding.test.tsx#L638
AssertionError: expected 1 to be greater than 2
❯ src/pages/InviteLanding.test.tsx:638:49
|
|
[@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 > omits undefined adapter config entries when testing a create form with the default model:
ui/src/components/AgentConfigForm.render.test.tsx#L968
AssertionError: expected undefined to be truthy
- Expected:
true
+ Received:
undefined
❯ src/components/AgentConfigForm.render.test.tsx:968:24
|
|
[@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__/environment-execution-target.test.ts > resolveEnvironmentExecutionTarget > suppresses the buffered onLog dump when the runner reports streamed output, and forwards onOutput:
server/src/__tests__/environment-execution-target.test.ts#L260
AssertionError: expected { …(11) } to have property "onOutput"
❯ src/__tests__/environment-execution-target.test.ts:260:41
|
|
[@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
|
|