Uh oh!
There was an error while loading. Please reload this page.
docs(layout): compile the 12 plaintext-fenced TypeScript blocks in content/docs/layout (#5867 batch 5) - #6189
Merged
yinlianghui-tw merged 7 commits intoAug 25, 2026
Conversation
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019b5UBNMtTzKbVtZZGvFuxe
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019b5UBNMtTzKbVtZZGvFuxe
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019b5UBNMtTzKbVtZZGvFuxe
yinlianghui-tw
marked this pull request as ready for review
August 24, 2026 23:49
yinlianghui-tw
enabled auto-merge
August 24, 2026 23:49
yinlianghui-tw
disabled auto-merge
August 25, 2026 00:59
yinlianghui-tw
enabled auto-merge
August 25, 2026 01:00
This was referenced Aug 25, 2026
The re-fence gave the "Collapsible Sidebar" block `declare const navItems: NavItem[]` so it would compile on its own, borrowing the array defined under "Basic Usage". `packages/layout/src/__tests__/app-shell-docs-nav-example.test.ts` reads this page from disk and requires every SidebarNav fence that mentions `const navItems` to spell `const navItems: NavItem[] = [` — the annotation is what turns a copied typo into a compile error (objectui#3999 / #4793) — so the `declare` form reddened the pin. Replace it with a real, annotated two-item array. The block still compiles standalone, and it is now self-contained rather than self-declared, which is the stronger of the two states the snippet gate offers. The array is deliberately NOT a copy of the "Basic Usage" three-item run: that run is compared line-for-line against the test file, and a second verbatim copy on the page would satisfy the parity search while the real block went stale. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019b5UBNMtTzKbVtZZGvFuxe
Uh oh!
There was an error while loading. Please reload this page.
yinlianghui-tw
deleted the
claude/issue-5867-plaintext-fenced-ts-batch5
branch
August 25, 2026 01:50
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 #5867 — batch 5 of N, the
content/docs/layout/**group. The card stays open; the remainder is measured at the bottom.What this batch does
Re-fences the 12 TypeScript blocks in
content/docs/layout/**that were fencedplaintext, socheck-doc-snippet-typescompiles them, and fixes the four blocks it then reddened. LowersKNOWN_UNHIGHLIGHTED_TS_FENCESby the three layout files in the same pull request, as that map's shrink-only contract requires.Population re-derived at the claim SHA
b37d3f0fdwith the gate's own fence walk (check-doc-fence-languages.mjs --list, whose spelling set isplaintext/text/plain/txt/ no info string, per #6135): 105 blocks / 83 files, of whichcontent/docs/layout/**is 12 blocks / 3 files —app-shell.mdx4,page-header.mdx3,sidebar-nav.mdx5. Every layout block is spelledplaintext; the widening added none here. It reconciles with batch 4's handback exactly: 110 − 6 (fields, since landed) + 1 (the widening'sfile-upload.mdx) = 105.Fence assignment:
tsfor the three pure-interface blocks,tsxfor the nine carrying JSX.#6120's fix is on
main, established rather than assumedThe gate was run on today's
origin/mainbefore anything was edited.@object-ui/layoutis absent from--build-filterthere (nothing in the compiled population imported it) and appears the moment these blocks are re-fenced — with it,lucide-reactandreactbecome resolvable as its declared dependencies. The header line moves20 imported package(s)to21, and no layout block reports an unresolved third-party import.The four blocks the gate reddened, all fixed, none marked
⛔ No
FRAGMENT_MARKERwas declared. The ledger,UNGATED_DOCSand the gate itself are untouched.app-shell.mdxComponent PropsTS2304AppShellBranding@object-ui/layout— it is a real export of that packageapp-shell.mdxCollapsible SidebarTS2304x4:AppShell,SidebarNav,navItemsdeclare const navItems: NavItem[]for the value defined in an earlier block, the idiom already used seven times inblocks/block-schema.mdxandcomponents/basic/icon.mdxsidebar-nav.mdxIconsTS2304SidebarNavsidebar-nav.mdxUsage with AppShellTS2741children missing onAppShellProps;TS2304Home,InfoAppShella real childThe last one is the #5044 class: a reader copying that block gets code that does not compile, on a page the gate reported as covered.
Hazard 1, measured on this batch rather than inherited
An unresolved type name degrades to
anyand suppresses the checks beneath it, so a first-round diagnostic count is a lower bound.app-shell.mdx's Collapsible Sidebar block passed no children toAppShelland round 1 never said so — the nameAppShellwas itself unresolved. Both defects were fixed together, then the suppression was demonstrated: reverting only the child of that block, with the imports left in place, reddens it with— a diagnostic that round 1 could not produce. The mutation was proved on disk before the run (injected marker count 1 to 2, removed count 1 to 0) and restored under
trap ... EXIT INT TERM, withgit status --porcelainempty afterwards.Hazard 2 did not bite:
Syntax phase: every block parsed, so every one of them reached the semantic phaseon every run, so no layout block had its imports checked by nothing.Verification
All readings at branch head
80bcfc357,git statusclean, every heavy run through the container's shared verify lock. Exit codes captured by redirect before any pipe; each gate's own verdict line quoted.check:doc-snippetsbefore (origin/mainb37d3f0fd, built tree) — exit 0:check:doc-snippetsafter — exit 0:Deltas: blocks-to-compile +12, exactly the batch size · covered documents 179 unchanged · ungated 44 unchanged · declared fragments 111 unchanged · diagnostics 0. Gate strictness unmoved —
check-doc-snippet-types.mjsis not in the diff.Intermediate reading, kept because it is the evidence for the fix list: the first post-re-fence run was exit 1,
Semantic phase: 263 of 263 block(s) judged, 4 failed, with the nine diagnostics tabulated above.Other gates, same head:
check:doc-fencesexit 0 —every TypeScript block in 223 document(s) is fenced ts/tsx/typescript, except 80 declared file(s) carrying 93 block(s) of objectui#5867's remaining population(was 83 files / 105 blocks — the map drops by exactly this batch)check:doc-typesexit 0 —Every documented component type is registered.docs:check-linksexit 0 —Links are valid across 15 scan roots.check:control-bytesexit 0 —OK (scanned 5110 tracked text file(s); skipped 85 binary), plus a self-scan over the five changed files with zero hitscheck-changeset-presenceexit 0 —No source of a released package changed in this range, so no changeset is owed; the empty-frontmatter changeset is declared anyway.changeset:checkexit 0.Vitest from the repo root (never package-scoped, per #3378):
check-doc-fence-languages,check-doc-snippet-types,check-doc-component-types,check-doc-links,check-changeset-presence—Test Files 5 passed (5),Tests 215 passed (215).Lint, narrowed with the narrowing measured rather than asserted: the diff is three
.mdx, one.changeset/*.mdand one.mjs; eslint's own configuration reports the four Markdown-family files asFile ignored because no matching configuration was suppliedand lints the.mjsclean (file count read from--format json: 5 reported, 4 ignored, 0 errors). Noproject/projectServiceappears ineslint.config.js, so type-aware linting is off and this diff cannot move the verdict on any untouched file.Render, narrowed and declared:
pnpm site:buildgreen at branch head (exit 0), then the prerendered HTML counted per code block. Batch 4's rebuilt-baseline double build was not repeated; the after-state is read with two controls instead. Blocks carrying shiki colour tokens —app-shell4 of 10,page-header5 of 12,sidebar-nav6 of 12 — equal this batch's per-page share plus each page's pre-existing highlighted fences (page-headerhas twoyaml,sidebar-navonebash), and every remaining proseplaintextblock on those pages still renders with none. Control:components/layout/page.mdx, untouched, renders its one block with zero colour tokens.Remainder, measured at this branch head
content/docs/components/**content/docs/core/**needs-user-decision)UNGATED_DOCS— re-fencing adds zero to the compile populationcontent/docs/plugins/**(plugin-dashboard.mdx)content/docs/layout/**content/docs/fields/**content/docs/blocks/**The count is now readable from the repository rather than re-derived by hand:
node scripts/check-doc-fence-languages.mjs --list.Generated by Claude Code