debug-ci-merge-queue

Diagnose GitHub merge-queue evictions and hanging CI jobs across runner fleets.

7|12|Updated Mar 26, 2026
One-click install
npx skills add https://github.com/OpenRouterTeam/docs --skill debug-ci-merge-queue-openrouterteam
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: debug-ci-merge-queue
Source: https://github.com/OpenRouterTeam/docs/tree/main/.agents/skills/debug-ci-merge-queue
Command: npx skills add https://github.com/OpenRouterTeam/docs --skill debug-ci-merge-queue-openrouterteam

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? GitHub merge queues sometimes evict PRs with no visible test failure, and CI jobs hang silently on self-hosted runners. This Skill provides a systematic diagnostic path to distinguish required-check timeouts from real test failures, identify Blacksmith sticky-disk read failures and WarpCache corruption, and execute the correct runner-provider mitigation. ## Core Features & Use Cases - Merge-Queue Forensics: Query the GitHub GraphQL API for RemovedFromMergeQueueEvent reasons and timestamps to determine whether a PR was evicted by failed checks or job timeouts. - Runner Fleet Identification: Determine which fleet (Blacksmith, WarpBuild, or GitHub-hosted) ran a job and compare sticky-disk installs against cache-based control runs to isolate infrastructure degradation. - Mitigation & Escalation: Flip USE_GITHUB_RUNNERS or CI_RUNNER_PROVIDER repository variables to switch fleets, and escalate to vendors with the exact runner names, disk keys, and log evidence they require. - Use Case: A PR is removed from the merge queue at 04:01 UTC with failed_checks but no failing test. Use this Skill to confirm the unit job hit its 7-minute timeout after a stalled bun install on a Blacksmith sticky disk, then fail over to WarpBuild and re-enqueue the PR. ## Quick Start Ask the assistant to investigate why PR 31592 was evicted from the merge queue and determine whether the CI failure was caused by a runner infrastructure problem.

Frequently Asked Questions about debug-ci-merge-queue

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I find out why a PR was removed from the GitHub merge queue?▼

Query the GitHub GraphQL API for RemovedFromMergeQueueEvent on the PR timeline to get the reason and timestamp. A reason of failed_checks does not prove a test failed; it also includes required checks cancelled by job timeouts.

Why does a merge queue PR fail with no visible test failure?▼

The usual cause is a required job cancelled at its timeout-minutes boundary, often after a stalled bun install on a degraded Blacksmith sticky disk. Compare the hung job's install logs against a cache-based control run on the same fleet to confirm.

How do I switch GitHub Actions CI from Blacksmith to WarpBuild runners?▼

Set the CI_RUNNER_PROVIDER repository variable to warpbuild with gh variable set, or delete it to return to Blacksmith. Only runs enqueued after the flip move fleets, so cancel and rerun in-flight jobs and re-add merge-queue entries.

What causes bun install to hang on Blacksmith runners?▼

A degraded sticky disk can mount successfully in milliseconds but stop serving reads, so bun install prints its resolution line and then stalls on the warm store. A same-fleet actions/cache control run installing normally rules out the registry and network.

When should I use GitHub-hosted runners instead of self-hosted fleets?▼

Set USE_GITHUB_RUNNERS to true when both self-hosted fleets are suspect or the degraded workflow is not migrated to CI_RUNNER_PROVIDER. GitHub-hosted larger runners cost roughly twice the self-hosted per-minute rate, so treat it as a temporary mitigation.