⛔ An advisory gate is RED on main, and this seat put it there. Filed by the domain:ui#2 execution seat (PM session session_018HrVaotisyhgmot9o2MLRq) under 「advisory 门禁红着进 main 是共享损伤,任何车道发现都立即止血并立单」. ⛔ No priority:* / type: the triage seat's sole production.
The reading, taken first-hand
Bundle Analysis (performance-budget.yml) on main, push runs, paginated to 200 rows:
| head |
time |
conclusion |
en.ts bytes |
1560d4682 |
14:12:38Z |
✅ success |
193,188 |
f760064ea = PR #10142 |
14:19:07Z |
cancelled (concurrency) |
193,718 |
588380d54 = PR #10143 |
14:20:05Z |
cancelled (concurrency) |
193,718 |
698090479 = PR #10146 |
14:22:48Z |
⛔ failure |
193,718 |
⇒ the last green is the commit before #10142; the first completed run after it is red. The two runs in between were cancelled by the workflow's own concurrency, ⛔ not by a verdict.
What is actually failing — ⭐ every budget PASSES
From the failing job's log, verbatim in effect:
✅ Console eager closure is 3058.8 KB gzipped across 329 of 2309 chunks (budget: 3104.5 KB, headroom: 45.7 KB).
✅ Per-chunk eager budgets (4 chunks weighed) — all four ✅
✅ Ceiling freshness: all 3 ceiling constants unchanged on `main` since this checkout's base
❌ 1 ceiling is EXHAUSTED — under 0.10x of one 89.0 KB regression
❌ chunk `i18n-locale-en` 40.0 KB measured / 48.8 KB ceiling (headroom 8.8 KB = 0.10x)
⇒ ⛔ NOT a size regression. The i18n-locale-en ceiling has run out of headroom, and the gate says why that matters in its own words:
A ceiling with no headroom left has stopped being a measurement of THIS bundle and become a measurement of the NEXT change: it passes today and reds whatever lands next, whether or not that diff is what grew.
⭐ And it names this exact history: 「i18n-locales sat at 398 bytes while the merge queue weighed two independent finished pull requests and turned red on whichever it happened to weigh SECOND, for the other one's bytes」 (objectui#8554).
That is now happening again: PR #10147 (objectui#10039) routes three fetch calls and adds ⛔ no locale key at all — and its Bundle Analysis is red, for #10142's bytes.
⛔ How it got in, and it is this seat's error
Bundle Analysis is not a required check. PR #10142 merged with its own Bundle Analysis already failure.
⚠️ This seat checked CI before flipping #10142 ready and read 「36 checks, 11 pending, failed: []」 — then flipped ready and armed auto-merge. ⛔ One of those 11 pending checks came back red, and nothing stopped it, because it is advisory.
⇒ ⭐ The charter line this breaks is its own: 「放行认门禁 job 的结论(completed: success),⛔ 不认聚合读数」. A reading with 11 checks still pending is not a set of conclusions. 说明 SS's 「flip EARLY」 is about when a re-triggered run is cheap; it is ⛔ not a licence to arm auto-merge over checks that have not reported.
Bleeding stopped, in this act
The remedy is a DECISION, ⛔ not a repair this lane may take
The gate states the only two routes: take the bytes out of the chunk this row names, or take a deliberate, authorised re-pin and say in the PR what the new headroom buys.
- Bytes out ⇒ the
en pack stops being wholly eager. A design change to how locale catalogues are chunked — ⚠️ and note the en pack is resident by design (check:eager-locale-catalogues: en resident, 9 deferred), so this is not a free move.
- Re-pin ⇒ a gate-strength change, which is on the human floor — ⚠️ and one the gate pre-emptively refuses as a reaction to being full. An authorised re-pin needs a reason that is ⛔ not 「it went red」.
⇒ ⛔ This seat does not choose, and ⛔ does not touch either. ⚠️ Related but DISTINCT: objectui#10085 re-pins framework DOWN after a saving; this row is a different chunk and the opposite direction.
⚠️ What is NOT claimed
Acceptance
Bundle Analysis is green on main, by one of the gate's own two routes, with the choice recorded.
- The 「how close was it before」 question is answered, so the next reader knows whether this was one PR's bytes or a row that had been terminal for a while.
- ⭐ And the landing rule that let it through is fixed where it is read, ⛔ not remembered: ⛔ never arm auto-merge while any check is still pending — a PR is landed on conclusions, and an advisory red merges silently.
Generated by Claude Code
⛔ An advisory gate is RED on
main, and this seat put it there. Filed by thedomain:ui#2execution seat (PM sessionsession_018HrVaotisyhgmot9o2MLRq) under 「advisory 门禁红着进 main 是共享损伤,任何车道发现都立即止血并立单」. ⛔ Nopriority:*/type: the triage seat's sole production.The reading, taken first-hand
Bundle Analysis(performance-budget.yml) onmain, push runs, paginated to 200 rows:en.tsbytes1560d4682f760064ea= PR #10142588380d54= PR #10143698090479= PR #10146⇒ the last green is the commit before #10142; the first completed run after it is red. The two runs in between were cancelled by the workflow's own concurrency, ⛔ not by a verdict.
What is actually failing — ⭐ every budget PASSES
From the failing job's log, verbatim in effect:
⇒ ⛔ NOT a size regression. The
i18n-locale-enceiling has run out of headroom, and the gate says why that matters in its own words:⭐ And it names this exact history: 「
i18n-localessat at 398 bytes while the merge queue weighed two independent finished pull requests and turned red on whichever it happened to weigh SECOND, for the other one's bytes」 (objectui#8554).That is now happening again: PR #10147 (objectui#10039) routes three
fetchcalls and adds ⛔ no locale key at all — and itsBundle Analysisis red, for #10142's bytes.⛔ How it got in, and it is this seat's error
Bundle Analysisis not a required check. PR #10142 merged with its ownBundle Analysisalreadyfailure.⇒ ⭐ The charter line this breaks is its own: 「放行认门禁 job 的结论(
completed: success),⛔ 不认聚合读数」. A reading with 11 checks still pending is not a set of conclusions. 说明 SS's 「flip EARLY」 is about when a re-triggered run is cheap; it is ⛔ not a licence to arm auto-merge over checks that have not reported.Bleeding stopped, in this act
Bundle Analysisalso red, anddirty) → converted to DRAFT, which is the remedy that actually dequeues. ⛔ Disarming auto-merge alone does not.EXHAUSTED_HEADROOM_FLOOR_MULTIPLE, and ⛔ never add a row toEXHAUSTED_HEADROOM_ALLOWANCESto silence this」.The remedy is a DECISION, ⛔ not a repair this lane may take
The gate states the only two routes: take the bytes out of the chunk this row names, or take a deliberate, authorised re-pin and say in the PR what the new headroom buys.
enpack stops being wholly eager. A design change to how locale catalogues are chunked —enpack is resident by design (check:eager-locale-catalogues: en resident, 9 deferred), so this is not a free move.⇒ ⛔ This seat does not choose, and ⛔ does not touch either.⚠️ Related but DISTINCT: objectui#10085 re-pins
frameworkDOWN after a saving; this row is a different chunk and the opposite direction.i18n-locale-enwas to the 0.10x floor BEFORE today. The +530 bytes fix(plugin-calendar,i18n): route every CalendarView accessible name through the locale packs #10142 added are what crossed it, but whether the row had been sitting at 0.11x for weeks is a reading nobody has taken.Acceptance
Bundle Analysisis green onmain, by one of the gate's own two routes, with the choice recorded.Generated by Claude Code