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

Relationships

#2121 Server-side workflow resume fails on direct-type model steps

Opened by hammz · 9/13/2026· Shipped 9/17/2026

Description

A suspended workflow resumed through swamp serve cannot execute a pending model-method step declared with modelType and modelName. The server resume handler constructs an execution service without the direct-type resolver.

Reproduction scenario

  1. Use a workflow with a manual_approval gate followed by a model-method step that specifies a valid modelType and modelName instead of modelIdOrName.
  2. Run it through swamp serve until it suspends, then approve the gate.
  3. Resume the run through the server and let it reach the direct-type step.

Actual behavior

The step reaches the missing-resolver guard in DefaultStepExecutor and fails with Direct type execution is not supported in this context.

In src/serve/handlers/workflow_handlers.ts, handleWorkflowResume() awaits createWorkflowRunDeps() but discards the returned dependencies. It then calls the WorkflowExecutionService constructor with undefined for the direct-type resolver. The fallback dependency builder cannot supply that resolver, even when the model type itself is available.

Expected behavior

A resumed server-side workflow can execute direct-type model steps with the same resolver wiring as a normal workflow run.

Suggested fix direction

Keep the result of createWorkflowRunDeps() and construct the resume service through its existing createExecutionService() factory. Pass through the run tracker and resume ephemeral repositories/catalog so the resume path retains its execution context and lifecycle behavior.

Evidence and scope

Inspected swamp core source at revision 7b111963. The reproduction scenario and actual behavior below are derived from source inspection; no released binary or end-to-end reproduction was tested for this report.

02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED+ 1 MOREASSIGNED+ 2 MOREREVIEW+ 7 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

9/17/2026, 3:00:28 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack729/17/2026, 12:21:55 AM
Editable. Press Enter to edit.

stack72 commented 9/17/2026, 3:00:55 PM

Thanks @hammz for reporting this! We shipped: Fix server-side workflow resume to wire the DirectTypeResolver. Both resume paths in handleWorkflowResume (non-registry at line 1192 and registry at line 1380) call createWorkflowRunDeps() but discard the result, then manually construct WorkflowExecutionService with undefined for directTypeResolver. The fix captures the deps object and uses its createExecutionService() factory — the same factory the normal run path (executeWorkflowWithLocks) uses — which correctly wires the resolver. Also passes ctx.runTracker to createWorkflowRunDeps() which was previously missing.. The fix has been merged and a release is on its way. We appreciate your contribution to swamp.

Sign in to post a ripple.