Skip to content

Stack panel says a pull request is queued when it has no queue entry #503

Description

@grubmeshi

Summary

On a stacked pull request that is not in the merge queue, the stack panel says it is, and offers to remove it. The badges in the same panel report the state correctly, so the panel contradicts itself.

Evidence

Stack main ← #101 ← #102. After Enqueue stack (2), only #101 is admitted. The page of #102 then shows:

  • the heading "Queued to merge…"
  • "This pull request is next up in the merge queue."
  • a "Remove from queue" button
  • badges #102 Ready and #101 Queued, which are correct
Image

The merge queue page for the same branch shows 1 Queued and lists only #101:

Image

The API agrees with the queue page, not with the heading:

mergeQueue(branch:"main").entries.totalCount = 1
mergeQueue(branch:"main").entries.nodes      = [{ position: 1, pullRequest: #101 }]

#101   isInMergeQueue true    position 1
#102   isInMergeQueue false   mergeQueueEntry null

#102 reported isInMergeQueue=false at every sample across the whole landing.

Expected

A stacked pull request with no queue entry should not be described as queued:

  • do not head the panel "Queued to merge…" on a pull request that is not queued;
  • do not say "This pull request is next up in the merge queue" when isInMergeQueue is false. If the intent is that this layer goes after the one below it, say that. It is a statement about the stack, not about queue membership;
  • do not offer "Remove from queue" for a pull request with no mergeQueueEntry. The button does not say whether it would remove the layer below, which would be destructive.

Actual

The heading, the sentence and the button all claim queue membership that the API denies, while the badges in the same panel report it correctly.

Environment

  • gh 2.100.0, gh stack v0.0.8
  • Trunk ruleset:
    merge_queue:   grouping_strategy HEADGREEN, merge_method REBASE,
                   max_entries_to_build 8, max_entries_to_merge 8,
                   min_entries_to_merge 1, min_entries_to_merge_wait_minutes 5,
                   check_response_timeout_minutes 40
    pull_request:  allowed_merge_methods ["rebase"], required_approving_review_count 1,
                   require_last_push_approval false, dismiss_stale_reviews_on_push false
    
  • delete_branch_on_merge: true, allow_auto_merge: false

Reproduction

  1. Protect a trunk with a merge queue. Run gh stack link <bottom> <top> and get both pull requests approved and green.
  2. Press Enqueue stack (2).
  3. Open the top pull request and compare its panel against the branch's merge queue page and against pullRequest{ isInMergeQueue mergeQueueEntry{ position } }.

Related

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions