Skip to content

Commit e3eb93f

Browse files
os-zhuangclaude
andauthored
fix(ci): restore the stable "Dogfood Regression Gate" required-check name (#3622 follow-up) (#3644)
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: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent 5bab561 commit e3eb93f

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,35 @@ jobs:
247247
echo "::endgroup::"
248248
done
249249
250+
dogfood-gate:
251+
# Stable required-check name for a SHARDED job (#3622 follow-up).
252+
#
253+
# Branch protection requires the context "Dogfood Regression Gate". Once
254+
# the job became a 2-way matrix its checks publish as "Dogfood Regression
255+
# Gate (1/2)" / "(2/2)" — the bare context could never appear again, so
256+
# EVERY pull request in the repo sat permanently BLOCKED (mergeable, all
257+
# checks green, merge button dead). #3622's own comment called for updating
258+
# branch protection; keeping the contract HERE instead means a future
259+
# shard-count change cannot deadlock the repo a second time.
260+
#
261+
# `if: always()` + result inspection so a legitimately skipped matrix (the
262+
# `filter` job says no core paths changed) still satisfies the gate.
263+
name: Dogfood Regression Gate
264+
needs: dogfood
265+
if: always()
266+
runs-on: ubuntu-latest
267+
permissions:
268+
contents: read
269+
steps:
270+
- name: Verify dogfood shard results
271+
run: |
272+
result="${{ needs.dogfood.result }}"
273+
echo "dogfood matrix aggregate result: $result"
274+
case "$result" in
275+
success|skipped) echo "Dogfood gate satisfied." ;;
276+
*) echo "::error::Dogfood shards did not pass (aggregate result: $result)"; exit 1 ;;
277+
esac
278+
250279
build-core:
251280
name: Build Core
252281
needs: filter

0 commit comments

Comments
 (0)