Found while fixing #4335 (the same retired advice in packages/plugin-list/README.md). Recorded, not claimed — #4335's surface is the README only, so this is filed rather than swept in.
The line
packages/plugin-list/README.md's stale sentence has a twin in the renderer's own source comment. packages/plugin-list/src/ListView.tsx, in the block above the sortFields memo (currently ~:2152-2155, anchor by the sortHasRelationalField memo rather than by line):
... so the honest move is to stop offering the illusion: relational fields leave the picker, and the hint below points at the supported alternative (a formula field that denormalizes the name onto this object, which sorts like any text column).
"The hint below" is list.sortRelationalHint, and since #4294 it says the opposite, in the same file at 'list.sortRelationalHint' (the provider-less fallback table, byte-identical to the en pack):
... To sort by that name, denormalize it onto this object as a stored field, written when the source changes, and sort by that. Not a formula field: it is virtual, so no column is stored for it and the server refuses to sort by one.
The comment also contradicts the code it introduces seventeen lines further down: the very next paragraph of the same comment block explains UNSORTABLE_FIELD_TYPES — formula — withholding formula fields from this picker (#4243). So the block prescribes as "the supported alternative" a field type the memo underneath it filters out, and the string underneath it explicitly refuses.
Why it is observation-class
Nothing renders a comment. No user, and no product surface, is misled — the hint string, the sort picker and (with #4335's PR) the README are all consistent with the server's refusal. The cost is to the next reader of ListView.tsx, who meets a rationale that recommends what the code three paragraphs later rejects, and to whoever greps the repo for the retired advice: this is the last copy of it.
Verified at source (objectui origin/main @ a90888230, objectstack origin/main @ 5d24f4b94)
packages/plugin-list/src/ListView.tsx — UNSORTABLE_FIELD_TYPES = new Set(['formula']), consumed by the sortFields memo, which pushes a field only when it is neither relational nor in that set.
packages/metadata-protocol/src/protocol.ts (objectstack, read-only) — UNMATERIALIZED_SORT_TYPES = new Set(['formula']), and the refusal it feeds throws through invalidSortError, which sets status = 400 and code = 'INVALID_SORT' (objectstack#6994).
Suggested fix
One comment edit: replace the parenthetical with the remedy the hint, the refusal door and the README now share — a stored field, written when the source changes — and drop "which sorts like any text column". No code, no strings, no tests.
Generated by Claude Code
Found while fixing #4335 (the same retired advice in
packages/plugin-list/README.md). Recorded, not claimed — #4335's surface is the README only, so this is filed rather than swept in.The line
packages/plugin-list/README.md's stale sentence has a twin in the renderer's own source comment.packages/plugin-list/src/ListView.tsx, in the block above thesortFieldsmemo (currently ~:2152-2155, anchor by thesortHasRelationalFieldmemo rather than by line):"The hint below" is
list.sortRelationalHint, and since #4294 it says the opposite, in the same file at'list.sortRelationalHint'(the provider-less fallback table, byte-identical to theenpack):The comment also contradicts the code it introduces seventeen lines further down: the very next paragraph of the same comment block explains
UNSORTABLE_FIELD_TYPES—formula— withholding formula fields from this picker (#4243). So the block prescribes as "the supported alternative" a field type the memo underneath it filters out, and the string underneath it explicitly refuses.Why it is observation-class
Nothing renders a comment. No user, and no product surface, is misled — the hint string, the sort picker and (with #4335's PR) the README are all consistent with the server's refusal. The cost is to the next reader of
ListView.tsx, who meets a rationale that recommends what the code three paragraphs later rejects, and to whoever greps the repo for the retired advice: this is the last copy of it.Verified at source (objectui
origin/main@a90888230, objectstackorigin/main@5d24f4b94)packages/plugin-list/src/ListView.tsx—UNSORTABLE_FIELD_TYPES = new Set(['formula']), consumed by thesortFieldsmemo, which pushes a field only when it is neither relational nor in that set.packages/metadata-protocol/src/protocol.ts(objectstack, read-only) —UNMATERIALIZED_SORT_TYPES = new Set(['formula']), and the refusal it feeds throws throughinvalidSortError, which setsstatus = 400andcode = 'INVALID_SORT'(objectstack#6994).Suggested fix
One comment edit: replace the parenthetical with the remedy the hint, the refusal door and the README now share — a stored field, written when the source changes — and drop "which sorts like any text column". No code, no strings, no tests.
Generated by Claude Code