docs(ci-cd-pipeline): point at a living workflow instead of a fossil snippet - #6408
Merged
Merged
Conversation
…snippet The "Adding a New Workflow" section told a contributor to "follow the existing pattern for pnpm + Turbo setup" and then gave a copied YAML block where every line had drifted: actions/setup-node@v4 (every workflow now uses @v7), a hardcoded node-version: 20 (every workflow declares '22.x', and 20 sits below the engines.node floor), and pnpm/action-setup@v4 (zero occurrences anywhere in the repo -- pnpm comes from corepack enable plus the root packageManager field). A copied block is a fossil by construction, so the section now points at readme-exports.yml as a living example -- it runs on every pull request and its setup is the complete pnpm + Turbo pattern (checkout, corepack enable, actions/setup-node with pnpm's cache, pnpm install --frozen-lockfile, turbo run build). Only the two steps that hold regardless of Node/pnpm version -- checkout and corepack enable -- stay quoted on the page; everything version-specific is read from the workflow itself. No new version literal was introduced, so no doc-version-claims.test.ts KNOWN_CLAIMS entry was needed. Fixes #6308 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012CZgmFFzqA9cX8tBMhvpFe
This was referenced Aug 25, 2026
os-warren
marked this pull request as ready for review
August 25, 2026 21:22
This was referenced Aug 25, 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 free
to 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 #6308
content/docs/guide/ci-cd-pipeline.md's "Adding a New Workflow" section told acontributor to "follow the existing pattern for pnpm + Turbo setup" and then gave a copied
YAML block in which every line had drifted from what any workflow in this repository
actually does.
Re-measured on this PR's own HEAD (
6d551e44emerge-base, after merging #6402)090927f4ffigures)actions/setup-node@v4@v7— 28 occurrences, no other version (up from the card's 27 — #6402 addeddocs-route-eager-closure.ymltoday, one moresetup-node@v7)node-version: 20'22.x'× 27,'22'× 1 — and 20 is below theengines.nodefloor of>=22.11pnpm/action-setup@v4corepack enable(14 workflows) + rootpackageManager: pnpm@10.31.0What changed
A copied YAML block is a fossil the moment it's pasted, so the section no longer repeats
one. It now points at
readme-exports.ymlas the living example — chosen because itis small, PR-triggered (not scheduled, unlike e.g.
spec-range-floors.yml), and its setupis the complete pattern most new build/test/lint workflows need: checkout,
corepack enable,actions/setup-nodewith pnpm's own cache,pnpm install --frozen-lockfile, thena
turbo run buildstep. (The repo's other cheap-tier gates —control-bytes.yml,changeset-presence.yml— deliberately skip install/build, so they don't demonstrate the"pnpm + Turbo" pattern this section is teaching.)
Only the two steps that hold regardless of which Node/pnpm version the repo is on when
read stay quoted on the page — checkout and
corepack enable— everythingversion-specific (Node version, cache key, install command) is now "read it from the
workflow" rather than copied here.
No new version literal was introduced — the replacement names a workflow file, not a
Node/pnpm version, so no
doc-version-claims.test.tsKNOWN_CLAIMSentry was needed. (Theexisting
ci-cd-pipeline.md/'Node 22.x'anchoredentry at line ~199, "Uses: Node22.x, pnpm via corepack", is untouched by this PR.)
Correcting the record on "why nothing caught this": the issue and dispatch both said
doc-version-claims.test.ts"skips fences by design." On this HEAD that's no longeraccurate — the file's own header says "Fences are SCANNED... the opposite of
check-doc-links.mjs, on purpose" and the scan loop does callcollect()on fenced lines.The real reason nothing caught this snippet: none of its three false lines match the
ledger's
TOOLCHAIN + SEP + VERSIONregex regardless of fencing —actions/setup-node@v4has@between the toolchain word and the version (not inSEP'scharacter class),
pnpm/action-setup@v4has/action-setup@in the way, andnode-version: 20has the literal wordversionbetweennodeand20, whichSEPalso can't cross. Re-verified by running the two-file targeted suite before and after the
edit (both green — see Tests).
Tests
Full tree (per dispatch instruction — this page carries
ci-cd-pipeline-doc.test.ts,merge-queue-reporting.test.ts(#4154), and the version-literal ledger, and a subsetchosen from just this snippet's subject matter would miss the ones that fire on the page
as a whole, per today's #6402 rework):
(HEAD
54fc0c337,git rev-parse --short HEAD.)Plus targeted doc gates over the edited page:
Notes
mainafter confirming Weigh the docs-site eager closure structurally (#6316) #6402 (docs-route-eager-closure.yml) had landed,per this card's dispatch order — fast-forward merge, no rebase, no force-push.
#6280(stalecheck-doc-linkscoverage claims on the same page) is explicitly out ofscope per the dispatch order's fold decline; not touched here.
Generated by Claude Code