观察类记录,非当前用户会踩到的缺陷,不入 pm:queue。记录于 #3645 / PR #3688 期间,把测量留档以免后来者重新发明这台漂移机器。
测量(对 origin/main 复核,切点 9961df297)
标记行 release-metadata:v3.3.0(HTML 注释形式)曾由某个发布期生成器写入 35 个包 README,在每个 README 末尾生成一段 §Compatibility 块。该生成器已不存在:
# objectui
$ git grep -l "release-metadata"
→ 仅命中 35 个 packages/*/README.md 自身
→ scripts/ 、.github/ 、其余全仓:零引用
# objectstack
$ git grep -l "release-metadata"
→ 全仓零命中
即:没有任何工具会再生成、覆盖或校验这个块。
一条正交证据:标记与它界定的块已经解耦
packages/app-shell/README.md 的标记行孤悬在第 616 行,而它本该界定的 §Compatibility 在第 774 行 —— 相隔 158 行,中间被后来的编辑插进了 ## Command palette (⌘K) 等整章内容。
一个活着的生成器要么重新锚定标记、要么整块覆盖,不会容忍标记漂到离目标 158 行之外。这是"生成器已死"独立于 git grep 的第二个证据。
同族证据还有两条,都说明这块早已退化成手工文本:
packages/types/README.md 的 spec 行被手改成过 ^15.1.1(其余 34 个是 ^3.3.0)—— 即「35 个逐字相同」并不成立;
packages/cli/README.md 有完整的同款 §Compatibility 块但没有标记行,且标点风格不同(- **Node.js** ≥ 18 而非 - **Node.js:** ≥ 18)—— 像是更早一版生成器的产物,或手抄。
冻结代价(已由 PR #3688 清除)
块被冻结在 v3.3.0,仓库走到了 17.x,于是六行全部失真 —— 不止 #3645 正文指出的两行:
| README 宣称 |
实际 |
@objectstack/spec ^3.3.0 |
27 个包锁 ^17.0.0-rc.5,零个锁 ^3.3.0 |
@objectstack/client ^3.3.0 |
全仓只有 data-objectstack 一个包依赖它(其余是幽灵行) |
| Node.js ≥ 18 |
根 engines.node 为 ">=22" |
| TypeScript ≥ 5.0 |
全仓 39 处声明均为 ^6.0.3 |
| Tailwind CSS ≥ 3.4 |
实为 ^4.3.3 / ^4.2.1 |
| React 18.x or 19.x |
与 peerDependencies 手抄不同步(见 #3690) |
给未来的约束(本记录的要点)
PR #3688 删掉最后痕迹后,release-metadata 在 objectui 全仓命中归零。若将来要重建发布期元数据注入,请遵守本次得到的两条:
- 取真值,不入散文。 版本号写进 README 正文的那一刻就保证了漂移 —— 这块用六行、跨十几个大版本证明了一次。要么从
package.json(engines / peerDependencies / dependencies)在发布时取值生成,要么根本不写,让读者去看 npm 页上的 engines 与 peerDependencies(包管理器会在安装期强制它们,散文不会)。
- 逐包裁剪,不要全包统一模板。 上一版给 35 个包都印了
@objectstack/client,而实际只有 1 个包依赖它;Tailwind CSS ≥ 3.4 (for packages with UI) 里那个括号,本身就是模板在承认自己不逐包为真。
关联
Generated by Claude Code
观察类记录,非当前用户会踩到的缺陷,不入
pm:queue。记录于 #3645 / PR #3688 期间,把测量留档以免后来者重新发明这台漂移机器。测量(对
origin/main复核,切点9961df297)标记行
release-metadata:v3.3.0(HTML 注释形式)曾由某个发布期生成器写入 35 个包 README,在每个 README 末尾生成一段 §Compatibility 块。该生成器已不存在:即:没有任何工具会再生成、覆盖或校验这个块。
一条正交证据:标记与它界定的块已经解耦
packages/app-shell/README.md的标记行孤悬在第 616 行,而它本该界定的 §Compatibility 在第 774 行 —— 相隔 158 行,中间被后来的编辑插进了## Command palette (⌘K)等整章内容。一个活着的生成器要么重新锚定标记、要么整块覆盖,不会容忍标记漂到离目标 158 行之外。这是"生成器已死"独立于
git grep的第二个证据。同族证据还有两条,都说明这块早已退化成手工文本:
packages/types/README.md的 spec 行被手改成过^15.1.1(其余 34 个是^3.3.0)—— 即「35 个逐字相同」并不成立;packages/cli/README.md有完整的同款 §Compatibility 块但没有标记行,且标点风格不同(- **Node.js** ≥ 18而非- **Node.js:** ≥ 18)—— 像是更早一版生成器的产物,或手抄。冻结代价(已由 PR #3688 清除)
块被冻结在 v3.3.0,仓库走到了 17.x,于是六行全部失真 —— 不止 #3645 正文指出的两行:
@objectstack/spec^3.3.0^17.0.0-rc.5,零个锁 ^3.3.0@objectstack/client^3.3.0data-objectstack一个包依赖它(其余是幽灵行)engines.node为">=22"^6.0.3^4.3.3/^4.2.1peerDependencies手抄不同步(见 #3690)给未来的约束(本记录的要点)
PR #3688 删掉最后痕迹后,
release-metadata在 objectui 全仓命中归零。若将来要重建发布期元数据注入,请遵守本次得到的两条:package.json(engines/peerDependencies/dependencies)在发布时取值生成,要么根本不写,让读者去看 npm 页上的engines与peerDependencies(包管理器会在安装期强制它们,散文不会)。@objectstack/client,而实际只有 1 个包依赖它;Tailwind CSS ≥ 3.4 (for packages with UI)里那个括号,本身就是模板在承认自己不逐包为真。关联
@objectstack/spec^3.3.0,实际全仓锁 ^17.0.0-rc.5;部分包还列了自己并不依赖的@objectstack/client#3645 / PR docs(packages): 退役 36 个包 README 里已死的 release-metadata §Compatibility 生成块 #3688 —— 退役处置。@objectstack/spec^3.3.0(实为 ^17.0.0-rc.5)与 Node ≥ 18(根 engines 为 ">=22") #3689 —— 同源失真在站点文档cli.mdx侧的残留。@object-ui/plugin-report的 peerDependencies 只允许 React/ReactDOM^18.0.0,其余 28 个 UI 包都是^18.0.0 || ^19.0.0(仓库自身 dev 用 19.2.8) #3690 ——plugin-report的peerDependencies与其余 28 个 UI 包不一致(由本块的 React 行核对时量到)。Generated by Claude Code