越界发现,记录于 #3735 / PR #3864(给 skills/** 的反引号仓内路径上门禁)实施期间。按纪律只报不改,单独立单,未认领。
#3735 正文与分诊评论都把「要不要连 content/docs/** 一起纳入」留成一个范围问题,并援引 check-doc-links.mjs 自家 docblock 的历史(#3479 / #3490 / #3545:一次扩面就要连带清红)裁定扩面须先量红。本单就是那个读数,用刚落地的同一个抽取器(scripts/check-skills-paths.mjs 的 extractPathTokens,而不是另写一个像它的东西)量的,所以数字和门禁的判定口径一致。
实测(main@6422aa891,PR #3864 的树)
content/docs/** 的 183 个 .md / .mdx,113 条路径断言,10 条不存在(9 个不同 token):
| 位置 |
token |
看起来是哪一类 |
guide/ci-cd-pipeline.md:166、:174 |
apps/dev-server |
刻意的否定句 ——「Today there is no apps/dev-server and no such job」,整段就是在讲它已被删除 |
guide/ci-cd-pipeline.md:455 |
content/docs/guide/foo.md |
反例示范 ——「链接按路由写,不是写 content/docs/guide/foo.md」 |
guide/ci-cd-pipeline.md:495 |
apps/console/src/context/ |
刻意的否定句,且这一行是 PR #3864 自己新加的一节里引述 console-development.md 的那句话 —— 扩面若落地,这一处要同步进豁免 |
guide/deployment.md:13 |
apps/console/dist/ |
构建产物,只在 vite build 之后存在 —— 扩面需要一条规则,不是一条豁免 |
utilities/runner.mdx:206 |
packages/plugin-yourplugin |
模板占位(读者替换成自己的包名),但拼法里没有 glob 也没有角括号,规则抓不到 |
guide/plugin-development.md:53 |
packages/plugin-board/ |
疑似真死路径:全仓没有这个包 |
guide/troubleshooting.md:168 |
packages/react/src/context/ThemeContext |
疑似真死路径(无扩展名,可能本意是模块而非文件) |
utilities/runner.mdx:146 |
packages/runner/src/app-data/ |
疑似真死路径 |
rfcs/0001-clipboard-paste.md:477 |
content/docs/guide/clipboard-paste.md |
疑似真死路径:该 guide 页不存在 |
为什么这不是「把 skills 的门禁 SCAN_ROOT 加一行」那么简单
信噪比与 skills/** 差一个量级,而且差的不是数量而是类别:
所以本单的结论倾向是:先修那 4 条疑似真死路径(它们对读者是实打实的错坐标,与门禁存不存在无关),扩面另算一单并且先决定那几类的规则形状 —— 而不是把两件事捆在一起。严重度与拆法留给分诊裁。
关联
已就关键词(content/docs backtick path gate、plugin-board、apps/dev-server、check-skills-paths、路径不存在)搜过本仓开放 issue,无同源单。
越界发现,记录于 #3735 / PR #3864(给
skills/**的反引号仓内路径上门禁)实施期间。按纪律只报不改,单独立单,未认领。#3735 正文与分诊评论都把「要不要连
content/docs/**一起纳入」留成一个范围问题,并援引check-doc-links.mjs自家 docblock 的历史(#3479 / #3490 / #3545:一次扩面就要连带清红)裁定扩面须先量红。本单就是那个读数,用刚落地的同一个抽取器(scripts/check-skills-paths.mjs的extractPathTokens,而不是另写一个像它的东西)量的,所以数字和门禁的判定口径一致。实测(
main@6422aa891,PR #3864 的树)content/docs/**的 183 个.md/.mdx,113 条路径断言,10 条不存在(9 个不同 token):guide/ci-cd-pipeline.md:166、:174apps/dev-serverapps/dev-serverand no such job」,整段就是在讲它已被删除guide/ci-cd-pipeline.md:455content/docs/guide/foo.mdcontent/docs/guide/foo.md」guide/ci-cd-pipeline.md:495apps/console/src/context/console-development.md的那句话 —— 扩面若落地,这一处要同步进豁免guide/deployment.md:13apps/console/dist/vite build之后存在 —— 扩面需要一条规则,不是一条豁免utilities/runner.mdx:206packages/plugin-yourpluginguide/plugin-development.md:53packages/plugin-board/guide/troubleshooting.md:168packages/react/src/context/ThemeContextutilities/runner.mdx:146packages/runner/src/app-data/rfcs/0001-clipboard-paste.md:477content/docs/guide/clipboard-paste.md为什么这不是「把 skills 的门禁 SCAN_ROOT 加一行」那么简单
信噪比与
skills/**差一个量级,而且差的不是数量而是类别:skills/**:86 条断言 / 1 条不存在,那 1 条是刻意的否定句 —— 一条豁免解决。content/docs/**:113 条断言 / 10 条不存在,里面至少有三个新类别是现有三条排除规则(含空白、含 glob 或占位段、围栏块)都覆盖不到的 —— 刻意的否定句、反例示范、构建产物、无标记的模板占位。逐条塞豁免名单会把名单直接变成垃圾场(docs(skills): guide 里反引号包裹的仓内路径无任何门禁校验 —— #3713/#3730 两轮 13+ 处死路径都是靠人肉发现的 #3735 明确要防的事);要落地更可能得先给这几类各想一条规则。所以本单的结论倾向是:先修那 4 条疑似真死路径(它们对读者是实打实的错坐标,与门禁存不存在无关),扩面另算一单并且先决定那几类的规则形状 —— 而不是把两件事捆在一起。严重度与拆法留给分诊裁。
关联
scripts/check-doc-links.mjs—— 已经在扫content/docs/**,但它判的是 markdown 链接,反引号里的裸路径不在它眼里,所以这一类它一条也看不见。scripts/README.md讲两个不存在的脚本)—— 同一族「文档里的坐标没人校验」,但那份文件既不在check-doc-links的SCAN_ROOTS里,也不在本门禁的扫描面里,是第三个面。已就关键词(
content/docs backtick path gate、plugin-board、apps/dev-server、check-skills-paths、路径不存在)搜过本仓开放 issue,无同源单。