Filed unassigned by the domain:ui dev seat while working objectui#7509 (session session_01KbJQ1y1J12nZxYzFWhP8Q3, PR #7622) — recording, not claiming. Out of that card's scope: the maintainer ruling of 2026-09-04 (decision batch #29) enumerates five files and this is a sixth, in a different package, whose removal would move a published name.
Dedupe: searched before filing — 195 open issues read via REST, keyword scan over title+body, control lit (18 issues mention dashboard). The same-class cards #7532 and #7353 are declared-but-unread findings on different keys; #7279 names DashboardComponentSchema but is about ObjectViewSchema mirroring. No open card covers this key.
The claim
packages/types/src/complex.ts:1087 declares, on objectui's own component protocol type:
export interface DashboardComponentSchema extends BaseSchema {
type: 'dashboard';
/** Dashboard title displayed in the header */
title?: string;
That doc comment describes behaviour that stops existing when PR #7622 lands. That PR retires all five dashboard-root title read arms under ADR-0049, so after it there is no read site anywhere in the repo for a dashboard-root title — the key becomes declared, documented as doing something, and inert.
Measured on the PR branch (claude/issue-7509-dashboard-root-title-retire): zero schema.title / headerSrc.title / (dashboard as any).title code reads remain in the five surfaces; the only surviving .title occurrences there are comments and the widget-level key.
Why it is a separate card and not a rider on #7509
Removing the member moves a published name, which flips the Clause-② judgement that #7509 was dispatched under (no). It also needs the #5830 treatment rather than a one-line delete, and that precedent is directly instructive:
Unlike aria, title has no spec tombstone to inherit: @objectstack/spec's DashboardSchema refuses root title via unrecognized_keys, not via a named removal message. So the Zod-twin half of the #5830 pin shape does not transfer as-is, and whoever takes this should decide whether a tombstone is wanted before writing the pin.
Not in scope of this finding
⛔ Widget-level DashboardWidget.title — the spec's I18nLabel, a live declared key on a different receiver. It stays, and #7622 keeps it with explicit controls on every surface.
Disposition
Not proposed here — this is an ADR-0049 enforce-or-remove candidate whose removal touches a published type, so it wants the same triage #5830 got rather than a dev's judgement call.
Filed unassigned by the
domain:uidev seat while working objectui#7509 (sessionsession_01KbJQ1y1J12nZxYzFWhP8Q3, PR #7622) — recording, not claiming. Out of that card's scope: the maintainer ruling of 2026-09-04 (decision batch #29) enumerates five files and this is a sixth, in a different package, whose removal would move a published name.Dedupe: searched before filing — 195 open issues read via REST, keyword scan over title+body, control lit (18 issues mention
dashboard). The same-class cards #7532 and #7353 are declared-but-unread findings on different keys; #7279 namesDashboardComponentSchemabut is aboutObjectViewSchemamirroring. No open card covers this key.The claim
packages/types/src/complex.ts:1087declares, on objectui's own component protocol type:That doc comment describes behaviour that stops existing when PR #7622 lands. That PR retires all five dashboard-root
titleread arms under ADR-0049, so after it there is no read site anywhere in the repo for a dashboard-roottitle— the key becomes declared, documented as doing something, and inert.Measured on the PR branch (
claude/issue-7509-dashboard-root-title-retire): zeroschema.title/headerSrc.title/(dashboard as any).titlecode reads remain in the five surfaces; the only surviving.titleoccurrences there are comments and the widget-level key.Why it is a separate card and not a rider on #7509
Removing the member moves a published name, which flips the Clause-② judgement that #7509 was dispatched under (
no). It also needs the #5830 treatment rather than a one-line delete, and that precedent is directly instructive:DashboardComponentSchema.ariawas removed in finding(types):DashboardComponentSchema.ariadeclares a key the spec tombstoned and no renderer reads — stale "Aligned with @objectstack/spec AriaPropsSchema" claim #5830, pinned bypackages/types/src/__tests__/dashboard-aria-retired-contract-twins.test.ts.BaseSchemacarries an index signature, so an authoredtitlestill compiles after the member is gone and a@ts-expect-errorpin cannot stick. The pinnable effect is thattitlestops being a DECLARED member — the finding(types):DashboardComponentSchema.ariadeclares a key the spec tombstoned and no renderer reads — stale "Aligned with @objectstack/spec AriaPropsSchema" claim #5830 file extracts the interface's literal key set withstring extends Kand asserts the member is out while its neighbours stay in.Unlike
aria,titlehas no spec tombstone to inherit:@objectstack/spec'sDashboardSchemarefuses roottitleviaunrecognized_keys, not via a named removal message. So the Zod-twin half of the #5830 pin shape does not transfer as-is, and whoever takes this should decide whether a tombstone is wanted before writing the pin.Not in scope of this finding
⛔ Widget-level
DashboardWidget.title— the spec'sI18nLabel, a live declared key on a different receiver. It stays, and #7622 keeps it with explicit controls on every surface.Disposition
Not proposed here — this is an ADR-0049 enforce-or-remove candidate whose removal touches a published type, so it wants the same triage #5830 got rather than a dev's judgement call.