Skip to content

finding(app-shell): ObjectView forwards chart.config, a key the spec's strict ListChartConfigSchema refuses by name — an undeclared channel no conforming author can feed #7891

Description

@claude

Found while implementing objectui#7823 (the object-view relay's six-key chart projection).
Recording only, no fix in that PR — it is a different package and outside that card's file
surface (packages/plugin-list/ is objectui#7544's).

What is measured

On origin/main 83fe6e741, the authored chart.config block reaches the chart renderer
on ONE of the two routes into object-chart, and is dropped on the other.

Live on the dedicated chart-view route. packages/app-shell/src/views/ObjectView.tsx
:2118 (dataset branch) and :2152 (legacy branch) both put it on the object-chart
schema:

schema={{ type: 'object-chart', dataset, dimensions, values, chartType, xAxisKey,
          series, config: chartConfig.config, className }}

and packages/plugin-charts/src/ChartRenderer.tsx :134 reads it off that schema:

let config = schema.config;

(ObjectChart forwards its props into ChartRenderer at ObjectChart.tsx:1131, so the
key is consumed, not merely carried.)

Dropped on the ListView chart route. packages/plugin-list/src/ListView.tsx
case 'chart' (:2692) builds its own object-chart schema and names config in
neither branch:

  • dataset branch returns type / dataset / dimensions / values / chartType /
    xAxisKey / series / className
  • legacy branch returns type / objectName / chartType / filter / aggregate /
    xAxisKey / series / className

chartCfg (the resolved block, which DOES carry config) is read for chartType and
aggregation only.

Why this is worth a card

The same authored chart: block renders with its config honoured when the view's own
type is chart, and without it when the identical block is reached through the Chart
toggle that objectui#7544 added to ListView. The author gets two different renderings
of one declaration depending on which route the user arrived by, and nothing reports the
difference.

It is the same failure class as objectui#7823 — a rung that EXISTS and narrows, invisible
to a rung census because the key is present — one seam further downstream. objectui#7823
only made this reachable: before it, the block never arrived at this route with a usable
binding at all, so the missing config rung had nothing to drop.

Not verified here

Whether config is declared on the spec's ListChartConfigSchema (i.e. whether this is
an authorable key or an internal one), and what ChartRenderer actually does with the
value downstream of :134. Both are worth one reading before choosing the fix shape —
if the key turns out NOT to be authorable, the correct direction may be removing the
forward on the app-shell side rather than adding a rung on the plugin-list side.


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

bugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatfindingpackage: app-shellpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions