Agent docs

Kit coverage ledger

Every kit value export, where the gallery shows it, and how many files import it in each app. Frozen at 0.0.25; re-derive before quoting.

The P0 instrument of docs/plan/47-showcase-execution.md: every kit value export, where the gallery shows it, whether nav reaches it, and how many files import it in each consuming app. Ruling D8 (doc 44 §Rulings) sets the target: the uncovered-export count falls pass over pass and ends at zero. Measured against kit 0.2.2 as of 2026-08-20 (see the P5 pass-log row below); the prior freeze at kit 0.0.25 is retired.

Headline#

  • 108 value exports (kit 0.2.2)
  • 95 appear on at least one gallery page · 12 uncovered beyond one standing exception: Toasts is the mount-once host (a second mount would double the toaster), shown mounted in the shell and documented on the toast page. Of the 12: three are a regression from the 0.0.25 ledger, where they were covered and are not now (ConfirmModalId was on the modal page, formatDateTime and formatRelativeTime were on the timestamp page); nine are new-since-0.0.25 surface that never got a gallery demo (DEFAULT_LOCALE, RequiredMark, SCHEMA_FORM_FORMATS, X_KEYS, X_TIERS, X_WIDGETS, X_WIDTHS, formatCompactDateTime, lintSchema). See Reading notes for detail.
  • Nav runs on two complete surfaces. The index cards and the gallery sidebar each link all 43 component pages, registry-verified: COMPONENT_GROUPS in showcase-registry.ts has exactly one entry per app/components/* directory, with no orphans either direction. The patterns index and sidebar each link all 27 pattern pages (PATTERN_GROUPS, same one-to-one check). /chip-compare and /toolbar-compare now live as ordinary component pages under app/components/ rather than top-level routes. No unlinked routes remain.

Pass log#

PassUncovered exportsNote
P0 baseline41gate-corrected counts (see the P0 validation report)
P24113 pattern pages + D5 reorder; pattern pages demo composites, not export coverage, so the count moves in P1. Gate PASS-WITH-NOTES, 1 major fixed (see the P2 validation report)
P10 (+1 exception)9 new component pages, 8 grown pages, nav completed on both component surfaces; gallery redefined to include app/patterns
P30 (+1 exception)chip-compare graduated (nav-linked, species section, lg-frame ruling in place); /toolbar-compare added; the orphan-route note below is resolved
P40 (+1 exception)97 rendered em dashes swept from 34 files; empty-value placeholder glyphs became hyphens (owner may sanction the em-dash glyph back)
P5 (re-derivation)12 (+1 exception)Re-run against kit 0.2.2, replacing the 0.0.25 freeze. Export count grew 94 to 108: seven new components (Breadcrumbs, Kicker, Markdown, CodePill, plus SchemaForm and its lintSchema/X_*/SCHEMA_FORM_FORMATS vocabulary, InputContainer's sibling RequiredMark) and one route reshuffle (chip-compare and toolbar-compare moved from top-level routes into app/components/). All 43 component and 27 pattern directories still have exactly one nav entry each; the P3 "no orphans" result holds. Of the 12 uncovered: 3 are a regression (ConfirmModalId, formatDateTime, formatRelativeTime were covered at 0.0.25 and are not now); 9 are new-since-0.0.25 surface never demoed (DEFAULT_LOCALE, formatCompactDateTime, RequiredMark, lintSchema, X_WIDGETS, X_WIDTHS, X_TIERS, X_KEYS, SCHEMA_FORM_FORMATS)

Re-derivation method#

