Uh oh!
There was an error while loading. Please reload this page.
docs(ci): stop the Merge Queue section keeping its own copy of the subscriber list, and pin it (#4154) - #4171
Merged
Conversation
…bscriber list (#4154) The section opened with "Five workflows subscribe:" and named five while six carry a `merge_group:` trigger — it went stale the moment objectui#3735 added `skills-paths.yml`, and a stale list reads exactly as authoritative as a fresh one. objectui#3261's defect, one subsystem over, on the paragraph written for the reader deciding whether a new gate of theirs has to subscribe. Option C per the ruling on the card. The live claim converges on a pointer to `MUST_SUBSCRIBE_MERGE_GROUP` in scripts/__tests__/merge-queue-reporting.test.ts — the only copy an assertion reads — and keeps teaching the selection rule that decides membership. The dated clause keeps its four names: those four did not subscribe until objectui#3523 (PR #3722), a past fact that cannot drift. The page is pinned against that map in the same file: no enumeration of current subscribers outside the dated paragraph, no cardinality anywhere in the section, and the pointer itself is required so the section cannot pass by saying nothing. Co-authored-by: Claude <litant.dev@proton.me>
The latest updates on your projects. Learn more about Vercel for GitHub. |
yinlianghui
marked this pull request as ready for review
August 10, 2026 15:30
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#4154
Option C, per the delegated ruling on the card:
Premise re-verified on
main@521a37bd0before implementing:content/docs/guide/ci-cd-pipeline.md:76still opened with "Five workflows subscribe:" naming five, while six workflows carry amerge_group:trigger (changeset-presence.yml,ci.yml,control-bytes.yml,docs-links.yml,lint.yml,skills-paths.yml) and the map holds the same six. No seventh had arrived. PR #4153 had merged, so this branches offmainrather than stacking.The page
The live claim holds no instances any more. It points at
MUST_SUBSCRIBE_MERGE_GROUPinscripts/__tests__/merge-queue-reporting.test.tsand keeps teaching the rule the surrounding paragraph exists for — a gate that carries no path filter reports on every pull request and is therefore requirable, and a requirable context that skips the queue build stalls it rather than failing it. The#3387provenance the old parenthesis carried is not lost: it lives in that map's reason string forchangeset-presence.yml, which is the argument for pointing instead of copying.The dated clause keeps its four names and gets its own paragraph:
ci.yml,lint.yml,control-bytes.ymlanddocs-links.ymldid not subscribe until #3523. Verified rather than transcribed — PR #3722 (f710fc4e3, "subscribe the four gate workflows to merge_group") added the trigger to exactly those four;changeset-presence.ymlgot it later ina4f837c7d(#3387),skills-paths.ymllater still in74370641d(#3735). The old sentence said "None of the first four did until #3523", which loses its antecedent once the live list is gone, so the four are now named in the clause itself.The first bullet of "Two things follow" was the other half of the same pointer and was saying it twice; it now names the map entry a new workflow has to take, and why nothing can derive that set.
The pin
Four assertions in
merge-queue-reporting.test.ts, next to the map they pin against:The exemption is granted per paragraph, anchored on the #3523 link, not to the four names anywhere in the section: otherwise a future present-tense sentence naming exactly those four would pass while being short by every subscriber added since, which is this issue verbatim. The residual hole is stated in the docblock rather than left for the next reader — a present-tense list of exactly those four, inside the dated paragraph, carrying no count, still passes. That is a sentence someone has to author deliberately and falsely; what these assertions stop is drift, and a page holding no live list cannot drift.
The honest caveat from the card is recorded in the docblock too: this pins a copy to a copy, since the map is hand-maintained. What makes the trade worth taking is that the map is read by an assertion — a member that stops subscribing fails the first test in this file, a member that stops existing fails the second — while prose is read by no one until it has already misled someone.
Reverse verification, both directions
#4153's lesson applied surface-first: the matcher was written and run against the unfixed page before the prose was touched.
Worth reading precisely: the enumeration assertion reports only
changeset-presence.yml, not all five names, because the stale sentence sat in the same paragraph as the #3523 link and so drew the dated exemption for the historical four. Red for the right reason, but only one name of five — which is why the count assertion is not decoration.skills-paths.yml.", i.e. a list that is correct today — is red on both:That is the gate doing the job the ruling asked for: it rejects the correct-today list, not merely the stale one.
Tests
No changeset —
scripts/check-changeset-presence.mjsarbitrates: "No source of a released package changed in this range, so no changeset is owed." Docs plus test only. Noskip-changesetlabel, per #3724: nothing in this repo reads it.Out of scope
The ruling asked for a sweep of the same section for other current-state enumerations of subscribers or checks. Exactly one other exists — the "Some contexts can never be required, structurally" bullet, four workflows each quoting a live YAML property. All four claims measure TRUE on
main@521a37bd0, so it is not a defect; but nothing pins it, andlive-e2e.yml's own header says itscontinue-on-error: trueis meant to be removed once the lane proves itself, which would falsify the page. Filed as #4170 (finding, unassigned) with the evidence and three options rather than bundled here.Generated by Claude Code