Relationships
#2288 data.latest() exposes no path/filePath key for file-kind data — forces deprecated model.<name>.file.<spec>.<instance>.path
Opened by vcjdeboer · 9/18/2026· Shipped 9/23/2026
Description
data.latest("model", "dataName") on file-kind data exposes .content, .size, .name, .version, and .id, but has no key for the filesystem path (.path, .filePath, .contentPath — all throw No such key).
The only way to get a file path in a workflow CEL expression is the deprecated model.<name>.file.<spec>.<instance>.path pattern, which still works but is documented as deprecated.
Steps to Reproduce
- Have a model with file-kind data (e.g.
r-labwith a CSVtableoutput) - In a workflow step expression, use:
data.latest("r-lab", "table").path - Observe:
No such key: path - Try
.filePath,.contentPath— same error - The deprecated form
model.r-lab.file.table.table.pathworks and returns the correct filesystem path
Expected Behavior
data.latest("model", "dataName") should expose a .path (or .filePath) key for file-kind data, giving the filesystem path to the stored file — matching the capability of the deprecated model.<name>.file.<spec>.<instance>.path pattern.
Environment
- swamp 20260918.181015.0
- macOS Darwin 25.2.0
- Filesystem datastore
Impact
Any workflow that needs to pass a file path to a downstream step (e.g. session-execute's run method needs filledPath) must use the deprecated pattern. This blocks migration to data.latest() for file-kind data in workflows.
Shipped
Click a lifecycle step above to view its details.
stack72 commented 9/23/2026, 10:44:12 PM
Thanks @vcjdeboer for reporting this! We shipped: Add a path field to the DataRecord read model and populate it for records returned by the CEL data.* functions, so they fully replace the deprecated model..file...path. path is the local filesystem path of the version's raw content, computed through one hardened helper and empty for foreign-namespace, ephemeral or locally absent content. It is opt-in per query (DataQueryOptions.includeContentPath, default false) so it never reaches the serve API, remote workers, swamp data query or extension readModelData, including via select projections. data.latest and data.version hydrate a missing raw file on lazy-hydration datastores before returning; list lookups only existence-check. Mirror the field as optional in packages/testing, add unit and integration tests, and update design docs and skill references.. The fix has been merged and a release is on its way. We appreciate your contribution to swamp.
Sign in to post a ripple.