Repository navigation
fix(showcase): the Status × Priority matrix subtitle names the estimated hours its cells hold - #24084
Merged
objectstack-fleet[bot] merged 2 commits intoOct 17, 2026
Conversation
…ted hours its cells hold The matrix report binds `values: ['est_hours']` (a sum of `estimate_hours`) but its description said "Task counts". The measure is the intended one -- it has aggregated summed hours since the report was first authored, and the Chart Gallery's `pivot_tasks` widget already pivots task counts over the same two dimensions -- so the description moves to match it. A showcase test now grades every measure-bound report's description against its bound dataset measures: it must name one by its declared label, and it may speak of counts only when a bound measure is a count. Claude-Session: https://claude.ai/code/session_018VqJPGA1NDNSCZsnecsChP Co-authored-by: Claude <noreply@anthropic.com>
…owcase-matrix-description
Contributor
Author
席位核对 · ACCEPT ·
|
objectstack-fleet
Bot
deleted the
claude/issue-23931-showcase-matrix-description
branch
October 17, 2026 00:30
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #23931
Clause-②: no. The text of an example app's report changes. No export, type or accept set moves.
What
The showcase report
showcase_status_priority_matrix("Status × Priority (Matrix)") showed the subtitle "Task counts cross-tabulated by status and priority." Its cells arevalues: ['est_hours'], which is asumofestimate_hours. The subtitle now reads "Estimated hours cross-tabulated by status and priority." The measure, the dataset and the renderer are unchanged.Why hours and not counts
The subtitle was wrong. The measure was not.
est_hoursis declared inexamples/app-showcase/src/ui/datasets/chart-gallery.dataset.tsas{ name: 'est_hours', label: 'Estimated Hours', aggregate: 'sum', field: 'estimate_hours' }.e136adaaeb, the commit that added the showcase, it hadcolumns: [{ field: 'estimate_hours', label: 'Hours', aggregate: 'sum' }]next to the same "Task counts" text. The ADR-0021 dataset migration (7f2510ca30, "cell values identical") and the D2 true pivot (b9062c990e) both keptest_hours. So the description was wrong from the first commit, and the cells were never counts.pivot_taskswidget (src/ui/dashboards/chart-gallery.dashboard.ts:93) hasdimensions: ['status', 'priority'], values: ['task_count']. Rebinding this report totask_countwould duplicate that widget and remove the showcase's only hours cross-tab.Translation bundle
There is nothing to update. Reports have no translation group:
packages/spec/src/system/translation.zod.tsmaps the retiredreportskey to "reports have no translation group, omit them". The showcase bundlesrc/system/translations/index.tshas no report entry. A repo-wide grep finds the old string only atsrc/ui/reports/index.ts:29.Pin
examples/app-showcase/test/report-description-measure.test.tschecks every showcase report that has a top-leveldescriptionandvalues. It reads the bound dataset's own declarations. It does not compare the subtitle against a copy of the expected text.label, which is the name the cell header shows. For acountmeasure, count words are also accepted.count.Joined reports bind measures per block and have no top-level
values, so the filter leaves them out. No test is skipped. The test reads its subject from source (../src/ui/reports/index.js), so no build sits between a mutation and the run.Ablation (one-off; no permanent file). On the committed fix at
93d1e79c8d,scripts/ablation-replace.mjsput today's text back and ran the file:28b7ce4486ccto1054fbd9a08b.× showcase_status_priority_matrix: the description names a bound measureand× showcase_status_priority_matrix: the description claims no count its cells do not hold, givingTests 2 failed | 5 passed (7).28b7ce4486cc) andgit diff HEADis empty.Verification at
103c1b6e7d(after mergingorigin/main8133cc7805)pnpm --filter @objectstack/example-showcase typecheckexits 0.tsc --listFilesincludes the new test file (1 hit).pnpm --filter @objectstack/example-showcase exec vitest run --maxWorkers=2exits 0:Test Files 34 passed (34),Tests 422 passed (422).node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderives 42 commands. All 42 exited 0 on this head. The--ranreconciliation reports42 derived, 42 run, 0 NOT-MEASURED, 0 UNRUN, a derived zero with every exit code recorded. On the pre-merge head93d1e79c8d,check:dual-build-cjs-loadsfirst answered PREREQUISITE NOT MET (exit 3), because eight packages outside this diff had nodist/. After building them it exited 0, and that first run is not counted as a measurement.test:repowas not run locally. It belongs to CI, which runs it underTest Core, and this diff touches no file of that project.Scope and exclusions
chart-gallery.dataset.ts) and the renderer are not touched. Both are correct.@objectstack/example-showcaseis"private": trueand publishes nothing, so this PR carriesskip-changeset.Acceptance notes
Open Tasksbindsest_hours,Completed Tasksbindstask_count) name a population, not a quantity, so the pin does not grade them. This is a boundary note, not a defect claim.Generated by Claude Code