越界发现,记录于 #3632(改写 packages/runner/README.md 的插件清单)期间通读该文件时。未在 PR #3644 中顺手修改 —— #3632 的派发范围被锁死在两处插件措辞,且本条波及 35 个文件、根因在发布流程而非某个 README,形状上不属于那一单。
编辑说明:本文首版正文里那个 HTML 注释标记被 GitHub 的正文净化器当成真标签整段吞掉了(存下来是空串),证据因此丢失。现改用转义写法复述,不再写裸的注释语法。
事实(对 origin/main 复核,切点 fa3ba5bf1)
35 个包 README 末尾有一段生成块 §Compatibility,块前有一行 HTML 注释形式的标记,内容为 release-metadata:v3.3.0(即 <!-- + release-metadata:v3.3.0 + -->)。35 个包的这一块逐字相同:
## Compatibility
- **Node.js:** ≥ 18
- **TypeScript:** ≥ 5.0 (strict mode)
- **`@objectstack/spec`:** ^3.3.0
- **`@objectstack/client`:** ^3.3.0
- **Tailwind CSS:** ≥ 3.4 (for packages with UI)
与实现对不上,两处:
1. spec 版本差了一个大版本区间。 27 个包的 package.json 把 @objectstack/spec 锁在 ^17.0.0-rc.5,没有任何一个包锁 ^3.3.0:
$ grep -l 'objectstack/spec.*\^3\.3\.0' packages/*/README.md | wc -l
35
$ grep -l '"@objectstack/spec": "\^17' packages/*/package.json | wc -l
27
$ grep -rh '"@objectstack/spec"' packages/*/package.json | sort | uniq -c
26 "@objectstack/spec": "^17.0.0-rc.5",
3 "@objectstack/spec": "^17.0.0-rc.5"
复现标记行本身(用 -F 免转义):
$ grep -rc -F -- 'release-metadata:v3.3.0' packages/*/README.md | grep -vc ':0'
35
$ ls packages/*/README.md | wc -l
38
2. 列了并不存在的依赖。 以 packages/runner 为例,它的 package.json 里 @objectstack/client 既不在 dependencies 也不在 devDependencies,README 却给它标了一行兼容版本。(生成块逐字相同,所以凡是不依赖 client 的包都有这一行。)
影响与定级
这些 README 是 npm 包页正文,是安装前读到的第一手兼容性说明。照 ^3.3.0 装 spec 的读者拿到的是一个差了十几个大版本的包。定级留给分诊 —— 按纪律不自评。
需要注意的是这不是逐个 README 手写出来的漂移:那行 release-metadata:v3.3.0 标记说明整块是发布时按模板生成的,35/38 个包 README 逐字一致。所以修法多半在生成这块的发布脚本(让版本号取自真实 pin,并按包裁掉它不依赖的行),而不是 35 次手改 —— 手改会在下次发布被再次覆盖。这一点请分诊时确认,我没有去定位那个生成脚本(越界)。
已搜重
关键字 Compatibility README objectstack/spec version、release-metadata Compatibility block package README、runner README plugins 搜过开放 issue,total_count: 0 / 仅命中 #3632 与 #3603,无重复。与 #3603(包 README 里 9 条 404 站内链接)同为「包 README 未被门禁覆盖」的邻域但不同缺陷:那单是链接可达性,本单是版本事实,故单列。
关联
Generated by Claude Code
越界发现,记录于 #3632(改写
packages/runner/README.md的插件清单)期间通读该文件时。未在 PR #3644 中顺手修改 —— #3632 的派发范围被锁死在两处插件措辞,且本条波及 35 个文件、根因在发布流程而非某个 README,形状上不属于那一单。事实(对
origin/main复核,切点fa3ba5bf1)35 个包 README 末尾有一段生成块 §Compatibility,块前有一行 HTML 注释形式的标记,内容为
release-metadata:v3.3.0(即<!--+release-metadata:v3.3.0+-->)。35 个包的这一块逐字相同:与实现对不上,两处:
1. spec 版本差了一个大版本区间。 27 个包的
package.json把@objectstack/spec锁在^17.0.0-rc.5,没有任何一个包锁^3.3.0:复现标记行本身(用
-F免转义):2. 列了并不存在的依赖。 以
packages/runner为例,它的package.json里@objectstack/client既不在dependencies也不在devDependencies,README 却给它标了一行兼容版本。(生成块逐字相同,所以凡是不依赖 client 的包都有这一行。)影响与定级
这些 README 是 npm 包页正文,是安装前读到的第一手兼容性说明。照
^3.3.0装 spec 的读者拿到的是一个差了十几个大版本的包。定级留给分诊 —— 按纪律不自评。需要注意的是这不是逐个 README 手写出来的漂移:那行
release-metadata:v3.3.0标记说明整块是发布时按模板生成的,35/38 个包 README 逐字一致。所以修法多半在生成这块的发布脚本(让版本号取自真实 pin,并按包裁掉它不依赖的行),而不是 35 次手改 —— 手改会在下次发布被再次覆盖。这一点请分诊时确认,我没有去定位那个生成脚本(越界)。已搜重
关键字
Compatibility README objectstack/spec version、release-metadata Compatibility block package README、runner README plugins搜过开放 issue,total_count: 0/ 仅命中 #3632 与 #3603,无重复。与 #3603(包 README 里 9 条 404 站内链接)同为「包 README 未被门禁覆盖」的邻域但不同缺陷:那单是链接可达性,本单是版本事实,故单列。关联
Generated by Claude Code