Filed by the objectui domain:ui seat #1 (session_01DuWo5bdP9SdVebamn99GGk) at the ACCEPT of PR objectui#11093 (Fixes #11062), from the dev's out-of-scope findings. ⛔ Not graded or routed here; that is triage's.
Measured in a running console (class a, public door)
The dev ran objectstack showcase with this PR's console, on showcase_ops_dashboard with refreshIntervalSeconds 10:
- The 5 widgets with dimensions re-read every period. The 4 dataset-bound KPI tiles (no dimensions) never re-read.
- After an out-of-band REST create of a red project, 'Projects by Health' showed Red=2 on its next timed read. The 'At-Risk (Red)' KPI still read 1 after 12 s.
- A direct
POST /api/v1/analytics/dataset/query with dimensions: [] answered fields, rows and sql, and no object. With dimensions: ['health'] it answered object: showcase_project.
The seam (read at objectui origin/main 873284657)
packages/plugin-dashboard's DatasetWidget keys useDataInvalidation on datasetObject, which it sets only from the answer's object (objectui#10815, PR objectui#10837).
- objectstack
service-analytics attaches object only inside its drill-through block: the selection has a drillable dimension and the answer has rows. By source read, an empty first answer never subscribes either.
- So a KPI tile ignores every bus event: the timer PR objectui#11093 arms, the Refresh All button, and declared writes with no timer involved.
Seam: spec:dataset query answer object → renderer:DatasetWidget (the useDataInvalidation subscription).
Direction (for triage, not a ruling)
Contract-first. Either the analytics service names the dataset's base object on every answer, or DatasetWidget takes the base object from the dataset's metadata. ⛔ Not a consumer-side '*' fallback. Pins: a KPI tile with no dimensions re-reads on a matching bus event.
Dedupe: the 1100 most recently updated objectui issues and PRs, open and closed (down to #2231), were listed via REST and grepped locally. datasetObject has 2 hits, PR objectui#10809 and PR objectui#10837; both are closed, and neither covers an answer that names no object. KPI tile has 2 hits: PR objectui#11093, and objectui#8894, which is about a metric tile dropping measures after the first, a different defect. drill-through has 3 hits, none of them this gap.
Dedupe words: DatasetWidget KPI invalidation datasetObject, queryDataset answer object drill-through, dashboard KPI tile never refreshes, useDataInvalidation undefined objectName.
Generated by Claude Code
Filed by the objectui
domain:uiseat #1 (session_01DuWo5bdP9SdVebamn99GGk) at the ACCEPT of PR objectui#11093 (Fixes #11062), from the dev's out-of-scope findings. ⛔ Not graded or routed here; that is triage's.Measured in a running console (class a, public door)
The dev ran objectstack showcase with this PR's console, on
showcase_ops_dashboardwithrefreshIntervalSeconds10:POST /api/v1/analytics/dataset/querywithdimensions: []answeredfields,rowsandsql, and noobject. Withdimensions: ['health']it answeredobject: showcase_project.The seam (read at objectui
origin/main873284657)packages/plugin-dashboard'sDatasetWidgetkeysuseDataInvalidationondatasetObject, which it sets only from the answer'sobject(objectui#10815, PR objectui#10837).service-analyticsattachesobjectonly inside its drill-through block: the selection has a drillable dimension and the answer has rows. By source read, an empty first answer never subscribes either.Seam:
spec:dataset query answer object→renderer:DatasetWidget(theuseDataInvalidationsubscription).Direction (for triage, not a ruling)
Contract-first. Either the analytics service names the dataset's base object on every answer, or
DatasetWidgettakes the base object from the dataset's metadata. ⛔ Not a consumer-side'*'fallback. Pins: a KPI tile with no dimensions re-reads on a matching bus event.Dedupe: the 1100 most recently updated objectui issues and PRs, open and closed (down to #2231), were listed via REST and grepped locally.
datasetObjecthas 2 hits, PR objectui#10809 and PR objectui#10837; both are closed, and neither covers an answer that names no object.KPI tilehas 2 hits: PR objectui#11093, and objectui#8894, which is about a metric tile dropping measures after the first, a different defect.drill-throughhas 3 hits, none of them this gap.Dedupe words: DatasetWidget KPI invalidation datasetObject, queryDataset answer object drill-through, dashboard KPI tile never refreshes, useDataInvalidation undefined objectName.
Generated by Claude Code