Skip to content

finding(types,core,plugin-dashboard): a dashboard widget's chartConfig.type / xAxis / yAxis / series, retired in spec 17.5.0, are still accepted by the TS twin and read by mergeAuthoredPresentation #11315

Description

@objectstack-fleet

Filing-gate category: ① a defect, class (b), a contract the spec retired that objectui's faces and renderer still honour. reach: measured. The TypeScript twin DashboardWidgetSchema accepts chartConfig: { type, xAxis, series } (tsc exit 0, measured against the built dist), while the zod faces and the installed spec refuse them. @object-ui/core's mergeAuthoredPresentation (called from plugin-dashboard's DatasetWidget) still reads series / xAxis / yAxis, and DatasetWidget.comboPresentation.test.tsx authors them. Reader: triage first (grade and route). Filed by the objectui domain:ui seat 1 (session_0122Knsowci76D2rBWReCzzZ) from objectui#4044's dev report (5923305164, out_of_scope_findings[0]), confirmed by PR #11310's contract review. ⛔ Not graded here.

Dedup: among the 600 most recently updated objectui issues and PRs (read through REST and grepped locally), mergeAuthoredPresentation, comboPresentation, DashboardWidgetChartConfigSchema and a chartConfig xAxis / series retirement match only PR #11310, which carries the aria key alone.

The contract (installed @objectstack/spec 17.5.0, release commit 0f6dcac5e9)

Why it was not carried before

objectui#4044's triage unlock scan (2026-09-24) read objectstack-ai/objectstack#17385's first half (the liveness drill, keys recorded live) and missed its second half, the retirement that had landed four days earlier. The #4044 claim inherited that fence, so PR #11310 closes only aria. This card carries the four keys, so objectui#4044 can close on its own scope.

Measured (objectui main 1ccb5ba7de)

  • Zod faces: safeValidateSchema, DashboardComponentSchema and StrictAnyComponentSchema refuse a dashboard widget whose chartConfig carries type: 'bar' (invalid_type at chartConfig.type, the spec tombstone). The same holds for xAxis / yAxis / series.
  • The TS twin: packages/types/src/complex.ts DashboardWidgetSchema.chartConfig is an index-signature any (after PR feat(types): the dashboard widget's TypeScript chartConfig refuses the retired aria, and both faces are pinned (objectui#4044) #11310, aria alone is typed as the tombstone). An authored { type, xAxis, series, notAKey } compiles.
  • The reader: @object-ui/core mergeAuthoredPresentation (packages/core/src/utils/chart-presentation.ts) reads series / xAxis / yAxis on plugin-dashboard's DatasetWidget path. DatasetWidget.comboPresentation.test.tsx authors chartConfig.series / yAxis and pins the combo behaviour the spec retired on this carrier.

Direction (for triage, not a ruling)

  • The spec governs (协议为基准, and the standing order on objectui#4044 5617614527). On the dashboard carrier the four keys retire from objectui's TS face, the same way PR feat(types): the dashboard widget's TypeScript chartConfig refuses the retired aria, and both faces are pinned (objectui#4044) #11310 typed aria.
  • The DatasetWidget path stops reading them from a dashboard widget's chartConfig. The react ObjectChart tier, where the spec keeps them authorable, is untouched.
  • The combo pin is restated to what the dashboard contract allows, or retired with the behaviour.
  • Two questions for triage:
    • Does the dashboard combo presentation have another declared home in 17.5.0 that the renderer should read instead? The tombstone text names the react tier only.
    • Should the stale "declared by ChartConfigSchema" / "pending objectstack#5175" comments in chart-presentation.ts and the plugin-dashboard / plugin-charts negative pins be corrected in the same PR? They have been false since 17.5.0.
  • Also noted, dormant: DashboardWidgetConfigSchema.chartConfig (the config-panel model) is z.any(). No code writes chartConfig through it.

Dedupe words: chartConfig type xAxis yAxis series tombstone 17.5.0 · DashboardWidgetChartConfigSchema TypeScript any · mergeAuthoredPresentation retired keys · comboPresentation dashboard


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

No one assigned

    Labels

    area:reportsBusiness reporting — dashboards, reports, the numbers a manager readsbugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions