Skip to content

chore(components): remove unread, unpublished component.yml metadata files - #4732

Merged
yinlianghui merged 1 commit into
mainfrom
claude/issue-4659-component-yml-retirement
Aug 15, 2026
Merged

chore(components): remove unread, unpublished component.yml metadata files#4732
yinlianghui merged 1 commit into
mainfrom
claude/issue-4659-component-yml-retirement

Conversation

@yinlianghui

Copy link
Copy Markdown
Collaborator

Fixes #4659

What

Deletes packages/components/metadata/ (seven *.component.yml files:
ObjectGrid, ObjectForm, Page, Chart, Menu, GridLayout,
FilterBuilder) describing each component's props/events/features.

Why (adjudicated: delete, not "give them a reader")

This is a weaker instance of the established no-consumer retirement family:

  • Unread. No source file, script under scripts/, or workflow references
    component.yml or components/metadata anywhere in the repo (verified with
    the card's own pointers plus an expanded sweep over apps/*/src,
    examples/, content/, README files, and tsconfig/eslint config globs).
  • Unpublished. packages/components/package.json's files allowlist is
    ["dist", "README.md", "CHANGELOG.md", "LICENSE"] — the directory never
    leaves the repo.
  • Ungated. Nothing checks a declared prop against the zod schema or the
    renderer, which is the check that would give the files a job.

Urgency limb — one of the files was actively lying.
ObjectGrid.component.yml's features: block declared:

features:
  remote_data: true
  virtual_scroll: true
  inline_edit: true
  view_zod_aligned: true

packages/plugin-grid (which implements object-grid) has zero
references to virtualScroll or virtual_scroll — confirmed with
grep -rn "virtualScroll\|virtual_scroll" packages/plugin-grid/. The claim
was false before objectstack#7176 retired the upstream list.virtualScroll
key; the retirement only removed any prospect of it becoming true. An agent
or contributor reading this file learns something false about the grid.

Per the delegated adjudication on the issue: giving the files a reader
(designer palette / docs generator / MCP capability manifest) is new product
surface with no measured consumer, and startup-focus reading favours removal
absent a real pull. Not building a reader for these files in this PR.

