Found while bounding the es-ES rename damage in #8735. Same ADR-0090 (sys_role → sys_position) half-landing, different locale, so it was outside that card's lane and is filed rather than fixed there.
The instance
packages/plugins/plugin-sharing/src/translations/ja-JP.objects.generated.ts, sys_record_share.fields.recipient_id.help:
help: "アクセスを受け取るユーザー/グループ/ロールの ID"
ロール is the pre-rename role concept. The English source for this exact leaf says position:
help: "ID of the user/group/position that receives access"
and the same bundle already renders the concept correctly one field earlier, in recipient_type.options:
so the file disagrees with itself. zh-CN has the corresponding leaf right (用户 / 组 / 岗位 ID), and es-ES is being repaired in #8735 — ja-JP is the only locale left carrying it.
Bound
This was swept, not guessed. Every ロール / 角色 occurrence in every ja-JP and zh-CN bundle repo-wide was checked against its English source. All the others are legitimate and must NOT be changed:
ロールアップ (rollup) and ロールバック (rollback) — different words that merely contain the substring
- ARIA
ロール / 角色
- platform role, org member role, agent persona role — concepts genuinely still called role, unaffected by ADR-0090
This one leaf is the only genuine miss in the two locales.
Fix shape
Leaf string value only, per the bundle header's documented workflow — no generator change, no key rename. ロール becomes ポジション, matching the recipient_type.options.position rendering already in the file.
Why nothing caught it
Same blind spot as #8735: check:i18n compares bundle structure against extractor output and is green either way, and per #8543 the generator's merge mode leaves existing leaf values untouched, so a half-landed rename survives a green gate indefinitely.
The consistency guard added in #8735's PR (recipient-vocabulary-consistency.test.ts) asserts cross-object agreement within a locale and a stale-term check for es-ES; it does not assert a ja-JP stale-term rule, precisely because this instance is still open. Whoever fixes this can extend that guard to ja-JP in the same change, which would close the class rather than the instance.
Found while bounding the es-ES rename damage in #8735. Same ADR-0090 (
sys_role→sys_position) half-landing, different locale, so it was outside that card's lane and is filed rather than fixed there.The instance
packages/plugins/plugin-sharing/src/translations/ja-JP.objects.generated.ts,sys_record_share.fields.recipient_id.help:ロールis the pre-rename role concept. The English source for this exact leaf says position:and the same bundle already renders the concept correctly one field earlier, in
recipient_type.options:so the file disagrees with itself. zh-CN has the corresponding leaf right (
用户 / 组 / 岗位 ID), and es-ES is being repaired in #8735 — ja-JP is the only locale left carrying it.Bound
This was swept, not guessed. Every
ロール/角色occurrence in every ja-JP and zh-CN bundle repo-wide was checked against its English source. All the others are legitimate and must NOT be changed:ロールアップ(rollup) andロールバック(rollback) — different words that merely contain the substringロール/角色This one leaf is the only genuine miss in the two locales.
Fix shape
Leaf string value only, per the bundle header's documented workflow — no generator change, no key rename.
ロールbecomesポジション, matching therecipient_type.options.positionrendering already in the file.Why nothing caught it
Same blind spot as #8735:
check:i18ncompares bundle structure against extractor output and is green either way, and per #8543 the generator's merge mode leaves existing leaf values untouched, so a half-landed rename survives a green gate indefinitely.The consistency guard added in #8735's PR (
recipient-vocabulary-consistency.test.ts) asserts cross-object agreement within a locale and a stale-term check for es-ES; it does not assert a ja-JP stale-term rule, precisely because this instance is still open. Whoever fixes this can extend that guard to ja-JP in the same change, which would close the class rather than the instance.