Found while delivering objectui#4044's ruling for the two inline relays (PR #9202). Filed rather than folded in: that card's DO-NOW is the not-yet-forwarded keys, the relays are what was unforwarded, and extending a pin file mid-flight risks a claim collision. ⛔ Not claimed, ⛔ not graded — labels and priority are triage's.
The gap
DatasetWidget has forwarded chartConfig through @object-ui/core's chartConfigPresentation whitelist since objectstack#7016 (2026-08-09). Its dashboard-surface pin, DatasetWidget.chartConfig.dom.test.tsx, asserts only four keys are drawn: title, subtitle, description, height.
The other five — colors, categoryColors, showDataLabels, annotations, interaction — have no drawn assertion on the dashboard face at all.
Why the existing coverage does not count — measured, not argued
Their only apparent evidence is plugin-charts' hand-built ChartRenderer.dashboardChartConfig.test.tsx. PR objectui#9202's seat ablated the forwarding out of both inline relays and ran it:
46 assertions red across the three dashboard files, and 0 in plugin-charts' file.
⇒ that file pins the chart block, never the dashboard seam. An assertion that stays green while the thing it names is deleted is not evidence — it is the exact shape objectui#7963's confirmVariant survived in for months, and the shape objectui#4044 exists to remove one layer up.
⭐ The same PR demonstrates the gap is closable: it added DashboardChart.chartConfigMarks-4044.test.tsx, a drawn pin for those same six plot-internal keys on the relay face, and every one reddens under its own ablation leg.
The technique transfers verbatim, and it corrects a false claim in the tree
A comment in DatasetWidget.chartConfig.dom.test.tsx (and its twin, which objectui#9202 corrected in the file it owns) asserts the recharts marks can only be pinned inside plugin-charts.
- The premise is true, re-measured:
require.resolve('recharts') from packages/plugin-dashboard is MODULE_NOT_FOUND.
- The conclusion is false:
ResponsiveContainer seeds its size from getBoundingClientRect on its own element, so a scoped stub on the recharts-responsive-container element is enough — ⛔ no module mock required.
So the dataset-face pin can be extended the same way; it is a mechanical extension of one existing file rather than new ground.
Scope note
This is a coverage gap, not a defect — the five keys do reach the renderer on the dataset path; nothing an author writes is silently dropped there. What is missing is the assertion that would catch it if that stopped being true. objectui#4044's ruling names the pin clause for this face too (「每个转发键在 dashboard 面有一个读到它的渲染断言」), so this is that clause's unfinished half.
Refs: objectui#4044 (the ruling and its pin clause) · PR #9202 (the relay half, where the 0-of-46 reading was taken) · objectstack#7016 (which made the dataset path forward the whitelist).
Found while delivering objectui#4044's ruling for the two inline relays (PR #9202). Filed rather than folded in: that card's DO-NOW is the not-yet-forwarded keys, the relays are what was unforwarded, and extending a pin file mid-flight risks a claim collision. ⛔ Not claimed, ⛔ not graded — labels and priority are triage's.
The gap
DatasetWidgethas forwardedchartConfigthrough@object-ui/core'schartConfigPresentationwhitelist since objectstack#7016 (2026-08-09). Its dashboard-surface pin,DatasetWidget.chartConfig.dom.test.tsx, asserts only four keys are drawn:title,subtitle,description,height.The other five —
colors,categoryColors,showDataLabels,annotations,interaction— have no drawn assertion on the dashboard face at all.Why the existing coverage does not count — measured, not argued
Their only apparent evidence is
plugin-charts' hand-builtChartRenderer.dashboardChartConfig.test.tsx. PR objectui#9202's seat ablated the forwarding out of both inline relays and ran it:⇒ that file pins the chart block, never the dashboard seam. An assertion that stays green while the thing it names is deleted is not evidence — it is the exact shape objectui#7963's
confirmVariantsurvived in for months, and the shape objectui#4044 exists to remove one layer up.⭐ The same PR demonstrates the gap is closable: it added
DashboardChart.chartConfigMarks-4044.test.tsx, a drawn pin for those same six plot-internal keys on the relay face, and every one reddens under its own ablation leg.The technique transfers verbatim, and it corrects a false claim in the tree
A comment in
DatasetWidget.chartConfig.dom.test.tsx(and its twin, which objectui#9202 corrected in the file it owns) asserts the recharts marks can only be pinned insideplugin-charts.require.resolve('recharts')frompackages/plugin-dashboardisMODULE_NOT_FOUND.ResponsiveContainerseeds its size fromgetBoundingClientRecton its own element, so a scoped stub on therecharts-responsive-containerelement is enough — ⛔ no module mock required.So the dataset-face pin can be extended the same way; it is a mechanical extension of one existing file rather than new ground.
Scope note
This is a coverage gap, not a defect — the five keys do reach the renderer on the dataset path; nothing an author writes is silently dropped there. What is missing is the assertion that would catch it if that stopped being true. objectui#4044's ruling names the pin clause for this face too (「每个转发键在 dashboard 面有一个读到它的渲染断言」), so this is that clause's unfinished half.
Refs: objectui#4044 (the ruling and its pin clause) · PR #9202 (the relay half, where the 0-of-46 reading was taken) · objectstack#7016 (which made the dataset path forward the whitelist).