Commit 7330c1d
`objectui-changeset-digest.mjs` 判定破坏性的唯一依据是声明级别等于 `major`,
而 objectui 在 v17 发布窗内从不声明 `major` —— 实测区间
`f5bc4c78be76..f995a452d2ca` 的 64 条 releasing changeset 里 0 条 `major`,
破坏性一律以 `minor` + 作者正文标注的形式发布。判据因此恒为 0,那句 `⚠️ `
提示永远不触发,未标注的破坏性迁移直接流进 `@objectstack/console` 的
CHANGELOG 输入层(#6110 只能手工补标)。
判据改为「声明级 `major` **或** 作者在 changeset 正文里写下的破坏性标注」
(`hasBreakingAnnotation`)。仍然拒绝读提交标题:conventional-commit 的 `!`
是工具对提交的分类,不是作者对发布的陈述,重新引入即是 #4731 删掉的那种
推断。读正文属于「声明」——同一个文件里作者自己的散文。收录集完全不变,
只改标注与计数。
精度靠**位置**而非词形:标注必须出现在强调标记里,或在某个块(段落/标题/
顶层列表项)的开头;正文中间顺带提到 "breaking" 不算。实测该区间 65 条
changeset 有 5 条提到这个词,判据认出 4 条、放过 1 条(`9e9e9a92f` 的
"technically breaking … but only in the sense that")。刻意按块而非按行锚定:
changeset 正文是硬换行的,任何含该词的句子都可能把它甩到行首,但只有作者
自己的分段才会把它放到块首。
连带修正:
- `inPreMode` 上那段「objectui marks its breaking symbol renames `major`
routinely」的上游模型注释与实测相反(0/64),据实改写;`downgradedMajor`
留作安全网并注明它不是常态路径,破坏性计数不得建立在它之上。
- 条目行按 #6110 手工修正的形状带上标记(`- **minor** — **BREAKING** — …`);
作者自己写的更丰富标签(`**BREAKING (v17)**`)原样保留、绝不复述。标记在
截断之后施加,避免标记本身被 clamp 吃掉。
- `⚠️ ` 那句不再声称「declare a **major** bump」,改为分别报出按级别与按正文
标注的条数。
self-test 从 19 条断言增至 37 条,新增 minor+正文标注族(首段标注、末段标注、
标题标注三种识别形状;中间提及、否定式/含词词、硬换行行首三种反例)。
Claude-Session: https://claude.ai/code/session_01BDmDsu2575gDxeMCxXhDE3
Co-authored-by: Claude <noreply@anthropic.com>
1 parent e5e3092 commit 7330c1d
1 file changed
Lines changed: 411 additions & 21 deletions
0 commit comments