Skip to content

Merge-triggered epic continuation silently no-ops: squad.md never interpolates workflow_dispatch inputs #1740

Closed

Description

@bradygaster

Summary

The PR-merged → continue-implementation chain already exists in workflows/squad-implement-worker.md, and it fires correctly — but the final hop drops the epic number, so the run ends in a silent noop and the user is left with no visible next step.

Observed on github/gh-aw#53498, where /squad implement dispatched #53513, its PR merged, and then nothing happened.

Evidence

PR github/gh-aw#53527 merged
  → squad-implement-worker run 32082398976 ✅ (merge trigger fired)
  → dispatched squad with {"command":"implement","issue_number":"53498"} ✅
  → squad run 32082667356 ✅ … emitted noop:
     "No actionable /squad slash command was found in the trigger context.
      This run has pull-request-number #53527 but no comment body, issue number,
      or workflow_dispatch input was provided to parse a command from."

53498 appears nowhere in the squad run's agent log.

Root cause

workflows/squad.md only describes its dispatch inputs in prose (lines 135–142):

Read slash command from: github.event.comment.body … or github.event.inputs.command (workflow_dispatch, default: cast).

  • Manual issue target: github.event.inputs.issue_number — issue number for /squad implement runs started from the Actions tab

Those are backtick-quoted expression names, not ${{ }} interpolations, so the values are never rendered into the prompt. The run-name on line 3 does interpolate (Squad — implement resolved correctly), which is why the dispatch looks healthy from the Actions tab while the agent sees nothing.

squad-implement-worker.md gets this right — it uses literal ${{ github.event.inputs.issue_number }} throughout its prompt body (lines 117, 150, 170–173).

Compounding this: noop is configured report-as-issue: false, so the failed continuation posts zero comments. The epic just goes quiet.

Proposed fixes

  1. Interpolate, don't describe (the actual bug) — in squad.md Trigger Context, emit real values, e.g. Command: ${{ github.event.inputs.command }} / Target issue: ${{ github.event.inputs.issue_number }}.
  2. Always leave a visible next step — the continuation must comment on the epic on every run: ✅ #53513 merged → dispatching #53514 · 6 remaining, or ⏸️ all remaining tasks blocked on …. Never a silent noop.
  3. Guard against prose-only context — add a workflow-lint rule: if a prompt body references github.event.inputs.X, it must interpolate it. This failure mode is invisible in CI and will recur.
  4. (minor, separable) squad-implement-worker.md's pull_request: types: [closed] fires on every PR in the repo; the if: guard skips them, but it produces a wall of action_required runs in the Actions tab. Worth scoping the trigger.

Acceptance criteria

  • A merged squad/implement-* PR results in the parent epic receiving a comment naming the next dispatched task, or an explicit blocked/complete status.
  • The dispatched squad run resolves the target issue number from workflow_dispatch inputs and does not emit noop for a well-formed continuation dispatch.
  • Lint fails on a workflow prompt that references github.event.inputs.* without interpolating it.

Routing

Prompt architecture in workflows/ → Procedures 🧠. Lint rule (#3) → Booster ⚙️.

Activity

  1. added 2 commits that reference this issue on Aug 18, 2026
    512853b
    885a15a
  2. added a commit that references this issue on Aug 19, 2026
    b37d67e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions