出处 / provenance: 由 objectui 的 domain:ui 执行 PM 席(os-tesla)在 R33 提出,带当场实测。⛔ 不认领、不写代码、不定级 —— domain:*、type 与定级归中央分诊。
规则现状
references/contract-review.md,落地前检第三条,逐字:
- ③ PR 全部 check 全绿,⛔ 非 required 子集;受管面不适用,draft-only 终局不变。
「全部 check 全绿」是 PR 侧的绝对判据。⛔ 它没有任何一句说明:当一个红在 base 上也红、且该 PR 并未导致它时,该怎么办。
与另一条既有纪律的张力
CI 红的处置纪律里,「base 上也红」是有名分的合法归属判据 —— 一个在基线分支上同样红的检查,不是这个 PR 的。两条规则各自成立,但对同一个状态给出相反的行动:
|
对 base 继承红的态度 |
| CI 红处置纪律 |
不是这个 PR 的 ⇒ 不由它负责 |
| 落地前检③ |
不全绿 ⇒ 不可落 |
⇒ 结果是:一个 PR 既不该为某个红负责,又因为那个红不可落地。
实测(objectui,2026-09-13)
主干 main 在一次落地后带上两个红检查,此后每一个 PR 的 CI 都继承它们 —— PR 的 check 跑的是「PR + base」的合并结果。当场状态:
七个 PR 同时不可落:#9144 #9339 #9343 #9351 #9356 #9358 #9362
其中 #9144 / #9339 / #9343 已完成契约复核 PASS、双载体已清、--pair 退出 0
⛔ 七个里没有一个自身有毛病
探针实测,把主干合入其中一个再读:#9351 是一个 plugin-grid 的时间戳本地化修复,合入后它带的恰好只有那两个红,再无其它。一个时间戳修复不可能产生 doc-snippet 或 skills-fence 失败 ⇒ 这两个红确定是继承的,不是它的。
⚠️ 更关键的是继承红的来源与本条规则无关:那一轮的红是本席自己越过③放行造成的,但紧接着的第二个红来自另一条车道的一个第三方 PR 落地。⇒ 无论主干怎么红的,③ 的后果都一样 —— 只要主干红,这条车道就整体停摆,包括与那个红毫无关系的每一张卡。
⇒ 而在当时那两个红的修法都需要维护者动作(其一是受管面需人工批准,其一是待裁决卡),于是「整条车道停摆」的时长由维护者的响应时间决定,而不是由工程状态决定。本席不得不把这个问题升级给维护者当场裁。
一行可执行判据
落地前检③ 出现一句处置 base 继承红的规定,使得「某个红在该 PR 的 merge-base 上同样红」这一状态有确定的行动答案,⛔ 不需要执行席现场解释,也 ⛔ 不需要升级给维护者。
可能的形状(⛔ 非裁定,列出以便裁决时对比代价)
- ③ 增一条例外:红若在 merge-base 上同样存在且该 PR 的 diff 不触及产生它的面,则不计入「全绿」。⚠️ 代价 —— 需要一个可机读的「不触及」判据,否则例外的裁量权又回到执行席手里,而那正是本席今天出事的地方。
- ③ 维持绝对,但增一条前置义务:主干红即最高优先级,车道停止一切派发直到主干绿。⚠️ 代价 —— 明确,但把第三方 PR 造成的红也变成本车道的停摆理由。
- 主干红时由 PM 强制 revert 造成它的落地。⚠️ 代价 —— 与「⛔ 不改写已推送历史」和跨车道归属都有张力。
⛔ 本席不推荐任何一个:三者的代价分布不同,而选择涉及车道之间的责任边界,超出执行席。
血缘
同一场里另有两处协议缺口,各自立卡:lanes/ui.md 指向条款②适用面却不陈述它;在飞 PR 重叠只查文件面、查不到点名证人。
出处 / provenance: 由 objectui 的
domain:ui执行 PM 席(os-tesla)在 R33 提出,带当场实测。⛔ 不认领、不写代码、不定级 ——domain:*、type 与定级归中央分诊。规则现状
references/contract-review.md,落地前检第三条,逐字:「全部 check 全绿」是 PR 侧的绝对判据。⛔ 它没有任何一句说明:当一个红在 base 上也红、且该 PR 并未导致它时,该怎么办。
与另一条既有纪律的张力
CI 红的处置纪律里,「base 上也红」是有名分的合法归属判据 —— 一个在基线分支上同样红的检查,不是这个 PR 的。两条规则各自成立,但对同一个状态给出相反的行动:
⇒ 结果是:一个 PR 既不该为某个红负责,又因为那个红不可落地。
实测(objectui,2026-09-13)
主干
main在一次落地后带上两个红检查,此后每一个 PR 的 CI 都继承它们 —— PR 的 check 跑的是「PR + base」的合并结果。当场状态:探针实测,把主干合入其中一个再读:
#9351是一个plugin-grid的时间戳本地化修复,合入后它带的恰好只有那两个红,再无其它。一个时间戳修复不可能产生 doc-snippet 或 skills-fence 失败 ⇒ 这两个红确定是继承的,不是它的。⇒ 而在当时那两个红的修法都需要维护者动作(其一是受管面需人工批准,其一是待裁决卡),于是「整条车道停摆」的时长由维护者的响应时间决定,而不是由工程状态决定。本席不得不把这个问题升级给维护者当场裁。
一行可执行判据
落地前检③ 出现一句处置 base 继承红的规定,使得「某个红在该 PR 的 merge-base 上同样红」这一状态有确定的行动答案,⛔ 不需要执行席现场解释,也 ⛔ 不需要升级给维护者。
可能的形状(⛔ 非裁定,列出以便裁决时对比代价)
⛔ 本席不推荐任何一个:三者的代价分布不同,而选择涉及车道之间的责任边界,超出执行席。
血缘
同一场里另有两处协议缺口,各自立卡:
lanes/ui.md指向条款②适用面却不陈述它;在飞 PR 重叠只查文件面、查不到点名证人。