docs(zh-Hant): state the Simplified fallback as the reason navigation is in English - #1549
Merged
Merged
Conversation
… is in English Seven zh-Hant pages carried a standing parenthetical whose middle clause — 「主控台介面顯示英文」, *the console UI displays English* — is false. The console falls back to Simplified. That claim was retired as measured false (#1368) and AGENTS.md already carries the corrected reason; only the reader-facing half had not moved. The convention is untouched: English navigation labels on Traditional pages stay exactly as they are. Only the stated reason changes, to the one the rulebook gives — the console falls back to Simplified, so a Traditional page labels platform navigation in English rather than mix Simplified glyphs into Traditional prose. Measured against the installed platform rather than transcribed. The running console (@objectstack/console 17.2.0, served by `objectstack start`) was driven in Chromium at several browser locales and its rendered text read back: navigator.language documentElement.lang Setup sidebar zh-Hant-TW zh 仪表盘 · 系统概览 · 用户 · 审计日志 zh-TW zh same (Simplified) zh-HK zh same (Simplified) en-US en Dashboards · System Overview · Users ja-JP ja Japanese A strict Simplified/Traditional character fingerprint over the rendered console home returned 12 Simplified-only characters and 0 Traditional-only under zh-Hant-TW. en-US and ja-JP are the negative control: the probe reads the locale rather than returning a constant, and the same fingerprint does fire on traditional-form glyphs when they are present (the ja-JP row). The mechanism agrees — the console ships one Chinese bundle (locale keys en · zh · ja · ko · de · fr · es · pt · ru · ar, no zh-Hant, no zh-TW) and selects it by primary subtag, so every zh-* tag lands on the single Simplified bundle. The seven sites are three variants, not one string, so this is three surgeries and not a find-and-replace: three mid-sentence asides with the full stop outside the parenthesis, three standalone notes with it inside, and the glossary's short form, which has no 因此 clause and needed its reason restored rather than merely corrected. Each corrected parenthetical was read back in its own paragraph. The 16 sites that already state the fallback correctly are untouched, including revenue/approvals' three tables enumerating the Simplified strings — they were right, and they are what made the contradiction provable. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019hUuCQStzXGMFSX4dzww5t
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
os-sales
marked this pull request as ready for review
September 3, 2026 11:10
This was referenced Sep 3, 2026
os-sales
added a commit
that referenced
this pull request
Sep 3, 2026
…nctions (#1553) #1368 corrected the REASON zh-Hant pages name platform navigation in English — the console falls back to Simplified, so a Traditional page labels navigation in English rather than ship mixed Simplified/Traditional script — and wrote it into AGENTS.md:343-345. Reaching the reader took four PRs across two rounds (#1537, #1546, #1549, #1554) and the sentence ended up corrected in nine places. Nothing went red at any point, because nothing in CI reads prose. The new guard pins the CLAIM, not the punctuation: a passage naming the convention must state the sanctioned reason in the same passage, matched wrap-insensitively over de-commented, emphasis-stripped text. The three measured register variants — full stop inside the parens, outside it, and the short glossary form that drops the trailing clause — all pass unchanged. Replayed over the drift's real history it is red for the whole window and green only from #1554: 7 red of 7 convention passages at 05f867e^, 7 of 8 at 30f2500, 1 of 9 at 18f523f^, 0 of 9 at 18f523f and today. The last red is the navigation guard's own file header, the site that survived three days because that file exempts itself from its own scan. This file takes no exemption. It matches the assertion rather than the vocabulary, so the deliberate negation #1546 wrote is read and passed on its merits rather than skipped; and its retired-reason ledger is escaped the way docs-object-term-consistency.test.ts escapes retired spellings, so the file never literally spells the sentence it bans. The rule caught two violations in this file itself on its first run, and both were rewritten rather than exempted. The English markers are derived — the first test parses the AGENTS.md bullet and asserts they are substrings of it, so the next correction to the rulebook goes red here. The Chinese markers cannot be derived (AGENTS.md carries no Traditional rendering) and are pinned constants citing it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019hUuCQStzXGMFSX4dzww5t
This was referenced Sep 3, 2026
Merged
This was referenced Sep 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1540
Seven zh-Hant pages carried a standing parenthetical whose middle clause — 「主控台介面顯示英文」, the console UI displays English — is false. The console falls back to Simplified. That claim is the one retired as measured false in #1368, and
AGENTS.md:343-345already carries the corrected reason; only the reader-facing half had not moved.The convention is untouched. English navigation labels on Traditional pages stay exactly as they are. Only the stated reason changes, to the one the rulebook gives: the console falls back to Simplified, so a Traditional page labels platform navigation in English rather than mix Simplified glyphs into Traditional prose.
Measurement 1 — the console fallback, with apparatus
Not a transcription of the rulebook line. Probed against the installed platform:
pnpm build, thenobjectstack start -p 4021serving@objectstack/console@17.2.0, driven in Chromium (/opt/pw-browsers/chromium-1194) at several browser locales, reading backdocument.documentElement.langand the rendered text.Authenticated Setup app, the exact surface these parentheticals are about (導覽路徑):
navigator.languagedocumentElement.langzh-Hant-TWzhzh-TWzhzh-HKzhen-USenja-JPjaScript fingerprint over the rendered console home, using strictly-disjoint Simplified/Traditional character pairs:
Negative controls, both directions.
en-USandja-JPdiffer from thezh-*rows, so the probe reads the locale rather than returning a constant. And theja-JProw's 4 traditional-form hits prove the fingerprint does fire on those glyphs when present — so the zero underzh-Hant-TWis a real zero, not a broken classifier.The mechanism agrees. The console's built-in locale bundles are
en · zh · ja · ko · de · fr · es · pt · ru · ar— one Chinese bundle, nozh-Hant, nozh-TW— and it selects by primary subtag (navigator.language.split('-')[0]), so everyzh-*tag lands on the single Simplifiedzhbundle. There is no configuration in which a Traditional locale reaches English by fallback. English is what an explicitly-English console shows, which is not what these pages claimed.⇒ Reading 1 in the card.
AGENTS.md:343-345is confirmed, not contradicted.Three variants, three surgeries
The seven sites are not one string, so this is not a find-and-replace:
administration/profiles:96,administration/setup:14,guides/integrations:8以免簡繁混用restores the reason the因此clause now needsadministration/sharing-and-security:71,administration/automation:32,administration/sandbox-and-releases:10因此clausereference/glossary:200Corrected full form:
Corrected short form:
Each was read back in its own paragraph — register differs between a mid-sentence aside and a standalone note — and the injected text was checked against a Simplified-character set with a positive control (a deliberately Simplified string fires 5 hits; all three injected strings fire 0).
Site count and guards
content/docs/**/*.zh-Hant.mdxwith four independent nets (英文·繁體|語言包·未附|主控台·顯示英文). The widest net returns 15 lines; 7 carry the parenthetical, the other 8 are unrelated. The eighth page of Docs cite 39 more Setup navigation names the platform ships nowhere — the remainder #853 quarantined rather than fixed #1113/docs: spell platform navigation in English on the zh-Hant pages (#1113, sub-class 3) #1124's pass,guides/email-and-calendar.zh-Hant.mdx, legitimately carries none — its two sections deny screens that do not exist, and that pass deliberately left them in Chinese with no arrow form.test/,scripts/,e2e/,.github/return 0 files for every spelling of it; control probezh-Hantreturns 31 files, so the search reaches those trees.revenue/approvalscarries 11 of the 15 lines, including the three tables enumerating 待我审批 / 我发起的 / 全部 / 我提交的 / 已完成 / 状态. One further corroborating site not enumerated on the card,sales/opportunities.zh-Hant.mdx:152, is also correct and untouched.Verification
pnpm verify— all eight stages, green, on the tree of commite7123384:Ratchet family re-run on the pushed head
e7123384after commit: hygiene, token ratchet and i18n gate all exit 0.Proposal, not built here
The corrected sentence is now stated seven times. It could be stated once in a shared place. The card asks for this to be proposed and stopped at, so no partial/include mechanism was built — noted for triage.
🤖 Generated with Claude Code
https://claude.ai/code/session_019hUuCQStzXGMFSX4dzww5t
Generated by Claude Code