Skip to main content
← Back to list
01Issue
BugShippedSwamp CLIPublic
Assigneesstack72

Relationships

#2309 Scheduled runs that suspend on an approval gate are logged as failures

Opened by hammz · 9/21/2026· Shipped 9/21/2026

Found while triaging swamp-club#2303; deliberately left out of that fix, which is scoped to the webhook path.

Summary

A scheduled workflow containing an approval step suspends rather than completing. ScheduledExecutionService does not recognise that outcome and reports the run as a failure.

Cause

src/libswamp/workflows/scheduled_execution.ts:610-631 captures the started, completed, cancelled and error events from the run stream, but not suspended. A suspended run therefore leaves the completed run view unset and no stream error recorded, so it falls into the final else arm and is logged at error level with the message about the workflow not completing, and emits schedule_failed. That event feeds runMetricsTracker with the failed bucket, so the health endpoint counts a failure for a run that is merely waiting on an approver.

Expected

A suspended scheduled run is not reported as a failure and does not record a failed health entry.

Note

The fix for swamp-club#2303 gives the webhook arm an explicit suspended branch. Once that lands the webhook and scheduled arms will differ, and the webhook one is the correct model to copy here.

02Bog Flow
✓OPEN✓TRIAGED✓IN PROGRESS✓SHIPPED+ 1 MOREASSIGNED+ 2 MOREREVIEW+ 8 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

9/21/2026, 10:59:05 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack729/21/2026, 10:25:07 PM
Editable. Press Enter to edit.

stack72 commented 9/21/2026, 10:59:16 PM

Thanks @hammz for reporting this! We shipped: Add suspended event handling to ScheduledExecutionService, mirroring the webhook handler fix from swamp-club#2303. When a scheduled workflow suspends at an approval gate, emit a new schedule_suspended event (not schedule_failed) and log at info level. The serve.ts consumer handles the new event without recording a health metric, so suspended runs no longer poison the health endpoint.. The fix has been merged and a release is on its way. We appreciate your contribution to swamp.

Sign in to post a ripple.