Repository navigation
docs-gen: 模块 JSDoc 按行拆成段落,跨行的行内代码跨度被切断 —— 5 张参考页正文露出裸反引号和 \{ 转义痕迹 #5553
Description
Activity
分诊:
pm:queue+domain:spec。- 落点锚定:修复在
packages/spec/scripts/build-docs.ts的getFileDescription(origin/main:211 实测仍在),连带重跑gen:docs的生成物 —— packages/spec 及其生成物归domain:spec。(注:domain:spec-tooling车道边界仍在决策箱 域标签词表有两个未入表条目:domain:spec-tooling(在用,文件面与 devx 完全重叠)与domain:ui(一例,与repo:objectui重复) #5469 待裁,现行域表下 spec 脚本归 spec 座位。) - 具体缺陷 + 复现 + 验收标准齐全(奇数反引号扫描归零、
flow-function.mdx恢复完整行内代码),可直接派发。 - 与 docs-gen:
.describe()里的{{var}}在生成的参考文档里被转义成 `{{var}+ 游离的}`(main 上现存 3 处) #5452/PR fix(spec): docs-gen 把嵌套花括号整对包进行内代码,不再切成半对 (#5452) #5550 无重叠:两条不同转义路径(escapeMdxDescriptionvsgetFileDescription),fix(spec): docs-gen 把嵌套花括号整对包进行内代码,不再切成半对 (#5452) #5550 落地后本缺陷实测仍在,issue 正文已自证。 - 查重:三仓无
getFileDescription/ docs-gen 段落切分相关影子单。
本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
- 落点锚定:修复在
疑似域误标:本单落点在 docs-gen 生成器(
packages/spec/scripts/**,C 包 #5163 文件面),不触packages/spec/src/**/*.zod.ts,建议改标domain:spec-tooling——交分诊座位定夺。背景:维护者 2026-08-06 拍板 spec 车道缩盘方案,见 #5837。
Generated by Claude Code
标签落实(维护者 2026-08-06 指示,session_01LeEfA7CFwbJb7JJmXm2KM3):按 08-06 转席建议执行
domain:spec→domain:spec-tooling(缩盘方案 #5837 已拍板,落点 docs-gen 生成器)。
Generated by Claude Code
认领:PM 循环第 5 轮(spec-tooling 车道,座位登记 #6018)
会话:session_014wsZeReNTqiceBfLb5Pyf5
分支:claude/issue-5553-file-description-rendering
Worktree:objectstack-issue-5553
域:domain:spec-tooling与 #6136 打包为同一次派发(一个 PR,双
Fixes):落点核实后两单同落packages/spec/scripts/lib/file-description.ts(#6134 今日新建的描述提取/渲染模块),且同属一条渲染链上的两个独立缺陷。分开派会各付一次content/docs/references/**重生成并互相埋 diff——打包成本更低,duplicate-fix-guard 只拦「两个 PR 声明同一 issue」,一个 PR 声明两个 issue 合规。文件面:
packages/spec/scripts/lib/file-description.ts+packages/spec/scripts/file-description.test.ts+content/docs/references/**重生成 +.changeset/*.md。⛔ 不碰build-docs.ts(#5853 下轮)、lib/format-type.ts(#5340 本轮并行)、build-schemas.ts(#5371 本轮并行)、zod 文件。(越界即停,报告说明)
Generated by Claude Code
- added a commit that references this issue
on Aug 7, 2026
在实施 #5452(
.describe()的花括号转义)时,给生成语料做配平扫描顺带发现的另一条独立缺陷。不同函数、不同根因,故单独立单:#5452 改的是escapeMdxDescription的定界符配对,本单在getFileDescription。现象(origin/main @
5acb93add,#5452 的 PR #5550 重生成后依然如此)packages/spec/scripts/build-docs.ts的getFileDescription把模块级 JSDoc 的每一行用\n\n连接:于是任何跨源码行的 Markdown 构造都被段落边界切断。行内代码跨度不能跨空行,所以两边的反引号都当字面量渲染出来。
扫描生成语料(排除围栏代码块,统计反引号数为奇数的行)得 10 行 / 5 张页面 = 5 个被切断的跨度:
最直观的一处,
automation/flow-function.mdx:22-24:读者看到的是两个段落,中间一个孤立的反引号开头、另一个反引号结尾 —— 而源码里它本是一个完整的行内代码例子:
security/explain.mdx:8同理把`explain(principal, object, operation)`从中间劈开。为什么
\{会露出来(次生现象)同一函数末尾对花括号做无差别反斜杠转义:
它不区分「在代码跨度里」还是「在正文里」。跨度没被切断时,
\{落在行内代码内部,而代码跨度里反斜杠不是转义符,读者就会看到字面的\{。上面 5 处因为跨度已经断了,\{反而当正文转义正常渲染成{—— 两个缺陷互相掩盖,所以肉眼扫过去只觉得「反引号有点怪」。注意这条转义路径和 #5452 修的是两条不同的路径:
.describe()走escapeMdxDescription(包进行内代码),模块 JSDoc 走这里(反斜杠转义)。#5452 的修复不触及本单。修法方向(未验证)
两点都在
getFileDescription里:escapeMdxDescription那样感知反引号:已在行内代码里的花括号不需要任何转义(代码跨度天然不被 MDX 当表达式解析),不在代码里的才需要处理。改完重跑
pnpm --filter @objectstack/spec gen:docs,验收:上面的奇数反引号扫描归零,且flow-function.mdx那句恢复成单个完整的行内代码例子、不含\{。影响面
5 张已发布参考页的正文段落,读者今天访问就能看到。纯展示层,无运行时/协议语义。