Skip to content

ci: add an always-run roll-up job named CI so the queue's required check matches a real check run (#9283 Option A implementation) #9318

Description

@os-zhuang

Implements the maintainer's #9283 ruling (Option A — the full suite SHOULD block the merge queue), after the first implementation attempt froze the queue for ~1h45m on 2026-08-17 (~11:30–13:15Z). Full incident record: #9283 comment.

What happened

The required check was registered as CI — the workflow name. Required status checks match check-run (job) names, and no job in ci.yml reports a check named CI, so the context was permanently "Expected": green merge groups timed out, nothing merged from 11:29Z until the maintainer removed the entry (~13:15Z). The failure mode flipped from #9283's "red merges anyway" to "green cannot merge".

Current interim posture (maintainer-set, 2026-08-17)

Required checks include the two existing aggregates Test Core (test-gate) and Dogfood Regression Gate (dogfood-gate). Four gate jobs have no aggregate covering them and are currently not required: Temporal Conformance (live PG + MySQL) — the exact job whose failure merged in #9283 — plus Build Core, Build Docs, Console Pin Gate. The PM has recommended adding those four names in settings as interim protection; this card is the durable fix.

The work

Add one roll-up job to .github/workflows/ci.yml:

  • Job name: CI — the literal string, chosen so the queue's required context has one stable name that survives job renames (the [Decision] The merge queue merged a group whose full-suite CI run concluded FAILURE — measured on 77da09bac, now on main #9283 hazard class).
  • needs: every gate job of the workflow: test-gate, dogfood-gate, temporal-conformance, build-core, build-docs, console-pin (re-derive the list from the file at implementation time, do not trust this card).
  • if: always() — must run when needed jobs are skipped by the path filter (skips count as pass) and must fail when any needed job has failure or cancelled (read needs.*.result explicitly; do not rely on default propagation, which would skip the roll-up instead of failing it).
  • Runs on both pull_request and merge_group (both already trigger the workflow).
  • Runner cost: one ubuntu-latest no-op-shaped job per run — seconds.

Acceptance

  1. On a docs-only PR: CI reports success (all needed jobs skipped).
  2. On a PR with a failing needed job: CI reports failure.
  3. Job name is exactly CI in the check-run list.

Explicitly out of scope / sequencing

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions