Skip to content

platform-objects(i18n): object.fields.reference.helpText is stale in all three locales — the source gained a normative tree-field rule on 2026-09-05 that none of them carries #16820

Description

@os-musk

Filed unassigned and ungraded as an out-of-scope finding by the dev on #16227, whose repair was bounded to the nine leaves that card enumerates. ⛔ domain:*, priority and type are triage's.

What is stale

metadataForms.object.fields.fields.reference.helpText, measured on origin/main at 56ee7aef1d:

locale value
en (= the source's copy) Target object name. For a tree field it is optional and, if given, must be this object (a tree is a hierarchy within its own object — link a different object with a lookup)
es-ES Objeto de destino (para lookup/master_detail)
ja-JP 「対象オブジェクト(lookup/master_detail 用)」
zh-CN 「目标对象(用于 lookup / master_detail)」

All three translated locales fail the census's own test in both of its halves at once:

  • they drop a distinct concept the source names — the entire tree-field rule, which is normative and enforced at parse;
  • they assert something the source does not — that reference is for lookup / master_detail, which the current source no longer says and which the tree case contradicts.

The source sentence they translate is Target object name, and nothing more. That is what the leaf said until 2026-09-05.

Why this is not covered by an existing card, and not a reversal of a threshold

⚠️ This leaf is named in the #14587 census — in its explicitly-enumerated "18 more are looser paraphrases — same information, different emphasis — and are NOT in the count" list, where its source is recorded as Target object name. That classification was correct against the source as it then stood, and this card ⛔ does not reopen it.

What changed is the source, afterwards:

fb77aa541f  2026-09-05 22:43:37 +0000
feat(spec)!: a `tree` field's `reference`, when present, must name the declaring object
            — refused at parse otherwise (#14892) (#15979)

Before that commit en.metadata-forms.generated.ts carried helpText: "Target object name". So the census only ever judged this leaf against the short sentence; the long one has never been assessed in any locale. That makes this a fresh measurement rather than a re-litigation of a deliberate threshold call.

Why no instrument reports it

es-ES.source-hashes.generated.ts and its siblings record a digest only while a leaf is still a byte copy of its source, and the extractor drops the entry as soon as a translator writes real text. All three locales here hold real translations, so all three carry no entry, are LEGACY-TRUSTED, and are never reported stale — the coverage hole documented in source-hash.ts's own header. Verified on this tree: pnpm check:i18n, pnpm check:i18n-stale-fill and pnpm check:i18n-coverage are all green over this leaf.

⛔ This card does not propose a gate. #14931 already ruled that a second stale-detection instrument is debt rather than fix, and that whether a gate should exist is a maintainer call.

Extra weight, for triage

Unlike a wording nit, the dropped sentence is the user-facing half of an enforced constraint: a tree field whose reference names a different object is refused at parse. An author reading the Spanish, Japanese or Chinese console is told reference is for lookup / master_detail, gets no hint that a tree's reference must be the declaring object, and meets the rule as a parse failure instead.

Bounded

One leaf, three locales. The label sibling (Reference / Referencia / 「参照」) is unaffected. The other leaves surfaced by the same sweep were either repaired in #16227's PR or are already inside the census's recorded threshold list.

Related: #16227 · #14587 (the census and its threshold list) · #14931 · #15979 (the source edit).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions