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

Relationships

#1743 dataOutputOverrides not applied during remote execution — ephemeral resources GC'd before override takes effect

Opened by stack72 · 8/20/2026· Shipped 8/20/2026

Problem

When a workflow step with dataOutputOverrides runs on a remote worker, the lifetime override is not applied. The worker writes the resource with the extension's declared lifetime (e.g. ephemeral), and it gets garbage collected before the orchestrator can apply the override.

Reproduction

Workflow step:

- name: check-changes
  task:
    type: model_method
    modelType: "@swamp/git"
    modelName: change-check
    methodName: status
    globalArgs:
      repoPath: "${{ inputs.checkout_path }}"
  dataOutputOverrides:
    - specName: statusResult
      lifetime: workflow

The @swamp/git extension declares statusResult with lifetime: "ephemeral". The workflow step overrides it to lifetime: workflow. When running locally, this works — the resource persists for the workflow run. When running on a remote worker, the resource is written via the data plane with ephemeral lifetime and is GC'd immediately. The override never takes effect.

Evidence

  • The method report confirms dataProduced: [{ name: "status", specName: "statusResult" }] — the resource was written
  • swamp data query 'tags.specName == "statusResult"' returns zero results — the resource was already GC'd
  • The downstream guard expression data.latest('change-check', 'status').attributes.clean fails with No such key: attributes because the data doesn't exist

Expected behavior

dataOutputOverrides should be applied to the resource write on the worker (sent as part of the dispatch params) so the worker writes with the correct lifetime, or the orchestrator should re-tag the resource after the dispatch completes.

Impact

Any workflow using dataOutputOverrides to promote ephemeral resources for cross-step data flow will fail when steps run on remote workers. This blocks the factory pattern + data.latest() pattern for remote execution.

02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED+ 1 MOREASSIGNED+ 2 MOREREVIEW+ 3 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

8/20/2026, 7:23:06 AM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack728/20/2026, 6:35:39 AM

Sign in to post a ripple.