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

Relationships

#1721 pre-flight checks run on orchestrator, not on worker — breaks remote execution with filesystem-dependent checks

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

Bug

Pre-flight checks run on the orchestrator (swamp serve), not on the worker where the method will execute. This means any check that depends on the worker's filesystem (like @swamp/git's repo-initialized check) fails when the path only exists on the worker.

Root cause

In method_execution_service.ts, the execution flow is:

  1. Line 614-686: Pre-flight checks run (on the orchestrator)
  2. Line 841-846: Remote dispatch happens (method runs on the worker)

The checks execute git rev-parse --is-inside-work-tree with cwd: "/workspace/checkouts/..." — but that directory only exists on the worker, not on the orchestrator.

Reproduction

Workflow step using @swamp/git with remote placement:

- name: check-changes
  task:
    type: model_method
    modelType: "@swamp/git"
    modelName: change-check
    methodName: status
    globalArgs:
      repoPath: "/workspace/checkouts/swamp-codegen/aws"

A previous step cloned the repo to that path on the worker. The status method is dispatched remotely, but the repo-initialized pre-flight check runs locally on the orchestrator where the path doesn't exist.

Proof

Added two debug steps in the same workflow job alongside check-changes:

debug-git (command/shell): "git -C /workspace/checkouts/swamp-codegen/aws rev-parse --is-inside-work-tree"
→ true, GIT OK (runs on worker)

check-changes (@swamp/git status):
→ "Pre-flight checks failed: could not verify /workspace/checkouts/swamp-codegen/aws" (check runs on orchestrator)

Both steps target the same worker (affinity confirmed by hostname output). The command/shell step succeeds because it runs entirely on the worker. The @swamp/git check fails because it runs on the orchestrator before dispatch.

Expected behavior

For remotely-placed steps, pre-flight checks should either:

  1. Run on the worker (dispatched alongside or before the method), or
  2. Be skipped for remotely-placed steps (let the method itself fail if prerequisites aren't met), or
  3. Be skippable from the workflow step definition

Workaround

Use command/shell instead of @swamp/git for steps that depend on worker-local filesystem state.

02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED+ 2 MORETRIAGE+ 11 MOREREVIEW+ 4 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

8/20/2026, 12:18:11 AM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack728/19/2026, 1:42:26 AM

Sign in to post a ripple.