Skip to content

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

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

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

Triggered via pull request August 26, 2026 08:22
Status Cancelled
Total duration 4m 33s
Artifacts 2

pr.yml

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

Annotations

54 errors and 2 warnings
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 { enabled: true, …(2) } to match object { status: 'warning', …(2) } (1 matching property omitted from actual) - Expected + Received { - "lastFailure": { - "message": "db-backup-to-s3 failed beside backups", - "path": "/tmp/pcvt-3127-11-1vMGji/t/paperclip-health-backups-root-tKKMvo/db-backup-to-s3.failure", - }, "status": "warning", "warnings": [ { "code": "database_backup_last_failure", - "message": "db-backup-to-s3 failed beside backups", + "message": "Database backup failure marker is present.", }, ], } ❯ 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 { enabled: true, …(2) } to match object { status: 'warning', …(2) } (1 matching property omitted from actual) - Expected + Received { - "lastFailure": { - "message": "db-backup-to-s3 failed at 2026-07-06T03:17:00.000Z exit=1", - "path": "/tmp/pcvt-3127-11-1vMGji/t/paperclip-health-backups-EiO7JK/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", + "message": "Database backup failure marker is present.", }, ], } ❯ 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 { enabled: true, …(2) } to match object { status: 'warning', …(4) } (1 matching property omitted from actual) - Expected + Received @@ -1,12 +1,6 @@ { - "backupDir": "/tmp/pcvt-3127-11-1vMGji/t/paperclip-health-backups-Mb8Q8C", - "latestBackup": { - "ageHours": 33.7, - "name": "paperclip-20260705-031702.sql.gz", - }, - "maxAgeHours": 26, "status": "warning", "warnings": [ { "code": "database_backup_stale", }, ❯ src/__tests__/health.test.ts:217:37
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 (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
Verify serialized server suites (1/5)
Canceling since a higher priority waiting request for pr-334 exists
Verify serialized server suites (1/5)
The operation was canceled.
[@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
General tests (server (2/5))
Canceling since a higher priority waiting request for pr-334 exists
General tests (server (2/5))
The operation was canceled.
e2e shard (1/3)
Canceling since a higher priority waiting request for pr-334 exists
e2e shard (1/3)
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.
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 (3/5))
Canceling since a higher priority waiting request for pr-334 exists
General tests (server (3/5))
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.
Canary Dry Run
Canceling since a higher priority waiting request for pr-334 exists
Canary Dry Run
The operation was canceled.
General tests (workspaces-a (2/2))
Canceling since a higher priority waiting request for pr-334 exists
e2e shard (2/3)
Canceling since a higher priority waiting request for pr-334 exists
General tests (workspaces-a (2/2))
The operation was canceled.
e2e shard (2/3)
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 (server (5/5))
Canceling since a higher priority waiting request for pr-334 exists
General tests (server (5/5))
The operation was canceled.
General tests (workspaces-a (1/2))
Canceling since a higher priority waiting request for pr-334 exists
General tests (workspaces-a (1/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
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 (1/3)
No files were found with the provided path: tests/e2e/playwright-report/ tests/e2e/test-results/. No artifacts will be uploaded.
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.

Artifacts

Produced during runtime
Name Size Digest
playwright-report-2
45 KB
sha256:9e9c2707b577dcd3adbdad1f09adb0cd5245871dc7b7a4ca68e22bc0c3f5a5da
pr-lockfile Expired
159 KB
sha256:1ac38abf88f78d2fddaaa2c3b970d91af96446bf3fdb9aa3d4eeaaa372430d29