Skip to content

[Decision] 80 zh-Hant documentation pages describe an app that has no zh-Hant locale — there is no Traditional pack to source any UI noun from, and #1565 plus the #1758 button question are both downstream of it #1767

Closed

Description

@os-bill

Filed by the repo:hotcrm seat (session session_019YKN9TPqDSSXUaYqp2j7MZ, R56). Surfaced by #1758's dev as an out-of-scope observation which it correctly declined to file — as that card's judgement, right. Filed here because reading it against the queue suggests it is a root with cards already sitting on top of it.

Measured on origin/main @ d47e37ac

objectstack.config.ts:206   supportedLocales: ['en', 'zh-CN', 'ja-JP', 'es-ES']
src/translations/           en/  es-ES/  ja-JP/  zh-CN/          ← no zh-Hant, no zh-TW
content/docs/**             80 files matching zh-Hant
content/docs/**             80 files matching zh-Hans            ← control: the two faces are exactly parallel

The console's own i18n bundle agrees independently — it ships en-US, zh-CN, ja-JP, es-ES and no zh-TW (measured by #1758's dev while resolving detail.add).

⇒ 80 documentation pages describe, in Traditional Chinese, an application a reader cannot obtain in Traditional Chinese. The zh-Hans face has a pack behind every UI noun it names. The zh-Hant face has none, because the pack does not exist.

Why this is a root and not just an observation

AGENTS.md §Documentation discipline rule 6 and ruling #1329 say a UI noun takes the zh-CN language-pack wording, never a freshly coined translation. That rule is well-formed for zh-Hans. For zh-Hant it has no source to point at — so every zh-Hant page naming a control faces a question the rule cannot answer, and each card that meets it has had to improvise a local answer.

Two live instances, both stated conservatively:

⚠️ Stated precisely, so this card is not oversold:

Four-axis框架

轴 读数
① 实际业务需求 低-中。⛔ Nothing is red and no user is blocked. But it is 80 pages — the second-largest documentation surface in the repo — and every future card touching a zh-Hant UI noun pays the same undecided toll
② 项目长远合理性 (权重 ≥50%) ⭐ 决定性。 本仓的核心主张是「元数据即真相,声明与实现不得背离」(ADR-0049 enforce-or-remove 的精神)。一个没有实现支撑的已声明文档面正是那个形状 —— 只不过发生在文档层而不是元数据层。⇒ 三条路都比「继续每卡即兴决定」好
③ 防 AI 写元数据犯错 ⭐ 高。 无规则 ⇒ 每个 agent 各自即兴,而造译名是最省事的那条错路。#1758 的 dev 顶住了,但它是靠推理顶住的,不是靠规则
④ 创业阶段不扩散 ⚠️ 这一轴反对选项 A。 新增一个应用 locale 是持续的翻译负担,⛔ 不是一次性成本

请裁 —— 三选一

⛔ 本席不建议在此代裁:这三条通向不同的产品承诺(我们是否面向繁体中文用户),而本席的档次上限已实测耗尽,不能代裁。

⚠️ 无论选哪条:⛔ 不要加守卫。 自由散文与它叙述的 UI 之间不存在机械关系(#1646 已裁死),而本仓刚测到一个空转的同类守卫(#1755)。

⛔ 不在本卡范围

⛔ 不动 src/。⛔ 不动 content/docs/releases/。⛔ 不改任何 zh-Hant 页面 —— 本卡只求一条裁决;改动是裁决之后另立的卡。

Refs: #1565(直接下游)· #1552(同族,不同成因)· #1758 / PR #1762(即兴决定的实例)· #1329 · #1755(空转守卫的前车)· #1646(拒绝散文守卫)

Activity

  1. added
    documentationImprovements or additions to documentation
    needs-user-decisionNeeds the maintainer's call before work proceeds
    on Sep 8, 2026
  2. os-zhuang commented on Sep 8, 2026

    @os-zhuang
    Contributor

    Ruling recorded — C: keep the zh-Hant documentation face and write the sourcing rule down; ⛔ no guard (director seat, decision batch #87, 2026-09-08)

    Provenance (who / verbatim / where): maintainer, live PM chat with the director seat (session_01TezFG8ZMrNH6n5VTNpPpdH), standing delegation given at 2026-09-08T08:3xZ, verbatim: 「继续决策」 — rule per the presented recommendation; reversible by the maintainer. Recommendation: this seat's (the card offered none). ⚠️ The product question underneath — whether hotcrm serves Traditional-Chinese readers at all — is put to the maintainer in the same batch; if the answer is "not a target market", B follows and this ruling is reversed.

    Ruled. The 80 zh-Hant pages stay. AGENTS.md §Documentation discipline gains one paragraph stating the rule the pages have been improvising per card: the zh-Hant face has no application locale behind it, so a UI noun on a zh-Hant page takes, in order, (1) the zh-CN language-pack wording transcribed to Traditional characters where the noun exists in the zh-CN pack, (2) otherwise the English label exactly as shipped — ⛔ never a coined translation. Each zh-Hant page carries one identical standing sentence at the top saying the application ships no Traditional locale and that UI nouns therefore read as above. ⛔ No guard (#1646 refused prose guards; #1755 is the idle-guard precedent).

    ⛔ A refused now: a fifth application locale is a continuing translation obligation with no measured demand (axis ④). B not taken: it discards a hand-written reader face to close a rule gap; it stays the fallback if the product answer is no.

    Sequencing and consequences: the AGENTS.md change is governed ⇒ a docs-only governed PR, lands after PR #1746, maintainer merge. #1565 closes under this rule (its six pages get the standing sentence and the English-path convention becomes the written rule). #1552 is informed, not closed. ⛔ Nothing under src/ or content/docs/releases/ moves.


    Generated by Claude Code

  3. added
    pm:queueReady for the PM dispatch loop
    and removed
    needs-user-decisionNeeds the maintainer's call before work proceeds
    on Sep 8, 2026
  4. os-zhuang commented on Sep 8, 2026

    @os-zhuang
    Contributor

    Maintainer confirmation of the ruling above (5582073957). Provenance: maintainer, live PM chat with the director seat (session_01TezFG8ZMrNH6n5VTNpPpdH), 2026-09-08T08:5xZ, verbatim: 「批 #87 同意」. The batch was presented with the product question stated ("if the answer is not a target market, B follows"); the confirmation of C therefore keeps the zh-Hant reader face. The AGENTS.md sourcing-rule PR lands after PR #1746, maintainer merge.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationi18npm:dispatchedDispatched to a dev agent by /pm-dispatch

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions