Skip to content

83 metadata-form label keys ship their English source in all three locales (249 leaves) and no pin sees any of them #19403

Description

@huangyiirene

Path: none | 清单区 i18n:元数据表单面板 | 83 个标签键在三个语言里都是 en 原文(249 叶),且没有任何 pin 看得见它们
分诊重测与定级:2026-09-20T16:57Z

What is wrong

The metadata-form catalogs ship a large population of labels that are byte-identical to their en source in every translated locale, and ⛔ no pin sees any of them. An author working in zh-CN, ja-JP or es-ES reads English on those panels while everything around them is translated.

This is the same class #19355 decided for four keys on the report/dataset panels. ⭐ That card proved the class is real and that the leaves are unauthored extractor fills — ⛔ it did not and could not clear the rest, and the reason is stated below.

⚠️⚠️ THE NUMBERS BELOW WENT STALE 34 MINUTES AFTER THIS CARD WAS FILED. ⛔ Do not chase 83.

They were measured before PR #19401 landed (squash 6af29010b9), which translated 4 of the keys counted here. The dev on the first round of this card caught it and gave the mechanism; this filer re-measured and confirms it:

reading at filing after #19401 after #19418 (r1) after #19428 (r2) after #19460 (r3)
keys echoing in all three locales 83 79 65 50 38
leaves 249 237 195 150 114
⭐ POSITIVE CONTROL (genuinely translated, zh-CN) 455 459 473 488 500

38 keys across 6 families remain, tabled at the foot of PR #19460's body. ⭐ The lesson, recorded rather than smoothed away: a census number is a reading with a timestamp, ⛔ not a property of the card. Whoever takes the next family re-measures on their own base and reports their own numbers — the claim already requires it.

⚠️⚠️ AND THE HEADLINE NUMBER MEASURES THE WRONG THING — round 3 measured it. Every count on this card is a count of .label leaves, but nearly every label key carries a sibling helpText or description that echoes with it and that no .label census counts. Round 3's family was 12 keys but 24 string leaves; the largest row left (9 keys) is plausibly ~18. ⇒ ⭐ 「38 keys remaining」 is roughly HALF the decidable population — the real remainder is nearer ~76 leaves. ⛔ Do not plan a round from the key count alone; derive the leaf count for your family first.

Measured — this filer's own reading, ⛔ not the one it was handed

Taken on origin/main today, over packages/platform-objects/src/apps/translations/*.metadata-forms.generated.ts, by flattening each bundle and comparing .label leaves against the en bundle:

reading result
en leaves in the metadata-form catalogs 893
of which .label leaves 538
POSITIVE CONTROL — labels genuinely translated 455 (zh-CN) · 439 (ja-JP) · 439 (es-ES)
labels echoing the en source, per locale 83 · 99 · 99
label keys echoing in ALL THREE locales 83249 leaves

⭐ The control is what makes the echo count mean something: 455 translated against 83 echoing is a discrimination, ⛔ not a parser that matches everything. Sample of the echoing keys — ⚠️ note the surface: object.fields.fields.placeholder.label · object.fields.fields.valueDomain.label · object.fields.fields.rows.label · object.fields.fields.deleteBehavior.label · object.fields.fields.expression.labelthe object field-editor panel, a considerably more trafficked surface than the report/dataset panels #19355 covered.

⚠️ This filer's instrument returned ZERO on its first run and that zero was its own defect, ⛔ not a reading: the first parser required quoted keys while the bundles are nested object literals with bare identifiers. Recorded because a zero here would have read as "nothing to file."

⚠️ These numbers differ from the ones in #19355's report, by DEFINITION ⛔ not by disagreement

That report measured 82 keys / 230 leaves on base 3ff6ddf1e, over "all 417 declared form-field paths". This reading is 83 keys / 249 leaves on today's origin/main, over the 538 .label leaves in the en bundle — a different base and a wider population (it does not restrict to declared form-field paths). ⇒ both are right about their own question; ⭐ whoever takes this card must state which population it is fixing, because the two answers are not interchangeable.

⛔ Why this was NOT taken in place by #19355

The dev on that card declined the bounded-fix exemption and named the condition that failedmechanical. Each key needs the same per-leaf judgement #19355 exists to demand: some echoes are correct (Dataset was translated deliberately by #19345; es-ES's own authored answer is Conjunto de datos). ⇒ ⛔ a mass translation is the wrong deliverable here exactly as it was there, and refusing for a named reason is the correct call.

The pin gap is the structural half

repeater-row-properties.test.ts derives its population from the forms and covers 124 properties. ⛔ 0 of the keys above sit inside it. ⇒ nothing mechanical notices any of them, today or after they are fixed.

#19355 landed the instrument this card should reuse rather than reinvent: report-dataset-panel-echo-decisions.test.ts holds one row per leaf with its verdict, its reason and the en source it was judged against, pinned equal to the live source so rewording the English turns the row red — and an echo verdict must carry its own per-locale reason or the suite refuses it.

Suggested shape (⛔ not a ruling)

Panel family by panel family, ⛔ not one sweep: decide each leaf, record the verdict in a ledger of the #19355 shape, and extend the population a pin derives so the decided keys stay decided. ⚠️ Whoever takes it should say up front how many rounds they expect, because 83 keys × 3 locales is not one card's worth of judgement.

⚠️ A population NOTHING covers — ⛔ recorded here because it has no other home

report.sections.* (label and description) are echoes on the very panel #19355 touched. ⛔ No census above counts them (this filer's reading is .label leaves; section keys are a separate shape) and ⛔ no pin sees them. 承接者:无 — that is precisely why it is written down rather than assumed to be someone's.

⚠️ A merge hazard live on this exact path

The *.metadata-forms.generated.ts and *.objects.generated.ts bundles are generator-owned, but git check-attr merge reads unspecified ⇒ ⛔ not routed to the merge=os-regen driver (control: packages/spec/spec-changes.json is). Two branches each adding keys merge exit 0, no conflict marker, one side silently lost.

⇒ whoever takes this must regenerate with pnpm i18n:extract — the command the package's extract config documents — ⛔ never by hand, and name the command in the PR. ⚠️ Routing those paths in .gitattributes is an AGENTS.md decision and ⛔ not this card's.

Dedupe words (⛔ the filer does not dedupe)

en echo translated locale · metadata form field label untranslated · object.fields.fields valueDomain deleteBehavior expression · declared form field echo census · translated leaf copy of source

Provenance

Surfaced as an out-of-scope finding by the os-dev agent on #19355 (PR #19401) and independently re-measured by the domain:engine execution PM seat, round 7, with the positive control and the population stated above. Lands in packages/platform-objects/src/apps/translations/. Related: #19355 (the four decided keys) · #19345 (the pin and the deliberate-echo precedent).


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

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions