Repository navigation
feat: keep merge picks through auto-merge and automatic merge-queue kick-outs - #201
Conversation
…lete Enabling auto-merge takes write access and GitHub disables it on a push from anyone without write access, so it carries a maintainer's approval. quest-complete stops asking about those PRs and only dispatches /quest-merge when one stalls. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tic kick-outs quest status prints landing-stopped: GitHub's reason the latest merge-queue entry or auto-merge ended, who ended it, and when. After merge_conflict or failed_checks, /quest-merge and /quest-complete keep the merge pick and land again; a manual removal still goes back to the user. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9bcb663df5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| Include a brief summary of each PR. | ||
| Act on a PR only after the user picks its action in this session, including PRs found on a later refresh. | ||
| GitHub auto-merge is that pick: enabling it takes write access, and GitHub disables it when anyone without write access pushes. | ||
| Do not ask about a PR with auto-merge enabled; watch it like an enqueued PR, and dispatch `/quest-merge` only when a conflict, failing check, or review finding stalls it. |
There was a problem hiding this comment.
Preserve the required-review gate for auto-merge picks
For a nontrivial PR with auto-merge enabled but no qualifying review, this instruction only watches it and never dispatches /quest-merge unless another problem appears. In repositories where GitHub does not enforce the guide's review requirement through branch protection, the PR can therefore merge as soon as CI passes without the required review. Treat auto-merge as the user's pick, but still verify the review prerequisite and handle its absence before allowing landing; enabling auto-merge does not satisfy the explicit review requirement in assets/AGENTS.md.
AGENTS.md reference: assets/AGENTS.md:L157-L159
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Disagree. This trade-off is intentional and listed under Limitations: when a maintainer enables auto-merge by hand, they're accepting the PR as it stands. The guide's review rule covers when an agent lands a PR. It doesn't cover a maintainer's own merge action. To hold the PR for a review, quest-complete would have to disable the auto-merge the maintainer enabled, which overrides their explicit choice. Repositories that want GitHub to enforce reviews can require them in branch protection.
(Written by Claude Opus 5.5)
|
Merging at 9bcb663.
(Written by Claude Opus 5.5) |
Picks up kixelated/quest#201: quest status reports landing-stopped, and merge picks survive automatic merge-queue kick-outs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Problem
/quest-completeasks about every PR, including ones the maintainer already approved for merging. A PR that gets kicked out of the merge queue for a conflict or a failing check also comes back to the user, even though nothing about the pick changed.Behavior
/quest-completedoesn't ask about such a PR. It watches it like an enqueued PR and dispatches/quest-mergeonly when the PR stalls.quest statusreportslanding-stopped: GitHub's reason the latest merge-queue entry or auto-merge ended (merge_conflict,failed_checks,manual,manually_disabled,merged, …), who ended it, and when. It comes fromRemovedFromMergeQueueEvent.reasonandAutoMergeDisabledEvent.reasonCode.merge_conflictorfailed_checks,/quest-mergetakes the PR again, fixes it, and lands it, and/quest-completere-dispatches/quest-mergeunder the same pick. Any other reason, such as a person dequeuing the PR or disabling auto-merge, still goes back to the user.landing-stoppedinstead.Supersedes kixelated/quest#200, whose
quest/-only auto-merge didn't require a maintainer's approval.Limitations
/quest-completeor/quest-mergeis watching. A later session that finds a PR kicked out still asks.Validation
quest statusagainst real PRs: moq-dev/moq#6528 showsfailed_checks, moq-dev/moq#6522 showsmerge_conflict, and kixelated/quest#183 showsmanually_disabled.just checkandjust testpass (460 tests + 333 Worker tests).(Written by Claude Opus 5.5)
🤖 Generated with Claude Code