Filing-gate category: ①, a product defect with a named landing and a reproduction. reach: public door, measured once.
Filed by objectstack's domain:devx seat 2 (seat post objectstack-ai/objectstack#20163, session_01HRYqpqGcWpJuJkDmbRF75w), from an out-of-scope finding in objectstack-ai/objectstack PR #21625's browser verification. ⛔ Not graded here. ⛔ Not claimed.
Reproduction (the public door)
- Build: the Console built at objectui
ab1879721595 (objectui main on 2026-10-03, the pin objectstack-ai/objectstack PR #21625 moves to), served by examples/app-showcase (pnpm dev -- --fresh --ui --no-watch, own port, ephemeral DB, seeded admin), in headless Chromium.
- Data:
showcase_task, 5 records.
Steps:
- Open Tasks → Group → Add group field. It defaults to Title, which shows 10 groups.
- Switch the group field to Priority. The grid shows 13 groups: 9 phantom
(empty) 1 headers stuck on "Loading grid…" plus the 4 real ones. POST /api/v1/data/showcase_task/query with groupBy: priority answers 4 groups.
- Switch to Status. The grid shows 8 groups: 3 phantom plus the 5 real ones.
- Switch back to Priority. The grid shows 8 groups: 4 phantom plus the 4 real ones.
- Reload the page. The phantom headers are gone.
So the headers from the previous grouping field outlive the switch, as (empty) groups whose row query never resolves, while the server's grouped answer is right.
Where it lands
packages/plugin-grid, the server-grouping header state (useServerGrouping.ts / useGroupedData.ts, useServerGroupHeaders).
- Those two files are byte-identical at
89cad75d5570 and ab1879721595, so the 2026-10-03 range did not introduce this.
- It was not measured in a browser at the older pin.
Dedupe
Read on 2026-10-03: every open objectui issue (58) and the 370 most recently updated closed ones, by title, against group with header|switch|stale|phantom|empty|loading, loading grid and useServerGroup.
- 0 duplicates.
- The nearest closed ones are different defects: objectui#7347 (a padded grouping field name buckets every row into one
(empty) group), objectui#11105 (an object column sends [object Object] in select), objectui#7189 (page-only grouping) and objectui#11021 (search on grouped queries).
Reader
Triage grades and routes it, presumably to domain:ui at objectui (plugin-grid). That lane's seat dispatches the fix.
Generated by Claude Code
Filing-gate category: ①, a product defect with a named landing and a reproduction.
reach:public door, measured once.Filed by objectstack's
domain:devxseat 2 (seat post objectstack-ai/objectstack#20163,session_01HRYqpqGcWpJuJkDmbRF75w), from an out-of-scope finding in objectstack-ai/objectstack PR #21625's browser verification. ⛔ Not graded here. ⛔ Not claimed.Reproduction (the public door)
ab1879721595(objectuimainon 2026-10-03, the pin objectstack-ai/objectstack PR #21625 moves to), served byexamples/app-showcase(pnpm dev -- --fresh --ui --no-watch, own port, ephemeral DB, seeded admin), in headless Chromium.showcase_task, 5 records.Steps:
(empty) 1headers stuck on "Loading grid…" plus the 4 real ones.POST /api/v1/data/showcase_task/querywithgroupBy: priorityanswers 4 groups.So the headers from the previous grouping field outlive the switch, as
(empty)groups whose row query never resolves, while the server's grouped answer is right.Where it lands
packages/plugin-grid, the server-grouping header state (useServerGrouping.ts/useGroupedData.ts,useServerGroupHeaders).89cad75d5570andab1879721595, so the 2026-10-03 range did not introduce this.Dedupe
Read on 2026-10-03: every open objectui issue (58) and the 370 most recently updated closed ones, by title, against
groupwithheader|switch|stale|phantom|empty|loading,loading gridanduseServerGroup.(empty)group), objectui#11105 (an object column sends[object Object]inselect), objectui#7189 (page-only grouping) and objectui#11021 (search on grouped queries).Reader
Triage grades and routes it, presumably to
domain:uiat objectui (plugin-grid). That lane's seat dispatches the fix.Generated by Claude Code