feat: disable fix agent auto-run on human-authored PRs#906
Conversation
|
fullsend review is working on this — view logs |
Site previewPreview: https://12ebe775-site.fullsend-ai.workers.dev Commit: |
Review: #906Head SHA: fa639dd SummaryClean, well-layered change that gates the fix agent on PR authorship. Human-authored PRs no longer auto-trigger the fix loop after review requests changes — humans must opt in via the FindingsCriticalNone. HighNone. MediumNone. LowNone. Info
FooterOutcome: approve
Previous runReview: #906Head SHA: 3700dd3 SummaryThis PR cleanly gates fix-agent auto-dispatch on PR authorship: bot-authored PRs continue the existing auto-fix loop, while human-authored PRs skip it unless the FindingsNo critical, high, medium, or low findings. Info
FooterOutcome: approve
|
When a human submits a PR and the review agent requests changes, the fix agent no longer auto-triggers. This is now the default behavior for human-authored PRs. Bot-authored PRs (from the code agent) continue to auto-trigger fixes as before. Humans can opt in to the review-fix loop by adding the `fullsend-fix` label to their PR. The existing `/fix` command for manual invocation is unaffected. Changes across all dispatch paths (org-level shim, reusable dispatcher, per-repo scaffold): - Gate fix dispatch on PR author ending in [bot] OR presence of `fullsend-fix` label - Add defense-in-depth check in reusable-fix.yml that verifies PR author and label before running the fix agent E2E tested in ascerra-fullsend-lab org (human-pr-fix-test repo): 1. Human PR, no label (PR fullsend-ai#1) — fix agent SKIPPED ✅ - Review: https://github.com/ascerra-fullsend-lab/.fullsend/actions/runs/25836235094 - Shim skipped dispatch-fix-bot: https://github.com/ascerra-fullsend-lab/human-pr-fix-test/actions/runs/25836370170 2. Human PR, fullsend-fix label (PR fullsend-ai#2) — fix agent auto-triggered ✅ - Review: https://github.com/ascerra-fullsend-lab/.fullsend/actions/runs/25837485822 - Shim dispatched fix: https://github.com/ascerra-fullsend-lab/human-pr-fix-test/actions/runs/25837620440 - Fix agent succeeded: https://github.com/ascerra-fullsend-lab/.fullsend/actions/runs/25837623950 3. Bot PR, no label (PR fullsend-ai#4, author: ascerra-fullsend-lab-coder[bot]) — fix agent auto-triggered ✅ - Code agent created PR: https://github.com/ascerra-fullsend-lab/.fullsend/actions/runs/25838129538 - Review requested changes: https://github.com/ascerra-fullsend-lab/.fullsend/actions/runs/25838396492 - Shim dispatched fix (no label needed): https://github.com/ascerra-fullsend-lab/human-pr-fix-test/actions/runs/25838580565 - Fix agent succeeded: https://github.com/ascerra-fullsend-lab/.fullsend/actions/runs/25838584099 Co-authored-by: Cursor <cursoragent@cursor.com>
3700dd3 to
fa639dd
Compare
|
fullsend review is working on this — view logs |
ralphbean
left a comment
There was a problem hiding this comment.
LGTM — clean, consistent three-layer gate with good defense-in-depth. One minor note inline.
| if ! has_label "fullsend-no-fix" "${PR_LABELS}"; then | ||
| STAGE="fix" | ||
| TRIGGER_SOURCE="${REVIEW_USER_LOGIN}" | ||
| if [[ "${PR_USER_LOGIN}" =~ \[bot\]$ ]] || has_label "fullsend-fix" "${PR_LABELS}"; then |
There was a problem hiding this comment.
[minor] The /fix slash command path (~line 128) intentionally bypasses this gate — authorized users can trigger fix without the fullsend-fix label. A brief comment here noting that distinction would help future maintainers. (Noted, deferring.)
Summary
fullsend-fixlabel to their PR. The existing/fixslash command is unaffected.reusable-fix.ymlso the fix agent itself validates PR author + label before running, even if a dispatcher bug lets an ineligible dispatch through.Files changed
.github/workflows/fullsend.yamldispatch-fix-boton PR author being a bot OR havingfullsend-fixlabel.github/workflows/reusable-dispatch.ymlPR_USER_LOGINenv var; wrap fix stage routing in author/label check.github/workflows/reusable-fix.ymlinternal/scaffold/fullsend-repo/.github/workflows/dispatch.ymlTest plan
E2E tested in
ascerra-fullsend-laborg with per-repo install onhuman-pr-fix-testrepo:1. Human PR, no label (PR #1) — fix agent SKIPPED ✅
dispatch-fix-bot: https://github.com/ascerra-fullsend-lab/human-pr-fix-test/actions/runs/258363701702. Human PR,
fullsend-fixlabel (PR #2) — fix agent auto-triggered ✅3. Bot PR, no label (PR #4, author:
ascerra-fullsend-lab-coder[bot]) — fix agent auto-triggered ✅Other checks
make lintpasses (except pre-existinglycheenot-found)hack/lint-workflow-sizepassesmake go-vetpasses