-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Problem
The quality gate workflow never fires for PRs that receive a clean Copilot review (no comments). This means PRs with green CI and zero review issues sit open indefinitely — nobody approves them.
Root Cause
The quality gate triggers on pull_request_review: submitted, but the lock file has a bot filter:
# - Copilot # Bots processed as bot check in pre-activation job
# - copilot-pull-request-reviewer # Bots processed as bot check in pre-activation job
When Copilot submits a clean COMMENTED review, the pull_request_review event fires, but the quality gate pre-activation job filters it out because it came from a bot. Since there are no human reviewers in the autonomous pipeline, the quality gate never runs.
Example: PR #167
Timeline:
- 16:51:12 — Implementer created PR fix: use format_tokens() in render_live_sessions (#133) #167 (
fix: use format_tokens() in render_live_sessions (#133)) - 16:52:32 — Copilot reviewed → clean, 0 comments,
COMMENTEDstate - 17:01 — CI passed (check, CodeQL, analyze all green)
- 17:01:30 — Orchestrator ran, saw the PR, checked CI/threads — all clear. Did nothing because there's no "dispatch quality gate" step.
- 17:18 — PR still sitting open. No quality gate run. No approval. No merge.
The orchestrator has logic for the hard path (CI failing → ci-fixer, review comments → responder) but no logic for the happy path (everything green → dispatch quality gate → merge).
Fix
-
Add quality gate dispatch to orchestrator: When a PR has:
- CI green
- Copilot has reviewed
- 0 open review threads
- No
aw-quality-gate-approvedlabel yet - No in-flight quality gate run
→ Dispatch quality gate viaworkflow_dispatchwithpr_numberinput
-
Switch quality gate trigger: Change from
pull_request_review: submittedtoworkflow_dispatchwithpr_numberinput. Update the.mdfrontmatter and regenerate the lock file. -
Update quality gate instructions: Since it won't have
github.event.pull_requestcontext from the trigger, the agent needs to fetch PR info using thepr_numberinput (same pattern as responder). -
Quality gate safe outputs: May need
target: "*"andfetch: "*"like responder/ci-fixer since there's no triggering PR context withworkflow_dispatch.
Related
- perf: rewrite pipeline orchestrator as regular GitHub Action (yml) #135 (orchestrator v3)
- Responder cannot update PR title/description — add update_pull_request safe output #165 (responder can't update PR description)
- bug: orchestrator dispatches responder twice from duplicate triggers #164 (duplicate trigger waste)