Ruled: 5770445652 · letter A · 2026-09-22T02:40Z — batch #210 item 3; PR #19610 as merged is ratified; closed completed
Path: P3 | none | 对向事实 — 裁决批 #65 明令的 major changeset 在落地时测出不可执行
⏱️ Filed by the domain:spec execution seat 2 (session session_01UDXER3sdqfeVYpEWZs5mZx), under the standing clause: 裁决明令的动作实施中测出对向事实 ⇒ 冲突立成 needs-user-decision 卡,该 PR ⛔ 不挂 auto-merge 留异议窗口. PR #19610 is therefore ⛔ NOT enqueued and ⛔ NOT auto-merged.
⛔ The ruled ACTION — retiring the plugin-security scan-result family under ADR-0049 — is executed and is not in question. Only the changeset's digit is.
维护者速读
批 #65 你裁了「退役这组扫描结果面」,裁决里写的是 major changeset。实施时撞上一件事:major 现在根本落不了地。
两条都在主干上,而且都比那条裁决新:
⚠️ 本段已更正,见本卡评论 5764818911。 照字面写 major 会被那道守卫拒收 —— 但 ⛔ 不是「合不进去」:pr-automation.yml 里那一步带着 && steps.allow_major.outputs.allow != true,并在其上实时重读 PR 标签(⛔ 不读事件载荷),命中 allow-major 时守卫主动让开。⇒ 准确说法:major 需要某个人明示挂上 allow-major,代价是 fixed 组里 70 个包一起上大版本。
⚠️ 另有第三件仪器站在 major 那边:packages/spec/scripts/build-schemas.ts:1072 的门禁失败提示至今写着 「a major changeset carrying the FROM → TO mapping」。散文不是强制,但若裁 minor,这段文本要跟着动,否则下一个退役的人照它写 major 再撞守卫。
⭐ 一条支持 minor 的硬事实:守卫的 judge() 是实跑的 —— .changeset/pre.json 在主干上不存在(2026-08-14 随 changeset pre exit 删除),major 恒 enforce。⇒ 守卫比那条裁决早三周就武装好了,裁决写下 major 的当天它就落不了地。
dev 已按 minor + BREAKING banner(带 FROM → TO 映射与一行修复)+ ADR-0087 处置标记 落地,两道门都绿,并且在 PR 正文里单开一节写明了这个分歧,⛔ 没有偷偷选。
我荐 A = 维持现状。这不是我替你改裁决:裁决要的是「破坏性」这个语义,而本仓自己的写法把这个语义从版本号挪到了 banner 上。回一个字母即可;不回也行 —— 这是否决窗口,你不同意就回滚,改回 major 只要改一行。
os-decision-facets
- ① 项目长远合理性:A 不新增特例 —— 它让退役走本仓已经成文的那一条路(banner 承载破坏性),裁决与 playbook 归一;B 则让一条裁决的字面把一个必过门禁永久钉红,以后每张退役卡都要再吵一次。
- ② 实际业务拉动:今天为零 —— 这四个名字零消费者,正是最干净的退役时点。拉动来自下游:
CHANGELOG.md 里的 BREAKING banner 才是升级中的 agent 撞到墓碑后 grep 的东西,版本号不是。
- ③ 防 AI 犯错:A 的失败是响亮的(墓碑拒收 + banner 里的 FROM → TO);B 的失败是门禁常红,而常红的门禁就是被无视的门禁 —— 那比没有门禁更糟。
- ④ 创业阶段不扩散:A 零新增义务;B 会把 70 个包一起推上一个大版本,发射窗口期内这是纯扩散。
Prior rulings read: changeset-major,launch-window,retirement-playbook,check-changeset-no-major → thread: 5564446653(批 #65,明令 major); 后续治理:2951c0f8f8(2026-09-20,playbook 改判 minor); 维护者 2026-08-27 「项目在创业阶段,用户也很少,短期不考虑渐进」
Options × real cost
| option |
what is done |
what anyone can perceive |
A — keep minor + BREAKING banner + ADR-0087 marker (already shipped, gates green) |
Nothing further. |
Upgrading readers get the FROM → TO mapping and the one-line fix in CHANGELOG.md, which is what they actually grep. The version digit does not move 70 packages. |
B — write the literal major |
One-line changeset edit, plus a human hanging allow-major on the PR. |
⛔ Not a permanently red gate. It is 70 packages promoted to a new major in one go, plus one explicit human action — the cost moves from 「technically impossible」 to 「wide, but yours to choose」. |
| C — rule that this removal is the case that ends the launch-window convention early |
Lift the guard, then major. |
A real decision with real reach — it re-prices every package in the fixed group. ⛔ Far beyond this card. |
业务含义直译 —— A =「破坏性写在发布说明里,版本号不动」;B =「按字面写,然后这张 PR 永远合不进去」;C =「借这一张卡结束发射窗口」。
推荐:A(已执行,否决窗口)。 回退项:若你要 B,一行 changeset 改回 major,代价是那道门禁常红直到 C 发生。置信缺口:我没有量过把发射窗口的守卫抬掉会波及多少已发布包的消费者,所以 C 的真实代价我只能说「至少是 70 个包的一次大版本」,不能说「就这么多」。
自检行:只看①选 A;②③④ 是否翻转:否。
Duplicate-search terms
check-changeset-no-major · 发射窗口 major 拒收 · spec-property-retirement changeset level · 批 #65 major · BREAKING banner 承载破坏性
Generated by Claude Code
Ruled: 5770445652 · letter A · 2026-09-22T02:40Z — batch #210 item 3; PR #19610 as merged is ratified; closed completed
Path: P3 | none | 对向事实 — 裁决批 #65 明令的
majorchangeset 在落地时测出不可执行⏱️ Filed by the
domain:specexecution seat 2 (sessionsession_01UDXER3sdqfeVYpEWZs5mZx), under the standing clause: 裁决明令的动作实施中测出对向事实 ⇒ 冲突立成needs-user-decision卡,该 PR ⛔ 不挂 auto-merge 留异议窗口. PR #19610 is therefore ⛔ NOT enqueued and ⛔ NOT auto-merged.⛔ The ruled ACTION — retiring the plugin-security scan-result family under ADR-0049 — is executed and is not in question. Only the changeset's digit is.
维护者速读
批 #65 你裁了「退役这组扫描结果面」,裁决里写的是
majorchangeset。实施时撞上一件事:major现在根本落不了地。两条都在主干上,而且都比那条裁决新:
scripts/check-changeset-no-major.mjs是必过门禁,发射窗口期内直接拒收major—— 因为 70 个包在同一个fixed组里,一个major会把它们全推上去。@objectstack/spec用minor,⛔ 不用major……破坏性语义由 BREAKING banner 承载」。那次提交的标题就是「the retirement playbook prescribes aminorchangeset, not themajora li…」——它就是为了修这个而写的,而且比批 Add comprehensive test coverage for ObjectStack spec protocols - 100% coverage achieved #65 晚 13 天。5764818911。 照字面写major会被那道守卫拒收 —— 但 ⛔ 不是「合不进去」:pr-automation.yml里那一步带着&& steps.allow_major.outputs.allow != true,并在其上实时重读 PR 标签(⛔ 不读事件载荷),命中allow-major时守卫主动让开。⇒ 准确说法:major需要某个人明示挂上allow-major,代价是fixed组里 70 个包一起上大版本。major那边:packages/spec/scripts/build-schemas.ts:1072的门禁失败提示至今写着 「amajorchangeset carrying the FROM → TO mapping」。散文不是强制,但若裁minor,这段文本要跟着动,否则下一个退役的人照它写major再撞守卫。⭐ 一条支持
minor的硬事实:守卫的judge()是实跑的 ——.changeset/pre.json在主干上不存在(2026-08-14 随changeset pre exit删除),major恒enforce。⇒ 守卫比那条裁决早三周就武装好了,裁决写下major的当天它就落不了地。dev 已按
minor+ BREAKING banner(带 FROM → TO 映射与一行修复)+ ADR-0087 处置标记 落地,两道门都绿,并且在 PR 正文里单开一节写明了这个分歧,⛔ 没有偷偷选。我荐 A = 维持现状。这不是我替你改裁决:裁决要的是「破坏性」这个语义,而本仓自己的写法把这个语义从版本号挪到了 banner 上。回一个字母即可;不回也行 —— 这是否决窗口,你不同意就回滚,改回
major只要改一行。os-decision-facets
CHANGELOG.md里的 BREAKING banner 才是升级中的 agent 撞到墓碑后 grep 的东西,版本号不是。Prior rulings read: changeset-major,launch-window,retirement-playbook,check-changeset-no-major → thread:
5564446653(批 #65,明令major); 后续治理:2951c0f8f8(2026-09-20,playbook 改判minor); 维护者 2026-08-27 「项目在创业阶段,用户也很少,短期不考虑渐进」Options × real cost
minor+ BREAKING banner + ADR-0087 marker (already shipped, gates green)CHANGELOG.md, which is what they actually grep. The version digit does not move 70 packages.majorallow-majoron the PR.major.fixedgroup. ⛔ Far beyond this card.业务含义直译 —— A =「破坏性写在发布说明里,版本号不动」;B =「按字面写,然后这张 PR 永远合不进去」;C =「借这一张卡结束发射窗口」。
推荐:A(已执行,否决窗口)。 回退项:若你要 B,一行 changeset 改回
major,代价是那道门禁常红直到 C 发生。置信缺口:我没有量过把发射窗口的守卫抬掉会波及多少已发布包的消费者,所以 C 的真实代价我只能说「至少是 70 个包的一次大版本」,不能说「就这么多」。自检行:只看①选 A;②③④ 是否翻转:否。
Duplicate-search terms
check-changeset-no-major· 发射窗口major拒收 · spec-property-retirement changeset level · 批 #65major· BREAKING banner 承载破坏性Generated by Claude Code