在实施 #6229(PR #6408,../ 前缀漏在链接外面)时顺带扫出,非本单范围,按 Prime Directive #10 独立记录。⛔ 未自我认领。
观察
packages/spec/scripts/lib/file-description.ts 的 bare-path 改写步骤,正则两端各带一个前后瞻:
它们的作用是「前面不是左括号、后面不是右括号」。于是任何写在圆括号里的裸源码路径一律不被改写 ——
既不成链接,也不成行内代码,原样落成纯文本。而语料里其它位置的裸路径都会变成链接或代码段。
已发布的 4 处(路由都存在,不是死链问题,是根本没链)
| 页面 |
行 |
文本 |
对应参考页 |
content/docs/references/automation/etl.mdx |
16 |
- **Enterprise Connector** (integration/connector.zod.ts) - … |
/docs/references/integration/connector ✅ 存在 |
content/docs/references/integration/connector.mdx |
17 |
- **ETL Pipeline** (automation/etl.zod.ts) - … |
/docs/references/automation/etl ✅ 存在 |
content/docs/references/shared/mapping.mdx |
16 |
- Integration connectors (integration/connector.zod.ts) |
/docs/references/integration/connector ✅ 存在 |
content/docs/references/shared/mapping.mdx |
17 |
- External lookups (data/external-lookup.zod.ts) |
/docs/references/data/external-lookup ✅ 存在 |
源分别在 packages/spec/src/automation/etl.zod.ts:18、integration/connector.zod.ts:20、
shared/mapping.zod.ts:15-16。
讽刺的是 etl.mdx 同一页上,{@link} 写法的那条是链接(#6136 修的那条),而正上方括号里的同一个
integration/connector.zod.ts 是纯文本 —— 同一页、同一个目标、两种待遇。
为什么这对 lookaround 现在是残留
它们是 #6136 之前的防嵌套手段:那时改写器直接跑在已含 markdown 链接的整串上,只能靠「前面不是 (、
后面不是 )」勉强躲开链接的 ](route) 部分。PR #6224 把这一步改成分词器方案后,已成形的链接是
link 段、行内代码是 code 段,本步骤根本看不到它们 —— 该文件模块注释自己写着「lookaround 表达不了
『不要嵌在链接里』」。防嵌套的职责已经整体转移,这对 lookaround 只剩下误伤圆括号里的正常散文这一个
实际效果。
(?<!\() 与 (?!\)) 是一对,#6229 只动中间的前缀与 \b,两端一字未改,所以 PR #6408 落地后这条依旧成立。
复现
// 现状:无匹配,整串保持纯文本
'see (system/cache.zod.ts) here'.replace(/(?<!\()((?:\.\.\/)*\b[\w-]+\/[\w.-]+\.zod\.ts)\b(?!\))/g, 'X')
为什么没有随 #6229 一起修
不同的输入形态、不同的成因(#6229 是匹配起点,这条是匹配两端的守卫),而且删掉这对 lookaround
是放宽改写器的行为面 —— 会让此前从不成链接的一类位置开始产出链接,超出 #6229 的验收范围。契约优先:
该在产出侧(改写器)裁决要不要放宽,不该在别处兜底。
影响面(据实,不夸大)
无运行时影响,check:docs / check:generated / 全语料 MDX 编译在现状下全绿 —— 产物忠实复现了
改写器的行为,门禁看不见这类「本该有链接却没有」。代价是 3 张已发布页上 4 个导航出口缺失。
不自评级别,留待分诊。
去重
已翻过三仓 336 条 open issue/PR,按 file-description、docs-gen、lookahead/lookbehind、裸露、
链接 本地匹配。同族三单都是别的输入形态,不重复:#6136(untitled {@link} 嵌套链接)、
#6229(../ 前缀,本单母体)、#5853(getCategoryTitle() 大小写)。
⚠️ 与 #6373 方向相似但不是一回事:那条是手写的 quick-reference.mdx 表格里缺链接目标,
本条是生成器在参考页上系统性地漏掉一类位置。修法与文件面零重叠。
在实施 #6229(PR #6408,
../前缀漏在链接外面)时顺带扫出,非本单范围,按 Prime Directive #10 独立记录。⛔ 未自我认领。观察
packages/spec/scripts/lib/file-description.ts的 bare-path 改写步骤,正则两端各带一个前后瞻:/(?<!\()( … )\b(?!\))/g它们的作用是「前面不是左括号、后面不是右括号」。于是任何写在圆括号里的裸源码路径一律不被改写 ——
既不成链接,也不成行内代码,原样落成纯文本。而语料里其它位置的裸路径都会变成链接或代码段。
已发布的 4 处(路由都存在,不是死链问题,是根本没链)
content/docs/references/automation/etl.mdx- **Enterprise Connector** (integration/connector.zod.ts) - …/docs/references/integration/connector✅ 存在content/docs/references/integration/connector.mdx- **ETL Pipeline** (automation/etl.zod.ts) - …/docs/references/automation/etl✅ 存在content/docs/references/shared/mapping.mdx- Integration connectors (integration/connector.zod.ts)/docs/references/integration/connector✅ 存在content/docs/references/shared/mapping.mdx- External lookups (data/external-lookup.zod.ts)/docs/references/data/external-lookup✅ 存在源分别在
packages/spec/src/automation/etl.zod.ts:18、integration/connector.zod.ts:20、shared/mapping.zod.ts:15-16。讽刺的是
etl.mdx同一页上,{@link}写法的那条是链接(#6136 修的那条),而正上方括号里的同一个integration/connector.zod.ts是纯文本 —— 同一页、同一个目标、两种待遇。为什么这对 lookaround 现在是残留
它们是 #6136 之前的防嵌套手段:那时改写器直接跑在已含 markdown 链接的整串上,只能靠「前面不是
(、后面不是
)」勉强躲开链接的](route)部分。PR #6224 把这一步改成分词器方案后,已成形的链接是link段、行内代码是code段,本步骤根本看不到它们 —— 该文件模块注释自己写着「lookaround 表达不了『不要嵌在链接里』」。防嵌套的职责已经整体转移,这对 lookaround 只剩下误伤圆括号里的正常散文这一个
实际效果。
(?<!\()与(?!\))是一对,#6229 只动中间的前缀与\b,两端一字未改,所以 PR #6408 落地后这条依旧成立。复现
为什么没有随 #6229 一起修
不同的输入形态、不同的成因(#6229 是匹配起点,这条是匹配两端的守卫),而且删掉这对 lookaround
是放宽改写器的行为面 —— 会让此前从不成链接的一类位置开始产出链接,超出 #6229 的验收范围。契约优先:
该在产出侧(改写器)裁决要不要放宽,不该在别处兜底。
影响面(据实,不夸大)
无运行时影响,
check:docs/check:generated/ 全语料 MDX 编译在现状下全绿 —— 产物忠实复现了改写器的行为,门禁看不见这类「本该有链接却没有」。代价是 3 张已发布页上 4 个导航出口缺失。
不自评级别,留待分诊。
去重
已翻过三仓 336 条 open issue/PR,按
file-description、docs-gen、lookahead/lookbehind、裸露、链接本地匹配。同族三单都是别的输入形态,不重复:#6136(untitled{@link}嵌套链接)、#6229(
../前缀,本单母体)、#5853(getCategoryTitle()大小写)。quick-reference.mdx表格里缺链接目标,本条是生成器在参考页上系统性地漏掉一类位置。修法与文件面零重叠。