Problem
/merge currently ranks PRs HIGH/MED/LOW based on content signals (CI, reviewDecision, deployed-surface, sensitivity, persona-qa, etc.) but does not check mergeStateStatus or mergeable. Result: a clean PR can be ranked HIGH while branch protection will silently reject the surfaced gh pr merge command. Operator copies the command, runs it, gets a non-fast-forward / required-check / non-last-pusher rejection. Bad UX contract.
Evidence (2026-04-25T11:20Z fire)
19 candidate PRs evaluated org-wide. Spot-checked mergeStateStatus on 12 of them:
| PR |
mergeable |
mergeStateStatus |
What /merge ranked |
| graze-cli#84 |
CONFLICTING |
DIRTY |
MED — should be LOW |
| context#80, platform#110, mobius-real-estate#235, slingshot-uk-phase1#324, semgrep-rules-no-animal-violence#34, project-compassionate-code#47, structured-coding-with-ai#32 |
MERGEABLE |
BLOCKED |
HIGH — should be MED |
| c4c-bootcamp#23, gary#430, avs-vegan-recommendations#91, #93 |
UNKNOWN |
UNKNOWN |
(gh hasn't computed yet) |
BLOCKED here is mostly branch-protection: branch behind base (rebase needed), required check missing (typically stage:ready-for-merge not yet applied because adversarial dispatch is broken — see Open-Paws/context#85), or non-last-pusher approval missing (per parallelization.md §Subagent recovery).
Spec
- Add
mergeStateStatus,mergeable to the JSON field list in:
- Step A bulk query (
gh pr list --label 'stage:ready-for-merge' ...)
- Step B all-gates-green sweep
- Per-PR
gh pr view ... fetch
- Add to MED-cap list: `mergeStateStatus == BLOCKED` (branch protection blocks direct merge — content may be clean, cap reflects mergeability friction)
- Add to LOW-cap list: `mergeable == CONFLICTING` or `mergeStateStatus == DIRTY` (actual merge conflict needing manual rebase + resolve before any merge command will work)
Local skill already patched
C:\Users\User\.claude\skills\merge\SKILL.md on the operator's machine has these four edits applied today (2026-04-25). This issue tracks landing the same change in the repo so other operators get it.
PR #33 (the original /merge skill landing PR) is at CHANGES_REQUESTED from CodeRabbit. Either fold this enhancement into the response there OR ship as a follow-up PR after #33 merges. Operator preference.
Filed at operator request
Filed by OpenGaryBot from a Claude Code session at Sam's request after the 11:20Z /merge fire surfaced the gap. Per tooling-reference.md the bot triages while the operator files; this is an exception by explicit instruction.
Sensitivity
sensitivity:staff-ok — no PII, no funder dynamics, no active campaign intel. All references are public PR URLs and a public co-filed issue.
Problem
/mergecurrently ranks PRs HIGH/MED/LOW based on content signals (CI, reviewDecision, deployed-surface, sensitivity, persona-qa, etc.) but does not checkmergeStateStatusormergeable. Result: a clean PR can be ranked HIGH while branch protection will silently reject the surfacedgh pr mergecommand. Operator copies the command, runs it, gets a non-fast-forward / required-check / non-last-pusher rejection. Bad UX contract.Evidence (2026-04-25T11:20Z fire)
19 candidate PRs evaluated org-wide. Spot-checked
mergeStateStatuson 12 of them:BLOCKEDhere is mostly branch-protection: branch behind base (rebase needed), required check missing (typicallystage:ready-for-mergenot yet applied because adversarial dispatch is broken — seeOpen-Paws/context#85), or non-last-pusher approval missing (perparallelization.md§Subagent recovery).Spec
mergeStateStatus,mergeableto the JSON field list in:gh pr list --label 'stage:ready-for-merge' ...)gh pr view ...fetchLocal skill already patched
C:\Users\User\.claude\skills\merge\SKILL.mdon the operator's machine has these four edits applied today (2026-04-25). This issue tracks landing the same change in the repo so other operators get it.PR #33 (the original
/mergeskill landing PR) is atCHANGES_REQUESTEDfrom CodeRabbit. Either fold this enhancement into the response there OR ship as a follow-up PR after #33 merges. Operator preference.Filed at operator request
Filed by
OpenGaryBotfrom a Claude Code session at Sam's request after the 11:20Z/mergefire surfaced the gap. Pertooling-reference.mdthe bot triages while the operator files; this is an exception by explicit instruction.Sensitivity
sensitivity:staff-ok— no PII, no funder dynamics, no active campaign intel. All references are public PR URLs and a public co-filed issue.