Skip to content

merge gate: mergeStateStatus stuck BLOCKED/UNKNOWN despite all checks SUCCESS, 0 threads, no approval requirement #1087

Description

@kyle-sexton

lane: merge-drive
category: operational (blocks this lane's own merge readiness read on affected PRs, not a code defect)

observed vs expected: For two separate PRs this session, mergeStateStatus never settled to CLEAN/HAS_HOOKS even though every other signal says the PR is ready:

  • docs(planning): reframe interview session-config framing #848: re-checked across 3+ cycles over ~2 hours (statusCheckRollup pulled fresh each time). mergeable=MERGEABLE, all 25 checks SUCCESS (confirmed via gh pr view --json statusCheckRollup, not just the cached merge-gate script output), reviewDecision="" with requiredApprovingReviews=0 (no approval needed), unresolvedThreadCount=0 after this lane resolved the last open thread, no do-not-merge label. mergeStateStatus flickered BLOCKED -> UNKNOWN -> BLOCKED across checks but never reached CLEAN.
  • feat(repo-hygiene): fleet batch mode for the caches/build/git/all tiers #1064: same signature — all 25 checks SUCCESS, not a draft, empty reviewDecision — but mergeable/mergeStateStatus have both sat at UNKNOWN for 3 consecutive ~30min cycles (~1.5h) with no change.

Both PRs share the identical 25-check set (hygiene/review/security-review/do-not-merge/pr-issue-linkage/pr-title/zizmor/-sync/-gate/plugin-gate/miro-plugin/youtube-extraction/skill-quality-gate/portability-lint/Runner policy/ci-status/GitGuardian), all reporting SUCCESS in statusCheckRollup — this repo's specific check bundle may be relevant if it's a fan-out size or count GitHub's merge-state computation struggles with.

This is NOT #374's failure mode (that issue is a check that never settles, degrading to UNSTABLE) — here every check IS settled and green; it's mergeStateStatus itself that won't compute to an actionable state. An update-branch recompute nudge (tried once on #848 earlier this session) only produced a fresh unrelated merge commit without fixing the underlying stuck state.

Impact: this lane's merge gate correctly refuses to merge (fail-safe, working as designed) but can never prove readiness on affected PRs, so they sit indefinitely with nothing left to fix. Worth a human/GitHub-support-level look at whether this is a GitHub-side computation limit, a ruleset interaction (this repo uses rulesets, not classic branch protection — required_status_checks split across 2 separate rulesets, deletion/non_fast_forward/required_linear_history/pull_request/required_signatures also configured) or something else entirely.

Related: #374 (same symptom family — merge-state stuck — different, already-closed root cause).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions