Skip to content

Five translated leaves serve a superseded source revision on main — including the one #10026 measured a week ago #12065

Description

@yinlianghui

Filed unassigned while implementing #11671 (the check:i18n-stale-fill gate). ⛔ Deliberately not repaired there#11671 was re-routed from domain:services to domain:devx precisely because its deliverable is the gate/extract tooling, not any package's bundles. These five are the gate's first output, frozen in scripts/i18n-stale-fill-baseline.json with a reason each so the ratchet ships green; this card is the worklist to burn that baseline down.

What was measured

Detected by pnpm check:i18n-stale-fill at main (branch point 73f827e37), then read by hand out of the committed bundles. In each case two or more translated locales carry byte-identical text that is not the current en value — different languages do not independently produce identical prose, so neither locale translated it: both were filled from the source by --fill=default, and the source has since been revised.

#leaflocalesstate
1metadata-forms.generated.ts#dataset.fields.measures.helpText (platform-objects)es-ES, ja-JP, zh-CNpromises a "certified" governance flag the source no longer mentions
2objects.generated.ts#sys_webhook.fields.method.help (plugin-webhooks)es-ES, ja-JP, zh-CNserves the pre-revision enumeration GET / POST / PUT / PATCH / DELETE after the source became prose
3objects.generated.ts#sys_webhook.pluralLabel (plugin-webhooks)ja-JP, zh-CNsingular Webhook after the source pluralised; neither locale is a translation at all, both are Latin fills
4objects.generated.ts#sys_http_delivery.fields.attempts.help (service-messaging)es-ES, ja-JPpre-#8069 fill; the source has since gained the PARKED/terminal-row clause
5objects.generated.ts#sys_notification_subscription.fields.principal.help (service-messaging)es-ES, ja-JPsuperseded selector list, missing the owner_of:object:id and bare-email forms

Reading for #1, as the shape:

en : "Each: name, aggregate, field (optional for count), and display format/currency"
es-ES : "Each: name, aggregate, field (optional for count), display format/currency, and a “certified” governance flag"
ja-JP : (byte-identical to es-ES)
zh-CN : (byte-identical to es-ES)

⭐ Why #5 is the one worth grading first

sys_notification_subscription.fields.principal.help is the exact leaf #10026 measured on 2026-08-19 and tabulated locale by locale. #10026 was closed not_planned on 2026-08-20. The leaf is still stale today, in the same two locales, under a fully green CI — so this is a direct measurement of what the status-quo option costs over a week, rather than a prediction about it.

Note the drift is now deeper than #10026 recorded: that card measured the zh-CN leaf as a real human translation gone stale. It still is, and check:i18n-stale-fillcannot see it — a single stale locale carries no cross-locale evidence. Only the es-ES/ja-JP pair is detectable without recorded provenance. That asymmetry is the fork reported on #11671.

Repair

Per leaf: re-translate from the current source string and commit the bundle. os i18n extract will not do it — merge fills gaps only, and a present-but-stale string is not a gap (the generated bundles' own header says so). After repairing, ratchet the baseline down:

node scripts/check-i18n-stale-fill.mjs --update

The gate fails if the baseline shrinks without being updated, so a repair cannot land half-done.

Severity

No runtime break. Blast radius is admin/Setup help text in three locales, and it degrades toward confident wrong text rather than missing text — #1 and #5 actively describe capabilities the declaration no longer makes. Two of the five (#3, #4) are English sitting in a CJK bundle, so those leaves are not localised at all.

Prior art (searched before filing)

#10026 (closed not_planned) and #9672 (closed; documented the merge consequence in the extract commentary and bundle header, with the staleness detector graded explicitly OUT on appetite). Both are about the mechanism; neither repairs a leaf, and no open issue covers these five.

Refs: #11671 (the gate) · #10026 · #9672

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions