Skip to content

check-i18n-bundles merge mode never updates an EXISTING field description, so editing one leaves the en bundle silently stale (and the gate green) #8543

Description

@os-zhuang

Observation-class finding, noticed while implementing #8069 (PR #8541). Unassigned, no pm:queue.

What I measured

I edited two field descriptions on sys_http_delivery (packages/services/service-messaging/src/objects/http-delivery.object.ts):

  • error — had nodescription before; gained one.
  • attemptsalready had one; its text changed.

pnpm check:i18n went red, and node scripts/check-i18n-bundles.mjs --write regenerated. The result, per locale bundle, was 2 insertions, 1 deletion — only the error entry:

 error: {
- label: "Error"
+ label: "Error",
+ help: "Why this row is not a delivered callout: the last transport error, or — on a row with 0 attempts — why the delivery could never be prepared (#8069)."
},

attempts in en.objects.generated.ts still reads help: "Number of attempts made so far" — the pre-edit text — while the source now says something else. The gate then reports OK.

That is the documented merge behaviour, printed by the script itself: "Merge mode is on, so no existing translation is overwritten — new schema keys are added filled with the source text."

Why it is worth recording anyway

For zh-CN / ja-JP / es-ES the rule is obviously right: a regeneration must not clobber a human translation with English source text.

For en the same rule produces a different outcome, because en is not a translation — it is a copy of the source. So there, merge mode means:

  • an author edits a field description,
  • the gate passes,
  • the change never reaches the bundle the UI renders,
  • and nothing anywhere says the two disagree.

The source of truth and the served text drift apart silently, permanently, and by one commit at a time. It is the declared != enforced shape the repo keeps filing cards about, in the one place a gate is already looking.

What this finding does NOT claim

  • ⛔ Not that any specific user-visible help text is currently wrong. I measured one instance, mine, and did not sweep for pre-existing drift. The size of the existing gap is unknown and is the first thing worth measuring — a scan comparing every authored description against its en bundle help would grade this immediately, and would also decide whether this is a one-line fix or a backlog.
  • Not that merge mode is wrong for translated locales. It is right for them; the question is only whether en belongs in the same channel.
  • Not urgent: help text going stale is a documentation degradation, not a durability one — nothing is lost, something is merely out of date while looking current.

Repro

Edit any field that already carries a description on any object in a package owning an i18n-extract.config.ts, run node scripts/check-i18n-bundles.mjs --write, and diff **/translations/en.objects.generated.ts — the entry is unchanged, and pnpm check:i18n is green.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions