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
{{ message }}
Repository navigation
spec: the padded grouping-field refusal is trim-equivalence under UNICODE whitespace, but its .describe()/docs/ADR entry all say just "whitespace" #17962
PR #17498 narrowed GroupingFieldSchema.field to refuse leading/trailing whitespace. The prose that ships with it — the .describe(), the generated doc page, and the ADR-0087 semantic entry — all say "whitespace", but the pattern's accept set is JavaScript's \S, which refuses considerably more than the space and tab a reader will picture.
Filed by the domain:spec execution seat, session session_01MkQhmuuJAVDjmeWNixwDDH, 2026-09-13T08:24Z, out of the at-tier post-hoc review of PR #17498. ⛔ No domain:* or priority:* applied — routing and grading are triage's. ⛔ Not a defect: the code is right, the description of it is incomplete.
The measurement
The at-tier round proved trim-equivalence by exhaustion — 14,641 four-character strings over an 11-symbol alphabet including U+00A0 (NBSP), U+3000 (ideographic space) and U+FEFF (BOM): 0 divergences from s === s.trim(). Lit control on the same harness (/^\S*$/): 150 divergences, so the harness discriminates.
⇒ the accept set is exactly trim-equivalence, Unicode included. A name with a leading NBSP or a trailing ideographic space is refused, by a rule whose published description mentions neither.
Why this is the failure mode worth fixing
These are precisely the characters an author does not know are in their string. A name pasted from a spreadsheet, a CJK editor, or a BOM-prefixed CSV export carries them invisibly. The author reads a refusal that says "whitespace", looks at a name with no visible space in it, and has no way to reconcile the two. The diagnostic already names the offending spelling — but a spelling whose difference is invisible is not a name the author can act on.
What is owed
Name the class in the three prose sites (.describe() on GroupingFieldSchema.field, the regenerated content/docs/references/ui/view.mdx row, and the ADR-0087 entry 18.ui-list-view-grouping-field-padded-refused): the rule is trim-equivalence under Unicode whitespace, not ASCII space. Worth considering alongside it: rendering the offending characters in the diagnostic as escapes () rather than as themselves, so the message shows the author what they cannot see.
Previously raised as "Advisory 2" by an earlier review round on that PR and left unaddressed — filing it so it has a carrier this time rather than a mention.
Closed not_planned by the director seat (summon #28 续, session_01GLdRPcbaCBQCTvVmU6YEUY), 2026-09-24T03:36Z, on the maintainer's word — closure review batch 1 of the open domain:spec cards under the restructured triage standard, presented card by card from the business angle in this seat's chat; maintainer verbatim: 「16524 改文档,不需要按组织取;17493 回收;其他同意」.
Four cards close in this group, each with the reason the maintainer approved:
Object and field labels stay string-only by design; a localized object/field label is reachable today through the translation bundle (I18nLabelSchema form 1), so no capability is missing — only the inline-map shortcut, which no product row on NORTH-STAR asks for. The schema refusal is loud and correct (优先级 4 satisfied); the linter crash was fixed by PR #16280. Re-file only when a customer asks for inline locale maps on objects or fields.
A question, not one of the four 立卡门 classes. spec-changes.json and its five Zod schemas ship with the package; only the JSON-Schema face is absent, and the two gen:docs warnings are pinned by CATEGORIES_WITHOUT_SCHEMA_CLOSURE (triage: 「不会静默腐烂」). No external consumer of the file is named ⇒ 优先级 2 「不在清单上 ⇒ 不做」. Re-file when a consumer that needs the JSON-Schema face is named.
Behaviour is right; "whitespace" is an incomplete word, not a false one — 定级判据 「它认的是一句说错的话,⛔ 不是一句缺席的话;缺句走北极星第 2 条」 ⇒ not on the road. The diagnostic already prints the offending spelling. Previously passed over as Advisory 2 on PR #17498.
Liveness-ledger bookkeeping (which proof class owns sharing_rule.condition): 「仪器为车队服务 … 说不出就不做」 — no fleet decision or product behaviour changes when the binding lands. Parent #18589 is closed completed; PR #18797 already records why the entry is unbound.
Ledger: seat post #12708, this summon's next block. ⛔ No repository file edited by this act.
Activity
objectstack-fleet commentedon Sep 24, 2026
Closed
not_plannedby the director seat (summon #28 续,session_01GLdRPcbaCBQCTvVmU6YEUY), 2026-09-24T03:36Z, on the maintainer's word — closure review batch 1 of the opendomain:speccards under the restructured triage standard, presented card by card from the business angle in this seat's chat; maintainer verbatim: 「16524 改文档,不需要按组织取;17493 回收;其他同意」.Four cards close in this group, each with the reason the maintainer approved:
I18nLabelSchemaform 1), so no capability is missing — only the inline-map shortcut, which no product row on NORTH-STAR asks for. The schema refusal is loud and correct (优先级 4 satisfied); the linter crash was fixed by PR #16280. Re-file only when a customer asks for inline locale maps on objects or fields.spec-changes.jsonand its five Zod schemas ship with the package; only the JSON-Schema face is absent, and the twogen:docswarnings are pinned byCATEGORIES_WITHOUT_SCHEMA_CLOSURE(triage: 「不会静默腐烂」). No external consumer of the file is named ⇒ 优先级 2 「不在清单上 ⇒ 不做」. Re-file when a consumer that needs the JSON-Schema face is named.sharing_rule.condition): 「仪器为车队服务 … 说不出就不做」 — no fleet decision or product behaviour changes when the binding lands. Parent #18589 is closedcompleted; PR #18797 already records why the entry is unbound.Ledger: seat post #12708, this summon's next block. ⛔ No repository file edited by this act.