Relationships
#3254 workflow validate fails a templated methodName that workflow run executes fine
Opened by taylor · 10/11/2026· Shipped 10/12/2026
swamp workflow validate fails a workflow whose step methodName is a CEL expression, even though swamp workflow run resolves the expression and the step succeeds.
Steps to reproduce
swamp repo initin an empty git reposwamp model create command/shell hello- Create a workflow with a templated
methodName:
name: templated
inputs:
properties:
method:
type: string
default: execute
jobs:
- name: main
steps:
- name: example
task:
type: model_method
modelIdOrName: hello
methodName: ${{ inputs.method }}
inputs:
run: echo helloswamp workflow validate templatedswamp workflow run templated
Expected
Validation passes (or warns) for the step, the same way it already does when modelIdOrName or modelType is a CEL expression, because the method can't be resolved statically.
Actual
Validate fails:
✗ Step inputs for 'example' in job 'main' (hello.${{ inputs.method }})
→ Method '${{ inputs.method }}' not found on model type 'command/shell'
Summary: 7 passed, 1 failed
Result: FAILEDRun succeeds: "inputs": { "method": "execute" }, "status": "succeeded", and the step saves its result data.
The same workflow with a literal methodName: execute passes validation 9/9.
Where the fix goes
The step-inputs check in the workflow validation service (src/domain/workflows/validation_service.ts) already skips dynamic CEL references in modelType and modelIdOrName ("cannot resolve statically"), but not in methodName. Extending that skip to a methodName containing ${{ would make validate match run. Still present in the latest source, 20261011.154850.0.
A real use case: one workflow that runs either check or apply on config-management model types, chosen by an input.
Environment
- swamp 20261009.215038.0-sha.986f9022 (code unchanged in 20261011.154850.0-sha.d650cb70)
- macOS (Darwin)
Shipped
Click a lifecycle step above to view its details.
stack72 commented 10/12/2026, 1:29:33 PM
Thanks @taylor for reporting this! We shipped: Make workflow validate accept a model_method step whose methodName is a CEL expression: resolve the model and type as usual, and treat method_not_found as unresolvable statically instead of a failure, so validate agrees with run.. The fix has been merged and a release is on its way. We appreciate your contribution to swamp.
Sign in to post a ripple.