Uh oh!
There was an error while loading. Please reload this page.
docs: repair QUICK_REFERENCE's dead commands and layout claims, and pin them (#4149) - #4159
Merged
yinlianghui merged 1 commit intoAug 10, 2026
Merged
Conversation
…in them (#4149) Every copy-pasteable command in the file's command sections failed on this tree, and two of the paths its navigation tables name are gone: - `pnpm typecheck` is not a script (ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL) — the root manifest declares `type-check`. - all three `example-*` dev commands named packages that do not exist, while the two examples that do run dev servers went unmentioned. pnpm prints "No projects matched the filters" and exits 0, so following the page succeeded while doing nothing. - `apps/server` (gone with the Vercel backend) and `packages/tenant` (deleted by #2564) still sat in the layout and tier tables. - "39 published packages" counted directories; `vscode-extension` is private, so 38 are published. Pinned by a sibling of #4143's test: script names against the root `scripts` block, filter targets against the pnpm-workspace globs, paths against the tree, the count against the manifests' `private` flags, and the page's own links (nothing else resolves them — this file is outside every check-doc-links scan root). 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. |
yinlianghui
marked this pull request as ready for review
August 10, 2026 15:08
Uh oh!
There was an error while loading. Please reload this page.
yinlianghui
deleted the
claude/issue-4149-quick-reference-dead-commands
branch
August 10, 2026 15:09
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#4149
Ordering
PR #4150 (same file, armed for auto-merge) merged as
43b2e4565before this started, so this branches offmainrather than stacking onclaude/issue-4143-console-version-drift. The## Current Releaseblock that PR repaired and pinned is untouched here, and its test stays green.Premise: valid, and it under-reported
All four claims on the card reproduce on
43b2e4565. Sweeping the rest of the page — the card says its list is the floor — found two more, one of them the same class asapps/server:packages/tenantsits in the Package Tiers table. That package was deleted by objectui#2564 (commitd5b1bc0b4, "drop zero-consumer @object-ui/tenant package").QUICK_REFERENCE.mdis outside everySCAN_ROOTSentry inscripts/check-doc-links.mjs, so none of its internal links has ever been resolved by anything that can fail a build — the same hole objectui#4148 recorded forapps/**.1. Commands — run-it-or-derive-it, one row each
pnpm installDone in 6.2s using pnpm v10.31.0pnpm build--dry=json→ turbo resolved 44 build taskspnpm typecheckERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL Command "typecheck" not found/Did you mean "pnpm type-check"?(exit 254)pnpm type-check—--dry=json→ 80 taskspnpm lint--dry=json→ 45 lint taskspnpm --filter @object-ui/site devNext.js 16.3.0…Local: http://localhost:3000pnpm testpnpm test --shard=…(ci.yml:379)pnpm exec vitest run …pnpm playwright testpnpm playwright --version→Version 1.62.1pnpm test:e2e—--list→Total: 165 tests in 6 files, exit 0example-*devNo projects matched the filters— and exit 0pnpm changeset/version/publishTwo rows need their reasoning stated rather than assumed.
pnpm playwright testwas replaced even though it works. That is the one command on the page I changed without it being broken. It resolves because pnpm falls back to the local binary, but it is not a script, so it has no manifest anchor and the pin below would have needed a permanent carve-out for it.pnpm test:e2eis the repo's own declared spelling and the one CI runs (ci.yml:536,pnpm test:e2e --project=chromium). The pin found this by itself: on the pre-fix file it reportspnpm playwright test (no root script "playwright")besidepnpm typecheck.The changesets block was verified, not executed —
versionrewrites every manifest andpublishpushes to npm. What I checked instead is the only thing that was in doubt, read-only: thatpnpm changeset SUBCOMMANDforwards its argument, since the repo also declareschangeset:versionandchangeset:publish.pnpm changeset statusprints> changeset statusand exits 0, sopnpm changeset versionrunschangeset versionexactly aschangeset:versiondoes. All three lines stand.Run Examples
examples/holdsbyo-backend-console,console-starter,hello-worldandschema-catalog— none of the three the section named. The card flagged this as needing a judgement call about which examples a newcomer should run. It does not need one:examples/README.mdalready owns that decision and is maintained. It documentshello-worldas a snippet andschema-catalogas "Not a runnable app — a data package", and their manifests agree: only the other two declare adevscript. So the block documents those two, and the prose points at that README rather than restating it.Both were started and stopped for this PR:
No ports in the page: one of the two pins
server.portin itsvite.config.tsand the other takes Vite's default, so the numbers are not uniformly derivable andexamples/README.mdalready says "each exposes its own dev server port (see its README)". Pointer, not enumeration.2. Paths
apps/serverandpackages/tenantare removed. Theexamples/*row enumerated four examples, two of which no longer exist; it becomes a pointer toexamples/README.md, which is the file that stays current by being the examples index. Every other path in the file was checked against the tree and is present.3. The count: a derived number, not a pointer
The card allowed either. This one keeps a number, because it has an exact anchor (
privatein each manifest) and because a count carries information a pointer cannot — the scale of the repo. What it may not be is hand-written: "39" counted directories, andpackages/vscode-extension(package nameobject-ui, shipped to the VS Code marketplace) isprivate: true.The row now reads
38 published packages (@object-ui/*), plus the private vscode-extension. Naming the private one is load-bearing, not decoration: without it a reader who counts 39 directories and reads 38 "corrects" the number back, which is how the original defect is most likely to return. The test requires that reconciliation only while a private package exists — see below.Contrast the
examples/*row and the.changeset/note (the latter already pointer-ised by #4150): those enumerate a set that churns and have no stable form, so they get pointers. The rule I applied is per-claim, as the card asked: anchor exists and is exact → derive a number; set churns → point at the file that owns it.4. The pin —
scripts/__tests__/quick-reference-commands-4149.test.tsA sibling of #4143's test, not an extension of it. That file is scoped to
## Current Releasein its own words, deliberately, because "asserting over the whole file would conflate a status claim with a package count" — and its reverse direction (no un-derived version literal) would go red on this page's ports and counts if widened. So the two split by section and this one never reads## Current Release.Eleven assertions, every expectation computed from an anchor, no value written twice:
pnpmcommand in the page's bash fences names a root script (or a pnpm builtin)--filtertarget is a real workspace package that declares the script it is asked to runexamples/*package declaring adevscript has a documented command. Forward alone stays green on a page that documents nothing — what was actually wrong is that both runnable examples were missing while three phantoms were listedapps/has a layout row (the table lists apps individually, so a new one is invisible until someone adds it)privateflags, the@object-ui/*parenthetical is checked against the published names, and the private packages must be accounted for — that last assertion retires itself when the last private package leaves, so the exemption cannot outlive its justificationSCAN_ROOTSgap above)scripts/vitest-invocation-guard.mjsWhat is deliberately left unpinned, per the card's "report the split": the prose, the trailing comment on each command, the example ports, and two of the five quoted guard lines — those two are built by string interpolation in the guard's
canonicalLines()and are not literals in the source, so asserting them would mean re-implementing the guard's formatting. The three that are literals are asserted, which is enough to catch a rewording. There is also no "every root script must be documented" direction: the root manifest declares ~50 scripts, this is a one-page cheat-sheet, and the defect is a documented command that does not exist — not an existing command that is undocumented.Reverse verification — both directions, predicted first
Fix taken out with
git checkout origin/main -- QUICK_REFERENCE.mdplus a patch file. Nevergit stash— that stack is shared across worktrees (objectui#3430).Doc side. Predicted 6 red / 5 green before running: dead script, dead filter, missing-examples reverse, dead paths, wrong count, unexplained private gap red; link check,
apps/reverse, guard quote, parser guard and the@object-ui/*naming check green. Measured:Tests 6 failed | 5 passed (11).The five that stayed green are the claims that had not drifted — the same asymmetry #4150 relied on as evidence the gate measures the doc rather than the edit.
Anchor side — two mutations against the repaired page, the direction that proves the expectations are computed rather than hardcoded a second time:
type-check→type-check-renamed:documents ["pnpm type-check (no root script \"type-check\")"]privatefrompackages/vscode-extension/package.json:must state "39 published packages" … (39 directories, 0 of them private: [])Mutation 2 produced a third, unpredicted red that is the guard working correctly:
keeps the @object-ui/* parenthetical truefired, because an un-privatedvscode-extensionpublishes under the nameobject-ui, which is not@object-ui/*. And the self-retiring clause behaved: with zero private packages, "accounts for the private packages" went green on its own. Both mutations reverted;git statusclean apart from this change.Gates
ESLint earned its keep here: it caught a zero-width space (U+200B) I had used inside a block comment to keep a glob from closing the comment —
no-irregular-whitespace, an invisible byte that the control-byte scan does not cover. Rewritten in words; both files then re-swept for invisible and control characters, clean.Changeset
None owed — arbitrated by the script, not by judgement:
On the
skip-changesetlabel: it exists as a label object in this repo, but nothing reads it —changeset-presence.ymldecides from the diff and matches no label, andscripts/__tests__/ci-cd-pipeline-doc.test.ts:184records that objectui#3724 deleted.github/WORKFLOWS.mdfor documenting, among other phantoms, "a changeset gate skippable with askip-changesetlabel; neither the workflow nor the label was ever real". It is applied here for consistency with the dispatch convention, with no mechanical effect either way.Out-of-scope findings — reported, not fixed
check-doc-linkscannot see this file. Its seven scan roots do not include the repo root, soQUICK_REFERENCE.md,AGENTS.md,CLAUDE.mdandCHANGELOG.mdhave never had a link resolved by a blocking gate. objectui#4148 already covers wideningSCAN_ROOTS(it was filed forapps/**); this is the same gap, one directory over, and belongs there rather than in a second card. The new test resolves this page's own links in the meantime.next devwrites two untracked files that nothing ignores. Runningpnpm --filter @object-ui/site dev(for the port check above) made Next.js 16 generateapps/site/AGENTS.mdandapps/site/CLAUDE.mdvianode_modules/next/dist/server/lib/generate-agent-files.js. They are neither committed nor in.gitignore, and the generated text tells the reader to commit them. In a repo where parallel agents rungit add -A, that is a live trap for sweeping generated files into an unrelated PR. Deleted from this worktree, not fixed here; filed separately.Generated by Claude Code