From 0d6d391fd9174f358382a03fead4a65556693a00 Mon Sep 17 00:00:00 2001 From: Alex Southwell <4596216+saphid@users.noreply.github.com> Date: Tue, 3 Nov 2026 14:03:45 +1100 Subject: [PATCH] fix(server): a failed scheduled run shows its error without a stack trace Co-Authored-By: Claude Opus 5.5 --- apps/server/src/scheduledTasks/ScheduledTaskService.ts | 5 ++--- .../src/scheduledTasks/ScheduledTaskService.webhook.test.ts | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/server/src/scheduledTasks/ScheduledTaskService.ts b/apps/server/src/scheduledTasks/ScheduledTaskService.ts index afeb73de3df96..433959cd0ccae 100644 --- a/apps/server/src/scheduledTasks/ScheduledTaskService.ts +++ b/apps/server/src/scheduledTasks/ScheduledTaskService.ts @@ -334,9 +334,8 @@ function requireFutureOnce( } function errorMessage(error: unknown): string { - if (Cause.isCause(error)) return Cause.pretty(error); - if (error instanceof Error) return error.message; - return String(error); + const failure = Cause.isCause(error) ? Cause.squash(error) : error; + return failure instanceof Error ? failure.message : String(failure); } function webhookPath(taskId: string, token: string): string { diff --git a/apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts b/apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts index 6303b38c05ce6..90d2ccc329cbf 100644 --- a/apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts +++ b/apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts @@ -1399,6 +1399,7 @@ it.effect("start failures release both replay keys and relay claims for redelive yield* Queue.take(launches); assert.equal((yield* sql`SELECT * FROM scheduled_task_webhook_replay_keys`).length, 0); assert.equal((yield* sql`SELECT * FROM scheduled_task_webhook_relay_deliveries`).length, 0); + assert.equal((yield* service.list()).tasks[0]!.lastRunError, "injected start failure"); const retry = yield* waitForSpan( service.triggerWebhook(request), "ScheduledTaskService.runWebhookDelivery",