Manual per pass; the check script stays proposal-only (owner ruling). To re-derive:

  1. Export list. Value exports of packages/ui/src/index.ts plus packages/ui/src/table/index.ts. Skip export type lines and inline type specifiers; X as Y counts as Y. Dedup is still required even though index.ts no longer reaches the table barrel via export *: it names each of the 26 table exports directly instead (export { Table, col, Pager, ... } from "./table"), so index.ts already contains the full union on its own at 108, and the naive 108 + 26 sum over-counts by exactly those 26 shared names.
  2. Counting rule. A file counts once per export when it contains a runtime import { ... } from "@versable-git/ui" naming it. Type-only imports do not count. Strip comments before matching (line and block comments, string-aware): per-line inspection is not sufficient. The trees hold three fully-commented dead import blocks today (speedway routes/workspaces/files.tsx, routes/workspaces/select.tsx, and the single-line form at routes/workspaces/new.tsx:40) plus an inline comment inside live import braces (speedway root.tsx:26) whose comma breaks naive comma-splitting; all four are handled only by real comment stripping. Dynamic import("@versable-git/ui"), namespace (import * as), and require() forms exist nowhere today; the rule assumes brace imports and must be revisited if one appears.
  3. Trees. Gallery = every immediate subdirectory of apps/playground/src/app/components/ (chip-compare and toolbar-compare moved in from top-level routes at some point after 0.0.25 and count the same as any other component directory now) plus every immediate subdirectory of app/patterns/ (pattern pages are showcase surface; their slugs print as patterns/<slug>), except app/components/layout.tsx, app/components/page.tsx, app/patterns/layout.tsx, app/patterns/page.tsx, and app/patterns/pattern-shell.tsx (chrome and shared per-pattern wrapper, an AppShell/Card/CodeBlock consumer) which count as shell. Demo = app/demo plus app/shell-demo plus app/(admin)/demo/admin (a new full-app admin demo added after 0.0.25, folded into Demo per its name and shape rather than Shell). Shell = the rest of the playground, including the new app/docs/ doc-browser tree (also new since 0.0.25 and not a component/pattern gallery surface). walmart = walmart-mvp/frontend/src. speedway = speedway/app (sibling checkouts of this repo).
  4. Nav. Four arrays over three surfaces: the index groups (apps/playground/src/app/page.tsx), the gallery sidebar nav (apps/playground/src/app/components/layout.tsx), and the patterns index + sidebar (app/patterns/page.tsx, app/patterns/layout.tsx). Nav column: both = index and gallery sidebar; +pat = also on a patterns surface; patterns = patterns surfaces only.

Context for reading the walmart column: that app runs two cohorts (kit-adopted pages and a legacy shadcn-style cohort under components/ui/); legacy files import local components, so they cannot inflate these counts.

Columns#

Export · gallery pages whose page.tsx imports it at runtime · nav reach of those pages (both = index and gallery sidebar; +pat = also on a patterns surface; patterns = patterns surfaces only; n/a = no gallery page) · demo-route files importing it ("+N shell" = shell files outside gallery and demo) · walmart importer files · speedway importer files.

