Blocked-by: #11513
This card carries objectui#11466's report Q1 (the dashboard producers) and Q3 (objectui#11483's closure). It is a child of objectui#11466, filed with its domain:spec and priority:p2. objectui#11466 (V1, PR #11512) is pm:blocked until this card and its siblings land.
Filing-gate category: ① named landing points, with a reach measured by objectui#11466's dev (report 5962392382). Under V1 the census leaves exactly 8 lines, all here:
DashboardGridLayout.tsx ×2 (string | BaseSchema | null | undefined not assignable to the V1 node union);
DashboardRenderer.tsx ×2 (BaseSchema not assignable);
- each in plugin-dashboard's src and test programs.
Reader: the domain:spec @ objectui seat (objectui#10217) dispatches it, and an os-dev executes it.
Rulings (the seat's; non-escalation: the order of and dependency between technical tasks, inside objectui#11466's ruling ① and objectui#11479's Q1 A, 5959124591)
- object-chart producer: names
ObjectChartSchema, with chartType from the families objectui#11513 declares. ⛔ No cast.
- object-metric producer: builds the authored properties-bag node (objectui#11479 Q1 A). This is a premise-bearing ruling.
- Premise, measured first, before any edit: every operator the dashboard filter bar emits translates losslessly into the spec's condition list, the bag's
filter.
- If the premise holds (A): the producer translates, and the filter broadcast writes the bag's
filter. One dialect sits on the node.
- If it fails (B): filter-carrying metric widgets keep building the TS-face
object-metric twin, which declares the ObjectQL dialect. This is recorded as a dated amendment to Q1, with the measured operators that do not translate.
- ⛔ Never C (widening the bag's
filter to a second dialect). ⛔ Do not choose silently: the report states which branch the measurement took.
- objectui#11483's closure (its answer
5959231623):
- retype plugin-dashboard's slot-entry callbacks (
DashboardRenderer, DashboardGridLayout, DashboardWithConfig) to the slot element type;
- follow
onWidgetsReorder into @object-ui/app-shell's DashboardPreview, which is type-only;
- drop
DashboardComponentWidgetType from DashboardWidgetSchema['type'] in packages/types/src/complex.ts;
- delete the MEASURED LIMIT section in
metric-card-needs-value-11483.test.ts and its KnownDrift type key.
- ⛔ Not here:
plugin-dashboard:metric's CustomNodeRegistry declaration, which needs V1's registry and stays in objectui#11466's PR.
Constraints
Dedupe
The 800 most recently updated objectui issues and PRs, open and closed, back to 2026-09-27 (REST, grepped locally 2026-10-02):
There is no open card on these producers.
Dedupe words: dashboard producers declared node type V1 · object-metric bag filter dialect · DashboardWidgetSchema type component read type
Generated by Claude Code
Blocked-by: #11513
This card carries objectui#11466's report Q1 (the dashboard producers) and Q3 (objectui#11483's closure). It is a child of objectui#11466, filed with its
domain:specandpriority:p2. objectui#11466 (V1, PR #11512) ispm:blockeduntil this card and its siblings land.Filing-gate category: ① named landing points, with a reach measured by objectui#11466's dev (report
5962392382). Under V1 the census leaves exactly 8 lines, all here:DashboardGridLayout.tsx×2 (string | BaseSchema | null | undefinednot assignable to the V1 node union);DashboardRenderer.tsx×2 (BaseSchemanot assignable);Reader: the
domain:spec @ objectuiseat (objectui#10217) dispatches it, and an os-dev executes it.Rulings (the seat's; non-escalation: the order of and dependency between technical tasks, inside objectui#11466's ruling ① and objectui#11479's Q1 A,
5959124591)ObjectChartSchema, withchartTypefrom the families objectui#11513 declares. ⛔ No cast.filter.filter. One dialect sits on the node.object-metrictwin, which declares the ObjectQL dialect. This is recorded as a dated amendment to Q1, with the measured operators that do not translate.filterto a second dialect). ⛔ Do not choose silently: the report states which branch the measurement took.5959231623):DashboardRenderer,DashboardGridLayout,DashboardWithConfig) to the slot element type;onWidgetsReorderinto@object-ui/app-shell'sDashboardPreview, which is type-only;DashboardComponentWidgetTypefromDashboardWidgetSchema['type']inpackages/types/src/complex.ts;metric-card-needs-value-11483.test.tsand itsKnownDrifttypekey.plugin-dashboard:metric'sCustomNodeRegistrydeclaration, which needs V1's registry and stays in objectui#11466's PR.Constraints
maintoday AND under objectui#11466's V1, the objectui#11479 pattern./tmp/claude-0/-home-user/d3c9de4a-3026-5dfc-8a1d-c1a290d6a94d/scratchpad/issue-11466-v1/11466-dashboard-partial.patch, withdash-partial-residue.logbeside it, in the seat container. It is a lead, not a spec.schemaprop take the declared-node union, V1; the dashboard producers name declared nodes and an envelope's object-metric retires (objectui#11466) #11512's branchclaude/issue-11466-node-slot-union-v1. ⛔ Never commit from it.Clause-②is stated at claim. Dropping the component type from the TS read type narrows the TS face..changesetentries this makes false get dated, append-only notes.Dedupe
The 800 most recently updated objectui issues and PRs, open and closed, back to 2026-09-27 (REST, grepped locally 2026-10-02):
object-metricnear filter / dialect: PR feat(types,react,core,plugin-dashboard)!: a node slot and SchemaRenderer'sschemaprop take the declared-node union, V1; the dashboard producers name declared nodes and an envelope's object-metric retires (objectui#11466) #11512 and closed cards;DashboardPreview: PR feat(types,react,core,plugin-dashboard)!: a node slot and SchemaRenderer'sschemaprop take the declared-node union, V1; the dashboard producers name declared nodes and an envelope's object-metric retires (objectui#11466) #11512 and closed cards.There is no open card on these producers.
Dedupe words:
dashboard producers declared node type V1·object-metric bag filter dialect·DashboardWidgetSchema type component read typeGenerated by Claude Code