Skip to content

ci(queue): a dispatch on main reports Queue on a PR's head - #7619

Merged
kixelated merged 1 commit into
mainfrom
ci/queue-report
Nov 2, 2026
Merged

kixelated merged 1 commit into
mainfrom
ci/queue-report

Conversation

@kixelated

Copy link
Copy Markdown
Collaborator

Problem

main requires the Queue context. PRs whose test merge commit predates queue.yml never get a pull_request run that reports it, so GitHub keeps them out of the merge queue. That's 68 PRs that were armed for the retired host gate. moq-dev/moq#7617's dispatch can't help them: a dispatch reads the workflow from the ref it runs on, and their old branches have no dispatch trigger, so every dispatch was refused with HTTP 422.

Approach

The dispatch now runs on main with a sha input. A Report Queue job creates the skipped Queue check run on that commit through the Checks API. It uses the workflow's own token, which belongs to the GitHub Actions app the ruleset pins (15368). The job holds only checks: write, checks nothing out, and validates the input as a full SHA. This only satisfies the PR-side requirement, as a pull_request run's skipped job already does for every PR. The merge queue still builds each group on the self-hosted runner. sh/gh/queue.test.ts asserts the input, the condition, the permissions and the single step.

Impact

  • No public API or wire change.

Alternatives

  • Dropping the integration pin and posting commit statuses: that weakens the requirement for every PR.
  • Merging main into each branch: that moves reviewed heads and fails on conflicting ones.

Follow-ups

  • After this lands, run gh workflow run queue.yml -f sha=<head> for each armed PR missing Queue.

Review

  • Reviewer: Codex (quest review --base origin/main), gpt-6-astra at medium effort, session 01a19b3e-33a0-76d1-8025-f6811c11e7ef.
  • Round 1 on 3a6d9be77ba28f1be7dc4a57b399b5d98ecd1f43: no findings.

just gh check passes.

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

A dispatch reads queue.yml from the ref it runs on, so dispatching on an
old PR branch is refused. A dispatch on main now takes the PR head's SHA
and creates the skipped Queue check run there with the workflow's own
token (the GitHub Actions app the ruleset pins), with only checks: write
and no checkout.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@pullfrog

pullfrog Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

This run was cancelled before it finished.

Pullfrog  | View workflow run | via Pullfrog

@kixelated
kixelated added this pull request to the merge queue Nov 2, 2026
Merged via the queue into main with commit 0fb8416 Nov 2, 2026
4 of 6 checks passed
@kixelated
kixelated deleted the ci/queue-report branch November 2, 2026 07:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant