Relationships
#2572 data.latest/data.findBySpec/data.query cannot see data from pulled extension model types in workflow expressions
Opened by shelson · 9/27/2026· Shipped 9/28/2026
Summary
data.latest(), data.findBySpec(), and data.query() all fail to find data produced by models of type @evardjp/github-local-mirror when used in workflow step input expressions. The same queries work fine via swamp data get and swamp data query CLI commands.
Repro
Create a model of type
@evardjp/github-local-mirror:swamp model create @evardjp/github-local-mirror test-mirror --global-arg owner=X --global-arg repo=Y --global-arg gitObjectPath=/tmp/test.git --global-arg workspaceRoot=/tmp/worktrees --global-arg artifactRoot=/tmp/artifactsRun
sync— data is produced withspecName: syncRunSummaryetc.In a workflow step input, reference:
inputs: path: ${{ data.latest("test-mirror", "syncRunSummary").attributes.anything }}
Expression fails:
data.latest("test-mirror", "syncRunSummary") found no data record
What works
swamp data get test-mirror sync-<timestamp>— CLI finds dataswamp data query "modelName == 'test-mirror'"— CLI query worksdata.latest("code-workspace", "workspace")— works for@shelson/git-workspacemodels in same expression contextdata.latest("clean-code", "review-latest")— works for@swamp/clean-code-reviewmodels
What doesn't work
data.latest("test-mirror", "<anySpec>")— never finds datadata.findBySpec("test-mirror", "worktreeSnapshot")— never finds datadata.query("modelName == 'test-mirror'")— never finds data
All three work for the same model+spec when called from CLI.
Impact
Cross-step data chaining is impossible for @evardjp/github-local-mirror models. Workaround is vault-bridging via command/shell steps.
Workaround
Use command/shell model to find data on disk and write to vault, then read from vault in downstream steps via vault.get().
Shipped
Click a lifecycle step above to view its details.
stack72 commented 9/28/2026, 2:56:19 PM
Thanks @shelson for reporting this! We shipped: Keep data.latest()/data.version() keyed on data name; no new accessor and no documented newest-by-spec idiom. When a missed lookup's name is an output spec with existing records, the error hint says it is a spec name, lists the matching data names newest-first, and points to data.findBySpec. The bundled swamp skill docs label the argument a data name and explain data name vs specName.. The fix has been merged and a release is on its way. We appreciate your contribution to swamp.
Sign in to post a ripple.