Filed by the domain:ui PM seat from a measurement in objectui#7147 (PR #7169). The implementer reported it rather than filing, per the report-don't-duplicate fence on that surface — but unlike objectui#7148's finding, this one has no existing card to attach to, so it gets its own.
What is NOT known
objectui#7147 swept 8 chart families × 9 datasets = 74 tiles in real Chromium, MD5'd and pixel-diffed against a literally empty div, to find where a degenerate magnitude (zero, negative, null, unparseable) produces a chart that misrepresents its data.
It reached verdicts for seven families:
| family | verdict |
|---|
| pie / donut / funnel / treemap | defective — fixed in PR objectui#7169 |
| bar / radar | measured and clean — deliberately untouched |
| scatter | ⛔ NOT MEASURED |
Scatter is not clean. It is unmeasured, and the distinction is the whole point of this card.
Why the sweep could not read it
Every scatter tile drew zero marks — including the all-positive CONTROL (markN 0).
A control that returns zero is no control. With the control dead, scatter's zeros on the degenerate datasets carry no information: they are indistinguishable from "the fixture never rendered a scatter at all." Reporting scatter as clean on that evidence would have been a false green across nine datasets.
The cause is identified: scatter takes two measures (x and y), and objectui#7147's fixture supplies a single measure. The fixture does not bind scatter, so scatter never had a chance to draw.
What a correct measurement needs
- A two-measure fixture for the scatter arm, so its all-positive control actually draws marks. ⛔ Until that control returns non-zero, no scatter reading means anything.
- Then the same nine datasets, with the degenerate value applied to each measure independently and to both — a scatter can plausibly degenerate on x, on y, or on both, and those may not behave alike.
- Per-tile screenshot hashing against per-family all-positive and one-row controls, the instrument that produced verdicts for the other seven families. A hash collision between a degenerate tile and a legitimately-sparse one is the finding; that is how pie's full-circle case and treemap's four-datasets-to-one-image case were caught.
Blocked, and on what
pm:blocked on PR #7169 landing — it is live in packages/plugin-charts/src/AdvancedChartImpl.tsx, which is where any scatter arm work would sit. Unblocks automatically.
Why this is worth tracking rather than dropping
⚠️This is the shape that produces false confidence. After PR objectui#7169 lands, the honest statement is "seven of eight families measured; scatter unknown." Without this card, the natural summary becomes "the degenerate-magnitude class is handled," which is not what was measured — and the next person to look would have to re-derive the whole sweep to discover the hole.
⚠️ And note the pattern this card family keeps producing: objectui#7140 (early return), objectui#7147 (degenerate geometry), objectui#7148 (silent row drop) are three distinct mechanisms behind one reader-facing symptom. Scatter may be a fourth. ⛔ Do not assume PR objectui#7169's predicate transfers to it — measure first.
Related
objectui#7147 / PR objectui#7169 (the sweep and the fix) · objectui#7148 (silent row drop) · objectui#7140 (the empty-frame early return) · objectui#7146.
Filed by the
domain:uiPM seat from a measurement in objectui#7147 (PR #7169). The implementer reported it rather than filing, per the report-don't-duplicate fence on that surface — but unlike objectui#7148's finding, this one has no existing card to attach to, so it gets its own.What is NOT known
objectui#7147 swept 8 chart families × 9 datasets = 74 tiles in real Chromium, MD5'd and pixel-diffed against a literally empty div, to find where a degenerate magnitude (zero, negative,
null, unparseable) produces a chart that misrepresents its data.It reached verdicts for seven families:
Scatter is not clean. It is unmeasured, and the distinction is the whole point of this card.
Why the sweep could not read it
Every scatter tile drew zero marks — including the all-positive CONTROL (
markN 0).A control that returns zero is no control. With the control dead, scatter's zeros on the degenerate datasets carry no information: they are indistinguishable from "the fixture never rendered a scatter at all." Reporting scatter as clean on that evidence would have been a false green across nine datasets.
The cause is identified: scatter takes two measures (x and y), and objectui#7147's fixture supplies a single measure. The fixture does not bind scatter, so scatter never had a chance to draw.
What a correct measurement needs
Blocked, and on what
pm:blockedon PR #7169 landing — it is live inpackages/plugin-charts/src/AdvancedChartImpl.tsx, which is where any scatter arm work would sit. Unblocks automatically.Why this is worth tracking rather than dropping
Related
objectui#7147 / PR objectui#7169 (the sweep and the fix) · objectui#7148 (silent row drop) · objectui#7140 (the empty-frame early return) · objectui#7146.