|
54 | 54 | "note": "objectui: DatasetReportChart plots `chart.xAxis` (dataset dimension) × `chart.yAxis` (measure) via useDatasetRows, honoring `type`/`title` (framework#1890/#3441). Supersedes the 2026-06 audit's DEAD finding. Sub-key `groupBy` stays experimental (its own describe marker) — the dataset renderer plots a single series and never reads it. Live on NON-joined reports only (#20161, re-read at the `.objectui-sha` pin f8a9d0fb): the one `report.chart` read (DatasetReportRenderer.tsx:1557) sits after the joined branch's return (:1462-1524), so on a `type: 'joined'` report the schema's refinement REFUSES `chart` rather than accepting a key nothing reads. A `joined` report draws no chart (packages/spec/src/ui/report.zod.ts, the joined-chart prescription, #20161; read point moved out of spec source, #23434): at objectui @f8a9d0fb0596 packages/plugin-report/src/DatasetReportRenderer.tsx#DatasetReportRenderer the joined branch draws each block as a `DatasetMatrixTable` / `DatasetReportTable` and returns before the one `report.chart` read, and no renderer reads a block's `chart`." |
55 | 55 | }, |
56 | 56 | "dateRange": { |
57 | | - "status": "planned", |
58 | | - "verifiedAt": "2026-10-27", |
59 | | - "authorWarn": true, |
60 | | - "authorHint": "Keep it, but nothing reads it yet: the Console report page draws no date-range chip, so the report still shows every period until the report renderer reads this key.", |
61 | | - "note": "PLANNED RECORD (#26548, the spec half of ruling 6408567749 on #25873, letter B). The report period `{ dimension?, defaultRange, allowCustomRange }`: `defaultRange` / `allowCustomRange` are the dashboard declaration verbatim (DATE_RANGE_DEFAULT_RANGES, defaults this_month / true, held equal by report-date-range-export.test.ts); `dimension` names a dataset dimension that declares `type: date` (omitted = the dataset declares exactly one). The four dataset-aware cases are judged by the `@objectstack/lint` rule validate-report-date-range.ts at os validate / os build and at the report publish door. Refused on a `joined` container. PLANNED, not live: no renderer reads it. The report page posts its selection through `useDatasetRows` in ui/packages/plugin-report/src/DatasetReportRenderer.tsx#DatasetReportRenderer with no `timeDimensions` entry, and no source under ui/packages/plugin-report/src/ names `dateRange` (0 hits outside tests). The renderer contract is the TSDoc on `ReportSchema.dateRange`: the active window rides `selection.timeDimensions: [{ dimension, dateRange }]` with no `granularity` (a filter window ANDed with `runtimeFilter`), which the analytics service already accepts. Carrier: #25873, the ui renderer card, Blocked-by this one. Flip to `live` on the commit that cites the renderer read point, and drop `authorWarn` / `authorHint` in that same edit.", |
| 57 | + "status": "live", |
| 58 | + "verifiedAt": "2026-10-28", |
| 59 | + "evidence": "ui/packages/plugin-report/src/DatasetReportRenderer.tsx#useDatasetRows, ui/packages/plugin-report/src/ReportDateRange.tsx#reportTimeWindow", |
| 60 | + "note": "#25873 (ruling 6408567749, letter B; spec half #26548). The report period `{ dimension?, defaultRange, allowCustomRange }`: `defaultRange` / `allowCustomRange` are the dashboard declaration verbatim (DATE_RANGE_DEFAULT_RANGES, defaults this_month / true, held equal by report-date-range-export.test.ts); `dimension` names a dataset dimension that declares `type: date` (omitted = the dataset declares exactly one). The four dataset-aware cases are judged by the `@objectstack/lint` rule validate-report-date-range.ts at os validate / os build and at the report publish door. Refused on a `joined` container, and not read there. LIVE: a non-joined report that declares it draws a date-range chip (ReportDateRange.tsx#ReportDateRangeControl: All time, the dashboard's DATE_RANGE_PRESETS under the `dashboard.filters.range.*` labels, Custom… when allowed), and the active window rides every dataset query the report makes (grouped table, matrix cross-tab, embedded chart) through the single fetch choke point DatasetReportRenderer.tsx#useDatasetRows as ONE `selection.timeDimensions` entry `{ dimension, dateRange }` with no `granularity`: a preset by name, a custom pick as `[start, end]`, All time as no entry. The window is part of the refetch signature, so a new pick re-queries. A report without `dateRange` posts the selection it always did (no `timeDimensions` key, no chip, no dataset-definition read). Pinned by ui/packages/plugin-report/src/__tests__/DatasetReportRenderer.dateRange-25873.test.tsx.", |
62 | 61 | "children": { |
63 | 62 | "dimension": { |
64 | | - "status": "planned", |
65 | | - "verifiedAt": "2026-10-27", |
66 | | - "evidence": "packages/spec/src/ui/report.zod.ts#ReportSchema (declares `dimension` on the closed `dateRange` block)", |
67 | | - "note": "The dataset dimension the window applies to. Planned with its container: no renderer reads it. Its dataset-aware checks are live in lint (validate-report-date-range.ts: unknown, not a date, omitted with several date dimensions, omitted with none)." |
| 63 | + "status": "live", |
| 64 | + "verifiedAt": "2026-10-28", |
| 65 | + "evidence": "ui/packages/plugin-report/src/ReportDateRange.tsx#useReportDateDimension", |
| 66 | + "note": "The dataset dimension the window applies to. Declared, it is the `timeDimensions[].dimension` verbatim; omitted, the renderer reads the dataset definition (`/api/v1/meta/dataset/NAME` through the host's `apiFetch`, the ObjectChart dataset read) BEFORE any query and uses its one `type: date` dimension. Zero or several draws the authoring error in place of the report and queries nothing, so no unwindowed table renders under a period chip. Its dataset-aware checks are also live in lint (validate-report-date-range.ts)." |
68 | 67 | }, |
69 | 68 | "defaultRange": { |
70 | | - "status": "planned", |
71 | | - "verifiedAt": "2026-10-27", |
72 | | - "evidence": "packages/spec/src/ui/report.zod.ts#ReportSchema (declares `defaultRange` over DATE_RANGE_DEFAULT_RANGES, default this_month)", |
73 | | - "note": "The preset the report opens on, the dashboard declaration verbatim. Planned with its container: no renderer reads it." |
| 69 | + "status": "live", |
| 70 | + "verifiedAt": "2026-10-28", |
| 71 | + "evidence": "ui/packages/plugin-report/src/ReportDateRange.tsx#initialReportPeriod", |
| 72 | + "note": "The preset the report opens on, the dashboard declaration verbatim; absent opens on the spec default this_month. `custom` opens the custom pick with no window (the spec's sentinel) until both ends are named." |
74 | 73 | }, |
75 | 74 | "allowCustomRange": { |
76 | | - "status": "planned", |
77 | | - "verifiedAt": "2026-10-27", |
78 | | - "evidence": "packages/spec/src/ui/report.zod.ts#ReportSchema (declares `allowCustomRange`, default true)", |
79 | | - "note": "Whether the viewer may pick a custom range, the dashboard declaration verbatim. Planned with its container: no renderer reads it." |
| 75 | + "status": "live", |
| 76 | + "verifiedAt": "2026-10-28", |
| 77 | + "evidence": "ui/packages/plugin-report/src/ReportDateRange.tsx#ReportDateRangeControl", |
| 78 | + "note": "Whether the chip offers Custom… (two date inputs whose `[start, end]` goes on the wire). `false` removes the item; absent = true." |
80 | 79 | } |
81 | 80 | } |
82 | 81 | }, |
|
0 commit comments