You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
finding(plugin-grid): the server-side export path sends sort: [] when every entry was filtered out, instead of omitting the key — the "question with no content" shape toFilterNode already corrected for $filter #9607
Filed unassigned by the domain:spec @ objectui execution seat, session session_01VCpmqvacV4BypY48QdoxcE, R1, 2026-09-16T10:3xZ, from the ## Acceptance notes of PR #9604 (card objectui#8961). ⛔ Not claiming; grading and domain:* are the triage seat's.
Filed rather than left in the PR body because it is the one residual there with no successor. The seat's rule is that an acceptance note is only a valid resting place when a specific PR or person will touch that code — 「说得出具体 PR 或人 ⇒ 写进去」. The reporting dev recorded 「Successor: none queued」 in as many words for this item, so the note would have had no reader. Its sibling note (a stale verbatim quotation in packages/plugin-view/src/ObjectView.tsx) does name a successor and is correctly staying in the PR body — ⛔ not filed.
The observation
ObjectGrid's server-side export path filters an array of retired string sort entries down to an empty array and still sends sort: [] to exportDownload, rather than omitting the key.
⇒ the request carries an ordering instruction that names no ordering — a question with no content.
Why it is worth a card rather than a shrug
⭐ The same shape has already been ruled on and corrected one key over.toFilterNode corrects exactly this for $filter: a predicate that reduces to nothing is omitted, not sent as an empty container. So this is not a new judgement call about what is tidy — it is one consumer of a settled local convention that did not get the treatment.
⚠️ It is also the residue of the defect objectui#8961 just fixed, one layer down. #8961 narrowed the header-arrow reader so a retired string spelling lights no arrow, matching a fetch path that already refused it. The export path filters the same retired entries out — and then still transmits the empty result. The two readers of sort now agree about the arrow; the third consumer still emits a degenerate value.
⛔ What is NOT claimed
⛔ Not claimed that the server mishandles sort: []. That was not measured, and it is the reading that sets the priority: if an empty array and an absent key are treated identically end to end, this is a p3 tidiness item; if they diverge (a default ordering applied in one case and not the other), it is a user-visible defect. Whoever grades this should take that reading first — it is in objectstack, not here.
Filed unassigned by the
domain:spec@ objectui execution seat, sessionsession_01VCpmqvacV4BypY48QdoxcE, R1, 2026-09-16T10:3xZ, from the## Acceptance notesof PR #9604 (card objectui#8961). ⛔ Not claiming; grading anddomain:*are the triage seat's.Filed rather than left in the PR body because it is the one residual there with no successor. The seat's rule is that an acceptance note is only a valid resting place when a specific PR or person will touch that code — 「说得出具体 PR 或人 ⇒ 写进去」. The reporting dev recorded 「Successor: none queued」 in as many words for this item, so the note would have had no reader. Its sibling note (a stale verbatim quotation in
packages/plugin-view/src/ObjectView.tsx) does name a successor and is correctly staying in the PR body — ⛔ not filed.The observation
ObjectGrid's server-side export path filters an array of retired stringsortentries down to an empty array and still sendssort: []toexportDownload, rather than omitting the key.⇒ the request carries an ordering instruction that names no ordering — a question with no content.
Why it is worth a card rather than a shrug
⭐ The same shape has already been ruled on and corrected one key over.
toFilterNodecorrects exactly this for$filter: a predicate that reduces to nothing is omitted, not sent as an empty container. So this is not a new judgement call about what is tidy — it is one consumer of a settled local convention that did not get the treatment.sortnow agree about the arrow; the third consumer still emits a degenerate value.⛔ What is NOT claimed
sort: []. That was not measured, and it is the reading that sets the priority: if an empty array and an absent key are treated identically end to end, this is a p3 tidiness item; if they diverge (a default ordering applied in one case and not the other), it is a user-visible defect. Whoever grades this should take that reading first — it is in objectstack, not here.sortspelling (objectui#8961) #9604. It is pre-existing and unrelated to the arrow; PR fix(plugin-grid): header arrows read the ONE declaredsortspelling (objectui#8961) #9604 neither created nor touched it. Measured and reported by that PR's dev while in the file, ⛔ not fixed there, correctly — it is outside that card's declared surface.[{ field, order }]array is unaffected.Dedup words
export path sort empty array·exportDownload degenerate sort·question with no content toFilterNode·retired string sort filtered to empty·omit key rather than empty containerGenerated by Claude Code