任务:手册按章节挂树,命令字面交叉链接,抽适用条件

依据:docs/hub-r4-kb-direction.md 第一、三节,K01、K02、K04(node tools/show-element.ts K01 K02 K04)。现在的手册生产器(packs/product/famx/functions/manual.ts)只把命令锚挂到 /commands/...,其余段落都留在根下标“未归位”。所有者定的落点规则是:

  • 字面能定的直接挂;
  • 无锚散文按源自身的章节层级挂到章节节点,再按命令字面做交叉链接,不能留在根下;
  • 跨叶主张挂最近公共祖先,不造合成路径。

适用条件(型号、平台、起止构建)由生产器从源结构里抽,抽不出的记“未声明”。

adoc 原件的来源所有者还没给出,这一件先以 md 为输入。但要做成只依赖“带章节路径的文档模型”,以后换成 adoc 的解析结果时生产器不用改。

  • 分支和工作树:kb-sections,目录 circle-hub-kb-sections(依赖已装好)
  • 可以改的路径:
    • hub/refs/parsers/markdown.ts 和它的测试:模型里每个块带上章节路径;
    • packs/product/famx/functions/manual.ts、producers.ts、相关测试和样例;
    • packs/product/famx/README.md;
    • hub/knowledge/** 只在落点机制确实需要时改,先回报。

    别的路径不动;合约缺什么先回报。

  • 规则:同前(不推送、不建 PR、不发布、不部署;不碰 7420、钥匙串、环境配置文件和任何真实系统;测试只用合成数据;git commit -s)。
  • 验证:npx tsc --noEmit;node --test --test-concurrency=1 对 hub/refs/**、hub/knowledge/**、packs/product/**;node tools/gen-contracts.ts --check。

要做的

  1. 文档模型带章节路径:markdown@1 的模型里,每个块给出它所在的章节路径(标题层级串起来)。路径的写法要稳定、可做引用选择器;标题重复、跳级、标题之前的内容都要有确定的处理,写进 README。
  2. 生产器的落点:
    • 命令锚照旧挂 /commands/<词>。
    • 其余块按章节路径挂到章节节点,章节节点放在一个和 /commands 分开的手册命名空间下(例如 /manual/<手册>/<章节路径>;最后的写法等集成者转来调研 2 的结论再定,先按这个做)。
    • 块里出现的、在本构建命令目录里能解析的命令字面,做成交叉链接,记在条目的 data 里,指向命令路径,不复制内容。
    • 一个块跨多个章节、或者结论涉及多个叶子时,挂最近公共祖先。
    • 不再有“根下未归位”的手册段落;真找不到章节的(例如标题之前的前言),挂手册命名空间的根节点。
  3. 适用条件:从章节或句子里明确写出的条件抽型号、平台、起止构建,写进条目的 applicability;抽不出的为 null(未声明)。哪些写法算明确、哪些不抽,写进 README;不靠猜。
  4. SyntheticReference 的 catalog.json 先照旧读(签名、取值域、示例),作为过渡,在 README 里注明“等 adoc 生产器取代”。
  5. 测试:全部用合成手册,章节嵌套、重复标题、跨章节的命令、带平台条件的段落、没有条件的段落都要有;同样的输入两次产出字节相同;根摘要只随内容变。

完成后在终端里回报:提交号、测试数量、没做完或拿不准的地方。