Skip to content

观察记录:文档散文里的版本宣称无门禁可守 —— #3688 + #3689 把它清到零之后,没有任何东西阻止下一个作者写回去 #3697

Description

@yinlianghui

观察类记录,非当前用户会踩到的缺陷,不入 pm:queue。记录于 #3689(修 content/docs/utilities/cli.mdx 兼容表)期间。

事实

#3689 正文自己点破了这个洞:

content/docsscripts/check-doc-links.mjs 的第 1 个扫描根,但该门禁只校验链接可达性,不校验版本事实,所以不会被任何现有门禁发现。

那一族失真(@objectstack/spec ^3.3.0、Node ≥ 18)现在已经清完:PR #3688 删掉 36 个包 README 的生成块,#3689 的 PR 处置了站点文档侧最后一处。清到零了,但守不住这个零。

测量:现有门禁没有一条看版本字面量

scripts/ 下的门禁全清单,逐条核过它们的判据:

门禁 判据 看版本字面量?
check-doc-links.mjs 链接可达性(7 个扫描根,含 content/docspackages/*/README.md)
check-control-bytes.mjs 控制字节
check-i18n-call-site-keys.mjs / check-i18n-en-drift.mjs i18n key / 英文文案漂移
check-spec-symbol-derivation.mjs spec 符号派生
check-lint-coverage.mjs / check-type-check-coverage.mjs 脚本覆盖面
check-changeset-fixed.mjs / check-changeset-no-major.mjs changeset 形状

即:content/docspackages/*/README.md 这两个面上,任何人写一句 "requires Node ≥ 18" 或 "@objectstack/spec ^3.3.0",今天都是全绿通过。这两个面上一次被写脏,代价是 36 个 README + 1 个站点页面冻结在一个跨了十几个大版本的版本号上。

仓内已有同形状的门禁先例

这不是要发明新机制:check-i18n-en-drift.mjs + scripts/i18n-en-drift-baseline.json 已经是「基线化漂移门禁」的成熟形状 —— 基线记录当前状态,新增的漂移变红。版本字面量门禁可以是同一形状,基线为零。

关键设计约束(这条不是一行 grep 就完事的原因)

门禁必须能区分「当前宣称」与「历史叙述」,否则会误伤正确的内容:

  • content/docs/guide/release-notes.md:41 —— Bump every @object-ui/* dependency to ^3.3.0,是 v3.3.0 那次升级动作的记录;
  • 同文件 :58 —— | Node.js | ≥ 18 |,在 ## v3.3.0 — 2026-04-17 标题下的 ### Compatibility Matrix 里,是那一次发布当时的兼容矩阵。

两处都是正确的历史记录,#3689 已明确判定不改,#3689 的 PR 也一行未动。一刀切禁掉版本字面量会把它们判红。可行的切法之一:按「是否落在版本号标题(## vX.Y.Z)的小节内」豁免 —— 但这属于实现取舍,留给分诊与实现者定,我不在这里替它拍板。

定级

按纪律不自评。倾向观察类:今天全仓该类宣称为零,读者当下踩不到,这条记的是回归风险而非现存缺陷。

已搜重

version drift docs gatecheck-doc-links version fact content/docsscripts/check-doc-links.mjs版本号 散文 漂移 四组关键字搜过开放 issue:仅命中 #3689 自身与 #3692,无重复。

#3692 相邻但不同:#3692 记的是「release-metadata 发布期生成器已死,若将来重建须取真值而非入散文」—— 约束对象是一个不存在的生成器;本条记的是「今天没有任何东西阻止一次手写把版本号重新写进文档散文」—— 约束对象是人和 agent 的日常编辑。故单列而非在 #3692 下追评。

关联


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