Skip to content

restatement 类只是记账、没有断言:12 条 README 版本重述与自家 package.json 的逐字一致靠人复核(#3710 分诊裁的 B 只落地了一半) #3717

Description

@yinlianghui

这是 #3710 分诊裁决 B 的剩余部分,据实另立而不是悄悄不做。

背景:B 裁了什么

#3710 正文留了 A/B 两条路,分诊在 #3710 (comment) 明确裁 B「保留并钉住」,理由是这一族与 #3708 那族的关键差别在于有同包锚:

加一条测试断言每个 README 的 peer 重述与本包 peerDependencies 逐字一致 …… B 只是把「记录」升级成「断言」。

落地了多少

#3710 的实现 PR(与 #3708 / #3709 并卡)完成了 B 的前半段:

  • packages/layout/README.md 三条 peer 行收窄为与清单逐字一致;
  • packages/plugin-chatbot/README.md@ai-sdk/react 主版本对齐清单;
  • ledger 里这两条从 kind: 'stale' 改判为 kind: 'restatement'

没有落地的是后半段:那条断言。 原因是该 PR 的派发文件面把 scripts/__tests__/doc-version-claims.test.ts 的可改范围限定在 KNOWN_CLAIMS 行,新增断言超出该范围,故按「越界即停」记录而非自行扩权。

今天的实际保障强度

doc-version-claims.test.ts 的棘轮问的是「这个版本字面量有没有被登记」,不是「它说得对不对」。所以 12 条 restatement 条目声称的「与本包清单逐字一致」目前由 why 字段里一句 "re-verify with a one-line read of the manifest" 兜着 —— 即人工复核。

这正是它防不住的形状:清单侧改了区间、README 没跟,字面量还在、条目还在,棘轮两个方向都不响。#3690 就是这个形状的活样本(plugin-report 的 README 与清单不符,门禁只能把它记成 stale,不能自己发现)。

可行性已被本轮测量证实

一个必须一起决定的边界

断言写「逐字一致」时,plugin-chatbot 那条要单独处理:它重述的是 dependencies["@ai-sdk/react"](^4.0.47)的主版本(v4),不是逐字。要么把断言限定在 peer 行、把它留在 restatement 但标注不受断言覆盖;要么定义一个「主版本一致」的弱断言。倾向前者 —— 一条规则只判一种事实,混判会让下一个读者说不清红的是什么。

已搜重

README peerDependencies pin manifest assertion版本 文档 失真 drift docs version 两组关键字搜过开放 issue,除 #3708 / #3709 / #3710 / #3690 外无命中。


Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions