• 手工扫了两轮,扫出的是三类会持续复发的失真,不是零星笔误:
      ① package.json 里 12 处引用指向从未在 git 历史存在过的文件(server/src/cli/auto-dev.js 一族)
      ② CLAUDE.md 的 docs/ 那行列了 5 个文件名,文档移进 done/ 之后全成死链
      ③ 数据存储整节把两个不同的 data 根当成一个写,server/conversations/ 这个路径根本不存在
    
    共性是**不报错、不影响测试、git status 干净**,只有照着做的人(或 agent)撞墙才发现。
    而 CLAUDE.md 是每个会话都会加载进上下文的文件 —— 写错等于把错误信息直接灌给每一个后来者。
    
    四条扫描:
      - CLAUDE.md 里的仓库路径都存在
      - CLAUDE.md 里出现的每条 npm run 都在 package.json 里(守反方向:删脚本忘改文档)
      - package.json 的 scripts / bin / main 指向的文件都存在
      - docs/README.md 的相对链接都指向真实文件
    
    判据刻意窄(本仓库有过「防线被整条注释掉」的教训):路径只认「以仓库顶层目录开头 + 含 /」,
    且跳过 gitignored 的 —— 那是运行态产物(web/dist/、data/companies/、skills/),在干净机器上
    本来就不存在,缺席不是文档错误;这与 no-stale-templates-path.test.js 用的是同一条判据。
    上下文里的相对片段(_base/、todo/future/)、glob、<repo>/… 示意写法一律不判。
    
    四条各带「样本非空」下限断言(当前 26 路径 / 16 script 名 / 6 入口引用 / 22 链接),
    下限取当前值一半左右:正则一写错就会以「零违例」全绿,那和没有这条测试是一回事。
    
    验证:把同一套判据跑在旧 revision 的文件内容上(只读 git,不碰工作区)——
      3e718aa:路径 ❌3 条、入口 ❌10 条
      d6214f8:路径 ❌4 条、入口 ❌10 条
      HEAD   :全绿
    顺带修掉自己写的一处假路径占位符(`data/xxx` → 「以 `data/` 开头的路径」),
    文档里本来就不该出现假路径。
    
    28-followups 守卫清单补到第六条,并写明后两条与前四条的形状差异。
    npm run test:unit 1061/1061 绿。
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    yibo authored
     
    Browse File »