Verification

  1. Zero-reference sweep (card's pointers, expanded):
    grep -rn "component\.yml\|components/metadata" scripts/ .github/workflows/ packages/*/src apps/*/src examples/ → no hits.
    A broader repo-wide sweep (content/, README files, tsconfig/eslint
    configs) also found no functional references — the only other hit anywhere
    in the tree is a prose mention of ObjectGrid.component.yml inside an
    already-existing, unreleased .changeset/lucky-pumas-repeat.md (from the
    objectstack#7176 unwind, PR refactor: unwind the retired striped/bordered/virtualScroll list-view surface (objectstack#7176) #4657), documenting a past edit — not a
    functional dependency.
  2. Unpublished: confirmed packages/components/package.json files
    allowlist above.
  3. False virtual_scroll claim: confirmed zero hits in plugin-grid/.

Tests

At dfceccd96 (final commit, matches pushed HEAD):

  • pnpm --filter '@object-ui/components^...' build — dependency closure
    builds clean.
  • pnpm exec vitest run --maxWorkers=2 packages/components/ (root-relative
    invocation per AGENTS.md) — Test Files 130 passed (130),
    Tests 1116 passed (1116).
  • pnpm --filter @object-ui/components type-check — clean (tsc --noEmit && tsc -p tsconfig.test.json).
  • pnpm --filter @object-ui/components lint0 errors, 920 pre-existing
    warnings in src/ui/** (the Shadcn no-touch zone), none related to this
    change.
  • node scripts/check-control-bytes.mjs — OK.
  • node scripts/check-doc-links.mjs — links valid across 13 scan roots.
  • node scripts/check-changeset-presence.mjs0 of them under the src/ of a package the release covers ... No source of a released package changed in this range, so no changeset is owed. (metadata/ is not under src/.)

Changeset

Not added — check-changeset-presence.mjs judges none owed (see gate output
above); this only touches packages/components/metadata/, not src/.


Generated by Claude Code

…files

packages/components/metadata/ held seven *.component.yml files (ObjectGrid,
ObjectForm, Page, Chart, Menu, GridLayout, FilterBuilder) describing each
component's props/events/features. Nothing reads them (no source file,
script, or workflow references component.yml or components/metadata), they
are not published (packages/components/package.json's files allowlist is
["dist", "README.md", "CHANGELOG.md", "LICENSE"]), and no gate compares
them against the zod schemas or renderers.

ObjectGrid.component.yml's features block also carried a false claim:
virtual_scroll: true, while packages/plugin-grid (which implements
object-grid) has zero references to virtualScroll/virtual_scroll — the
claim was false before objectstack#7176 retired the upstream
list.virtualScroll key, and the retirement only removed any prospect of
it becoming true.

Delete the directory rather than wire up a reader: no consumer is
measured or planned (a designer palette / docs generator / MCP capability
manifest would be new product surface, not a fix for drifted docs), and
startup-focus reading favours removal absent a real pull.

Fixes #4659

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RnQd8iMMUwXQEV1crFmQiQ
@vercel

vercel Bot commented Aug 15, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectui Ignored Ignored Aug 15, 2026 8:32pm

Request Review

@github-actions

Copy link
Copy Markdown
Contributor

✅ Console Performance Budget

Metric Value Budget
Main entry (gzip) 24.7 KB 350 KB
Entry file index-DQz-ygvc.js
Status PASS

📦 Bundle Size Report

Package Size Gzipped
app-shell (index.js) 9.56KB 3.59KB
app-shell (runtime-config.js) 7.42KB 2.32KB
app-shell (types.js) 0.01KB 0.04KB
app-shell (urlParams.js) 8.92KB 3.41KB
auth (AuthContext.js) 0.31KB 0.24KB
auth (AuthGuard.js) 1.17KB 0.53KB
auth (AuthProvider.js) 25.13KB 5.40KB
auth (AuthShell.js) 3.49KB 1.40KB
auth (ForgotPasswordForm.js) 12.21KB 3.45KB
auth (LoginForm.js) 18.13KB 5.39KB
auth (PreviewBanner.js) 0.90KB 0.50KB
auth (RegisterForm.js) 6.64KB 2.21KB
auth (SocialSignInButtons.js) 9.60KB 3.89KB
auth (UserMenu.js) 3.40KB 1.22KB
auth (auth-gate-events.js) 1.29KB 0.66KB
auth (authStyles.js) 5.04KB 1.72KB
auth (createAuthClient.js) 38.46KB 10.17KB
auth (createAuthenticatedFetch.js) 6.34KB 2.43KB
auth (index.js) 2.35KB 1.07KB
auth (org-roles.js) 6.66KB 2.78KB
auth (phone-identifier.js) 1.11KB 0.66KB
auth (types.js) 0.59KB 0.35KB
auth (useAuth.js) 5.02KB 0.88KB
auth (useIsWorkspaceAdmin.js) 1.61KB 0.85KB
collaboration (CommentThread.js) 26.07KB 7.56KB
collaboration (LiveCursors.js) 3.17KB 1.27KB
collaboration (PresenceAvatars.js) 6.49KB 2.64KB
collaboration (PresenceProvider.js) 2.79KB 1.13KB
collaboration (index.js) 1.65KB 0.73KB
collaboration (useCollaborationTranslation.js) 6.05KB 2.52KB
collaboration (useCommentSearch.js) 1.98KB 0.88KB
collaboration (useConflictResolution.js) 7.75KB 1.86KB
collaboration (useMentionNotifications.js) 1.81KB 0.68KB
collaboration (usePresence.js) 6.33KB 1.84KB
collaboration (useRealtimeSubscription.js) 7.91KB 2.01KB
components (index.js) 490.20KB 108.71KB
core (index.js) 3.79KB 1.52KB
create-plugin (index.js) 10.08KB 3.26KB
data-objectstack (index.js) 157.05KB 43.28KB
fields (index.js) 230.33KB 57.14KB
i18n (LocalizationContext.js) 1.76KB 0.96KB
i18n (currency.js) 1.22KB 0.64KB
i18n (i18n.js) 4.32KB 1.77KB
i18n (index.js) 3.35KB 1.38KB
i18n (pickLocalized.js) 3.69KB 1.73KB
i18n (provider.js) 23.12KB 7.62KB
i18n (useDisplayLocale.js) 2.84KB 1.45KB
i18n (useObjectLabel.js) 27.59KB 6.63KB
i18n (useSafeTranslation.js) 7.77KB 3.13KB
layout (index.js) 38.98KB 10.85KB
mobile (MobileProvider.js) 0.92KB 0.49KB
mobile (ResponsiveContainer.js) 0.94KB 0.38KB
mobile (breakpoints.js) 1.51KB 0.70KB
mobile (createOfflineDataSource.js) 5.61KB 1.74KB
mobile (index.js) 1.50KB 0.62KB
mobile (offlineQueue.js) 3.91KB 1.35KB
mobile (pwa.js) 0.97KB 0.49KB
mobile (serviceWorker.js) 1.48KB 0.62KB
mobile (serviceWorkerSource.js) 3.41KB 1.48KB
mobile (useBreakpoint.js) 1.54KB 0.65KB
mobile (useGesture.js) 6.96KB 1.98KB
mobile (useOfflineSync.js) 1.99KB 0.72KB
mobile (usePullToRefresh.js) 2.53KB 0.85KB
mobile (useResponsive.js) 0.71KB 0.42KB
mobile (useResponsiveConfig.js) 1.36KB 0.63KB
mobile (useSpecGesture.js) 4.32KB 1.64KB
mobile (useTouchTarget.js) 1.01KB 0.54KB
permissions (MePermissionsProvider.js) 9.35KB 3.31KB
permissions (PermissionContext.js) 0.31KB 0.25KB
permissions (PermissionGuard.js) 0.89KB 0.45KB
permissions (PermissionProvider.js) 3.89KB 1.22KB
permissions (evaluator.js) 4.41KB 1.44KB
permissions (index.js) 0.91KB 0.41KB
permissions (store.js) 0.91KB 0.42KB
permissions (useFieldPermissions.js) 1.28KB 0.52KB
permissions (usePermissions.js) 1.81KB 0.83KB
plugin-ai (index.js) 15.75KB 3.80KB
plugin-calendar (index.js) 46.86KB 12.91KB
plugin-charts (index.js) 64.44KB 18.28KB
plugin-chatbot (index.js) 181.21KB 43.14KB
plugin-dashboard (index.js) 121.90KB 31.76KB
plugin-designer (index.js) 212.39KB 42.83KB
plugin-detail (index.js) 239.81KB 59.97KB
plugin-editor (index.js) 2.46KB 1.10KB
plugin-form (index.js) 114.72KB 27.70KB
plugin-gantt (index.js) 164.30KB 40.02KB
plugin-grid (index.js) 192.10KB 51.24KB
plugin-kanban (index.js) 52.74KB 14.53KB
plugin-list (index.js) 111.14KB 26.92KB
plugin-map (index.js) 18.16KB 5.81KB
plugin-markdown (index.js) 13.72KB 4.69KB
plugin-report (index.js) 41.38KB 11.09KB
plugin-timeline (index.js) 26.68KB 7.66KB
plugin-tree (index.js) 8.50KB 2.88KB
plugin-view (index.js) 83.81KB 20.49KB
providers (DataSourceProvider.js) 0.75KB 0.39KB
providers (MetadataProvider.js) 1.37KB 0.59KB
providers (ThemeProvider.js) 1.90KB 0.85KB
providers (UploadProvider.js) 11.71KB 3.53KB
providers (index.js) 0.44KB 0.22KB
providers (types.js) 0.01KB 0.04KB
react-runtime (index.js) 5.67KB 2.37KB
react (LazyPluginLoader.js) 3.77KB 1.33KB
react (SchemaRenderer.js) 27.64KB 9.44KB
react (data-invalidation.js) 5.05KB 2.08KB
react (index.js) 1.28KB 0.68KB
react (schema-input.js) 1.45KB 0.83KB
react (spec-input.js) 0.20KB 0.18KB
sdui-parser (codegen.js) 4.09KB 1.74KB
sdui-parser (index.js) 4.47KB 2.03KB
sdui-parser (parse.js) 10.04KB 2.82KB
sdui-parser (types.js) 0.29KB 0.24KB
sdui-parser (validate.js) 4.69KB 1.48KB
types (ai.js) 0.20KB 0.17KB
types (api-types.js) 0.20KB 0.18KB
types (app.js) 2.87KB 0.99KB
types (base.js) 0.20KB 0.18KB
types (blocks.js) 0.20KB 0.18KB
types (complex.js) 0.20KB 0.18KB
types (crud.js) 0.20KB 0.18KB
types (dashboard-filter-alias.js) 6.23KB 2.74KB
types (data-display.js) 0.20KB 0.18KB
types (data-protocol.js) 0.20KB 0.19KB
types (data.js) 0.20KB 0.18KB
types (designer.js) 1.87KB 0.85KB
types (disclosure.js) 0.20KB 0.18KB
types (error-code.js) 1.54KB 0.88KB
types (feedback.js) 0.20KB 0.18KB
types (field-types.js) 0.20KB 0.18KB
types (form.js) 0.20KB 0.18KB
types (http-retry.js) 4.32KB 2.02KB
types (index.js) 3.05KB 1.52KB
types (layout.js) 0.20KB 0.18KB
types (managed-by.js) 0.19KB 0.18KB
types (mobile.js) 2.59KB 1.31KB
types (navigation.js) 0.20KB 0.18KB
types (objectql.js) 0.20KB 0.18KB
types (overlay.js) 0.20KB 0.18KB
types (permissions.js) 0.20KB 0.18KB
types (plugin-scope.js) 0.20KB 0.18KB
types (record-components.js) 0.20KB 0.19KB
types (record-semantics.js) 1.28KB 0.67KB
types (registry.js) 0.20KB 0.18KB
types (reports.js) 0.20KB 0.18KB
types (spec-report.js) 5.05KB 1.93KB
types (system-fields.js) 3.33KB 1.54KB
types (theme.js) 0.20KB 0.18KB
types (ui-action.js) 3.40KB 1.71KB
types (views.js) 0.20KB 0.18KB
types (widget.js) 0.20KB 0.18KB

Size Limits

  • ✅ Core packages should be < 50KB gzipped
  • ✅ Component packages should be < 100KB gzipped
  • ⚠️ Plugin packages should be < 150KB gzipped

Copy link
Copy Markdown
Collaborator Author

PM review — ACCEPT (reviewer of record, session session_01RnQd8iMMUwXQEV1crFmQiQ)

Deletion-class PR, so per the dispatch commitment I re-tested all three reference faces independently on origin/main, not from the report:

  1. Unread — confirmed. git grep -e "component\.yml" -e "components/metadata" on origin/main across scripts/, .github/, packages/, apps/, examples/ returns zero hits outside packages/components/metadata/ itself. A full-tree sweep finds exactly one additional hit: a prose filename mention in the pre-existing unreleased .changeset/lucky-pumas-repeat.md (PR refactor: unwind the retired striped/bordered/virtualScroll list-view surface (objectstack#7176) #4657's changeset) — documentation of a past edit, not a functional reference. Matches the dev's account exactly.
  2. Unpublished — confirmed. packages/components/package.json files allowlist on origin/main is ["dist", "README.md", "CHANGELOG.md", "LICENSE"]metadata/ never shipped.
  3. False virtual_scroll claim — confirmed. Case-insensitive git grep for virtualScroll/virtual_scroll in packages/plugin-grid/ on origin/main: zero hits. The urgency limb (a metadata file actively lying about the grid) holds.

Scope check: git diff --stat origin/main...dfceccd96 is exactly the seven *.component.yml deletions, 252 lines, nothing else. Body scan: Fixes #4659 is the sole closing keyword (objectstack#7176 and PR #4657 are mentioned keyword-free). Labels: no skip-changeset recurrence — correctly omitted this time.

Changeset: none owed and none added — check-changeset-presence.mjs verdict quoted in the PR body is consistent with the change touching only metadata/, and the Changeset Declaration / Fixed Group checks are green at head.

Gates at dfceccd96: Lint, Test shards 1/4 and 3/4, Build & E2E, Control Byte Scan, doc-link and changeset checks all success; Type Check and shards 2/4, 4/4 still running. Will flip ready + enable auto-merge once the remaining three conclude success at this head.

This closes the no-consumer retirement family's last open member (#4152#4241#4659), on the delegated adjudication recorded on the card (delete, don't build a reader).


Generated by Claude Code

@yinlianghui
yinlianghui marked this pull request as ready for review August 15, 2026 20:42
@yinlianghui
yinlianghui added this pull request to the merge queue Aug 15, 2026
Merged via the queue into main with commit baa89a1 Aug 15, 2026
20 checks passed
@yinlianghui
yinlianghui deleted the claude/issue-4659-component-yml-retirement branch August 15, 2026 20:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

2 participants