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 |
83 ⇒ 249 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.label ⇒ the 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 failed — mechanical. 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
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
ensource in every translated locale, and ⛔ no pin sees any of them. An author working inzh-CN,ja-JPores-ESreads 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.
Measured — this filer's own reading, ⛔ not the one it was handed
Taken on
origin/maintoday, overpackages/platform-objects/src/apps/translations/*.metadata-forms.generated.ts, by flattening each bundle and comparing.labelleaves against theenbundle:enleaves in the metadata-form catalogs.labelleaveszh-CN) · 439 (ja-JP) · 439 (es-ES)ensource, per locale⭐ 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.label⇒ the object field-editor panel, a considerably more trafficked surface than the report/dataset panels #19355 covered.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'sorigin/main, over the 538.labelleaves in theenbundle — 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 failed — mechanical. Each key needs the same per-leaf judgement #19355 exists to demand: some echoes are correct (
Datasetwas translated deliberately by #19345;es-ES's own authored answer isConjunto 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.tsderives 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.tsholds one row per leaf with its verdict, its reason and theensource it was judged against, pinned equal to the live source so rewording the English turns the row red — and anechoverdict 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.
report.sections.*(label and description) are echoes on the very panel #19355 touched. ⛔ No census above counts them (this filer's reading is.labelleaves; 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.The
*.metadata-forms.generated.tsand*.objects.generated.tsbundles are generator-owned, butgit check-attr mergereadsunspecified⇒ ⛔ not routed to themerge=os-regendriver (control:packages/spec/spec-changes.jsonis). Two branches each adding keys merge exit 0, no conflict marker, one side silently lost.⇒ whoever takes this must regenerate with⚠️ Routing those paths in
pnpm i18n:extract— the command the package's extract config documents — ⛔ never by hand, and name the command in the PR..gitattributesis anAGENTS.mddecision 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 sourceProvenance
Surfaced as an out-of-scope finding by the
os-devagent on #19355 (PR #19401) and independently re-measured by thedomain:engineexecution PM seat, round 7, with the positive control and the population stated above. Lands inpackages/platform-objects/src/apps/translations/. Related: #19355 (the four decided keys) · #19345 (the pin and the deliberate-echo precedent).Generated by Claude Code