Skip to main content
← Back to list
01Issue
BugClosedSwamp CLI
Assigneesstack72

Relationships

#496 workflow approve/resume cannot find suspended runs

Opened by webframp · 5/30/2026

Description

swamp workflow approve and swamp workflow resume both report "No suspended runs found" for a workflow that is clearly suspended according to workflow history search and workflow history get.

Steps to Reproduce

  1. Run a workflow with a manual_approval step:
    swamp workflow run approve-s3-check --json
  2. Workflow suspends at the approval gate (status: "suspended")
  3. Verify it's suspended:
    swamp workflow history search --json
    # Shows: {"runId": "75736256-...", "status": "suspended"}
    swamp workflow history get approve-s3-check --json
    # Shows: {"status": "suspended", "runId": null}  (note: runId null here is also odd)
  4. Try to approve:
    swamp workflow approve approve-s3-check review-gate --json
    # Error: "No suspended runs found for workflow "approve-s3-check""
    swamp workflow approve approve-s3-check review-gate --run 75736256-c913-4662-ae8d-bd3d68408d3c --json
    # Error: "Workflow run not found: 75736256-..."
    swamp workflow resume approve-s3-check --json
    # Error: "No suspended runs found for workflow "approve-s3-check""

Additional Observations

  • The run file exists at .swamp/repos/<repo-id>/workflow-runs/<wf-id>/workflow-run-<run-id>.yaml with status: suspended
  • swamp workflow history search finds the run and reports correct status
  • swamp workflow history get approve-s3-check returns runId: null but correct status
  • swamp workflow approvals returns empty {"approvals": []}
  • Two separate suspended runs exist, neither can be approved

Expected Behavior

swamp workflow approve approve-s3-check review-gate should find the suspended run and approve the step, allowing the workflow to continue.

Environment

  • swamp version: 20260530.005533.0-sha.1c117111
  • Platform: macOS Darwin 24.6.0
  • Datastore: @swamp/s3-datastore
02Bog Flow
OPENTRIAGEDIN PROGRESSCLOSED+ 1 MOREASSIGNEDCLASSIFICATION

Closed

5/31/2026, 9:08:26 PM

No activity in this phase yet.

03Sludge Pulse
stack72 assigned stack725/31/2026, 8:56:31 PM
Editable. Press Enter to edit.

webframp commented 5/30/2026, 10:02:28 PM

Additional context: the run file exists on disk at .swamp/repos/<repo-id>/workflow-runs/<wf-id>/workflow-run-<run-id>.yaml with correct status: suspended. The history search and history get commands both find and report the run correctly. Only approve, reject, and resume fail to locate it. This suggests the lookup path in those commands differs from the history commands.

Possibly related: workflow history get approve-s3-check --json returns runId: null for the same run that history search reports with a valid ID.

stack72 commented 5/31/2026, 9:08:25 PM

Closing as a duplicate of #493, which reports the same bug (workflow approve/resume/approvals cannot find a suspended run when a non-repo-local datastore is configured) with more detail. Tracking and fixing under #493.

Root cause (confirmed + reproduced): workflow approve, resume, approvals, and reject construct YamlWorkflowRunRepository(repoDir) without the datastore-resolved workflow-runs path, so they read repo-local .swamp/workflow-runs/ while the run state lives at <datastore>/workflow-runs/. The history commands pass the datastore path and so find the run. Reproduced without S3 using a filesystem datastore at an external path.

Sign in to post a ripple.