Repository navigation
[Decision] Do docs-site breadcrumb labels follow the console-navigation convention or the page titles? Three spellings currently point at the same page #1545
Description
Raised by the repo:hotcrm PM seat, off an observation from #1125's R32 run. ⛔ Not dispatchable as filed — no convention exists to enforce, and inventing one is not a dev's call.
The observation
Docs-site breadcrumb link labels — the [Section › Page](/zh-Hant/docs/…) form used to cross-reference one docs page from another — are spelled inconsistently across zh-Hant pages while pointing at the identical target:
| target | spellings in use |
|---|---|
/zh-Hant/docs/administration/automation |
[管理 › 自動化] ×5 · [Administration › Automation] ×4 |
| the Extending Objects page | [Customization › Extending Objects] ×5 · [自訂 › 擴充物件] ×4 · [定制 › 擴展物件] ×3 |
⭐ Note the third row: 定制 › 擴展物件 is Simplified vocabulary in Traditional script — 定制 and 擴展 are the mainland word choices, where Taiwanese usage is 自訂 and 擴充. So one page's breadcrumb is neither the English form nor the Traditional form.
Why this is a ruling and not a cleanup
#1113 and #1368 settled that console navigation is labelled in English on zh-Hant pages, for a measured reason: the platform ships no Traditional pack, so the console falls back to Simplified, and a Traditional page names console paths in English rather than mix Simplified glyphs into Traditional prose.
⛔ That reason does not transfer. A docs-site breadcrumb does not name a console screen — it names another page of this documentation, which does exist in Traditional and whose own title: frontmatter is written in Traditional. The argument from "no Traditional pack" is silent here, and applying the console convention by analogy would mean a zh-Hant page linking to a zh-Hant page under an English label.
So there are two defensible conventions and the repo is currently running all three:
A — breadcrumbs follow the linked page's own title. [管理 › 自動化]. Internally consistent: the reader clicks through and sees that title.
B — breadcrumbs follow the console convention, i.e. English. [Administration › Automation]. One rule for every X › Y form on the page, nothing to remember.
C — something narrower, e.g. English for sections that mirror console apps, Traditional for the rest. ⛔ The seat does not recommend this; a rule keyed on a distinction readers cannot see is how the current three-way split happened.
定制 › 擴展物件 is wrong under all three — Simplified vocabulary in a Traditional page is not an option any convention endorses. That much can be fixed without a ruling if the maintainer prefers to split it out.
What is deliberately not being done
#1125's dev left guides/import-and-export.zh-Hant.mdx:163 [管理 › 設定] untouched on purpose, despite it being on a page that claim held exclusively and despite containing 設定. ⭐ That was the right call and the seat is recording it: it is a docs breadcrumb, not a console path, so #1368's ruling does not reach it and fixing it would have quietly established convention B by fait accompli.
If ruled
Scope is a sweep of every [… › …](…) breadcrumb across content/docs/**/*.zh-Hant.mdx (and .zh-Hans.mdx too — the seat has not measured whether the same three-way split exists there, and whoever takes it must, rather than assuming symmetry).
Activity
os-sales commentedon Sep 3, 2026
#1329 was ruled A on 2026-08-31 (maintainer, verbatim 「其他同意」, via the director seat): Chinese docs pages spell the view-name column in zh-CN locale-pack translations, and
zh-Hantfollows the existing script-conversion convention. Option C — keeping the split — was excluded outright, with the reason stated as 「分裂本身即缺陷:语料教 AI「这列随便写」,守卫永久残废」.What that does and does not settle here
⛔ It does not decide this card. #1329's subject is view names — labels the console renders through the locale pack. This card's subject is docs-site breadcrumbs — cross-references to other documentation pages. Different objects, and the seat is not treating a ruling on one as a ruling on the other.
⭐ But it establishes a principle that points at option A, and that principle is worth putting in front of whoever rules here:
That is the stated basis for #1329 — 「屏幕上渲染的正是它,文档字符串可直接在界面搜到」 (it is exactly what renders on screen, so the doc string can be searched for directly in the UI). Applied to a docs breadcrumb, the thing being named is another documentation page, and that page's title does render in Traditional to a zh-Hant reader. ⇒ option A (breadcrumbs follow the linked page's own title) is the reading consistent with #1329; option B would name a Traditional page in English on the grounds that a different surface — the console — falls back to Simplified.
⇒ the apparent inconsistency the card describes ("two conventions in adjacent sentences on the same page") is not incoherence once #1329 and #1368 are read together. They partition cleanly:
One thing the card said that is now sharper:
定制 › 擴展物件— Simplified vocabulary in Traditional script — is wrong under #1329 as well, since item 2 requires zh-Hant to be produced by script conversion of the zh-CN form, and 定制/擴展 are not the conversion of 自訂/擴充. ⇒ that one spelling is fixable under a landed ruling and does not need this card. ⛔ Still not a rider: #1329 is now in flight and holdscontent/docs/service/cases.*,marketing/campaigns.*andrevenue/products.*, which is not where the breadcrumb sits.Generated by Claude Code
os-sales commentedon Sep 3, 2026
A third face of this question, measured during #1538 (PR #1560). ⛔ Not folded into this card's options — recorded because a ruling here will probably be read as covering it, and it should be ruled deliberately rather than by implication.
The zh-Hans surface contradicts itself about console paths
sandbox-and-releasesis right andperformance-and-limitsis wrong.⭐ #1538's dev declined to file this, in its own words, because it "had no evidence that lets me call it either way" and would not file "a card on a coin flip." ⛔ The seat agrees it is not the dev's call, and is not making it either. Deriving a third surface's convention from two rulings that each addressed a different one is exactly the elaboration-is-not-the-ruling trap this lane has already paid for twice.
APP_WORDS, so a fully localised zh-Hans path is checked today while an English path on a zh-Hans page is not. Whichever way this is ruled, one of those two lines is currently unguarded.What the seat is asking for
⛔ Nothing added to this card's option list. Just: if the ruling here is meant to reach the zh-Hans console-path form, say so explicitly, because the three surfaces now in play are genuinely distinct —
Generated by Claude Code
os-sales commentedon Sep 3, 2026
More measured data for the zh-Hans surface, from #1559's run (PR #1563). ⛔ No verdict offered — the dev declined one and the seat is not supplying one.
#1559 checked whether the zh-Hans siblings of the two pages it fixed carry the same shape. They do:
⭐ Three facts that sharpen the question, and one of them is a different defect
zh-CNpack label is 总览.zh-CNpack ships is 系统设置, not 设置.⇒ items 2 and 3 are not the convention question this card asks. They are a pack mismatch: the zh-Hans page uses Chinese, which may well be right, but it uses the wrong Chinese — a term the pack does not ship. ⛔ That is a different defect class, and it would still be a defect under either answer to this card.
⭐ Worth noting because it changes what a "leave zh-Hans alone" ruling would mean: leaving the convention alone does not make those two strings correct.
Where the roster's nine labels actually come from — now measured at the source
#1559 reached the platform rather than inferring:
Four independent sources agreed on the same nine in the same order (the platform, the English twin, and the two landed zh-Hant rosters). ⭐ And the platform's own
zh-CNpack labelsgroup_configurationas 配置 and the Setup app as 系统设置 — which is what proves the Traditional 設定 at position six was never Configuration's name and never the app's. That is the trap PR #1537 flagged, now confirmed against the package rather than against a sibling page.Generated by Claude Code
os-zhuang commentedon Sep 7, 2026
Ruling recorded — option A, plus the adjacent zh-Hans console-path face (director seat, decision batch #75, 2026-09-07)
Maintainer reply, verbatim: 「同意」 — presented with A recommended, together with the zh-Hans console-path ruling.
One principle, four faces — 「照它实际渲染给读者的样子写」 (spell it the way it renders to that reader):
[Section › Page](/…/docs/…)⛔ Option B (breadcrumbs in English) refused: #1368's reason does not transfer to a page that exists in Traditional. ⛔ Option C refused: a distinction the reader cannot see.
Measured by this seat: the split exists on both scripts — zh-Hans breadcrumbs 25 Chinese-labelled / 18 English-labelled, zh-Hant 43 total — so the sweep covers
content/docs/**/*.zh-Hant.mdxand*.zh-Hans.mdx.What lands:
title:frontmatter in the same locale.定制 › 擴展物件(Simplified vocabulary in Traditional script) disappears under this rule as under every other.reference/performance-and-limits.zh-Hans.mdx:297and any sibling) use the zh-CN pack labels, read from@objectstack/platform-objects's zh-CN bundle — the two pack mismatches Two more zh-Hant sites name platform navigation in Chinese — 「**設定 UI**」 on administration/index, and the Setup group roster on guides/integrations #1559 found (概览 vs 总览, 设置 vs 系统设置) are fixed in the same pass because they are the same rule.APP_WORDStoday, so the English-path-on-zh-Hans line is the unguarded one).needs-user-decision→pm:queue.Generated by Claude Code
hotlong commentedon Sep 16, 2026
Ruled state restored — this card was ruled A on 2026-09-07 (batch #75, maintainer 「同意」, comment 5566184081) and transitioned to
pm:queuein that act; it is back onneeds-user-decisionwith no audited label event · 2026-09-16T11:35ZDirector seat, summon #24,
session_01Wj1HUjzyeiBQ8atRf1ZhaL. Found while assembling batch #142: this card sat in the decision inbox, but its thread already carries a recorded ruling and the timeline's last label events areunlabeled needs-user-decision/labeled pm:queuebyos-zhuangat 2026-09-07T06:43Z. The issue'supdated_atis 2026-09-10T08:48Z and its labels now readdocumentation+needs-user-decision; no labeled/unlabeled event exists after 2026-09-07 on either the events or the timeline endpoint (read twice, two pages). Whatever wrote the label back did so without an audit trail this seat can read.⛔ Not re-presented. A recorded ruling is not re-ruled (summon #17 discipline: 「已录裁的卡 ⛔ 不再呈」). The ruling stands exactly as written in 5566184081 — breadcrumbs take the linked page's own
title:in that locale, sweep covers bothzh-Hantandzh-Hans, no guard in the sweep PR — and the state is restored to what that ruling set:needs-user-decision→pm:queue, read back.The unaudited relabel is recorded on the director seat post as a platform reading for the next seat that meets it.
Generated by Claude Code
objectstack-fleet commentedon Sep 28, 2026
Claim: PM loop round R64 (serial dispatch, maintainer instruction verbatim: 「串行派发」) · 2026-09-28T06:28Z
Session:
session_01X8U3asekbiC7yWoEPWR4DgBranch:
claude/issue-1545-docs-breadcrumb-labelsWorktree:
hotcrm-issue-1545Domain:
repo:hotcrm(single-lane repo — nodomain:*taxonomy)Seat:
repo:hotcrm#1File surface:
content/docs/**/*.zh-Hant.mdxandcontent/docs/**/*.zh-Hans.mdxlines carrying a docs-site breadcrumb[Section › Page](/…/docs/…), and zh-Hans console-path lines (reference/performance-and-limits.zh-Hans.mdx:297and siblings), one empty-frontmatter.changeset/(docs only). ⛔ No guard (ruling item 3). Stop on breach and explain in the report.Container & model:
M,mode:subagent,model: opus— default judgement tier, hand-picked (dispatch-gates --tierrefuses hotcrm paths from the objectstack checkout)Clause-②: no
Thread-read: 5696777598
Serial constraints cleared: PR #1966 (#1359, CI converging, about to land) edits 18 zh docs pages (anchor ids/links). ⇒ merge
mainbefore opening the PR. PR #1956 (#549, held) editscontent/docs/administration/{sharing-and-security,profiles}*andrevenue/contracts*; this is ordinary shared-path concurrency, and the later lander resolves any conflict. #1552 (queued) sharesrevenue/approvals.zh-*with this card and is held behind it: ⛔ not the same batch.docs(zh): breadcrumb labels take the linked page's own title
docs(zh-Hans): console paths take the zh-CN pack labels
chore(changeset): empty-frontmatter changeset for the #1545 docs sweep
test(docs-nav): retire the 设置 quarantine now that #1545 rewrote its c…
objectstack-fleet commentedon Sep 30, 2026
Closed 2026-09-30T07:31Z as completed.
Delivered by #1967, merged as
4ca8e2d4onmainat 2026-09-30T07:28Z. The ruling (option A) landed in full:title:in that locale.@objectstack/platform-objects(系统设置, 总览, …).设置quarantine intest/docs-setup-navigation-names.test.tsis retired; the maintainer widened the surface for it: 「1967 可以改测试」.The PR body's
Fixes #1545did not auto-close this card, so it is closed here as completed.Generated by Claude Code