Skip to content

docs(ci): document merge-queue GH006 race and stuck-promotion diagnosis - #1106

Open
mrbobbytables wants to merge 1 commit into
projectbluefin:testingfrom
mrbobbytables:docs/ci-promotion-queue-failure-modes
Open

docs(ci): document merge-queue GH006 race and stuck-promotion diagnosis#1106
mrbobbytables wants to merge 1 commit into
projectbluefin:testingfrom
mrbobbytables:docs/ci-promotion-queue-failure-modes

Conversation

@mrbobbytables

Copy link
Copy Markdown

Context

Investigating #929 ("ci: stable promotion has not completed since July 20"). Re-ran the current triage against the latest Execute Release run and the auto/promote-testing-to-main promotion PR to confirm what still blocks stable and to check whether anything changed since the last two triage comments on the issue.

Confirmed still blocking, no bluefin-side lever (owned upstream):

  • bluefin smoke-a: Dash to Dock panel is visible / Firefox AT-SPI checks still fail (GDBus UnknownMethod error, object does not exist at path /org/gnome/Shell/Extensions; Firefox address bar not found). This is the same testsuite-side regression flagged in the 2026-08-10 comment; still no tracking issue in projectbluefin/testsuite as of this run.
  • bluefin + bluefin-nvidia common-b: ujust toggle-updates failed on the 2026-08-10 run with 'unable to pick selection: could not open a new TTY'. Traced this to feat(ujust): honor ACTION in toggle-updates for non-interactive use common#966 (merged 2026-08-09), which fixes exactly this by honoring an explicit ACTION argument. testing's image-versions.yml already picked up the fixed digest via Renovate (ghcr.io/projectbluefin/common@sha256:6d35613..., PR chore(deps): update ghcr.io/projectbluefin/common:latest docker digest to 6d35613 #1105) - this repo has nothing further to change here.

New finding, not previously documented: the promote-testing-to-main to merge-queue path itself has a benign-but-confusing failure mode. A promotion run can fail with 'GH006: Protected branch update failed ... added to a merge queue' when its force-push races another run that already enqueued the PR (confirmed via the promotion PR's timeline - interleaved head_ref_force_pushed/added_to_merge_queue events within the same minute). Distinct from that, the promotion PR itself has been cycling added_to_merge_queue -> removed_from_merge_queue roughly every two hours, day after day, which means the release-gate check is genuinely failing on the squashed testing content - i.e. it's gated on the same E2E regressions above, not a promotion-workflow bug.

Change

Documentation-only: adds a section to docs/skills/ci/references/failure-modes.md describing this GH006 race and how to tell it apart from a genuinely stuck promotion, per AGENTS.md's 'update the matching skill when a session surfaces a non-obvious pattern.' No workflow, build, or image behavior changes.

Validation

  • Documentation-only change; no just check / pre-commit / image build tooling available in this environment, consistent with 'do not run expensive image builds for documentation-only changes.'
  • Manually reviewed rendered Markdown for formatting.

Related: #929, projectbluefin/common#966, projectbluefin/common#951.

Investigated projectbluefin#929 (stable promotion stuck since July 20). The current
Execute Release/Promote failures trace to E2E gate regressions already
owned upstream (testsuite smoke-a AT-SPI/Dash-to-Dock, common's
toggle-updates TTY fix already merged and picked up on testing via
Renovate). No bluefin-side code lever exists for those.

Along the way, found a previously undocumented, currently-happening
pattern worth capturing so future triage doesn't re-diagnose it: the
promote-testing-to-main workflow can log a spurious GH006 'protected
branch' failure when a run's force-push races another run's already-
enqueued PR. It's benign (concurrency group already serialized the
real state change), but distinguishing it from a genuine promotion
block requires checking the promotion PR's timeline. Also documents
that a promotion PR cycling through added/removed-from-merge-queue for
multiple days running means the release gate genuinely fails on the
squashed content — i.e. the real, currently-active blocker for projectbluefin#929.

Assisted-by: Claude Sonnet 5 via GitHub Copilot
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

@hanthor hanthor left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docs-only addition to failure-modes.md, single file, no workflow/behavior changes. The described GH006 race (force-push landing while another run is already enqueuing) is a plausible and correctly-diagnosed benign race given the concurrency group serializes runs, and the distinction drawn between that noise and a genuinely-cycling added_to_merge_queue/removed_from_merge_queue pattern (pointing at real release-gate failures) is a useful, accurate triage aid. Nothing here contradicts current workflow behavior as far as I can tell from the referenced files.


Generated by Claude Code

@castrojo castrojo added the lgtm This PR has been approved by a maintainer label Aug 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lgtm This PR has been approved by a maintainer

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants