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
[finding] ci-cd-pipeline.md's "can never be required, structurally" bullet is a second unpinned current-state claim in the same section — true today, and live-e2e.yml is scheduled to falsify it #4170
Found while implementing #4154 (PR pending), whose ruling asked for a sweep of the same ## Merge Queue section for other current-state enumerations of subscribers or checks. This is the only other one. Filed rather than bundled: it is a different fact, it is not wrong today, and fixing it needs its own decision — the same discipline that produced #4154 out of #3782, and #3782 out of #3279.
The claim
content/docs/guide/ci-cd-pipeline.md, last bullet of ## Merge Queue:
- **Some contexts can never be required, structurally**, and no amount of triggering changes that:
**Changeset Bump Policy** (`changeset-guard.yml`, inverse path filter ...),
**Bundle Analysis** (`performance-budget.yml`, path filter),
**Live E2E (informational)** (`continue-on-error: true`, so it is green whatever happens ...),
and **Close issues referenced in other repositories** (`cross-repo-issue-closer.yml`, ... only *after* a merge).
One of the four claims is scheduled to become false.live-e2e.yml's header (lines 13-20) says outright: "Do NOT add this job to required checks, and do not remove continue-on-error, until the lane has run clean for long enough to trust (watch the nightly schedule)." Promotion is the plan, not a hypothetical — and the day it happens this page will state that a lane which now blocks merges can never block them. That is the dangerous direction this page names for itself elsewhere (Docs:ci-cd-pipeline.md 的 Performance Budget / Size Check 两节与实际工作流不符(预算数字差 5.8 倍、记录了一个不存在的工作流) #3197, ci-cd-pipeline.md 的 ci.yml job 表格漂移:写「Seven jobs」并列了一个不存在的 dev-server job(实际 6 个) #3451: advertising or denying a guardrail wrongly is worse than saying nothing, because people stop checking).
It is deliberately non-exhaustive ("Some contexts"), which is honest and is also why membership drift is not the risk here — the per-claim property is. A new never-requirable workflow arriving does not make the bullet false; continue-on-error leaving live-e2e.yml does.
Different fact, and the fix is not a swap. #4154 had somewhere to point: MUST_SUBSCRIBE_MERGE_GROUP in scripts/__tests__/merge-queue-reporting.test.ts is a maintained list an assertion already reads. There is no equivalent for "structurally cannot be required" — it would have to be built, or the claims pinned one by one to the YAML properties they quote. Options, for whoever picks this up:
B — pin the four claims to their YAML properties in ci-cd-pipeline-doc.test.ts: changeset-guard.yml still has pull_request.paths, performance-budget.yml still has one, live-e2e.yml's job still carries continue-on-error: true, cross-repo-issue-closer.yml still triggers only on closed. Four small assertions, no new vocabulary, and each fails on the page the day its claim stops being true. Cheapest honest option; does not cover a fifth never-requirable workflow being added, which the bullet does not claim to cover either.
Leaning B: it pins what is actually claimed, and it is the option that goes red on the one change we already know is coming.
Not a defect, checked
Two other numbers in the same section are counts of the lists immediately under them — "The three steps have to happen in this order" and "Two things follow for anyone editing this directory". Both are visible at a glance and drift with the list they introduce, which is the shape #3451 explicitly allows ("the table is the list"). Left alone.
Found while implementing #4154 (PR pending), whose ruling asked for a sweep of the same
## Merge Queuesection for other current-state enumerations of subscribers or checks. This is the only other one. Filed rather than bundled: it is a different fact, it is not wrong today, and fixing it needs its own decision — the same discipline that produced #4154 out of #3782, and #3782 out of #3279.The claim
content/docs/guide/ci-cd-pipeline.md, last bullet of## Merge Queue:Measured on
main@521a37bd0— all four are TRUEchangeset-guard.ymlinverse path filter.github/workflows/changeset-guard.yml:16-17—pull_request.paths: ['.changeset/**']performance-budget.ymlpath filter.github/workflows/performance-budget.yml:12-15—pull_request.paths: packages/**, apps/console/**, pnpm-lock.yamllive-e2e.ymlcontinue-on-error: true.github/workflows/live-e2e.yml:60, job-levelcross-repo-issue-closer.ymlruns after merge.github/workflows/cross-repo-issue-closer.yml:29-31—pull_request: types: [closed]So this is observation-class, not a defect: nobody is being misled today.
Why it is still worth recording
Three properties, none of them fatal alone:
scripts/__tests__/ci-cd-pipeline-doc.test.tspins the workflow inventory, the job table, the lockfile-merge table and the size budgets — but not this.live-e2e.yml's header (lines 13-20) says outright: "Do NOT add this job to required checks, and do not removecontinue-on-error, until the lane has run clean for long enough to trust (watch the nightly schedule)." Promotion is the plan, not a hypothetical — and the day it happens this page will state that a lane which now blocks merges can never block them. That is the dangerous direction this page names for itself elsewhere (Docs:ci-cd-pipeline.md 的 Performance Budget / Size Check 两节与实际工作流不符(预算数字差 5.8 倍、记录了一个不存在的工作流) #3197, ci-cd-pipeline.md 的 ci.yml job 表格漂移:写「Seven jobs」并列了一个不存在的 dev-server job(实际 6 个) #3451: advertising or denying a guardrail wrongly is worse than saying nothing, because people stop checking).continue-on-errorleavinglive-e2e.ymldoes.Why it was not fixed in the #4154 PR
Different fact, and the fix is not a swap. #4154 had somewhere to point:
MUST_SUBSCRIBE_MERGE_GROUPinscripts/__tests__/merge-queue-reporting.test.tsis a maintained list an assertion already reads. There is no equivalent for "structurally cannot be required" — it would have to be built, or the claims pinned one by one to the YAML properties they quote. Options, for whoever picks this up:live-e2e.ymlis a deliberate act whose author will be reading this very page. Cost: that is exactly the reasoning that left "Five workflows subscribe" wrong for two weeks (ci-cd-pipeline.md's "Five workflows subscribe" merge_group list is short by one (skills-paths.yml, since #3735) — the #3261 shape, one subsystem over #4154).ci-cd-pipeline-doc.test.ts:changeset-guard.ymlstill haspull_request.paths,performance-budget.ymlstill has one,live-e2e.yml's job still carriescontinue-on-error: true,cross-repo-issue-closer.ymlstill triggers only onclosed. Four small assertions, no new vocabulary, and each fails on the page the day its claim stops being true. Cheapest honest option; does not cover a fifth never-requirable workflow being added, which the bullet does not claim to cover either.NEVER_REQUIRABLEmap next toMUST_SUBSCRIBE_MERGE_GROUP,filename -> why it can never be required, with the page pointing at it. Symmetric with what ci-cd-pipeline.md's "Five workflows subscribe" merge_group list is short by one (skills-paths.yml, since #3735) — the #3261 shape, one subsystem over #4154 landed, and gives thelive-e2e.ymlpromotion a single place to edit. Cost: a second hand-maintained list, and the honest caveat ci-cd-pipeline.md's "Five workflows subscribe" merge_group list is short by one (skills-paths.yml, since #3735) — the #3261 shape, one subsystem over #4154 recorded (pinning a copy to a copy) applies here too, with less to justify it — the "must subscribe" map earns its keep by also failing when a member drops its trigger, and a never-requirable map has no such second job.Leaning B: it pins what is actually claimed, and it is the option that goes red on the one change we already know is coming.
Not a defect, checked
Two other numbers in the same section are counts of the lists immediately under them — "The three steps have to happen in this order" and "Two things follow for anyone editing this directory". Both are visible at a glance and drift with the list they introduce, which is the shape #3451 explicitly allows ("the table is the list"). Left alone.
Generated by Claude Code