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

Relationships

#3815 workflow resume --run refuses workflows with the same step name in two jobs, though validate and run accept them

Opened by kagarmoe · 10/23/2026· Shipped 10/27/2026

Description

swamp workflow validate accepts a workflow where two jobs each have a step with the same name, and swamp workflow run runs it. When such a run fails, swamp prints "To retry failed steps: swamp workflow resume --run ". That resume is then refused:

Error: Step name "s" is used in more than one place in the workflow; retry needs unique step names.

Step names scoped per job are natural, e.g. one version or restart step in each per-host job. The run's own retry hint points at a command that can't work, and the only way out is a fresh full rerun. In our case that rerun didn't redo the side effects (service restarts) that the failed run should have retried.

Steps to reproduce

In a fresh repo with a command/shell behavior named sh:

name: dup-steps
jobs:
  - name: a
    steps:
      - name: s
        task: { type: model_method, modelIdOrName: sh, methodName: execute, inputs: { run: echo job-a } }
  - name: b
    dependsOn: [{ job: a, condition: { type: succeeded } }]
    steps:
      - name: s
        task: { type: model_method, modelIdOrName: sh, methodName: execute, inputs: { run: "exit 1" } }
version: 1
  1. swamp workflow validate dup-steps → Summary: 15 passed, Result: PASSED
  2. swamp workflow run dup-steps → fails, prints To retry failed steps: swamp workflow resume dup-steps --run <id>
  3. swamp workflow resume dup-steps --run <id> → the error above

Expected

Either:

  • resume identifies steps by job plus step name, since step names only need to be unique within a job; or
  • validate rejects (or warns about) duplicate step names across jobs, and run doesn't print a retry hint it can't honor.

The first is better.

Environment

swamp 20261022.211048.0 (Linux, WSL2 Ubuntu 26.04)

02Bog Flow
✓OPEN✓TRIAGED✓IN PROGRESS✓SHIPPED+ 1 MOREASSIGNED+ 5 MOREREVIEW+ 40 MOREPR_LINKED+ 2 MORESESSION_SUMMARIZED

Shipped

10/27/2026, 8:58:37 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
zack assigned zack10/27/2026, 5:56:12 PM
Editable. Press Enter to edit.

zack commented 10/27/2026, 8:58:46 PM

Thanks @kagarmoe for reporting this! We shipped: Identify steps by job plus step name when resetting a failed run, so retry (resume --run) works for workflows that reuse a step name across jobs and re-runs only the failed job's step and its real dependents. resume --from refuses a step name used in more than one job and asks which job, via a new --job option passed through CLI, serve and the execution service. Expression-named jobs fall back to today's name matching.. The fix has been merged and a release is on its way. We appreciate your contribution to swamp.

Sign in to post a ripple.