Skip to content

platform-objects(i18n): the zh-CN dashboard helpText leaf goes stale the moment #14586 lands — a fresh instance of the class #14931 names, with every gate green #15511

Description

@claude

Filed by the dev on #14586 as an out-of-scope finding. Unassigned, for triage. It is filed rather than ridden along because the replacement is a Chinese wording judgement, not a mechanical edit — reasoning at the end.

The leaf

packages/platform-objects/src/apps/translations/zh-CN.metadata-forms.generated.ts:935

gap: {
  label: "间距",
  helpText: "栅格间距(Tailwind 单位)"
}

Its source is gap.helpText in packages/spec/src/ui/dashboard.form.ts.

string
source before #14586 Grid gap (Tailwind units)
source after #14586 Space between widgets, in steps of 0.25rem (4 = 1rem)
zh-CN leaf, unchanged 「栅格间距(Tailwind 单位)」

Until that PR the zh leaf was a faithful translation. After it, the zh leaf still carries the framework vocabulary the English deliberately stopped carrying, and lacks the magnitude the English gained. A zh Studio author is left in exactly the state the upstream card exists to end.

Regeneration does not fix it — measured, not assumed

node scripts/check-i18n-bundles.mjs --write was run on that PR. It rewrote the en leaf (en is a copy of the source and is never merged) and left zh-CN untouched, exactly as the generated file header promises: merge fills gaps only, so a present-but-stale leaf is never corrected.

Both gates are GREEN over the stale leaf, exit codes captured before any pipe:

pnpm check:i18n              exit 0    all bundles in sync (11 for platform-objects)
pnpm check:i18n-stale-fill   exit 0    10 bundle sets, 0 stale-fill leaves, 0 baselined

check:i18n-stale-fill cannot see it by construction: it detects a stale fill from cross-locale agreement, and 「栅格间距(Tailwind 单位)」 is a real translation, not a copy of the English. Nor is there provenance to fall back on — zh-CN.source-hashes.generated.ts carries no dashboard entry at all.

Why this deserves a card rather than a line in a report

#14587 swept this exact subtree on 2026-09-03 and corrected five leaves. It correctly left gap alone, because at that moment gap was accurate. The subtree was clean for one day.

So this is not legacy debt. It is a leaf that a landed source edit turned stale with every instrument green — which is the mechanism #14931 says nothing in this repo can judge. #14931 is scoped to the 613 legacy-trusted leaves imported from a pre-consolidation vocabulary; this instance arrives by the other route (source moved under a correct translation) and may be worth attaching to it as the live worked example, since it is the first one whose exact moment of going stale is known.

Why it was not fixed in that PR

The dispatch scoped that card to the two English producer strings and explicitly forbade sweeping. Beyond scope, the replacement wording is a genuine judgement:

  • objectui carries its own zh for this same field — 「组件之间的间距,数值越大越松」 at metadata-form-i18n.ts:90 — and objectui#7369 plans to delete that overlay and consume THIS bundle instead. Whatever is written here likely becomes the Studio's zh string, so picking it inside an English prose PR would pre-empt that convergence.
  • The new English carries a magnitude (one step is 0.25rem, so 4 is 1rem). A zh replacement has to decide whether to carry it; the objectui overlay currently does not. That is the same trade-off filed as objectui#7673.

Suggested, explicitly not a ruling: 「组件之间的间距,每级 0.25rem(4 即 1rem)」.

Bounded, as the sibling sweep was

columns is deliberately unchanged upstream, so 「栅格列数(默认 12)」 stays accurate. No other dashboard leaf moved. This is one leaf.


Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions