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

Relationships

#506 workflow validate silently PASSES steps whose model type is a pulled extension (step-inputs skipped = false pass)

Opened by ynm · 6/1/2026· Shipped 6/1/2026

Summary

swamp workflow validate does not resolve pulled extension model types for step-input validation. It logs model type '<type>' not resolved, skipped and then reports Result: PASSED, so a step calling a non-existent method (or with wrong argument keys) validates as PASS. This silently masks real workflow bugs.

Environment

  • swamp 20260531.214843.0-sha.ec32aaab
  • deno 2.7.12, macOS (Apple Silicon)

Minimal reproduction (clean room)

  1. swamp repo init /tmp/cr --tool none
  2. Add an @hivemq/http-poll model instance (typeVersion 2026.04.10.2).
  3. swamp extension pull @hivemq/http-poll@2026.04.10.2 --force — i.e. the pulled version matches the instance pin.
  4. Create a workflow with a step: modelIdOrName: http-poll, methodName: pollUrl (pollUrl does NOT exist on @hivemq/http-poll; real methods are poll/checkDockerImage/checkMavenArtifact/checkJavadoc).
  5. swamp workflow validate cleanroom-test:
✓ Step inputs for 'bogus-method' in job 'j' (http-poll.pollUrl) (model type '@hivemq/http-poll' not resolved, skipped)
Summary: 8/8 validations passed
Result: PASSED

Expected

  • The pulled, version-matched type should resolve so step inputs are actually validated; http-poll.pollUrl should FAIL with Method 'pollUrl' not found.
  • Even when a type genuinely cannot be resolved, validate must NOT report Result: PASSED — it should fail (or at least exit non-zero and warn loudly). Silent skip-as-pass is dangerous: it hid ~16 real contract bugs in our release workflows (wrong method names like pollUrl, wrong arg keys like maxWaitSeconds/expectedStatus).

Notes

  • swamp model type describe @hivemq/http-poll DOES resolve the same type (shows poll/checkDockerImage/...), so the type is loadable — only workflow validate's step-input resolver fails to consult pulled extensions.
  • Reproduced with both latest (2026.04.27.34) and the exact pinned (2026.04.10.2) versions — not version drift.
  • Possibly related: swamp repo upgradeERR_SQLITE_ERROR: attempt to write a readonly database at ExtensionCatalogStore.addNewColumnsIfMissing (extension_catalog_store.ts:305), a schema migration on an older-swamp .swamp/_extension_catalog.db. Moving the local catalog DB aside (it is gitignored/regenerable) worked around it.

Asks

  1. workflow validate should resolve pulled extension types for step-input checks (parity with model type describe).
  2. Unresolved step-input types must never yield Result: PASSED — fail or exit non-zero.
02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED+ 1 MOREASSIGNED+ 2 MOREREVIEW+ 3 MOREPR_MERGED+ 1 MORECONTRIBUTOR_NOTIFIED

Shipped

6/1/2026, 4:08:42 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack726/1/2026, 4:11:40 AM
Editable. Press Enter to edit.

stack72 commented 6/1/2026, 4:08:50 PM

Thanks @ynm for reporting this! The fix has been merged and a release is on its way. We appreciate your contribution to swamp.

stack72 commented 6/1/2026, 4:14:02 PM

Thanks for the excellent, precise report @ynm — the clean-room reproduction and the model type describe vs workflow validate comparison made the root cause easy to pin down.

Shipped in PR #1485: swamp workflow validate now hot-loads pulled extensions before validating step inputs (parity with model type describe), so a pulled, version-matched type resolves and a bad method like pollUrl is correctly caught as Method not found. And an unresolvable model type now fails validation instead of being silently skipped as a pass — no more Result: PASSED masking real contract bugs.

Two of your side-notes were split into their own issues:

  • #517 — whether validate should also fail on a typo'd model instance name (model_not_found). Left out of this fix deliberately, since a referenced instance can be created at run time by an upstream step; it needs a product decision.
  • #518 — the ERR_SQLITE_ERROR: attempt to write a readonly database on swamp repo upgrade (extension catalog schema migration).

Thanks again!

ynm commented 6/3/2026, 12:45:31 AM

Thank you so much for the swift fix! It works great!

Sign in to post a ripple.