github / github/gh-stack

Can't merge a stacked PR with no clear reason (all PRs show mergeable)

Open
#323 27 comments 84 reactions 0 assignees View on GitHub
bug topic: merge
Dominant language
Go
Stars
1.5k
Forks
70
Avg merge
1d 8h
Merged PRs (30d)
7

Description

## Environment
- develop branch are protected by a repository ruleset with:
- require_last_push_approval: true
- dismiss_stale_reviews_on_push: true
- required status checks
- No merge queue.

## Reproduction

1. Create a 3-level stack: develop <- A <- B <- C.
2. Approve every PR after its latest push. All three show MERGEABLE / CLEAN / APPROVED, all checks green.
3. On the top PR (C), the native GitHub "Merge stack (3)" box shows "Able to merge as a stack". Click it (merge method: Create
a merge commit) and confirm.

## Expected

All three PRs merge into develop, or the operation stops before anything merges.

## Actual

- UI shows "Merging stack… / 3 pull requests are being merged" briefly, then rolls back to "Able to merge as a stack". Nothing
merges.
- The PR event log records repeated auto-merge was automatically disabled — "Pull Request is not mergeable".

(In the image, the bottom PR has been merged, but the behavior remains the same even if it is not merged.)
Image
Image
Image

## Notes

- Root cause not confirmed — the above are observed events only. One hypothesis is that merging the bottom PR moves the
merge-base of the PR above it, invalidating its latest-push approval, but this has not been verified.
- Reproduces without a merge queue, which differs from #174 (scoped to merge-queue branches, describes a hang rather than a
rollback). Filing separately because the trigger and symptom differ; feel free to consolidate into #174 if preferred.

Contributor guide

Open the contributing guide

Research direction

Start with the documented three-level stack reproduction and inspect the PR event log while comparing each PR's mergeability, approvals, and required checks. Read the distinction from #174 and investigate whether the latest-push approval changes as lower PRs merge. Done means the rollback cause is identified and the all-or-nothing stack-merge behavior is verified.

Written by the indexing model from the issue text.

Assessment

Tech stack
github, go
Domain
cli, devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.