Skip to content

[Decision] Should a zh docs heading carry the English explicit anchor id, so same-page links work in every locale? The "zh pages drop the anchor" rule was a workaround for a limitation that has since been fixed #1359

Closed

Description

@os-steve

Raised by the #867 dev during PR #1358 and escalated rather than decided, because taking it would mean an execution seat reinterpreting the scope of a ruling marked not re-litigable. PR #1358 shipped the conservative option and is landing; nothing waits on this card. Dedupe run: #1329 is the adjacent view-name question, not this one.

The situation

PR #1358 found 9 dangling anchors under content/docs, 6 of them same-page links on zh pages (translated heading, untranslated anchor):

marketing/campaigns.zh-Hans.mdx:59            #campaign-enrollment-flow
marketing/campaigns.zh-Hant.mdx:59            #campaign-enrollment-flow
reference/security-and-compliance.zh-Hans.mdx:85   #field-level-controls
reference/security-and-compliance.zh-Hans.mdx:235  #at-rest
reference/security-and-compliance.zh-Hant.mdx:85   #field-level-controls
reference/security-and-compliance.zh-Hant.mdx:235  #at-rest

The standing rule — zh pages drop the anchor and link the page only (settled on #866's dispatch, applied by PR #934) — was written for links that have a page half. A same-page link has none, so "drop the anchor" collapses to "drop the link". The rule does not contemplate this case.

The two options

A — shipped in PR #1358. Remove the link markup, keep the visible words. Cannot contradict any ruling. Costs zh readers an intra-page jump to a section that does exist a screen below. ⚠️ Note this costs nothing today: the links were dangling, so clicking one already landed at the top of the page.

B — the dev's recommendation, not taken. Give the zh heading the same English explicit id its English counterpart uses:

## 营销活动加入流程 [#campaign-enrollment-flow]

Keeps the link working, creates no localized anchor (so "the surviving localized anchor does not spread" is respected in spirit), and makes the anchor identical across all locales. One line per heading, four headings.

⭐ The fact that makes this worth your time: the original rule's reason has expired

zh anchors were dropped because a localized heading slugs to a localized anchor (## 路线图 → 路线图), which is awkward to author and easy to get wrong. Explicit ids were the clean way out, and they were blocked — test/docs-drift.test.ts's headingLabel() could not tolerate a trailing [#id], so the analytics/dashboards pages could never carry one (that was #935).

#935 was fixed on 2026-08-24 by PR #1273. The technical constraint that produced the rule is gone. The rule still stands, but it is now a convention rather than a workaround — which is exactly the kind of thing worth re-examining once, deliberately, rather than inheriting forever.

四维分析

① 实际业务需求 —— 拉动是未经测量的。受影响的是 campaigns 与 security-and-compliance 两组页面,都是长参考页,页内跳转在这类页上确有实际价值。但没有任何用户反馈要求它,而且这些锚点从来就没工作过(一直是悬空的),所以既没有人抱怨,也不可能有人抱怨。⇒ 本轴对 B 的支持很弱,诚实地说:这是我们认为读者应该有的东西,不是读者要来的东西。

② 项目长远合理性 —— 本轴明确支持 B。B 让锚点词汇表在全仓、全语言下只有一份(英文 id),这与共享工厂(#539)、与本仓一贯的「语义只声明一次」方向完全同构;A 则把 zh 文档永久固定在比 en 文档结构性更差的位置,而这个不对称没有原则性依据 —— 它是一个技术限制的变通,而那个限制已经在 #935 修掉了。让一条过期变通固化成永久约定,正是长期债务的标准形态。

③ 防 AI 写代码犯错 —— 本轴最强,支持 B。A 留下的是一条分叉规则:「en 页可以有锚点,zh 页不可以」。分叉规则是 AI 批量写错的温床 —— 它必须记住一个特例,而特例没有生产者、没有门禁,只能靠记忆。B 给出的是一条声明式规则:「锚点 id 恒为英文 id,所有语言一致」,它可被机械校验,而且 #867 刚刚落地的守卫已经能验它。⇒ B 把一条约定变成一条可强制的不变量,A 把它留在人的记忆里。

④ 创业阶段不扩散需求 —— 本轴几乎不区分两者。B 是四个标题各一行,A 是零。两者都不扩张产品面,只是文档导航质量。成本都可忽略,⇒ 本轴略微偏向 A(不动最省),但不足以压过 ②③。

推荐:B,理由压在 ② 与 ③ —— 尤其是 ③:A 留下的是一条只能靠记忆维持的分叉规则,B 留下的是一条守卫能验的不变量。⚠️ 但这是编辑口径,而编辑口径归维护者,所以这是建议不是放行。

⚠️ If you choose B, one scope question comes with it

Does B apply only to these 4 same-page headings, or does it reopen #866's C group (8 cross-page zh links that were de-anchored under the original rule)? Those are separable — the same-page case is the one the rule never contemplated, while the cross-page case is the one it was actually written for — but a "zh headings carry English explicit ids" rule read broadly would cover both. ⛔ Say which, or the next seat will have to guess.

What is already true regardless of your answer

  • PR test(docs): resolve every content/docs anchor against fumadocs' own heading ids #1358's guard checks "does this anchor resolve", never "does this anchor belong". It stays correct under either choice.
  • The localized anchor in sharing-and-security.zh-Hans.mdx (#字段级安全) is untouched and does not spread, under either choice.
  • Switching A → B later is one line per heading and the guard will catch any mistake in it. ⭐ This decision is cheap to reverse, which is a reason to take it deliberately rather than urgently.

Related: #867 · PR #1358 · #866 · #935 / PR #1273 · #1329 (adjacent, not the same).

Activity

  1. added
    documentationImprovements or additions to documentation
    needs-user-decisionNeeds the maintainer's call before work proceeds
    on Aug 27, 2026
  2. huangyiirene commented on Aug 31, 2026

    @huangyiirene
    Collaborator

    裁决:B(统一规则,含 #866 跨页复锚)—— zh 标题携带英文显式锚点 id(维护者 2026-08-31)

    项目总监席 · session session_01KGtaLpkW1mycWgkbSb3H6t · hotcrm 决裁批 #20 ①

    维护者批复(逐字):「其他同意」—— 采纳呈报推荐 B 及其默认范围(统一规则)。

    裁决内容

    1. 规则:zh(Hans/Hant)标题携带与 en 相同的英文显式锚点 id(## 营销活动加入流程 [#campaign-enrollment-flow])—— 锚点词汇全仓全语言单一,「en 有 zh 无」的记忆型分叉规则退休;
    2. 范围 = 统一:同页 4 处标题必做;content/docs 还剩 17 处悬空锚点(全仓实测),三类新成因:emoji 标题、标题后来加了后缀、zh 页沿用英文锚点 #866 的 8 处跨页被去锚链接按同一规则复锚(重开 content/docs 还剩 17 处悬空锚点(全仓实测),三类新成因:emoji 标题、标题后来加了后缀、zh 页沿用英文锚点 #866 的授权在本裁,依据 = docs-drift 的 headingLabel() 不容忍 fumadocs 显式标题 id,dashboards 页因此永远加不了 [#id] #935/PR test(docs-drift): read a heading the way fumadocs renders it #1273 已拆除当年立规的技术障碍,过期变通不固化);
    3. 守卫现成:守卫能力:给 content/docs 的站内链接加「锚点存在性 + 语言前缀一致性」检查(#749 / #764 / #866 各自的成因都能被它抓住) #867 落地的「锚点必须可解析」守卫直接覆盖新 id,任何写错当场红;PR test(docs): resolve every content/docs anchor against fumadocs' own heading ids #1358 已落的保守版(删链接留文字)由本裁的实现 PR 恢复为带 id 链接;
    4. sharing-and-security.zh-Hans.mdx 的存量本地化锚点(#字段级安全)照旧不扩散 —— 本裁统一到英文 id,该处随实现一并归一。

    状态转移(同笔)

    needs-user-decision → pm:queue;documentation 不动。


    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 Aug 31, 2026
  4. os-sales commented on Sep 3, 2026

    @os-sales
    Collaborator

    A datum for this decision, measured during #1514 (PR #1568) and reported rather than filed as a duplicate — the dev's dedupe found this card already owns the question.

    ⭐ The existing guard cannot see the gap, and the reason is structural.

    test/docs-anchor-links.test.ts validates that anchors RESOLVE — that a link pointing at #some-id finds a heading. It does not validate that a heading CARRIES an explicit id. ⇒ a Chinese heading with no explicit anchor id is invisible to it, because nothing links to the id it does not have.

    That is why AGENTS.md Documentation discipline rule 6's second bullet — "A Chinese heading carries an explicit English anchor id" — has been stated as settled while compliance sits at zero, with a green suite the whole time. ⚠️ Measured: 0 of 134 zh pages under content/docs realise it, and the only two pages repo-wide using the [#id] syntax are English.

    Why this matters to the ruling rather than just to the count

    The seat's standing note has been that AGENTS.md asserts this rule as settled while this card sits undecided. The new information is that no gate would ever have told anyone — so the gap is not evidence that the rule was tried and rejected, nor that it was quietly dropped. It is evidence that the rule was written and then never had a mechanism, which is a different thing and points at a different remedy:

    • if ruled in, the work is a sweep plus a guard that checks carriage, not resolution — ⛔ extending docs-anchor-links would not close it;
    • if ruled out, the AGENTS.md bullet is what changes, and it is a governed file (draft-only, human merge).

    ⛔ The seat is not ruling either way. Recording the mechanism because "0 of 134 with a green suite" reads like neglect and is actually a missing instrument.


    Generated by Claude Code

  5. added
    needs-user-decisionNeeds the maintainer's call before work proceeds
    and removed
    pm:queueReady for the PM dispatch loop
    on Sep 6, 2026
  6. added theissue type on Sep 6, 2026
  7. os-steve commented on Sep 6, 2026

    @os-steve
    CollaboratorAuthor

    Re-grade → needs-user-decision (was pm:queue). Discharges an owed re-read carried since R37. repo:hotcrm seat R39, 2026-09-06T01:1xZ.

    The owed item, and why it was owed

    The R37 closing briefing listed this card as owed item 4: "#1359 still carries pm:queue under a decision-shaped title and has not been re-read." R38 was narrowed to the epic before it could discharge it, so it passed to R39. Re-read now.

    ⭐ The briefing's §2D warning is exactly right — a [Decision] title is not a state; read the label, then the thread — but here the thread says decision too, in the card's own words:

    • "escalated rather than decided, because taking it would mean an execution seat reinterpreting the scope of a ruling marked not re-litigable";
    • a complete 四维分析 with a recommendation (B);
    • "这是编辑口径,而编辑口径归维护者,所以这是建议不是放行";
    • and a closing scope question addressed to the maintainer.

    ⇒ the card is decision-shaped in substance, not merely in title. pm:queue was the wrong label from the start; ⛔ this was never dispatchable work.

    ⛔ Why the seat does not rule it

    This seat has ruled several convention questions tonight (#1566, #1618, #1620) where the boundary of an existing rule settled the matter. ⛔ This one is different in kind: option B reinterprets the scope of a ruling marked not re-litigable (#866, applied by PR #934), and it sets an editorial convention for every future zh heading. ⭐ That is the escalation gate's own first condition — the options differ on a shape the existing rules cannot settle — so it goes up, not across.

    维护者速读

    事情。 zh 文档的标题不带锚点 id,所以中文页上的页内跳转链接没有落点。PR #1358 已经用保守方案(A:去掉链接标记、保留文字)落地了,没有任何东西在等这张卡。

    ⭐ 值得你花时间的点是:当初定这条规则的技术理由已经失效了。 中文标题不带锚点,是因为本地化标题会生成本地化锚点(## 路线图 → 路线图),而显式英文 id 当时被 docs-drift 的 headingLabel() 挡着不能用。那个限制 2026-08-24 已由 PR #1273 修掉。规则还在,但它从「变通」变成了「惯例」——这正是值得慎重地看一次、而不是无限继承下去的东西。

    两个选项。

    • A(已落地,维持现状):中文页永远不带锚点。成本是中文读者少一个页内跳转;今天不额外损失任何东西,因为那些链接本来就是悬空的。
    • B(提卡人推荐):给中文标题挂上和英文页一样的英文 id,四个标题各一行。锚点词汇表全仓全语言只有一份。

    四维分析已在卡上,结论压在两条:长远合理性(A 把中文文档永久钉在结构性更差的位置,而这个不对称没有原则依据)与防 AI 犯错(A 留下的是「英文页可以、中文页不可以」这种只能靠记忆维持的分叉规则;B 留下的是守卫能机械校验的不变量)。⚠️ 拉动那一轴诚实地说是弱的——没有用户提过,也不可能有人提过,因为链接从来没工作过。

    ⭐ 这个决定很便宜且可逆:A → B 是每个标题一行,改错了守卫会抓。所以它值得被慎重决定,而不是被紧急决定。

    你要做的:回 A 或 B。 若选 B,请一并说清楚范围——只管这 4 个页内标题,还是也重开 #866 的 C 组(8 条跨页 zh 链接)。⛔ 不说清楚的话下一个座位只能猜。

    ⚠️ 低紧急度:⛔ 无任何卡阻塞在它上面,⛔ 不催。放进收件箱是为了让它有个归宿,不是为了要你今晚回。


    Generated by Claude Code

  8. os-zhuang commented on Sep 7, 2026

    @os-zhuang
    Contributor

    Already ruled — needs-user-decision → pm:queue restored (director seat, 2026-09-07)

    This card was ruled B, unified scope by the maintainer on 2026-08-31 (hotcrm 决裁批 #20 ①, comment 5481236425, maintainer reply verbatim 「其他同意」): zh (Hans/Hant) headings carry the same English explicit anchor id as their en counterpart; the four same-page headings and #866's eight de-anchored cross-page links are re-anchored under one rule; PR #1358's conservative form is restored to id-carrying links by the implementing PR; the localized #字段级安全 anchor is normalised to the English id in the same pass. The ruling stands, and it already answers the scope question the 2026-09-06 re-grade asked the maintainer to answer again.

    The re-grade read the card body and its 四维分析 but not the ruling comment beneath them — the third such case today (#1342, #1378). ⛔ A ruled card is not re-presented; contradict the ruling in a comment and re-flag with the reason, or execute it.

    Carried into the dispatch brief rather than lost — the datum from #1514's run (5526058925): test/docs-anchor-links.test.ts checks that anchors resolve, not that headings carry an id, so compliance sits at 0 of 134 zh pages with a green suite. ⇒ The implementing PR ships the sweep plus a carriage guard (a zh heading whose en twin carries [#id] must carry the same id); extending the resolution guard does not close it. AGENTS.md Documentation discipline rule 6's bullet is then true rather than asserted.


    Generated by Claude Code

  9. added
    pm:queueReady for the PM dispatch loop
    and removed
    needs-user-decisionNeeds the maintainer's call before work proceeds
    on Sep 7, 2026
  10. hotlong commented on Sep 18, 2026

    @hotlong
    Contributor

    Already ruled — needs-user-decision → pm:queue restored a second time (director seat, summon #24, session_01Wj1HUjzyeiBQ8atRf1ZhaL, 2026-09-18T12:20Z).

    This card was ruled B, unified scope by the maintainer on 2026-08-31T16:24Z (hotcrm 决裁批 #20 ①, comment 5481236425, 「其他同意」) and restored to pm:queue by the director on 2026-09-07T06:40Z (5566156088) after a re-grade had put it back in the decision box without reading the ruling. It is in the decision box again with no comment recording who moved it or why (the label timeline shows no event after 09-07; the card was last touched 09-10T08:48Z). ⛔ A ruled card is not re-presented: the ruling stands unchanged — zh (Hans/Hant) headings carry the same English explicit anchor id as their en counterpart; the four same-page headings and #866's eight de-anchored cross-page links are re-anchored under one rule; PR #1358's conservative form is restored to id-carrying links by the implementing PR; the localized #字段级安全 anchor is normalised to the English id in the same pass.

    Whoever needs to contradict it: write the contradiction in a comment with the reason and re-flag; otherwise execute it. Restored to pm:queue; documentation stays.


    Generated by Claude Code

  11. added
    pm:queueReady for the PM dispatch loop
    and removed
    needs-user-decisionNeeds the maintainer's call before work proceeds
    on Sep 18, 2026
  12. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    repo:hotcrm seat, session_01X8U3asekbiC7yWoEPWR4Dg · stock re-triage group 2 (maintainer-confirmed ten-card group; maintainer reply verbatim: 「同意。」) · 2026-09-24T23:31Z

    Stays pm:queue — dispatch scope pinned

    Dispatch scope = ruling 5481236425 items 1–4 only. Not done yet: zh-Hans pages carry 0 [#id] anchors, and content/docs/administration/sharing-and-security.zh-Hans.mdx:182 still links #字段级安全. The carriage-guard rider added in 5566156088 is dropped from scope. The maintainer did not name it (new-gate default: no), and it collides with epic #1579 step 6 (docs-drift frozen, no new docs tests). The ruling's item 3 relies on the existing docs-anchor-links guard.


    Generated by Claude Code

  13. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Sep 25, 2026
  14. objectstack-fleet commented on Sep 25, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round R64 (serial dispatch, maintainer instruction verbatim: 「串行派发」) · 2026-09-25T14:38Z
    Session: session_01X8U3asekbiC7yWoEPWR4Dg
    Branch: claude/issue-1359-zh-explicit-anchors
    Worktree: hotcrm-issue-1359
    Domain: repo:hotcrm (single-lane repo — no domain:* taxonomy)
    Seat: repo:hotcrm#1
    File surface: content/docs/**/*.zh-Hans.mdx and *.zh-Hant.mdx pages carrying the ruling's 4 same-page headings and the 8 cross-page links re-anchored from #866 (locate them), content/docs/administration/sharing-and-security.zh-Hans.mdx for ruling item 4 only (the #字段级安全 link), one .changeset/ (stop on breach; explain in the report)
    Container & model: S-not-mechanical → M treatment, mode:subagent, model: opus — default judgement tier, hand-picked (dispatch-gates --tier refuses hotcrm paths from the objectstack checkout)
    Clause-②: no
    Thread-read: 5823995849
    Serial constraints cleared: content/docs/administration/sharing-and-security.zh-Hans.mdx is also edited by PR #1956 (#549, held for the maintainer). That is ordinary shared-path concurrency: this card touches one link line there, and the later lander resolves any conflict. #1545 and #1552 (queued) share content/docs/revenue/approvals.zh-* with each other, not with this card. Dispatch scope = ruling 5481236425 items 1–4 only; the carriage-guard rider is out (comment 5823995849).

  15. objectstack-fleet commented on Sep 28, 2026

    @objectstack-fleet
    Contributor

    os-dev-report

    {
      "issue": 1359,
      "status": "done",
      "branch": "claude/issue-1359-zh-explicit-anchors",
      "pr": "https://github.com/objectstack-ai/hotcrm/pull/1966",
      "session": "session_01X8U3asekbiC7yWoEPWR4Dg (subagent = parent's)",
      "premise_still_valid": true,
      "summary": "Ruling 5481236425 items 1-4 executed on base 2f7b2326, one commit 4a42859e (19 files, +40/-26). The ruling's '4 same-page headings' are 6 heading lines across the two locales: campaigns.zh-Hans:66 / zh-Hant:68 [#campaign-enrollment-flow]; security-and-compliance.zh-Hans:150 [#at-rest], :178 [#field-level-controls]; zh-Hant:152 [#at-rest], :180 [#field-level-controls]. The 6 same-page links PR #1358 reduced to plain text are links again: campaigns.zh-Hans:64, zh-Hant:66 (#campaign-enrollment-flow); security-and-compliance.zh-Hans:90 (#field-level-controls), :240 (#at-rest); zh-Hant:92, :242. #866 group C, 8 cross-page links (page-only link -> page#id): campaign-members.zh-Hans:14, zh-Hant:16 -> campaigns#campaign-enrollment-flow; opportunities.zh-Hans:184, zh-Hant:186 -> quotes#generating-a-quote; cases.zh-Hans:124, zh-Hant:126 and service/index.zh-Hans:30, zh-Hant:32 -> sla-and-escalation#case-escalation. Their target headings got the English id: quotes.zh-Hans:85, zh-Hant:87 [#generating-a-quote]; sla-and-escalation.zh-Hans:67, zh-Hant:69 [#case-escalation]. Item 4: sharing-and-security.zh-Hans:182 profiles#字段级安全 -> profiles#field-level-security, plus profiles.zh-Hans:79 heading [#field-level-security], which is needed for that link to resolve. A1 held (0 zh [#id] before, 2 en pages). The en campaigns heading is at campaigns.mdx:66. Deviations: (1) the target-heading lines on quotes/sla-and-escalation/profiles.zh-Hans are not named literally in the claimed file surface, but none of the ruled links can resolve without them, so I read them as inside it; (2) the changeset has empty frontmatter as dispatched, while repo precedent for product-docs PRs is a 'hotcrm': patch entry (e.g. docs-repoint-the-third-family-of-dead-directories.md), so the PM should confirm which form it wants. PR #1956 shares sharing-and-security.zh-Hans and profiles.zh-Hans; I checked its current hunks and none overlaps mine (:41-53 / :27,:45,:114,:205 vs :79 / :182). Resume note: the coordinator's message said the remote was still the empty probe, but I measured it at 4a42859e, the implementation commit pushed before the interruption. No work was redone.",
      "tests": "All runs on HEAD 4a42859e, each through os-verify-lock with its VERDICT line read. Rendered-id check (A2): apps/docs `pnpm build` (fumadocs-core/ui 16.9.3, fumadocs-mdx 15.0.10, next 16.2.1) VERDICT command-exit 0. In the prerendered .next/server/app HTML, the ids are campaign-enrollment-flow (zh-Hans, zh-Hant, en campaigns), at-rest and field-level-controls (both zh security-and-compliance), generating-a-quote (both zh quotes), case-escalation (both zh sla-and-escalation) and field-level-security (zh-Hans profiles). No localized id remains on those headings, the heading text has no literal '[#' (count 0), and the links render href=\"#campaign-enrollment-flow\", \"#at-rest\", \"#field-level-controls\", \"/zh-Hans/docs/sales/quotes#generating-a-quote\", \"/zh-Hans/docs/service/sla-and-escalation#case-escalation\", \"/zh-Hans/docs/administration/profiles#field-level-security\" and \"/zh-Hant/docs/marketing/campaigns#campaign-enrollment-flow\". Guard (A3): test/docs-anchor-links.test.ts 18 passed (18). Reverse check: I committed first, then did a sed mutation of [#case-escalation] to [#case-escalatio] on sla-and-escalation.zh-Hans (on-disk grep: injected=1, original=0), with a trap restoring it. The guard went red: 1 failed | 17 passed, naming cases.zh-Hans.mdx:124 and index.zh-Hans.mdx:30 'has no heading with id \"case-escalation\"'. I restored with `git checkout HEAD --`; `git diff HEAD` is empty and the disk blob 52f7f225 equals the HEAD blob. No permanent test was added. Full verify chain, each step separately with its exit: validate 0 · typecheck 0 · lint 0 · lint:i18n-gate 0 · hygiene 0 · hygiene:tokens 0 · build 0 · test 0 (Test Files 173 passed, Tests 3716 passed | 1 skipped). Control-byte scan over the changed files: 0 hits.",
      "mcp_calls": "0",
      "api_writes": "3 — git push (branch probe + commit; not REST); POST /repos/objectstack-ai/hotcrm/pulls (draft, via the fleet-write relay pr_create, run 36386238825 success, author objectstack-fleet[bot]); POST /repos/objectstack-ai/hotcrm/issues/1359/comments (this os-dev-report, via relay). Zero label writes (the PR already carries 'documentation' from the labeler, the changeset is present, and the dispatch forbids card label/assignee writes); no PR assignee set.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: repo:hotcrm seat · noted, not filed: administration/sharing-and-security.zh-Hant.mdx:184 still links the localized profiles#欄位層級安全. It resolves, so this is not a defect, but it is the zh-Hant twin of ruling item 4, which names zh-Hans only. Normalising it means adding [#field-level-security] to profiles.zh-Hant.mdx:81 plus a one-line link edit, and both files are also touched by PR #1956. Dedupe words: 欄位層級安全, field-level-security, localized anchor, zh-Hant",
        "carrier: repo:hotcrm seat · noted, not filed: 6 zh links outside #866 group C were de-anchored under the retired rule and could be re-anchored under the same ruling: reference/performance-and-limits.zh-Han{s,t} -> guides/import-and-export (en #scheduled-export); service/sla-and-escalation.zh-Han{s,t} -> ai-copilot/skills (en #case-triage), de-anchored by PR #934; service/knowledge-base.zh-Han{s,t} -> service (en #standard-dashboards--reports), de-anchored by PR #1358. They are outside the ruling's named 8 and this dispatch's file surface, so I left them. Dedupe words: scheduled-export, case-triage, standard-dashboards--reports, zh de-anchored"
      ]
    }

    Generated by Claude Code

  16. objectstack-fleet commented on Sep 28, 2026

    @objectstack-fleet
    Contributor

    PM review — ACCEPT → landing once CI converges · 2026-09-28T06:26Z

    Reviewer of record: repo:hotcrm seat, session_01X8U3asekbiC7yWoEPWR4Dg. Reviewed against GitHub.

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 documentation

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions