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
# A workflow cannot make itself required. A maintainer must add the
37
37
# `Console Pin Freshness` context to the branch-protection rule for `main`
38
38
# (Settings → Branches → main → Require status checks to pass). Until then this
39
39
# workflow REPORTS on the release PR without blocking the merge button.
40
+
#
41
+
# ⚠️ THE PRECONDITION IS THE `merge_group:` TRIGGER BELOW (#6121). Adding this
42
+
# context to a required set is safe ONLY BECAUSE that trigger now exists. The
43
+
# paragraph above states the PR half of the rule — "a required context that
44
+
# reports nothing leaves every PR stuck" — and until #6121 this file invited
45
+
# maintainers into the required set while missing the QUEUE half: branch
46
+
# protection is evaluated AGAIN on the `gh-readonly-queue/**` generation, so a
47
+
# required context that produces no run THERE parks every queue generation
48
+
# forever (#3622 is the prototype for that deadlock).
49
+
#
50
+
# FUTURE EDITORS: before this context is added to — or left in — any required
51
+
# set, confirm `merge_group:` is still in `on:` below. Deleting that trigger
52
+
# does not fail loudly; it deadlocks the merge queue for every PR in the repo.
40
53
41
54
on:
42
55
pull_request:
43
56
branches: [main]
57
+
# Merge queue (see ci.yml for the full note): a required context must report
58
+
# on queue generations too, or queue builds wait forever on a check that never
59
+
# arrives. This is the precondition documented above (#6121). Which LANE the
60
+
# event lands in — blocking vs reporting — is decided in the pin-freshness
61
+
# step below, not here.
62
+
merge_group:
44
63
workflow_dispatch:
45
64
46
65
concurrency:
@@ -87,12 +106,33 @@ jobs:
87
106
# with the title configured in release.yml. Either identifies the lane;
88
107
# both are checked so a future rename of one does not silently disarm
89
108
# the gate.
90
-
if [ "$EVENT" != "pull_request" ] \
109
+
#
110
+
# LANE BY EVENT — classify every new trigger HERE, explicitly (#6121).
111
+
# This test used to read `[ "$EVENT" != "pull_request" ]`, a negation
112
+
# that meant "workflow_dispatch" back when `on:` had exactly two
113
+
# entries. Adding `merge_group:` is the moment that proxy breaks: the
114
+
# negation would sweep every queue generation into the BLOCKING lane,
115
+
# where this gate goes red whenever the pin lags — the repo's normal
116
+
# state between bumps (see WHERE IT BLOCKS at the top) — and a required
117
+
# context that is systematically red EJECTS every PR from the queue.
118
+
# That would trade one deadlock for another rather than fix it.
119
+
#
120
+
# workflow_dispatch → BLOCKS. A human asked for the full check.
121
+
# merge_group → reports. The queue generation of an ordinary PR
122
+
# is an ordinary PR; the Version Packages PR is
123
+
# enforced on its own `pull_request` run, and
124
+
# release.yml runs this same script on the publish
125
+
# path — the backstop with no override input.
126
+
# pull_request → BLOCKS on the release lane only.
127
+
#
128
+
# HEAD_REF and PR_TITLE are empty on merge_group (no `pull_request` in
129
+
# the payload), so the two release-lane tests are false there anyway.
130
+
if [ "$EVENT" = "workflow_dispatch" ] \
91
131
|| [ "$HEAD_REF" = "changeset-release/main" ] \
92
132
|| [ "$PR_TITLE" = "chore: version packages" ]; then
93
-
echo "::notice::Release lane — the objectui pin-freshness gate BLOCKS here (#3340)."
133
+
echo "::notice::Release lane or manual run — the objectui pin-freshness gate BLOCKS here (#3340)."
94
134
node scripts/check-objectui-pin-fresh.mjs
95
135
else
96
-
echo "::notice::Not the Version Packages PR — pin freshness is reported but does not block (a pin lagging between bumps is normal). It blocks on the release PR."
136
+
echo "::notice::Not the release lane — pin freshness is reported but does not block (a pin lagging between bumps is normal). It blocks on the Version Packages PR and on the publish path."
0 commit comments