Found while implementing #5742 (out of scope there; recorded, not touched).
Measured on origin/main at ad404e057
packages/types/src/complex.ts — DashboardComponentSchema declares:
/** * ARIA accessibility attributes. * Aligned with @objectstack/spec AriaPropsSchema. */
aria?: {ariaLabel?: string;
ariaDescribedBy?: string;
role?: string;};Two measurements against that claim:
So the local TS declaration advertises a dead key with an alignment comment that now claims the opposite of the contract — the "declared surfaces disagree" shape of #4631, on one concrete member. A reader of @object-ui/types is told the key exists and is spec-aligned; the spec refuses it and nothing renders it.
Likely remedy: delete the aria member (and its comment) from DashboardComponentSchema, sweeping any fixture that types against it. Not done in #5829 — deleting a @object-ui/types member is its own consumer sweep, out of that card's registration scope.
Generated by Claude Code
Found while implementing #5742 (out of scope there; recorded, not touched).
Measured on
origin/mainatad404e057packages/types/src/complex.ts—DashboardComponentSchemadeclares:Two measurements against that claim:
dashboard.aria:DashboardSchema.shape.ariais aZodNevertombstone whose refusal message states it was removed at the AiChatPage 发给 agent 的四条确认文本仍按 UI 语言取值:zh 控制台 + 英文会话把「确认,开始搭建。」发进英文线程,planAnswerMessage 更是完全没有会话语言门控 #3896 audit close-out because "no dashboard renderer ever applied it", and tells authors to delete the key. Any value fails parse.schema.ariareads anywhere inpackages/plugin-dashboard/src(measured fordashboardpublishes only columns/gap/className as inputs —widgets,title,header,globalFilters,dateRange,refreshIntervalall drawunknown-propwhile the renderer honours them #5742 — the pin testdashboardAuthoredInputs.test.tsxlanded with PR feat(plugin-dashboard): publish the honoured dashboard inputs, pin the two ruled-out keys (#5742) #5829 documents this and pins the key unpublished/spec-refused).So the local TS declaration advertises a dead key with an alignment comment that now claims the opposite of the contract — the "declared surfaces disagree" shape of #4631, on one concrete member. A reader of
@object-ui/typesis told the key exists and is spec-aligned; the spec refuses it and nothing renders it.Likely remedy: delete the
ariamember (and its comment) fromDashboardComponentSchema, sweeping any fixture that types against it. Not done in #5829 — deleting a@object-ui/typesmember is its own consumer sweep, out of that card's registration scope.Generated by Claude Code