Skip to content

spec(plugin-dashboard,app-shell,types): the dashboard producers name the declared node type they build, and the widget slot's TS read type drops the component type (objectui#11483's closure); preparation for objectui#11466 #11514

Description

@objectstack-fleet

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)

  1. object-chart producer: names ObjectChartSchema, with chartType from the families objectui#11513 declares. ⛔ No cast.
  2. 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.
  3. 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.
  4. ⛔ 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lanepriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions