Uh oh!
There was an error while loading. Please reload this page.
docs(guide): replace invented Node/pnpm floors with what CI exercises, and let the version-claim scan see emphasis - #6401
Merged
Conversation
The prerequisite bullets of quick-start.md and building-crud-app.md stated `**Node.js** 20+` and `**pnpm** 9+` for the reader's OWN project. Nothing in this tree backs those numbers: of the 46 workspace manifests, zero declare `engines.node` or `engines.pnpm`, and no lane runs Node 20 (26 of the 27 `node-version:` declarations in .github/workflows read '22.x', the 27th '22'). Both pages now state what is measurable — the packages are built and tested on Node 22.x with pnpm 10.x, worded as what CI exercises rather than as a requirement. Also widens `SEP` in scripts/__tests__/doc-version-claims.test.ts to admit `*` and `_`. That class sat between a toolchain name and its version and omitted `*`, so `**Node.js** 20+` never matched TOOLCHAIN + SEP + VERSION and the ratchet reported green over four literals it had never examined. Measured over the 241 files the three scan roots resolve to: 33 matched literals before, 37 after, none lost. The four are deleted rather than ledgered; the sentences replacing them are inventoried as `anchored`, each naming its anchor. A new fixture test keeps the widening measurable now that the repaired corpus carries no emphasised claim, and pins the boundary it does not cross — `_Node.js_ 20+` stays invisible because `_` is a word character, so the `\b` on each side of the toolchain name fires on neither side of it. objectui#6307 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012CZgmFFzqA9cX8tBMhvpFe
…alls
Review pass on the same two bullets: the previous wording opened with this
repository's manifest situation ("the published packages declare no Node or
pnpm `engines` floor"), which is gate rationale rather than something a reader
about to run `pnpm create vite` needs. The bullet now leads with what to
install and states the measured fact as what ObjectUI is tested on, so ruling B
is unchanged: still no invented consumer floor, still not phrased as a
requirement.
Both literals the version-claim ledger pins on these pages — `Node 22.x` and
`pnpm 10.x` — survive verbatim on both, so the four KNOWN_CLAIMS entries stay
resolvable and the ratchet's downward half stays green.
objectui#6307
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CZgmFFzqA9cX8tBMhvpFeos-warren
marked this pull request as ready for review
August 25, 2026 20:29
Uh oh!
There was an error while loading. Please reload this page.
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 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#6307
Both halves, in the ruled order: half 2 first, because it defines half 1's surface.
All readings below were taken on
992bcec7f, the final commit of this branch.Half 2 — the scan was blind to
**bold**SEP, the class between a toolchain name and its version, admitted backticks, quotes, whitespace, colons, commas, pipes and brackets — and not*. It now admits*and_:Blind, then seeing — the gate's own output in both states
Before (
b362c1b47, the branch point),pnpm exec vitest run scripts/__tests__/doc-version-claims.test.ts:Green — and green here does not mean "examined and found sound". The two pages carrying
**Node.js** 20+appear in noKNOWN_CLAIMSentry and in no failure, because the scan never matched them.Proven positively rather than inferred from a green run, with a control in the same sweep. The probe lifts
OP,VERSION,FIRST_PARTY,TOOLCHAIN,TICK,SEPandCLAIM_RESverbatim out of the test file's own source and evaluates them, so the only difference between the two runs is that file'sSEPline:After the
SEPline changed and before anything else, the gate itself goes red and names them:Corpus-wide delta, over the 241 files the three
SCAN_ROOTSresolve to: 33 matched literals before, 37 after — four new, none lost. The four are exactly the ones above.Triage — every literal the widened scan surfaced
quick-start.md:12**Node.js** 20+quick-start.md:13**pnpm** 9+building-crud-app.md:12**Node.js** 20+building-crud-app.md:12**pnpm** 9+No other literal anywhere in the three scan roots changed state, so nothing was bulk-added to keep the gate quiet. The four entries this PR does add to
KNOWN_CLAIMSare for the sentences that replace them, eachanchoredand each naming the anchor it can be re-measured against.The widening keeps a witness after the repair
After half 1 the corpus holds no emphasised claim at all, and the replacement sentences separate name from version with a plain space. So on the corpus alone, reverting
SEPwould change nothing observable and this gate would report green over the same blind spot — the second-order form of the defect.it('reads a claim through markdown emphasis, so the widened separator is not decorative')is the permanent witness: a fixture throughclaimsIn, plus the pre-#6307 class rebuilt inline and asserted not to match the same line.Reverse-verified on the committed tree (mutation confirmed on disk by blob hash
51dc12f…to2d1d830…and by the widened spelling going to 0 occurrences; restored bygit checkout HEAD --plus the absolute path, verified back to51dc12f…withgit diff HEADempty):Predicted direction and observed direction agree, including which test goes red: only the new fixture. The ratchet stays green, which is the whole reason the fixture had to exist.
The boundary the widening does not cross, pinned rather than assumed
_is in the class and costs nothing, but underscore emphasis around a name is still invisible and no character class can reach it:_is a word character, so the\bon each side ofTOOLCHAINfires on neither side of_Node.js_, and the match fails beforeSEPis consulted. Measured across the three scan roots: zero underscore-emphasised toolchain names (control, same sweep: six files carry the bold spelling, e.g.content/docs/utilities/runner.mdx:446). Recorded as a documented boundary with an assertion that goes red if it ever changes, not repaired by widening\binto a lookaround nothing has asked for.Half 1 (ruled B) — say what is true, not a floor nobody measured
Both pages, identically:
It leads with what the reader installs, and states the measured fact as what this project tests on — never as a requirement. (First wording on this branch put the
enginesaudit in the bullet itself; that reasoning lives in the changeset, the file docblock and the card, not on a getting-started page.)Re-measured on this branch's base rather than copied from the card's 12:16Z reading:
node-version:declarations across.github/workflows: 26 read'22.x', the 27th (half-state-patrol.yml:196) reads'22'. Nothing runs Node 20.packageManagerispnpm@10.31.0, and 17run: corepack enablesteps across 12 workflow files mean that field is what CI installs with. (pnpm installin this worktree reportedpnpm v10.31.0.)engines.nodeorengines.pnpm; the onlyenginesblock outside the root ispackages/vscode-extension'sengines.vscode(control for that zero: the root manifest, which does declarenode: ">=22.11"/pnpm: ">=10").Root
enginesis deliberately not what these pages cite: they address the reader's own project, which is why #5306 left them alone.Both literals the ledger pins on these pages survive the rewrite verbatim — one occurrence each, per page:
Verification
Run at
992bcec7f(the final commit), from the repo root:pnpm exec vitest run scripts/__tests__/doc-version-claims.test.tsTest Files 1 passed (1) / Tests 19 passed (19)pnpm exec vitest run scripts/__tests__/(whole gate-test tree)Test Files 79 passed (79) / Tests 2280 passed (2280)node scripts/check-doc-links.mjsLinks are valid across 17 scan roots.node scripts/check-doc-fence-languages.mjs✅ check:doc-fences — every TypeScript block in 223 document(s) …pnpm run check:doc-types✅ Every documented component type is registered.node scripts/check-control-bytes.mjs✅ check-control-bytes: OK (scanned 5277 tracked text file(s); …)node scripts/check-changeset-presence.mjs✅ No source of a released package changed in this range …node scripts/check-changeset-no-major.mjs✅ No changeset declares a `major` bump.node scripts/check-changeset-fixed.mjs✅ All workspace packages are in the changeset fixed group.pnpm run type-check:scripts--listFilesconfirmsdoc-version-claims.test.tsis in the program (133 files fromscripts/)pnpm run lint:rootThe whole-tree, changeset, type-check and lint rows were measured on
37f6f5990; the follow-up commit992bcec7fchanges two lines of markdown prose and nothing else, and the gate, doc-link, doc-fence and doc-type rows above were re-run on it.Declared narrowing, one check:
pnpm run check:doc-snippetsexits 2 = PRECONDITION NOT MET here ("the snippet program was NOT run"; it needs 21 packages built first) — so it is not measured locally, neither green nor red. Narrowed on the grounds that it compiles fencedts/tsxblocks and this diff touches none: the changed hunks are at line 12 of each page and the first fence delimiter in each file is at line 19. CI runs it in full regardless.Scope notes
match(/(\d+)/), so it now REQUIRES the doc to state≥ 22against anengines.nodeof>=22.11#6313) touchesQUICK_REFERENCE.mdand the quick-reference pin — a different gate from this card's version-literal ledger. Checked: no file overlap with this branch (.changeset/6307-bold-version-literals.md, the two guide pages,scripts/__tests__/doc-version-claims.test.ts), and the two jobs are kept separate.ci-cd-pipeline.md :: Node 22.xreason states 14node-versiondeclarations; the tree has 27 #6400, deliberately not touched here: the neighbouringci-cd-pipeline.md :: Node 22.xledger entry's reason still says "the 14 node-version: 22.x declarations" (measured today: 26 of 27), andci-cd-pipeline-doc.test.tsdoes not in fact pin that literal (grep -cP '\b22\b'on it returns 0; control, same file:ci.ymlreturns 28).enginesacross the workspace — is closed by the triage ruling and was not done.Generated by Claude Code