Skip to content

Commit 9fffd32

Browse files
yinlianghuiclaude
andauthored
ci(lint): record the merge-queue check-set measurement — no coverage gap exists (#12338)
Step 1 of #12211 was a measurement, and it comes back NEGATIVE: every gate step in lint.yml already runs on merge_group, so there is no tree-global ratchet missing queue coverage to wire. The two observations the card called contradictory are both true and do not conflict, because one of them was misread: - the queue DOES run the ratchets. In merge_group run 32847794799 the `Type Check · consumer gates` lane ran and failed on check:exported-any-returns, and the required `TypeScript Type Check` aggregate carried that red into the queue. That is the 12:26-13:05Z mass-dequeue, on innocent candidates, while main itself was red. - the 11:50Z landing did not pass the queue. It produced no merge_group build at all, and its PR-level required checks were green as measured ~3h before the gate that would have refused it existed. So the residual is not a trigger this file is missing; it is that a commit can reach main without a queue build, plus strict_required_status_checks_policy false on the main ruleset. Both are repository settings and maintainer-only. Comment only — no behaviour changes. Claude-Session: https://claude.ai/code/session_01UjM2ia8Av1v5NqfqQEQmC6 Co-authored-by: Claude <noreply@anthropic.com>
1 parent c312a56 commit 9fffd32

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

.github/workflows/lint.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,45 @@ on:
1212
# the trigger alone is enough.
1313
merge_group:
1414

15+
# ── MEASURED 2026-08-25 (#12211) — a NEGATIVE result, recorded so it is not
16+
# re-measured. After the stale-ledger outage the queue's check set was measured
17+
# rather than assumed, because two observations of that day read as
18+
# contradictory: a PR landing an inconsistent tree at 11:50Z (which looked like
19+
# "the consumer-gates lane does not run in the queue"), and five queue entries
20+
# dequeued 12:26-13:05Z while main was red (which looked like the opposite).
21+
#
22+
# Both halves were read, and there is NO merge_group coverage gap to close:
23+
#
24+
# - STATIC. Every gate step in this workflow runs on merge_group; the claim
25+
# three lines above is exact. The only event-conditioned step in the file is
26+
# `Save Turbo cache (main only)`, which stores a cache and judges nothing.
27+
# ci.yml is the same shape — its single merge_group exclusion sits on the
28+
# paths filter, which on a queue build widens to "everything changed"
29+
# rather than narrowing. All six required contexts live in these two
30+
# merge_group-triggered workflows (scripts/check-required-contexts.mjs).
31+
#
32+
# - DYNAMIC. 180 merge_group runs of this workflow were read across
33+
# 09:15-18:49Z. In run 32847794799 — a real queue build — the
34+
# `Type Check · consumer gates` lane RAN and FAILED on
35+
# `check:exported-any-returns`, and the required `TypeScript Type Check`
36+
# aggregate carried that red into the queue. Tree-global ratchets do kick
37+
# there; the 12:26-13:05Z dequeues are that gate, on innocent candidates,
38+
# while main itself was red. CI was green on those same merge groups.
39+
#
40+
# What the 11:50Z landing actually was: that commit produced NO merge_group
41+
# build at all — 4 of the 29 PRs landing 09:20-12:10Z produced none — and its
42+
# PR-level required checks were green as measured at 07:20Z, ~3h before the
43+
# gate that would have refused it existed. The residual is therefore not a
44+
# trigger this file is missing. It is that a commit can reach main without a
45+
# queue build, plus `strict_required_status_checks_policy: false` on the `main`
46+
# ruleset (measured 2026-08-18, #9642). Both are repository SETTINGS and
47+
# maintainer-only; neither is reachable from this file.
48+
#
49+
# ⛔ So do not "close the gap" by adding merge_group to the advisory workflows
50+
# (check-links.yml, docs-drift-check.yml, validate-deps.yml, the patrols). A
51+
# non-required check on a queue build costs runners and blocks nothing, and
52+
# check-links.yml's own header already refuses it for that reason.
53+
1554
# Same policy as ci.yml: superseded runs on the same PR/branch waste runners
1655
# and delay feedback; cancel them. Push runs to main group by commit ref, so an
1756
# in-flight main run is cancelled only by a newer main push.

0 commit comments

Comments
 (0)