CI shepherd: a permanent auto-merge refusal (token lacks workflow scope) fails every pass and flaps needs-fix -> run storm
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 56/100
調査の方向性
Start by reading the apply() and decide() paths in shepherd_gh.py, then inspect the shepherd event and reconcile workflows to understand how status labels trigger runs. Replay the #5950 merge-ready sequence in tests/tools/test_shepherd_gh.py; done means a permanent permission refusal gets one owner-facing status and comment, causes no repeated merge attempts or label churn, and does not fail the run.
索引モデルが issue の本文から書いたものです。
説明
What happened (2026-10-22, ~16:21Z–20:03Z)
PR #5950 had shepherd:merge and edited .github/workflows/det-sweep.yml. AUTOMATION_PAT lacked the Workflows permission, so every gh pr merge --auto call failed:
#5950 auto-merge on: FAILED: GraphQL: Pull request refusing to allow a Personal Access Token to create or update workflow `.github/workflows/det-sweep.yml` without `workflow` scope (enablePullRequestAutoMerge)
shepherd_gh.py exited 1 on that failure, and the PR's shepherd:needs-fix label kept flipping on and off: each reconcile pass removed it, and it was then re-added. Every add or remove fired another shepherd-event.yml run, which failed the same way. Result: about 100 label flips on #5950, about 195 red shepherd runs (99 label-event, 95 reconcile on main) and about 950 runner-minutes, until the owner merged #5950 by hand.
Fix (shepherd only)
- In
apply(), recognise a permanent permission refusal (thewithout \workflow` scope` / "refusing to allow a Personal Access Token" GraphQL error, and similar 403 or permission errors) as distinct from a transient failure. - On that error, label the PR once with an owner-facing status (e.g.
shepherd:needs-owner, or reuse an existing one) and post one comment that says why ("this PR edits workflow files; the shepherd token can't enable auto-merge. Merge it by hand, or give AUTOMATION_PAT Workflows: read and write"). Don't exit non-zero for it. decide()must skip auto-merge attempts on a PR carrying that status, so neither reconcile nor the label event retries it every pass.- Stop the
needs-fixflapping: a pass must not remove a status label that the same or the next pass will put straight back. Add a regression test intests/tools/test_shepherd_gh.pythat replays the #5950 sequence (merge-ready + auto-merge refused) and asserts there is no label churn and the run does not fail.
Optional: decide() could pre-check whether a PR touches .github/workflows/ and go straight to the owner label, without trying auto-merge first.
Owner side
The owner has updated the token (2026-10-22, ~20:05Z); not yet confirmed on a live workflow-editing PR. The fix above should land regardless, because any future permission gap would cause the same storm.
Evidence: runs 39813308373 (first reconcile failure) … 39844551634 (last label-event failure); #5950 issue events.
- 主要言語
- Python
- スター
- 57
- フォーク
- 11
- 平均マージ
- 1時間 20分
- マージ済み PR(30日)
- 985
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
squid-protocol/gitgalaxy のほかの issue
-
claim:nyx enhancement priority: high scope:infra
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
squid-protocol/gitgalaxy#6278 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
claim:melek enhancement era:2 legacy-modernization priority: high scope:core testing
難易度 5/5 1週間以上 初心者へのやさしさ 24/100
squid-protocol/gitgalaxy#6271 · コメント 4 件 ·
メンテナーはふだん 1 日以内に返信
-
claim:nyx core-engine lane:nyx needs:doom-corpus priority: high scope:frontier
難易度 5/5 1週間以上 初心者へのやさしさ 20/100
squid-protocol/gitgalaxy#6266 · コメント 6 件 ·
メンテナーはふだん 1 日以内に返信
-
claim:nyx enhancement scope:sweep testing
難易度 4/5 3〜5日 初心者へのやさしさ 38/100
squid-protocol/gitgalaxy#6262 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
scope:infra security
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
squid-protocol/gitgalaxy#6239 ·
メンテナーはふだん 1 日以内に返信
squid-protocol/gitgalaxy の issue をすべて見る
似ている issue
-
Project submission:オープン
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
slavakurilyak/awesome-ai-agents#845 ·
メンテナーはふだん 1 日以内に返信
-
tests: pin that the atomic writers in utils/paths.py stage the temporary file in the target's directory対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンdifficulty:2 enhancement good first issue
難易度 1/5 1〜3時間 初心者へのやさしさ 92/100
MakazhanAlpamys/Soup#2178 ·
メンテナーはふだん 1 日以内に返信
-
[BUG] dcg.waggr permutation p-values are folded twice, so near-zero scores get the smallest p-valuesオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
scverse/rapids-singlecell#854 ·
メンテナーはふだん 1 日以内に返信
-
Slang input: int8_t4_packed and uint8_t4_packed are copied into CrossGL対応中かも @ninglinLiu が今日担当しました。 オープンarea:frontend backend:slang bug direction:input
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 13 日以内に返信