ExportGallery pagesNavDemowalmartspeedway
Cardalert, app-shell, breadcrumbs, button, card, chip, chip-compare, copy-button, data-table, dropdown, dropzone, empty-state, facet-bar, hooks, identity, inline-edit, internals, kicker, list-item, markdown, menus-and-pickers, modal, page-info, page-states, page-title, side-panel, spinner, stat-tile, table, table-hooks, tabs, toast, toolbar-compare, typography, patterns/attribute-spec-grid, patterns/auth-card-shell, patterns/boot-skeletons, patterns/bulk-selection-bar, patterns/compact-dropzone, patterns/confirm-and-report, patterns/entrance-cards, patterns/module-attribute-normalization, patterns/module-content-generation, patterns/module-image-generation, patterns/module-part-type-matching, patterns/peek-panel, patterns/recent-activity-feed, patterns/shape-matched-skeleton, patterns/split-cards, patterns/top-loading-bar, patterns/typography-compositesboth+pat16 (+11 shell)1328
Buttonalert, app-shell, breadcrumbs, button, chip, chip-compare, code-block, data-table, dropdown, dropzone, field-chip, hooks, icon, input, kicker, menus-and-pickers, modal, page-info, page-states, page-title, schema-form, select, spinner, status, timestamp, toolbar-compare, tooltip, typography, patterns/account-menu, patterns/auth-card-shell, patterns/boot-skeletons, patterns/bulk-selection-bar, patterns/confirm-and-report, patterns/entrance-cards, patterns/job-title, patterns/member-row-inline-role, patterns/module-attribute-normalization, patterns/module-content-generation, patterns/module-image-generation, patterns/module-part-type-matching, patterns/page-title-variants, patterns/peek-panel, patterns/recent-activity-feed, patterns/searchable-attach-list, patterns/shape-matched-skeleton, patterns/split-cards, patterns/top-loading-bar, patterns/typography-composites, patterns/workflow-stepperboth+pat15 (+14 shell)1434
Inputapp-shell, chip, chip-compare, field-chip, icon, input, kicker, modal, spinner, toolbar-compare, tooltip, patterns/auth-card-shell, patterns/peek-panel, patterns/searchable-attach-listboth+pat2 (+1 shell)614
InputContainerinputboth000
RequiredMarkNONEn/a000
Selectchip, chip-compare, dropzone, menus-and-pickers, modal, schema-form, select, spinner, toolbar-compare, patterns/member-row-inline-roleboth+pat557
StatusPillbutton, chip, code-block, data-table, field-chip, icon, page-title, status, table, tabs, tooltip, typography, patterns/account-menu, patterns/job-title, patterns/member-row-inline-role, patterns/page-title-variants, patterns/peek-panel, patterns/typography-compositesboth+pat16 (+1 shell)89
StatusDotstatus, patterns/recent-activity-feedboth+pat3 (+1 shell)10
CodePillstatusboth000
CodeBlockcode-block, modal, schema-form, typographyboth0 (+3 shell)31
Chipchip, chip-compare, data-table, dropdown, hooks, icon, internals, schema-form, spinner, table, toolbar-compare, typography, patterns/module-part-type-matchingboth+pat8 (+2 shell)48
FieldChipchip-compare, field-chip, patterns/attribute-spec-grid, patterns/file-chipboth+pat116
Alertalert, menus-and-pickers, typography, patterns/auth-card-shell, patterns/typography-compositesboth+pat7 (+3 shell)411
PageTitlebreadcrumbs, button, icon, page-title, spinner, patterns/boot-skeletons, patterns/job-title, patterns/page-title-variants, patterns/typography-compositesboth+pat18 (+3 shell)917
Markdownmarkdown, patterns/peek-panelboth+pat0 (+1 shell)00
Breadcrumbsbreadcrumbsboth2 (+3 shell)00
ListItemicon, list-item, modalboth0 (+2 shell)00
SidePanelside-panel, patterns/peek-panelboth+pat001
Timestampmodal, timestamp, patterns/peek-panel, patterns/recent-activity-feedboth+pat6 (+1 shell)413
formatDateTimeNONEn/a010
formatRelativeTimeNONEn/a000
formatCompactDateTimeNONEn/a000
DEFAULT_LOCALENONEn/a000
IdentityRowapp-shell, identity, patterns/account-menu, patterns/confirm-and-report, patterns/member-row-inline-role, patterns/typography-compositesboth+pat3 (+1 shell)21
WorkspaceSwitcherapp-shell, identityboth1 (+1 shell)10
Kickerkicker, typography, patterns/entrance-cards, patterns/shape-matched-skeleton, patterns/typography-compositesboth+pat1 (+3 shell)00
StatTileicon, kicker, spinner, stat-tile, tooltip, typography, patterns/dashboard-statsboth+pat6 (+2 shell)22
PageInfopage-infoboth2 (+1 shell)70
EmptyStateempty-state, icon, page-states, table, patterns/module-image-generation, patterns/recent-activity-feed, patterns/searchable-attach-list, patterns/typography-compositesboth+pat0212
PageLoadingpage-statesboth000
PageErrorpage-statesboth090
ListStatepage-statesboth000
Modalmodalboth1 (+1 shell)47
ModalTitlemodalboth147
ModalFootermodalboth111
ConfirmModalmodal, patterns/confirm-and-report, patterns/member-row-inline-roleboth+pat243
ConfirmModalIdNONEn/a000
useModalmodal, patterns/confirm-and-report, patterns/member-row-inline-roleboth+pat3 (+1 shell)910
selectedModalIdmodalboth000
selectedModalKeymodalboth000
selectedModalArgsmodalboth000
ToastsNONEn/a0 (+1 shell)11
pushAlertalert, button, dropzone, inline-edit, modal, spinner, toast, patterns/bulk-selection-bar, patterns/confirm-and-report, patterns/member-row-inline-role, patterns/searchable-attach-list, patterns/typography-compositesboth+pat16815
useAlertToasttoastboth000
IconForside-panelboth0 (+2 shell)120
IconKeyListiconboth000
RenderIconapp-shell, chip-compare, dropdown, dropzone, field-chip, icon, input, toolbar-compare, tooltip, patterns/account-menu, patterns/auth-card-shell, patterns/entrance-cards, patterns/file-chip, patterns/page-title-variants, patterns/part-identity, patterns/peek-panel, patterns/split-cards, patterns/workflow-stepperboth+pat2 (+8 shell)80
LoadingIconiconboth000
Tabsapp-shell, modal, tabs, patterns/account-menu, patterns/auth-card-shell, patterns/compact-dropzone, patterns/dashboard-stats, patterns/peek-panel, patterns/recent-activity-feedboth+pat0 (+1 shell)14
Tooltipapp-shell, dropzone, icon, status, tooltip, typography, patterns/attribute-spec-grid, patterns/bulk-selection-bar, patterns/job-title, patterns/member-row-inline-role, patterns/part-identityboth+pat01111
Dropdowndropdown, menus-and-pickers, toolbar-compare, patterns/account-menuboth+pat0 (+1 shell)25
Spinnerspinnerboth041
Skeletonspinner, patterns/boot-skeletons, patterns/shape-matched-skeletonboth+pat091
SkeletonGroupspinner, patterns/searchable-attach-listboth+pat0200
Progressdropzone, spinner, patterns/module-attribute-normalizationboth+pat6 (+1 shell)23
Tablechip, icon, modal, spinner, status, table, tooltip, patterns/bulk-selection-bar, patterns/module-content-generation, patterns/peek-panelboth+pat718
colmodal, spinner, tableboth010
Pagertableboth000
useTableSorttable-hooksboth000
useTableSearchtable-hooksboth000
useTableFilterstable-hooksboth000
useTableSelectiondata-table, table-hooks, patterns/bulk-selection-barboth+pat011
useTablePaginationtable-hooksboth000
paginationMetatable-hooksboth000
useColumnVisibilitytable-hooksboth000
useDataTabledata-tableboth049
noopSyncAdaptertable-hooksboth000
DataTabledata-table, modalboth7610
RowMenudata-tableboth001
SelectionCelldata-table, patterns/bulk-selection-barboth+pat011
SelectAllCelldata-table, patterns/bulk-selection-barboth+pat011
SelectionCheckboxdata-tableboth000
FilterBartable-hooksboth000
FacetBarchip-compare, data-table, facet-bar, menus-and-pickers, status, toolbar-compareboth000
FilterableCelldata-table, facet-bar, statusboth000
facetTooltipfacet-barboth000
TableSkeletontable, patterns/boot-skeletonsboth+pat000
ToolbarSkeletontableboth000
renderDatetableboth000
renderLinktableboth000
renderCodetableboth000
AppShellapp-shellboth2 (+3 shell)10
Sidebarapp-shell, patterns/sidebar-anatomyboth+pat001
Topbarapp-shellboth000
Dropzonedropzone, icon, page-info, patterns/compact-dropzoneboth+pat211
CopyButtoncopy-button, patterns/job-title, patterns/peek-panelboth+pat1 (+2 shell)21
InlineEditinline-editboth003
useKeyPresshooksboth0 (+1 shell)00
useDebouncehooks, inputboth000
useLocalStoragehooksboth001
useSessionStoragehooksboth000
useNavHijackhooksboth000
useDisabledReasonhooks, tooltipboth000
renderNodeinternalsboth000
renderMarkdownLiteinternalsboth000
accentStyleinternals, tableboth400
accentClassinternalsboth000
useAsyncActioninternalsboth000
PortalIdinternalsboth000
getPortalRootinternalsboth000
SemanticColorListinternalsboth000
SchemaFormschema-form, patterns/module-attribute-normalization, patterns/module-content-generation, patterns/module-image-generation, patterns/module-part-type-matchingboth+pat000
lintSchemaNONEn/a000
X_WIDGETSNONEn/a000
X_WIDTHSNONEn/a000
X_TIERSNONEn/a000
X_KEYSNONEn/a000
SCHEMA_FORM_FORMATSNONEn/a000

