Skip to content

fix(release): run the i18n contract gates in the merge-train - #14437

Merged
diegosouzapw merged 1 commit into
release/v3.8.51from
chore/merge-train-i18n-gates
Sep 22, 2026
Merged

diegosouzapw merged 1 commit into
release/v3.8.51from
chore/merge-train-i18n-gates

Conversation

@diegosouzapw

Copy link
Copy Markdown
Owner

Summary

The local merge-train (scripts/release/merge-train.sh, merge-gates.md §7) validated only typecheck:core, file-size, both complexity gates and changelog integrity on the combined tree, then merged with --admin. That is how three PRs that added en.json keys without catalogs (#13670, 1b2349de, 7f1b4a5e) and dozens that edited docs without mirrors reached release/v3.8.51 in 48 h while their own CI was red on the i18n gates — each landing re-opened the debt the i18n completion plan had just closed (#13996, #14078, #14106, #14166, #14357).

This adds the four deterministic i18n contract gates to STATIC_GATES (a few seconds each; the drift gate ~30 s over 9,880 mirrors):

  • npm run i18n:check-keys — every en.json key present in all 65 dashboard catalogs
  • npm run i18n:check-keys:cli
  • npm run i18n:check-ratio — real-translation ratio within baseline
  • node scripts/i18n/check-translation-drift.mjs — docs mirrors up to date (stale-after-interruption is a warning, not a failure)

A red ejects the offending PR like any other gate; the fix stays in that PR (npm run i18n:translate-new-keys for UI keys, npm run i18n:run -- --files=<doc> for docs, both documented in docs/guides/I18N.md). The matching line in .agents/skills/_shared/merge-gates.md §7 step 3 is updated in the skills repo.

Policy note for the operator: this extends the owner-approved train gate list (merge-gates.md §7, 2026-07-09 / 2026-07-18); it changes what the train refuses, not what CI runs.

Validation

Check Result
bash -n scripts/release/merge-train.sh ok
The four gates on the current tip i18n:check-keys OK, i18n:check-keys:cli OK, i18n:check-ratio OK, drift: FAIL on docs/reference/ENVIRONMENT.md (the tip's own debt, being refreshed in a sibling PR) — i.e. the gate would have caught exactly what it is meant to catch

⚠️ base-red inherited: #13866

The train validated typecheck, file-size/complexity and changelog
integrity only, so combined trees that add en.json keys without catalogs
or edit docs without mirrors reached release/v3.8.51 three times in 48 h
(#13670, 1b2349d, 7f1b4a5) while each PR's own CI was red on those
gates. i18n:check-keys, i18n:check-keys:cli, i18n:check-ratio and the docs
drift gate now run with the static gates.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant