Skip to content

fix(ci): 恢复稳定的 "Dogfood Regression Gate" 必需检查名 — 全仓 PR 死锁修复 - #3644

Merged
os-zhuang merged 1 commit into
mainfrom
fix/ci-dogfood-required-context
Jul 27, 2026
Merged

fix(ci): 恢复稳定的 "Dogfood Regression Gate" 必需检查名 — 全仓 PR 死锁修复#3644
os-zhuang merged 1 commit into
mainfrom
fix/ci-dogfood-required-context

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

事故:全仓所有开放 PR 卡死

复现:任取一个开放 PR,mergeable: MERGEABLE、所有 check 绿、mergeStateStatus: BLOCKED,合并按钮不可用(实测 #3637/#3638/#3639/#3640/#3401 全中)。

根因#3622 把 dogfood job 分片成 2 路矩阵,check 名变为 Dogfood Regression Gate (1/2) / (2/2);而分支保护要求的是裸名 Dogfood Regression Gate——现在没有任何 job 产出这个名字,该必需项永远无法满足#3622 自己的注释写了"若分支保护要求该名,必须更新为两个分片名",但那步没有执行。

修法:契约留在代码里,不动保护设置

新增一个极小的聚合 job 承载稳定名 Dogfood Regression Gateneeds: dogfood,按矩阵聚合结果判定:

  • success / skipped(filter 判定未触及 core 路径时矩阵合法跳过)→ 通过;
  • 其余 → 失败并打印聚合结果。

好处:将来再改分片数不会二次死锁(不必每次同步改保护设置),且无需管理员改仓库配置。

合并说明

本 PR 修的正是"阻止一切合并"的那个门,存在鸡生蛋问题——需以管理员权限合入一次,此后所有 PR(含本 PR 之后的)恢复正常合并。

🤖 Generated with Claude Code

…name (#3622 follow-up)

INCIDENT: every open PR in the repo is BLOCKED — mergeable, all checks
green, merge button dead.

Root cause: #3622 sharded the dogfood job 2-way, so its checks now
publish as "Dogfood Regression Gate (1/2)" / "(2/2)". Branch protection
still requires the bare context "Dogfood Regression Gate", which no job
emits anymore — the requirement can never be satisfied. #3622's own
comment called for updating branch protection; that step never happened.

Fix keeps the contract in CODE rather than in protection settings: a
tiny aggregator job carrying the stable name, gated on the matrix's
aggregate result. A future shard-count change therefore cannot deadlock
the repo again. `if: always()` + result inspection so a legitimately
skipped matrix (filter says no core paths changed) still satisfies the
gate.

Verified: workflow YAML parses; job graph has dogfood-gate needs:
dogfood with name "Dogfood Regression Gate".

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@os-zhuang os-zhuang added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Jul 27, 2026
@vercel

vercel Bot commented Jul 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Jul 27, 2026 12:31pm

Request Review

@os-zhuang
os-zhuang merged commit e3eb93f into main Jul 27, 2026
19 of 20 checks passed
@os-zhuang
os-zhuang deleted the fix/ci-dogfood-required-context branch July 27, 2026 12:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/cd size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant