This card carries objectui#8347's F2 half: the TypeScript face of the dashboard widget slot's component arm. objectui#8347 keeps the removal itself and everything its fork ACCEPT lists for the last PR.
Filing-gate category: ① — a named landing point (DashboardWidgetSlotComponentSchema and the widget component slot in packages/types/src/complex.ts, with their zod twins), measured reach, and a named renderer. A derived child of objectui#8347, filed with the parent's domain:spec and priority:p2.
Reader: the domain:spec @ objectui seat (objectui#10217) dispatches it, and an os-dev executes it.
Parent: objectui#8347, which is pm:blocked until this card and its two siblings land.
What was measured (objectui#8347's P1 report 5953663875, at main 5988b6b53)
DashboardWidgetSlotComponentSchema extends BaseSchema (read on origin/main), and the widget's component slot is typed BaseSchema. MetricCard's title, value, icon, trend and trendValue reach that arm only through the index signature. With the signature deleted alone:
- types
dashboard-widget-slot-component-arm-7952 ×3 (value; the README usage copy) and content-channel-public-blocks-9256 ×1 (title, the accepting control literal) stop compiling;
check:doc-snippets fails 3 blocks in the plugin-dashboard README's metric-card examples.
reach: the published @object-ui/types arm. The named producer is the plugin-dashboard README, whose metric-card examples objectui#7952's ruling made compile on exactly this passthrough. PR objectui#11377 carried these literals to objectui#8347 unruled.
Seat answer: A (non-escalation; an existing ruling decides it)
Governing text: objectui#7952's ruled outcome, under which the README's metric-card component examples compile.
- A: declare MetricCard's registry inputs on the component arm by reference to the registration's inputs, type the widget
component slot with that arm, and mirror them on the zod twin.
- B (teach only the widget format and refuse inline metric-card props) narrows a documented, rendered capability against objectui#7952.
- C (a named open record) is the index signature by another name.
The implementer measures first:
- which of the five keys
MetricCard really reads (a type-checker census AND a runtime probe);
- the zod component arm's current shape. objectui#11022 already fixed the strict face for
metric-card's registered inputs, and objectui#11070 round 11 (PR objectui#11387) declared the spec's layout on this arm, so the zod half may already be partly done. Report what it finds; ⛔ no second spelling.
Constraints
- Every edit here must compile WITH the signature still present, so this card lands on its own and
main stays green.
- objectui#11070 (
pm:blocked, held by domain:devx seat 2) also edits this arm's zod and TS faces. Check its newest claim at dispatch and declare the overlap in the claim.
Clause-② is stated at claim from the actual accept-set change: the TS face gains no accepted key while the signature stands, and a zod arm that goes from passthrough to value-checked is a narrowing.
Dedupe
The same REST read as objectui#8347's siblings (600 most recently updated objectui issues and PRs, open and closed, back to 2026-09-28T12:31Z, 2026-10-02): metric-card / MetricCard / DashboardWidgetSlotComponent 16 hits. The only open one is objectui#11070, which is the strict face's refusals, a different defect; the rest are closed. Control objectui 589.
Dedupe words: metric-card component arm title value · DashboardWidgetSlotComponentSchema index signature · widget component slot BaseSchema
This card carries objectui#8347's F2 half: the TypeScript face of the dashboard widget slot's component arm. objectui#8347 keeps the removal itself and everything its fork ACCEPT lists for the last PR.
Filing-gate category: ① — a named landing point (
DashboardWidgetSlotComponentSchemaand the widgetcomponentslot inpackages/types/src/complex.ts, with their zod twins), measured reach, and a named renderer. A derived child of objectui#8347, filed with the parent'sdomain:specandpriority:p2.Reader: the
domain:spec @ objectuiseat (objectui#10217) dispatches it, and an os-dev executes it.Parent: objectui#8347, which is
pm:blockeduntil this card and its two siblings land.What was measured (objectui#8347's P1 report
5953663875, atmain5988b6b53)DashboardWidgetSlotComponentSchema extends BaseSchema(read onorigin/main), and the widget'scomponentslot is typedBaseSchema. MetricCard'stitle,value,icon,trendandtrendValuereach that arm only through the index signature. With the signature deleted alone:dashboard-widget-slot-component-arm-7952×3 (value; the README usage copy) andcontent-channel-public-blocks-9256×1 (title, the accepting control literal) stop compiling;check:doc-snippetsfails 3 blocks in the plugin-dashboard README's metric-card examples.reach:the published@object-ui/typesarm. The named producer is the plugin-dashboard README, whose metric-card examples objectui#7952's ruling made compile on exactly this passthrough. PR objectui#11377 carried these literals to objectui#8347 unruled.Seat answer: A (non-escalation; an existing ruling decides it)
Governing text: objectui#7952's ruled outcome, under which the README's metric-card component examples compile.
componentslot with that arm, and mirror them on the zod twin.The implementer measures first:
MetricCardreally reads (a type-checker census AND a runtime probe);metric-card's registered inputs, and objectui#11070 round 11 (PR objectui#11387) declared the spec'slayouton this arm, so the zod half may already be partly done. Report what it finds; ⛔ no second spelling.Constraints
mainstays green.pm:blocked, held bydomain:devxseat 2) also edits this arm's zod and TS faces. Check its newest claim at dispatch and declare the overlap in the claim.Clause-②is stated at claim from the actual accept-set change: the TS face gains no accepted key while the signature stands, and a zod arm that goes from passthrough to value-checked is a narrowing.Dedupe
The same REST read as objectui#8347's siblings (600 most recently updated objectui issues and PRs, open and closed, back to 2026-09-28T12:31Z, 2026-10-02):
metric-card/MetricCard/DashboardWidgetSlotComponent16 hits. The only open one is objectui#11070, which is the strict face's refusals, a different defect; the rest are closed. Controlobjectui589.Dedupe words:
metric-card component arm title value·DashboardWidgetSlotComponentSchema index signature·widget component slot BaseSchema