diff --git a/server/src/__tests__/wakeup-request-retention.test.ts b/server/src/__tests__/wakeup-request-retention.test.ts index 9b59e490976..cd0d693979d 100644 --- a/server/src/__tests__/wakeup-request-retention.test.ts +++ b/server/src/__tests__/wakeup-request-retention.test.ts @@ -32,7 +32,8 @@ describeEmbeddedPostgres("agent wakeup request retention", () => { it("prunes old skipped and coalesced rows in bounded batches while preserving audit and referenced rows", async () => { const now = new Date("2026-08-27T12:00:00.000Z"); - const old = new Date("2026-08-19T12:00:00.000Z"); + const old = new Date("2026-08-12T12:00:00.000Z"); + const withinDiagnosticsWindow = new Date("2026-08-19T12:00:00.000Z"); const recent = new Date("2026-08-26T12:00:00.000Z"); const companyId = randomUUID(); const agentId = randomUUID(); @@ -41,6 +42,7 @@ describeEmbeddedPostgres("agent wakeup request retention", () => { coalesced: randomUUID(), completed: randomUUID(), failed: randomUUID(), + diagnosticsWindowSkipped: randomUUID(), recentSkipped: randomUUID(), referencedSkipped: randomUUID(), }; @@ -100,6 +102,15 @@ describeEmbeddedPostgres("agent wakeup request retention", () => { requestedAt: old, finishedAt: old, }, + { + id: ids.diagnosticsWindowSkipped, + companyId, + agentId, + source: "assignment", + status: "skipped", + requestedAt: withinDiagnosticsWindow, + finishedAt: withinDiagnosticsWindow, + }, { id: ids.recentSkipped, companyId, @@ -147,6 +158,7 @@ describeEmbeddedPostgres("agent wakeup request retention", () => { expect(remaining).toEqual([ ids.completed, + ids.diagnosticsWindowSkipped, ids.failed, ids.recentSkipped, ids.referencedSkipped, diff --git a/server/src/services/wakeup-request-retention.ts b/server/src/services/wakeup-request-retention.ts index 5c21bb0a47e..85b3a2039a3 100644 --- a/server/src/services/wakeup-request-retention.ts +++ b/server/src/services/wakeup-request-retention.ts @@ -1,7 +1,9 @@ import { sql } from "drizzle-orm"; import type { Db } from "@paperclipai/db"; -export const WAKEUP_REQUEST_TERMINAL_RETENTION_MS = 7 * 24 * 60 * 60 * 1000; +// Keep terminal requests for at least as long as the issue diagnostics lookback. +// The diagnostics service currently supports a 14-day wake-history window. +export const WAKEUP_REQUEST_TERMINAL_RETENTION_MS = 14 * 24 * 60 * 60 * 1000; export const WAKEUP_REQUEST_RETENTION_BATCH_SIZE = 10_000; export function wakeupRequestRetentionService(db: Db) {