Reading notes#

  • Zero unmatched imports, all three trees: every runtime kit import in the playground, walmart, and speedway resolves to a current export. Nothing imports a name the kit has dropped, despite speedway's lockfile pinning 0.0.14.
  • Toasts is the one standing exception: mounted once in the shell (apps/playground/src/app/layout.tsx:18), documented on the toast page's host card, never counted as covered by the mechanical rule.
  • Sidebar now reaches the gallery both ways: the app-shell component page imports it directly and the sidebar-anatomy pattern page carries its own usage card. At 0.0.25 it was patterns-only.
  • /chip-compare and /toolbar-compare are ordinary component pages now, nav-linked from both component surfaces the same as any other export. No unlinked routes remain.
  • The 12 uncovered exports, in two groups. Three regressed from the 0.0.25 ledger, where each was covered: ConfirmModalId had a usage card on the modal page, formatDateTime and formatRelativeTime were imported directly on the timestamp page. All three now go undemoed; the timestamp page's five examples render through the Timestamp component alone, and the modal page no longer shows a raw ConfirmModalId usage. The other nine are surface the kit grew after 0.0.25 that never got a gallery demo: Timestamp's DEFAULT_LOCALE and formatCompactDateTime, and SchemaForm's exported vocabulary (lintSchema, X_WIDGETS, X_WIDTHS, X_TIERS, X_KEYS, SCHEMA_FORM_FORMATS, plus Input's sibling RequiredMark). These nine are public API a consumer would import to validate or configure a schema, not something a gallery page necessarily renders on screen, but the P0 target still calls for demoing them.
  • The index-subtitle em dash was fixed when the style ledger fired on it; the P4 sweep still owns the class across all rendered copy.
@versable-git/ui · reference, canon, and method, read in place