Uh oh!
There was an error while loading. Please reload this page.
docs: repair and pin QUICK_REFERENCE's "Current Release" block, drop the console README's hand-written versions (#4143) - #4150
Merged
Conversation
…e console README's hand-written versions (#4143) `apps/console/README.md:5` claimed `**Version:** 0.5.1` and `**Spec:** @objectstack/spec v3.0.7` against a manifest carrying `17.4.0` and `^17.0.0-rc.5`. Per the #4125 / #3577 / #3715 precedent the hand-written numbers are removed rather than refreshed, and replaced with pointers to the two things that cannot drift: the npm page for the published version, the package manifest for the declared spec range. Nothing else on that page states a version. `QUICK_REFERENCE.md`'s "Current Release" block is a maintained status section, so it is updated rather than gutted: `v3.3.2` -> `17.4.0`, spec and client `^4.0.4` -> `^17.0.0-rc.5`. The card described the block's Node/pnpm/React rows as currently accurate. Two of the three were. Node was not: the row read `≥ 20` while root `engines.node` has been `>=22`, and the row cites that anchor in its own text — a claim that names its anchor and disagrees with it is the clearest evidence that review alone does not hold this block. Hence the pin, `scripts/__tests__/quick-reference-current-release-4143.test.ts`. Every expected value is derived FROM a manifest, so no version literal is written twice and the test cannot itself go stale. It also refuses any version literal in the block that it did not derive, so a future hand-written row cannot join and rot beside the pinned ones. The one unanchored row (TypeScript) says so on the row and is guarded to fail if an anchor for it ever appears. The existing `doc-version-claims.test.ts` ratchet was considered and not widened: its own header states that it decides whether a literal was recorded with a reason, not whether it is true, so it would have inventoried `^4.0.4` as known-stale rather than caught it. Every row here has a real anchor, so the stronger instrument applies. The trailing `.changeset/` note named a changeset file that no longer exists; that enumeration has no stable form and is replaced by a pointer to the directory. Fixes#4143 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Qqyix2QcnpUC9XeYVDzx3
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
yinlianghui
marked this pull request as ready for review
August 10, 2026 14:09
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#4143
Two files, two treatments, per the delegated ruling on the card.
1.
apps/console/README.md:5— remove the numbers (the #4125 precedent)Manifest says
17.4.0and^17.0.0-rc.5. Following PR #4144's worked asymmetry: a pointer where a pointer helps (npm page for a published package's version), the declaring manifest for the spec range. The badge row keeps its shape.README sweep, as ordered. No other hand-written version or dependency claim on the page — the Architecture block names packages without versions, and the remaining numbers are ports and feature counts. One different-shaped finding, reported and not touched: see the findings section.
2.
QUICK_REFERENCE.md"Current Release" — update, and pinv3.3.217.4.0fixedgroup of.changeset/config.json^4.0.4^17.0.0-rc.5apps/consolemanifests^4.0.4^17.0.0-rc.5apps/console+packages/data-objectstack≥ 20≥ 22engines.node≥ 9/pnpm@10.31.0engines.pnpm+packageManager18.x or 19.xpeerDependencies.react≥ 5.0The card's premise did not fully survive verification
The issue and the triage comment both state the Node/pnpm/React rows are "currently accurate". Two of the three were. Node was not — the row read
≥ 20while rootengines.nodehas been>=22, and the row cites that anchor in its own text. A claim that names its anchor and disagrees with it is the strongest available argument that review alone does not hold this block: the reviewer had the pointer and still did not follow it.Also corrected: the trailing note named
mobile-ux-round2.mdas the queued changeset. That file is gone;.changeset/currently holds nine others. An enumeration of a directory that churns daily has no stable form, so it is replaced by a pointer to the directory.3. The anti-rot pin — shipped as a test, not as a comment
scripts/__tests__/quick-reference-current-release-4143.test.ts, following theci-cd-pipeline-doc.test.tsidiom the card named. The block's bullet format parses cleanly, so the fallback (a comment anchoring the duty to the release process) was not needed.Every expected value is derived FROM a manifest. No version literal is written twice, so the test cannot itself go stale — that was the explicit instruction on the card and it is what makes the anchor-side reverse verification below possible.
Two directions:
- **Turbo:** 2.xwould join and rot beside the pinned ones: the same defect class, one bullet to the left.Plus the unanchored row.
**TypeScript:** ≥ 5.0has no anchor — no workspace manifest declares atypescriptpeer or engine range. The row now says so in its own text, the test allowlists that one literal by exact value, and it fails the moment such an anchor appears, so the exemption cannot outlive its justification. (Theci-cd-pipeline-doc.test.tsmove of covering the dangerous direction twice.)Why not widen the existing ratchet instead
doc-version-claims.test.ts(objectui#3697) already inventories version literals, and its header states the residual hole: scan roots arecontent/docsand each package README, so "a version literal in a file OUTSIDE the two scan roots is invisible here".QUICK_REFERENCE.mdandapps/console/README.mdboth sit in that hole — which is how #4143 became a card.Widening it was considered and rejected for this change. That gate is a ratchet: its own header says it decides whether a literal was recorded with a reason, explicitly not whether it is true. It would have inventoried
^4.0.4as a known-stale entry rather than caught it. Every row in this block has a real per-claim anchor, so the stronger instrument is available and was used. WideningSCAN_ROOTSto coverapps/**remains worth doing on its own merits — filed as part of #4148.Verification
Reverse verification — both directions, predicted red, red
Doc side (fix taken out with
git checkout+ a patch file, nevergit stash) — restoring the stale block turns 6 of 8 red:The two that stayed green are the two rows that genuinely had not drifted — pnpm and React. That asymmetry is the evidence the gate is measuring the doc rather than the edit.
Note the reverse-direction test caught
v3.3.0and3.3.xas well, which no row-specific assertion targets — literals living inside parentheticals, exactly what a row-by-row gate misses.Anchor side — temporarily moving root
engines.nodeto>=24against the repaired doc:This is the direction that proves the expected value is computed from the manifest rather than hardcoded a second time. Both mutations were reverted;
git statusclean apart from this change.Changeset
None owed — arbitrated by the script, not by judgement:
No
skip-changesetlabel is applied, deliberately: in this repo that label is not real.scripts/__tests__/ci-cd-pipeline-doc.test.tsrecords that.github/WORKFLOWS.mdwas deleted by objectui#3724 for documenting, among other phantoms, "a changeset gate skippable with askip-changesetlabel; neither the workflow nor the label was ever real".changeset-presence.ymldecides this from the diff.Out-of-scope findings — filed, not fixed
apps/console/README.mdlinks twice to./CONSOLE_ROADMAP.md, deleted inc988277ff. Different-shaped from this card (a dead link, not a version claim), so reported untouched per the ruling — including on line 5, which this PR rewrites around it. The more interesting half:check-doc-links.mjsreports green becauseapps/**is in none of its 7 scan roots, so every README underapps/is unlinted for links.pnpm typecheckis not a script, all threeexample-*dev commands name packages that do not exist, andapps/serveris not in the tree #4149 — the rest ofQUICK_REFERENCE.mdis dead in a worse way than the block was.pnpm typecheck(line 12) is not a script (ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL ... Did you mean "pnpm type-check"?), all threeexample-*dev commands name packages that do not exist, andapps/serveris not in the tree. Each verified by running it. This falsifies Two repo-level status blocks hardcode stale package/spec versions (apps/console/README.md, QUICK_REFERENCE.md) — same drift shape as #4125, different site #4143's own observation-class rationale ("no copy-pasteable instruction is wrong") for that file — worth the triage round's attention.Generated by Claude Code