Symptom
The built-in System Overview board declares one dashboard-level global filter:
globalFilters: [{ field: 'created_at', type: 'date', label: 'Date Range', scope: 'dashboard', defaultValue: 'last_7_days' }]
A dashboard-level filter is broadcast into every widget's analytics query (#2501) unless the widget opts out with filterBindings: { <name>: false }. Row 1 of this board is inventory — four "how much of this exists right now" counts — and all four inherited that broadcast.
#7531 covered two of the four and is fixed. The other two are the identical defect on the identical row, and are still open:
| widget |
label / description |
what it actually counts |
widget_organizations |
"Organizations" / "Total organizations on the platform" |
organizations created in the last 7 days |
widget_packages_installed |
"Packages Installed" / "Active package installations across projects" |
installations created in the last 7 days with status: 'installed' |
Same trap as #7531's Total Users: on a fresh datastore every row is recent, so the windowed count and the true total coincide and the tiles read as correct in a demo. On any instance older than the window they under-report, under a label that says "Total".
Why this was not fixed in #7531
Scope. #7531 names two tiles, and the dispatch ruled on those two; widening a card to twice its stated surface is not the dev seat's call. Recording it here so the row is finished deliberately rather than by accident.
Fix
The same one-line opt-out already applied to the two sibling tiles in PR for #7531:
filterBindings: { created_at: false },
on widget_organizations and widget_packages_installed in packages/platform-objects/src/apps/dashboards/system_overview.dashboard.ts.
Note widget_packages_installed already carries a widget-level filter: { status: 'installed' }; the opt-out is orthogonal to it and both should stand.
Verification already in place
packages/platform-objects/src/apps/dashboards/system-overview-tile-semantics.test.ts (added by #7531) pins the label/query-agreement property for the two fixed tiles and already carries the fixture shape — rows straddling the 7-day window — that the two remaining tiles need. Extending it is two fixture sets and two blocks.
One thing to be careful of when extending it: that file's non-vacuity control is an audit widget, deliberately, because an audit widget is correctly windowed. Do not reach for widget_organizations as a "still bound" control — it is bound by the defect, not by intent, and pinning it that way would enshrine this bug.
Related
Source
Found while implementing #7531 (QA run #7515). Filed per AGENTS.md Prime Directive #10 rather than folded into that PR.
Generated by Claude Code
Symptom
The built-in System Overview board declares one dashboard-level global filter:
A dashboard-level filter is broadcast into every widget's analytics query (#2501) unless the widget opts out with
filterBindings: { <name>: false }. Row 1 of this board is inventory — four "how much of this exists right now" counts — and all four inherited that broadcast.#7531 covered two of the four and is fixed. The other two are the identical defect on the identical row, and are still open:
widget_organizationswidget_packages_installedstatus: 'installed'Same trap as #7531's Total Users: on a fresh datastore every row is recent, so the windowed count and the true total coincide and the tiles read as correct in a demo. On any instance older than the window they under-report, under a label that says "Total".
Why this was not fixed in #7531
Scope. #7531 names two tiles, and the dispatch ruled on those two; widening a card to twice its stated surface is not the dev seat's call. Recording it here so the row is finished deliberately rather than by accident.
Fix
The same one-line opt-out already applied to the two sibling tiles in PR for #7531:
on
widget_organizationsandwidget_packages_installedinpackages/platform-objects/src/apps/dashboards/system_overview.dashboard.ts.Note
widget_packages_installedalready carries a widget-levelfilter: { status: 'installed' }; the opt-out is orthogonal to it and both should stand.Verification already in place
packages/platform-objects/src/apps/dashboards/system-overview-tile-semantics.test.ts(added by #7531) pins the label/query-agreement property for the two fixed tiles and already carries the fixture shape — rows straddling the 7-day window — that the two remaining tiles need. Extending it is two fixture sets and two blocks.One thing to be careful of when extending it: that file's non-vacuity control is an audit widget, deliberately, because an audit widget is correctly windowed. Do not reach for
widget_organizationsas a "still bound" control — it is bound by the defect, not by intent, and pinning it that way would enshrine this bug.Related
field:'status'with *task* statuses, and the project widgets carry nofilterBindings— so it also lands onshowcase_project.statusand zeroes those tiles #7568 — the same class (global filter fanning out onto widgets that carry nofilterBindings) on the showcase ops dashboard. Different surface, different file, but if a structural remedy is ever considered — e.g. a lint rule that flags an inventory-shaped metric widget inheriting a date filter — these two are its evidence base.Source
Found while implementing #7531 (QA run #7515). Filed per AGENTS.md Prime Directive #10 rather than folded into that PR.
Generated by Claude Code