Skip to content

feat(skills): /merge — add mergeStateStatus calibration to flag BLOCKED / DIRTY PRs #36

@OriginalGary

Description

@OriginalGary

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

  1. 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
  2. Add to MED-cap list: `mergeStateStatus == BLOCKED` (branch protection blocks direct merge — content may be clean, cap reflects mergeability friction)
  3. 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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions