feat: responder + ci-fixer fixes + orchestrator v3#163
Conversation
Exact match to the version that successfully addressed review threads (run 23117978475, 2026-03-15), with only two changes: 1. Added if: label gate for aw PRs 2. Removed resolve-pull-request-review-thread safe-output and step 6e (orchestrator handles resolution) No other changes. This commit should not be modified. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace pull_request_review trigger with workflow_dispatch + pr_number input. No more loops from stray review events. Orchestrator or manual dispatch controls when responder runs. Removed aw label check and triggering review check — no longer applicable with workflow_dispatch. Renumbered steps. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
If CI checks fail after addressing review comments, fix the issues and re-run until they pass. Do not push broken code. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The reply-to-pull-request-review-comment and push-to-pull-request-branch safe output handlers default to target 'triggering' which requires a pull_request event context. Setting target to '*' lets the agent specify the PR number in each message, enabling workflow_dispatch. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Same fix as the responder: set target '*' on push-to-pull-request-branch so the agent specifies the PR number in its message (no event context needed). Added labels: [aw] to restrict pushes. Added checkout fetch config so all remote branches are available. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
MCP tools intermittently return empty results for review data. The agent sometimes falls back to REST API on its own (PR #152) but not always (PR #158). Explicitly instruct it to use the REST API endpoints for comments and reviews. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rewrites the orchestrator with complete PR lifecycle logic: - Dispatches implementer for unworked aw issues - Checks CI status: dispatches ci-fixer on failure, marks aw-stuck:ci if fixer already tried - Dispatches responder for unaddressed review threads - Resolves addressed threads (last commenter != reviewer) - Review loop management with round counter (max 3) - Rebases PRs behind main, marks aw-stuck:rebase on conflicts - Skips PRs with any aw-stuck:* label Triggers: workflow_run (responder/ci-fixer/CI completion), pull_request_review (aw label gate), push to main, manual. Cron disabled until testing complete. All dispatches use --ref to run from PR's head branch. Part of #135 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Updates the autonomous workflow pipeline to use workflow_dispatch-driven agents (responder/ci-fixer) and introduces a v3 bash-based pipeline orchestrator to manage issue→PR lifecycle, CI recovery, review response dispatch, thread resolution, and rebasing.
Changes:
- Switch Review Responder and CI Fixer agents to
workflow_dispatchwithtarget: "*"and full-history checkout/fetch for dispatch support. - Add Pipeline Orchestrator v3 to dispatch implementer/ci-fixer/responder based on PR state, resolve addressed review threads, and rebase behind-main PRs.
- Update compiled
.lock.ymlworkflows to reflect the new dispatch inputs, fetch configuration, and safe-outputs settings.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/review-responder.md |
Moves responder to workflow_dispatch, adjusts safe-outputs targeting, updates instructions (REST API thread fetch guidance). |
.github/workflows/review-responder.lock.yml |
Compiled workflow updates for dispatch inputs, checkout fetch, and safe-outputs targeting. |
.github/workflows/ci-fixer.md |
Adds checkout fetch/full history and sets push-to-pull-request-branch target: "*" for dispatch. |
.github/workflows/ci-fixer.lock.yml |
Compiled workflow updates for checkout fetch/full history and safe-outputs targeting. |
.github/workflows/pipeline-orchestrator.yml |
New v3 orchestrator that queries PR state via GraphQL, dispatches agents, resolves threads, and rebases PRs. |
Comments suppressed due to low confidence (2)
.github/workflows/review-responder.md:44
safe-outputs.add-labelsis still missingtarget: "*". Since this workflow is nowworkflow_dispatch(no implicit PR context), label operations can fail or apply to the wrong target unlessadd-labelsis also configured with an explicit target (similar topush-to-pull-request-branchandreply-to-pull-request-review-comment).
push-to-pull-request-branch:
target: "*"
labels: [aw]
github-token: ${{ secrets.GH_AW_WRITE_TOKEN }}
reply-to-pull-request-review-comment:
target: "*"
max: 10
github-token: ${{ secrets.GH_AW_WRITE_TOKEN }}
add-labels:
github-token: ${{ secrets.GH_AW_WRITE_TOKEN }}
.github/workflows/ci-fixer.md:42
safe-outputs.add-labelsis missingtarget: "*"even though the workflow isworkflow_dispatch. If the CI fixer relies onadd-labelsto setci-fix-attempted, this can fail without an explicit target/PR context; align it withpush-to-pull-request-branchby addingtarget: "*"(or otherwise ensuring the PR number is passed as the tool target).
push-to-pull-request-branch:
target: "*"
labels: [aw]
github-token: ${{ secrets.GH_AW_WRITE_TOKEN }}
add-labels:
github-token: ${{ secrets.GH_AW_WRITE_TOKEN }}
add-comment:
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Standardizes all pipeline labels with aw- prefix: - review-response-attempted → aw-review-response-attempted - review-response-N → aw-review-response-N - ci-fix-attempted → aw-ci-fix-attempted - quality-gate-approved → aw-quality-gate-approved - aw-stuck:* → aw-pr-stuck:* Closes #145 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The jq filter used startswith('aw-review-response-') which also
matched aw-review-response-attempted, inflating the round count
by 1. Now uses regex to match only numeric round labels.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Updates the gh-aw automation workflows to support a v3 event-driven pipeline (dispatch-based responder/ci-fixer + YAML orchestrator), along with label-prefix normalization and workflow_dispatch-safe safe-outputs targeting.
Changes:
- Switch review-responder and ci-fixer workflows to
workflow_dispatchwithtarget: "*"safe-outputs + full git history fetch. - Expand
pipeline-orchestrator.ymlinto a full lifecycle manager (issue dispatch, CI triage, responder dispatch, thread resolution, rebase, stuck labeling). - Rename/standardize pipeline labels to
aw-*(e.g.,aw-*-attempted,aw-pr-stuck:*,aw-quality-gate-approved).
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/review-responder.md | Moves responder to manual dispatch and updates instructions/safe-outputs for dispatch context. |
| .github/workflows/review-responder.lock.yml | Compiled workflow reflecting dispatch inputs, safe-outputs target:"*", and updated checkout/fetch behavior. |
| .github/workflows/ci-fixer.md | Adds full-history checkout/fetch and dispatch-safe target:"*" settings; updates attempted label name. |
| .github/workflows/ci-fixer.lock.yml | Compiled workflow reflecting checkout/fetch changes and safe-outputs targeting. |
| .github/workflows/quality-gate.md | Updates the “approved” marker label name to aw-quality-gate-approved. |
| .github/workflows/pipeline-orchestrator.yml | Implements orchestrator v3: discovers active PRs, dispatches implementer/ci-fixer/responder, resolves threads via GraphQL, and rebases behind-main PRs. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Changes
Responder fixes (commits 1-4, 6)
workflow_dispatchtrigger (eliminates infinite loops frompull_request_review)target: "*"on safe outputs forworkflow_dispatchsupportCI-fixer fix (commit 5)
target: "*"+ checkout fetch forworkflow_dispatchsupportOrchestrator v3 (commit 7)
workflow_run(responder/ci-fixer/CI),pull_request_review(aw gate),push: main, manualaw-pr-stuck:ci,aw-pr-stuck:review,aw-pr-stuck:rebaseLabel rename (commit 8)
aw-prefix for consistencyaw-stuck:*→aw-pr-stuck:*Tested
Closes #145
Part of #135 (not closing — cron + end-to-end testing pending)
Related: #114 (REST API workaround for MCP thread limitation)