Filed unassigned as an out-of-scope finding while implementing #15984 (PR #16250). Deliberately unlabelled — triage owns domain:* and the grading.
The gap
#15984 fixed the user-facing guide (content/docs/ui/translations.mdx), which described only one localisation route and never mentioned the second authorized form of an I18nLabel — the inline locale map, label: { en: 'Members', 'zh-CN': '成员' }.
content/docs/protocol/kernel/i18n-standard.mdx has the same omission, and it is the page the guide links as the normative protocol. Measured on origin/main at 1ebde4953, over the whole 1020-line file:
Why this is not simply covered by #15984
The two pages answer different questions and a reader arrives at them for different reasons. The guide now carries the practical passage — both forms authorized, rendered but never extracted, coverage counts the locales the map carries, no bundle key exists and none is synthesised from a node's position in the component tree (maintainer ruling 2026-09-03, #14749). But a page that calls itself the normative protocol and declares the label contract, while omitting one of the two forms that contract authorizes, is the authoritative document being the incomplete one — which is the failure mode packages/spec/src/ui/i18n.zod.ts names in its own header as the reason the schema was widened in the first place.
The narrow question for triage is whether the normative page should state the union at all, or should defer to the guide and the generated reference pages. That is a scope call, not something a docs implementer should decide alone, which is why this is a card and not a rider on PR #16250.
Scope note
content/docs/protocol/kernel/i18n-standard.mdx was explicitly off the declared file surface for #15984 and was not edited by PR #16250. Nothing here is a defect in that PR.
Sources
Related: #15984, #14749, #15435.
Generated by Claude Code
Filed unassigned as an out-of-scope finding while implementing #15984 (PR #16250). Deliberately unlabelled — triage owns
domain:*and the grading.The gap
#15984 fixed the user-facing guide (
content/docs/ui/translations.mdx), which described only one localisation route and never mentioned the second authorized form of anI18nLabel— the inline locale map,label: { en: 'Members', 'zh-CN': '成员' }.content/docs/protocol/kernel/i18n-standard.mdxhas the same omission, and it is the page the guide links as the normative protocol. Measured onorigin/mainat1ebde4953, over the whole 1020-line file:inlineappears exactly once, at:155— "the inlinelabel:authored ... ([Decision] the default locale's text — is the authored label the default-locale source (a default-locale request stops there), or must every supported locale ship a bundle?os i18n checksays the former,localeChaindoes the latter; the resolver's literal['en']default rides on the answer #15711)", i.e. a plain-string label as the default locale's source text. Same class as the four mentions triage catalogued on the guide: not about a locale map.locale map,I18nLabelandpickLocalizedappear zero times.### Translation Coverage(:820) shows anos i18n checktranscript in keys-per-locale terms only; nothing there says a map's own locales are what the gate counts for a map-authored prop.Why this is not simply covered by #15984
The two pages answer different questions and a reader arrives at them for different reasons. The guide now carries the practical passage — both forms authorized, rendered but never extracted, coverage counts the locales the map carries, no bundle key exists and none is synthesised from a node's position in the component tree (maintainer ruling 2026-09-03, #14749). But a page that calls itself the normative protocol and declares the label contract, while omitting one of the two forms that contract authorizes, is the authoritative document being the incomplete one — which is the failure mode
packages/spec/src/ui/i18n.zod.tsnames in its own header as the reason the schema was widened in the first place.The narrow question for triage is whether the normative page should state the union at all, or should defer to the guide and the generated reference pages. That is a scope call, not something a docs implementer should decide alone, which is why this is a card and not a rider on PR #16250.
Scope note
content/docs/protocol/kernel/i18n-standard.mdxwas explicitly off the declared file surface for #15984 and was not edited by PR #16250. Nothing here is a defect in that PR.Sources
packages/spec/src/ui/i18n.zod.ts—I18nLabelSchema, the union, and "Both are real; neither is deprecated by this schema."packages/cli/src/utils/i18n-extract.tsheader — "Inline locale maps are NOT extracted — and are not 'unauthored' either" (InlineI18nLabelmaps are invisible toos i18n extractandcheck:i18n-coverage— should the extractor and the coverage gate see them? (objectstack#14412 ruling A follow-up) #14749 Q3 = C3, Q2 = B1).Related: #15984, #14749, #15435.
Generated by Claude Code