Sub-issue of objectstack-ai/objectstack#20282. Its lane reads "domain:spec parent + domain:services (service-analytics) sub-issue + objectui sub-issue (pickers)". Filed by the objectstack domain:spec execution seat 5 (session_01Sfe5YjBLwB9J3y8fvm2xq1, seat post objectstack-ai/objectstack#19357) now that the parent's served shape has landed. ⛔ Filed bare: routing and grading belong to triage.
What the parent asks of objectui. Its "reader that must exist" line reads: "objectui: the dataset / dashboard pickers show descriptions." The mainstream evidence it cites is Looker LookML's description (a field-picker tooltip) and Power BI's descriptions in the Fields pane.
What the server serves now (objectstack main 03cdb9a5c9, PR objectstack-ai/objectstack#20736, stage 3 of the parent):
GET /analytics/meta returns CubeMeta (packages/spec/src/contracts/analytics-service.ts:224). It now carries the cube's description, each measure's description and format, and each dimension's description. service-analytics/src/analytics-service.ts#getMeta copies them from the cube definition when they are declared.
- A cube compiled from a DATASET carries no
description on /meta. service-analytics/src/dataset-compiler.ts#compileDataset copies each member's label (as the cube title) and the measure format, and no description.
- The dataset document (
packages/spec/src/ui/dataset.zod.ts):
- A member has a
label (I18nLabel, :118 and :184) and no description. The schema's guidance says "its author-facing text is label. description is declared on the DATASET itself" (:112, :179).
- A measure has a
format (:261).
- The dataset has a
label and a description, both I18nLabel (:336, :337).
What the pickers show today (objectui main 9a45088c4b):
- Two inspectors bind a DATASET: the report inspector (
ReportDefaultInspector.tsx:284–:320) and the dashboard-widget inspector (DashboardWidgetInspector.tsx:130–:158).
useDatasetCatalog lists client.list('dataset') (useDatasetCatalog.ts:106).
useDatasetSemantics hydrates client.get('dataset', name) (:166).
toCatalogEntry (useDatasetCatalog.ts:62) keeps each measure's name and aggregate, and each dimension's name and type. It drops the member label, the measure format and the dataset description. So:
- measure options read
name · aggregate, and dimension options read the bare name (ReportDefaultInspector.tsx:303, :313; DashboardWidgetInspector.tsx:143, :147);
- the dataset picker shows the label and the name only.
- Nothing in objectui reads
GET /analytics/meta: git grep for analytics/meta, analytics.meta and CubeMeta over packages/** and apps/** finds nothing. Neither inspector offers an authored cube (analytics_cube).
Ask. The two inspectors show the author's text beside the machine name:
- the member
label on the measure and dimension options;
- the dataset
description on the dataset picker.
Whether a picker should also offer authored cubes, and so read /analytics/meta's descriptions, is for this card's triage.
Carried from the parent's stage-3 review. A dataset-bound picker that reads /analytics/meta will not find the dataset's description there: compileDataset copies none, the dataset's value is an I18nLabel, and CubeMeta.description is a string. That server half is not filed. If the design needs it, file it on objectstack and cite objectstack-ai/objectstack#20282.
Acceptance:
- Each inspector's measure, dimension and dataset options show the text above when the dataset declares it.
- They fall back to the name when it does not.
- A test pins each case.
Dedupe: this repo's open issues, searched for picker description dataset, useDatasetCatalog, analytics/meta and dataset catalog measure label dropped widget inspector, hold no card on these pickers. The nearest, #11095, is the KPI tile's invalidation subscription.
Generated by Claude Code
Sub-issue of objectstack-ai/objectstack#20282. Its lane reads "domain:spec parent + domain:services (service-analytics) sub-issue + objectui sub-issue (pickers)". Filed by the objectstack
domain:specexecution seat 5 (session_01Sfe5YjBLwB9J3y8fvm2xq1, seat post objectstack-ai/objectstack#19357) now that the parent's served shape has landed. ⛔ Filed bare: routing and grading belong to triage.What the parent asks of objectui. Its "reader that must exist" line reads: "objectui: the dataset / dashboard pickers show descriptions." The mainstream evidence it cites is Looker LookML's
description(a field-picker tooltip) and Power BI's descriptions in the Fields pane.What the server serves now (objectstack
main03cdb9a5c9, PR objectstack-ai/objectstack#20736, stage 3 of the parent):GET /analytics/metareturnsCubeMeta(packages/spec/src/contracts/analytics-service.ts:224). It now carries the cube'sdescription, each measure'sdescriptionandformat, and each dimension'sdescription.service-analytics/src/analytics-service.ts#getMetacopies them from the cube definition when they are declared.descriptionon/meta.service-analytics/src/dataset-compiler.ts#compileDatasetcopies each member'slabel(as the cubetitle) and the measureformat, and no description.packages/spec/src/ui/dataset.zod.ts):label(I18nLabel,:118and:184) and nodescription. The schema's guidance says "its author-facing text islabel.descriptionis declared on the DATASET itself" (:112,:179).format(:261).labeland adescription, bothI18nLabel(:336,:337).What the pickers show today (objectui
main9a45088c4b):ReportDefaultInspector.tsx:284–:320) and the dashboard-widget inspector (DashboardWidgetInspector.tsx:130–:158).useDatasetCataloglistsclient.list('dataset')(useDatasetCatalog.ts:106).useDatasetSemanticshydratesclient.get('dataset', name)(:166).toCatalogEntry(useDatasetCatalog.ts:62) keeps each measure'snameandaggregate, and each dimension'snameandtype. It drops the memberlabel, the measureformatand the datasetdescription. So:name · aggregate, and dimension options read the barename(ReportDefaultInspector.tsx:303,:313;DashboardWidgetInspector.tsx:143,:147);GET /analytics/meta:git grepforanalytics/meta,analytics.metaandCubeMetaoverpackages/**andapps/**finds nothing. Neither inspector offers an authored cube (analytics_cube).Ask. The two inspectors show the author's text beside the machine name:
labelon the measure and dimension options;descriptionon the dataset picker.Whether a picker should also offer authored cubes, and so read
/analytics/meta's descriptions, is for this card's triage.Carried from the parent's stage-3 review. A dataset-bound picker that reads
/analytics/metawill not find the dataset'sdescriptionthere:compileDatasetcopies none, the dataset's value is anI18nLabel, andCubeMeta.descriptionis a string. That server half is not filed. If the design needs it, file it on objectstack and cite objectstack-ai/objectstack#20282.Acceptance:
Dedupe: this repo's open issues, searched for
picker description dataset,useDatasetCatalog,analytics/metaanddataset catalog measure label dropped widget inspector, hold no card on these pickers. The nearest, #11095, is the KPI tile's invalidation subscription.Generated by Claude Code