You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 9b207e0
Browse filesBrowse the repository at this point in the historyBrowse files
ci: add an always-run roll-up job named CI so the queue's required check matches a real check run (#9318)
Branch protection matches a required check by CHECK-RUN name, and a job's
check-run name is its `name:` value. Registering `CI` — ci.yml's WORKFLOW name —
matched no check run at all: the context sat permanently "Expected", green merge
groups timed out and nothing merged for ~1h45m on 2026-08-17. This job makes the
name real, implementing #9283's Option A ruling in the durable form: one stable
required context that rolls up every gate job, so adding a gate extends the
queue's protection with no settings change.
- `ci-rollup` / `name: CI`, `if: always()`, `needs:` filter + the six gate jobs
(test-gate, dogfood-gate, temporal-conformance, build-core, build-docs,
console-pin). The sharded matrices are deliberately absent: their verdicts
arrive through the aggregates, which count per-shard attestations instead of
reading the one aggregate word #6082 measured going wrong both ways.
- The verdict is computed from `needs.*.result` explicitly, because default
propagation would SKIP this job on an upstream failure and a skipped required
context is the #3622 deadlock. success/skipped pass; failure/cancelled fail;
an unrecognised runner lifecycle value (`abandoned`, #6082) fails closed; an
empty `needs` context fails rather than ticking (#4690).
- Pins the literal in `check-required-contexts.mjs` (#6865), so a rename of the
roll-up fails in the ESLint job instead of silently detaching the gate — the
one name in the repo where that protection matters most.
Fixes#9318
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NYgmGheCzM6NrHZN436Cxf
echo "::error::gate '$job' concluded '$result', which is not one of success/skipped/failure/cancelled. Treating an unrecognised runner lifecycle value as a PASS would publish a green required context over a gate that never ran (#6082); failing closed instead."
1594
+
failed=1
1595
+
;;
1596
+
esac
1597
+
done <<< "$verdicts"
1598
+
1599
+
if [ "$failed" -ne 0 ]; then
1600
+
echo "::error::CI roll-up failed — see the per-gate lines above."
1601
+
exit 1
1602
+
fi
1603
+
1604
+
echo "✓ CI: every gate this run scheduled is green (skips counted as pass)."
0 commit comments