PM 状态(2026-08-17,session_01GTRjn8xBqp75dk7kFupVRt):pm:blocked
Blocked-by: #5084
修本卡必须同改 KNOWN_CLAIMS 里指向本卡的 stale 条目,而该条目由 PR #5084 (#4981 门禁扩面)携带、尚未落 main(PR #5084 又 Blocked-by PR #5080 待维护者亲合)。先修会让 PR #5084 落地即触发向下棘轮红。PR #5084 MERGED 后本卡解锁回队,修复 PR 同改该 stale 条目(方向倾向卡面 2:删版本限定语)。
越界发现,记录于 #4981 (把 skills/ 纳入 doc-version-claims 扫描面)实施期间 —— 扩面后的扫描在 skills/ 上共命中 12 条版本字面量,卡面列了其中 4 条脚手架化石,这是卡面未列的第 5、6 条 (同一条 claim 的两次出现)。#4981 的完成范围是那 4 处字面量 + 门禁扩面,这一条的修法是另一个判断(改数字 vs 删版本限定语),故只记录、不在那两个 PR 内动手。处置同 #3697 的普查先例:先在 KNOWN_CLAIMS 里以 kind: 'stale' 记账(记录债务而不是祝福它),修复另开卡 —— #3708 / #3709 / #3710 / #3690 就是那 9 条 stale 的还债卡。
事实(对 origin/main @ 6098ecd08 实测)
位置
原文
仓内实测
skills/objectui/guides/i18n.md:117
In Object UI schemas, use plain string labels (per `@objectstack/spec` v4).
@objectstack/spec ^17.0.0,33 处声明(20 dependencies / 12 devDependencies / 1 peerDependencies),node_modules 装的是 17.0.0
skills/objectui/guides/i18n.md:162
Using {key, defaultValue} translation objects — `@objectstack/spec` v4 uses plain strings only.
同上
13 个 major 。与 #3708 修掉的那条完全同形 —— architecture-overview.md 的分层图里写 @objectstack/spec ^4.0.4,当时每个清单都已经是 ^17.0.0-rc.5;区别只在受害面:那条是人读的 content/docs,这条在给 agent 读的 skills/ 上。
为什么不是「无害的旧文案」
两句话都在用版本号给规则背书 (「按 spec v4,label 是纯字符串」)。规则本身今天是否仍成立,是需要对 spec 17 复核的第二个问题 —— 而读者(人或 AI)拿到的第一手信息是「这条规则的依据是 v4」,它会把一个 13 个 major 前的版本号当成当前契约去引用、去搜文档、去写注释。#4611 正是这一族的另一面(ui-action.ts 的注释声称「In spec 17 I18nLabelSchema is z.ZodString」,对着实装的 rc.6 是假的,差点让一个席位实现一个 no-op)。
修法(两个方向,交 PM 定)
改成实测版本 (v17)—— 前提是先对 spec 17 复核「plain string labels」这条规则今天仍然成立;若已变,那就不是版本号的问题而是规则本身要重写。
删掉版本限定语 ,写成「per @objectstack/spec」/「the spec uses plain strings only」—— PR docs(packages): 退役 36 个包 README 里已死的 release-metadata §Compatibility 生成块 #3688 / docs(cli): 兼容表两行失真 —— Node 行改指根 engines,删掉 CLI 并不依赖的 spec 兼容行 #3698 对 36 个 README 和 CLI 页做过的那一手,也是 doc-version-claims 的 SCAN_ROOTS 不含 skills/:agent 面的 4 处版本字面量从未被任何门禁读过(实测 1–2 个 major 化石) #4981 卡面列的方向 2。这一种不会再化石化。
倾向 2:这两句想说的是「当前契约是纯字符串」,版本号在这里不承载信息,只承载会过期的风险。
不是重复,也不是 Blocked-by。#4981 的门禁 PR 会把这条 claim 以 kind: 'stale' 收进 KNOWN_CLAIMS(带指向本卡的理由),所以:
这条化石从此有门禁看着 (在此之前 skills/ 完全在扫描面之外);
本卡修好之后,那条 stale 条目必须在同一个改动里删掉或改类 ,否则 doc-version-claims 的向下棘轮会红(「KNOWN_CLAIMS names version claims that are no longer in the tree」)—— 这正是那份清单不会烂掉的机制。
越界发现,记录于 #4981(把
skills/纳入doc-version-claims扫描面)实施期间 —— 扩面后的扫描在skills/上共命中 12 条版本字面量,卡面列了其中 4 条脚手架化石,这是卡面未列的第 5、6 条(同一条 claim 的两次出现)。#4981 的完成范围是那 4 处字面量 + 门禁扩面,这一条的修法是另一个判断(改数字 vs 删版本限定语),故只记录、不在那两个 PR 内动手。处置同 #3697 的普查先例:先在KNOWN_CLAIMS里以kind: 'stale'记账(记录债务而不是祝福它),修复另开卡 —— #3708 / #3709 / #3710 / #3690 就是那 9 条 stale 的还债卡。事实(对
origin/main@6098ecd08实测)skills/objectui/guides/i18n.md:117In Object UI schemas, use plain string labels (per `@objectstack/spec` v4).@objectstack/spec^17.0.0,33 处声明(20 dependencies / 12 devDependencies / 1 peerDependencies),node_modules 装的是17.0.0skills/objectui/guides/i18n.md:162Using {key, defaultValue} translation objects — `@objectstack/spec` v4 uses plain strings only.13 个 major。与 #3708 修掉的那条完全同形 ——
architecture-overview.md的分层图里写@objectstack/spec ^4.0.4,当时每个清单都已经是^17.0.0-rc.5;区别只在受害面:那条是人读的content/docs,这条在给 agent 读的skills/上。为什么不是「无害的旧文案」
两句话都在用版本号给规则背书(「按 spec v4,label 是纯字符串」)。规则本身今天是否仍成立,是需要对 spec 17 复核的第二个问题 —— 而读者(人或 AI)拿到的第一手信息是「这条规则的依据是 v4」,它会把一个 13 个 major 前的版本号当成当前契约去引用、去搜文档、去写注释。#4611 正是这一族的另一面(
ui-action.ts的注释声称「In spec 17 I18nLabelSchema is z.ZodString」,对着实装的 rc.6 是假的,差点让一个席位实现一个 no-op)。修法(两个方向,交 PM 定)
v17)—— 前提是先对 spec 17 复核「plain string labels」这条规则今天仍然成立;若已变,那就不是版本号的问题而是规则本身要重写。@objectstack/spec」/「the spec uses plain strings only」—— PR docs(packages): 退役 36 个包 README 里已死的 release-metadata §Compatibility 生成块 #3688 / docs(cli): 兼容表两行失真 —— Node 行改指根 engines,删掉 CLI 并不依赖的 spec 兼容行 #3698 对 36 个 README 和 CLI 页做过的那一手,也是 doc-version-claims 的 SCAN_ROOTS 不含 skills/:agent 面的 4 处版本字面量从未被任何门禁读过(实测 1–2 个 major 化石) #4981 卡面列的方向 2。这一种不会再化石化。倾向 2:这两句想说的是「当前契约是纯字符串」,版本号在这里不承载信息,只承载会过期的风险。
与 #4981 的关系
不是重复,也不是 Blocked-by。#4981 的门禁 PR 会把这条 claim 以
kind: 'stale'收进KNOWN_CLAIMS(带指向本卡的理由),所以:skills/完全在扫描面之外);stale条目必须在同一个改动里删掉或改类,否则doc-version-claims的向下棘轮会红(「KNOWN_CLAIMS names version claims that are no longer in the tree」)—— 这正是那份清单不会烂掉的机制。