Uh oh!
There was an error while loading. Please reload this page.
docs(guides,tooling): clear the last two .md pages off the doc-snippet ledger (#5174 batch 4) - #5991
Merged
Merged
Conversation
…t ledger Walks `content/docs/guide/component-registry.md` (59 diagnostics) and `content/docs/guide/layout.md` (45) off `UNGATED_DOCS`, clearing 104 and leaving ZERO `content/docs` `.md` entries on the ledger. Each of the 32 blocks reached zero one of the two honest ways: 9 compile against the built `dist/` (5 already did, 4 after an edit) and 23 carry a `FRAGMENT_MARKER` with a measured reason. Gate strictness is unmoved -- everything from the fence-scanning banner to EOF is byte-identical. One real defect fixed rather than declared: the page's one complete copy-paste example calls `useState` while importing only `forwardRef` from `react`, and took `cn` from the reader's own `@/lib/utils` alias when `@object-ui/components` exports `cn` itself. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019b5UBNMtTzKbVtZZGvFuxe
This was referenced Aug 24, 2026
yinlianghui-tw
marked this pull request as ready for review
August 24, 2026 13:44
Uh oh!
There was an error while loading. Please reload this page.
yinlianghui-tw pushed a commit
that referenced
this pull request
Aug 24, 2026
…down lists The six "Component Categories" blocks were tagged ```tsx but held markdown bullet lists (`- input`, `- textarea`, ...) — not TypeScript in any form. The mislabel misled two audiences: a reader got syntax highlighting implying code, and check-doc-snippet-types spent compile budget proving prose is not TypeScript (3 parse + 35 undefined-name diagnostics before #5991 declared them). Correcting the fence removes the blocks from the TS population rather than excusing them, so the six FRAGMENT_MARKER declarations #5991 had to write go with it — a marker on a block the gate no longer collects is debt nothing will ever fail to prompt the removal of. Item spelling follows the docs' own convention for a bare list of component keys (content/docs/utilities/vscode-extension.mdx:152-156, and this page's own list at line 46): one key per line, in backticks.
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.
Part of #5174 — batch 4, the final batch. These were the last two
content/docs.mdentries on the ledger.Ledger
UNGATED_DOCSentriescontent/docs.mdentries remainingguide/component-registry59 +guide/layout45The
UNGATED_DOCShunk contains only removals, so "zero previously-covered docs newly ungated" is structurally impossible to violate in this diff. Verified programmatically againstd8b48f495's copy of the script:ADDED ledger entries: []·previously-covered docs now UNGATED: []·surviving entries whose REASON TEXT changed: []·surviving entries with a non-measured reason: [].What remains on the ledger is 12
.mdxpages and 32 package READMEs.Routes — the two honest ones, no third
32 blocks brought under the gate: 9 compile (5 already did untouched, 4 after an edit) and 23 declared fragments with measured reasons.
guide/component-registry.mdguide/layout.mdThe real defect, fixed rather than declared
guide/component-registry.md's one complete copy-paste example — theRatingComponentthe page invites a reader to take whole — callsuseStatewhile importing onlyforwardReffromreact. It was broken at the first hook for anyone who copied it. The same block tookcnfrom the reader's own@/lib/utilsalias when@object-ui/componentsexportscnitself; sourcing it from the package makes the block compile and removes a dangling alias a reader may not have.Three more blocks (
getAllTypes/has/getMeta) were made self-contained by adding the one import a reader copying that block actually needs — the objectui#5047 disposition, applied to the document rather than to the harness.What this green run does NOT mean
Stated because a green run must not be read as more than it is:
ComponentRegistryis aRegistryparameterised withany, soregister()'s component argument isany. No registered component's props are checked against whatSchemaRendererpasses.BaseSchemacarries[key: string]: any, so a wrong key on aBaseSchema-shaped literal is structurally invisible to this gate. "No excess-property errors" is not "the keys are right".What is sealed, and therefore really checked:
ComponentMeta,ComponentInput,NavItem,NavGroup,AppShellProps,SidebarNavProps. Every literal of those six across both pages was measured clean — the fourlucide-reactblocks by probing them with the icon import shimmed, not by inferring it from theTS2307that was hiding them. That probe is the batch-3 lesson applied: a broken import is a lid, so what sits under it gets measured, not assumed.Declared, with the reason recorded rather than worked around
lucide-reactsupplies the icon componentsNavItem.icontakes. It is a dependency of ten workspace packages (@object-ui/layoutamong them) but not a root dependency, so the specifier does not resolve in this gate's program. Fourguide/layout.mdblocks are declared for it. Hoisting a package to the repo root to buy a doc snippet coverage is a real dependency edge — the same call batch 3 made forclass-variance-authority.guide/component-registry.md's six category lists are markdown bullet lists insidetsxfences. A leading-reads as unary minus on an undeclared name, and the form list does not even parse becauseswitchis a keyword. The fence language is the underlying defect; correcting it changes the page's rendering rather than a snippet, which is neither of the two routes this batch is allowed, so it is declared here and recorded for its own change.Gate strictness — proven byte-for-byte, not argued
Everything from the
// ── Fence scanningbanner to EOF (scanFences,listDocuments,derivePackageTypePaths,analyze,compileSnippets, reporting,main) is byte-identical tod8b48f495: 475 lines,sha256 dd9e52a11f116f3bon both sides.DOC_EXTENSIONS,TS_FENCE_LANGUAGES,FRAGMENT_MARKER,MIN_REASON_LENGTHandCOMPILER_OPTIONSeach hash identical too. The script diff is the two removed entries plus the ledger docblock's own prose.--build-filter(#4846) — re-measured, not assumedFilters 20 → 20, the two sets textually identical (
diffclean). Turbo build tasks 33 → 33, identical package-by-package from--dry=json(tasks ADDED: [],tasks REMOVED: []). Covering these two pages costs this gate zero extra build tasks — the packages they import were already in the closure. Nothing for the maintainer to weigh.Verification
All at final commit
1178f9a9a, working tree clean and byte-identical to what is pushed; the union was re-run after that commit. Exit codes captured before any pipe; every line quotes the gate's own printed verdict.node scripts/check-doc-snippet-types.mjs→ exit 0:Scanned 222 document(s): 178 covered (42 of them hold a ts/tsx block), 44 ungated·Covered blocks: 273 — 156 to compile, 117 declared fragment(s).·Syntax phase: every block parsed·Semantic phase: 156 of 156 block(s) judged, 0 failed.·Every covered documentation snippet compiles against the built types.Controls green.pnpm exec vitest run scripts/__tests__/check-doc-snippet-types.test.ts→Test Files 1 passed (1)/Tests 20 passed (20). Running the script is not running its test; both were run.node scripts/check-doc-component-types.mjs→ exit 0:Every documented component type is registered.node scripts/check-doc-links.mjs→ exit 0 ·node scripts/check-control-bytes.mjs→ exit 0 ·node scripts/check-skills-paths.mjs→ exit 0 ·node scripts/check-changeset-no-major.mjs→ exit 0 ·node scripts/check-lint-coverage.mjs→ exit 0 (46/46 packages linted).node scripts/check-changeset-presence.mjs→ exit 0:3 file(s) changed, 0 of them under the src/ of a package the release covers … no changeset is owed.Verdict followed; none added, and noskip-changesetlabel (Askip-changesetlabel exists on this repo, but no workflow reads it — the repo's own test records that neither the workflow nor the label was ever real #4912/.github/WORKFLOWS.mddocuments 5 workflows that do not exist and omits 9 that do — including a changeset gate and askip-changesetlabel neither of which is real #3724).pnpm run lint:root— the complete root eslint task, run whole, not narrowed → exit 0:26 problems (0 errors, 26 warnings), all pre-existing; the changed.mjsreports 0 errors / 0 warnings. Population read from eslint's own--format json: 166 files, 0 of them.md, so both changed.mdfiles are outside eslint's population by its own config; the other 46 lint tasks are per-package and this diff touches nothing underpackages/,apps/orexamples/.pnpm check→ exit 0:All checks passed.Reverse verification
Prediction written to disk before each run with the direction stated. Build artifact between mutation and thing-under-test: none on either leg — the mutation is markdown the gate reads straight from disk and the
dist/*.d.tsit compiles against is untouched — so no rebuild was needed. Each leg proved the mutation reached disk by grepping the specific text meant to change, and carriedtrap … EXIT INT TERMrestoring withgit checkout HEAD -- PATH(objectstack#11648:git checkout REF -- PATHwrites the index, so a trap restoring with a baregit checkout -- PATHreads the mutation back and exits 0).component-registry.mdonly, ledger removal kept. Predicted exit 1 · exactly 59 diagnostics all on that page · fragments 117 → 103 · blocks-to-compile 156 → 170 · 1 syntax failure · NOTE printed · direction MORE. Observed exactly that, including the three named lines (TS2304 'BaseSchema',TS2307 './HeavyComponent',TS2304 'useState').104split exactly59 component-registry / 45 layout— matching the baseline to the unit and per page.git diff HEADempty andgit status --shortempty, 23 markers back on disk, gate exit 0 with156 of 156 block(s) judged, 0 failed.Generated by Claude Code