Skip to content

finding(types): designer-surface DashboardConfig.aria / DashboardConfigSchema.aria declare a { label, description } aria object nothing reads — and the panel they document does not consume them #5852

Description

@os-sam

Found while implementing #5830 (out of scope there; recorded, not touched).

Measured on origin/main at da8db03a6

The designer surface carries its own dashboard aria pair, separate from the DashboardComponentSchema.aria member #5830 retires:

  • packages/types/src/designer.ts (~line 625): DashboardConfig.aria?: { label?: string; description?: string } — note the spellings are neither the spec's AriaProps (ariaLabel/ariaDescribedBy/role) nor anything a renderer maps.
  • packages/types/src/zod/complex.zod.ts (~line 541): DashboardConfigSchema's aria: z.object({ label, description }).optional() twin.

Three measurements:

  • Zero non-test .aria reads in packages/plugin-designer/src, packages/plugin-dashboard/src, and apps/console/src (control: the same grep family finds the live schema.aria reads in plugin-detail's record-quick-actions.tsx).
  • DashboardConfigSchema has zero non-test consumers — it is exported from zod/index.zod.ts and imported only by its own test (dashboard-config.test.ts). The comment on it says "Zod validator for DashboardConfigPanel data model", but packages/plugin-dashboard/src/DashboardConfigPanel.tsx imports neither DashboardConfig nor DashboardConfigSchema.
  • The non-test consumers of the DashboardConfigtype are packages/types/src/index.ts (re-export) and designer.ts itself.

So at minimum the aria member of this pair is declared-but-dead (with home-grown spellings that never matched any contract), and possibly the whole DashboardConfig/DashboardConfigSchema surface is an unconsumed data model — the panel it documents grew its own typing instead. Sibling context: DashboardWidgetConfigSchema (same file) still declares actionUrl, which the widget-level retirement (objectstack#5010 / objectui WidgetConfigPanel.retiredActionKeys.test.tsx) refuses at the spec — same declared-vs-contract disagreement family as #4631/#5830.

Scope note: stored customer metadata is not reachable from this seat, so the read-side scan is "no reachable usage", not "no usage". The zod half never refused anything, so retiring it changes no validation outcome.


Generated by Claude Code

Metadata

Metadata

Assignees

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:dispatched

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions