Skip to content

pm-dispatch: 落地前检③「PR 全部 check 全绿」对 base 继承的红没有处置 —— 主干一红,整条车道所有已复核 PASS 的 PR 同时不可落 #17934

Description

@os-tesla

出处 / 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 上同样红」这一状态有确定的行动答案,⛔ 不需要执行席现场解释,也 ⛔ 不需要升级给维护者。

可能的形状(⛔ 非裁定,列出以便裁决时对比代价)

  1. ③ 增一条例外:红若在 merge-base 上同样存在且该 PR 的 diff 不触及产生它的面,则不计入「全绿」。⚠️ 代价 —— 需要一个可机读的「不触及」判据,否则例外的裁量权又回到执行席手里,而那正是本席今天出事的地方。
  2. ③ 维持绝对,但增一条前置义务:主干红即最高优先级,车道停止一切派发直到主干绿。⚠️ 代价 —— 明确,但把第三方 PR 造成的红也变成本车道的停摆理由。
  3. 主干红时由 PM 强制 revert 造成它的落地。⚠️ 代价 —— 与「⛔ 不改写已推送历史」和跨车道归属都有张力。

⛔ 本席不推荐任何一个:三者的代价分布不同,而选择涉及车道之间的责任边界,超出执行席。

血缘

同一场里另有两处协议缺口,各自立卡:lanes/ui.md 指向条款②适用面却不陈述它;在飞 PR 重叠只查文件面、查不到点名证人。

Activity

  1. added
    needs-user-decisionBlocked on a maintainer decision — do not dispatch; decision cards only, never on a PR
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    on Sep 13, 2026
  2. added theissue type on Sep 13, 2026
  3. claude commented on Sep 13, 2026

    @claude
    Contributor

    Routed into domain:skills — needs-user-decision · priority:p2 · Task (skills seat, session session_01DAcomhvR9kKizeYgg89Vo8, GitHub os-project-manager, 2026-09-13T07:19Z). Authority for the routing — maintainer direct routing, verbatim, untranslated (this seat's chat, 2026-09-13T07:0xZ): 「包括:objectstack#17933 lanes/ui.md 指向条款②的适用面却不陈述它 objectstack#17934 落地前检③ 对 base 继承的红没有处置 objectstack#17935 在飞 PR 重叠只查文件面,查不到点名证人」. The three shapes on the card are a responsibility boundary between lanes ⇒ the maintainer's word; this seat recommends 1 with a machine-readable criterion. Landing once ruled: references/contract-review.md 落地前检③ (60/60; same file as #17933, which runs first).

    维护者速读

    事情 —— 落地前检③写「PR 全部 check 全绿」,但当主干本身红时,整条车道所有已复核 PASS 的 PR 一起不可落(objectui 实测 7 张,其中 3 张已 PASS、双载体已清),而这些红与它们无关。要你定一个处置形状。

    选项 —— 1:某个红若在该 PR 的 merge-base 提交上同名同红(且失败签名一致)⇒ 不计入「全绿」;判据是 API 可读的事实,不回到席位手里;主干红的止血立单义务不变。2:③ 维持绝对,主干红即本车道整体停摆到主干绿。3:主干红时由 PM 强制 revert 造成它的落地。

    推荐 —— 1。2 让第三方 PR 的红变成本车道的停摆理由,时长由最慢的人工环节决定;3 与「⛔ 不改写已推送历史」和跨车道归属冲突。

    你要做的 —— 回一个数字:1 / 2 / 3。

    os-decision-facets

    • ① 项目长远合理性:1 把「谁的红」从席位裁量变成机读读数,不放宽任何门禁(主干红仍必须立单止血);2 把停摆时长交给最慢的人工环节;3 引入历史改写与跨车道归属争议。
    • ② 实际业务拉动:objectui 2026-09-13 实测 7 张 PR 同时不可落、3 张已 PASS,停摆时长由维护者响应时间决定而不由工程状态决定。
    • ③ 防 AI 犯错:1 的失败方向是「误判为继承红」——判据须要求 merge-base 上同名 check 的失败签名一致,而不只是名字一致;席位现场解释的裁量正是本卡出事之处,1 把它去掉。
    • ④ 创业阶段不扩散:一行例外加一个机读判据,不加工具、不加状态。
    • 推荐:1;回退:2。置信缺口:base 红与 PR 红「同名不同因」的情形本分析未实测,1 的判据必须带签名比对。

    Generated by Claude Code

  4. os-tesla commented on Sep 13, 2026

    @os-tesla
    CollaboratorAuthor

    Ruling recorded — 1: a check that is red on the PR's merge-base commit with the same name AND the same failure signature is not counted against 「全部 check 全绿」; a red trunk still obliges the stop-the-bleeding card (director seat, decision batch #131 item 2, 2026-09-13)

    Maintainer, verbatim (live PM chat, reply received 2026-09-13T07:3xZ), to decision batch #131 presented as 1A(+三类表)·2(1)·3A·4B: 「同意」.

    Derived first from the long-term axis: the charter held two rules that answer one state oppositely (the CI-red discipline: a base-red is not this PR's; 落地前检③: not all-green ⇒ cannot land). The repair keeps both true by making 「谁的红」 a machine reading — the distinction merge queues and base-failure detection draw between a red you introduced and a red you inherited. Option 2 makes a third party's red this lane's stoppage for as long as the slowest human step; option 3 rewrites pushed history. ②③④ do not overturn ①.

    What is ruled

    1. references/contract-review.md 落地前检③ gains one exception: a failing check is excluded from 「全绿」 when the same-named check on the PR's merge-base commit is also failing and the failure signature matches (same failing step / same first error line, read from the check run's output — ⛔ never the name alone). API-readable facts only; no seat discretion.
    2. Unchanged: whoever lands a red files the stop-the-bleeding card at once; the exception never applies to a red the PR's own diff touches.
    3. pm-dispatch: lanes/ui.md 指向条款②的适用面却不陈述它 —— 维护者据此读成「本车道无需契约复核」 #17933 (same file) lands first; this text follows in the same PR or the next.

    State

    needs-user-decision → pm:queue; domain:skills / priority:p2 kept (governed).


    Generated by Claude Code

  5. added
    pm:queueReady for the PM dispatch loop
    and removed
    needs-user-decisionBlocked on a maintainer decision — do not dispatch; decision cards only, never on a PR
    on Sep 13, 2026
  6. claude commented on Sep 13, 2026

    @claude
    Contributor

    Ruling recorded — shape 1

    Maintainer, verbatim (live chat with this seat, between 2026-09-13T07:52Z and this write, replying to the seat's five-item explanation): 「以上接受你的建议。」 The accepted text, verbatim:

    1(荐):加一条例外——某个红若在该 PR 的 merge-base 提交上同名、同失败签名地红 ⇒ 不计入「全绿」;主干红仍必须立单止血(不变)。判据机读:API 能读 base 提交上同名 check 的结论,不靠席位口头判断。

    What is ruled. 落地前检③ gains one exception: a check that is red on the PR's merge-base commit with the same name AND the same failure signature does not count against 「全绿」; the main-red stanching duty (立单止血) is unchanged; the reading is taken from the base commit's check runs by the API, never by a seat's judgement. Landing: references/contract-review.md 落地前检③ (60/60, paid by density).

    State: needs-user-decision → pm:queue in this stroke; priority:p2 · Task kept. Execution: rides the 2026-09-13 charter-revision PR (chain head #17942) as a member — same file as #17933's table; the dispatch names it. Blocked-by: liveness: none. Freshness gate: comments newer than the body at this write = 5651901594 (this seat's routing + facets) only.


    Generated by Claude Code

  7. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Sep 13, 2026
  8. claude commented on Sep 13, 2026

    @claude
    Contributor

    Claim: PM loop round 1 — member of the charter-revision family, chain head #17942 (fold gates and the two-layer split are on the chain-head claim)
    Session: session_01DAcomhvR9kKizeYgg89Vo8 (GitHub os-project-manager, skills seat), claimed at 2026-09-13T11:26Z
    Branch: claude/issue-17942-charter-revision (shared family branch, named after the chain head)
    Worktree: objectstack-issue-17942
    Domain: domain:skills
    This card's part: the #17934 shape-1 exception (5652079427 option 1: a red also red on the merge-base with the same check name AND the same failure signature does not count against 全绿) lives in contract-review.md 落地前检③ — ⛔ NOT in this PR (file occupied by PR #17990); this claim reserves the card for the follow-up references PR named on the chain-head thread; Part of line in this PR body only.
    Clause-②: no
    Thread-read: 5652079427 (the ruling record — the newest comment at this claim)


    Generated by Claude Code

  9. claude commented on Sep 13, 2026

    @claude
    Contributor

    Charter-revision dev (session session_01DAcomhvR9kKizeYgg89Vo8, branch claude/issue-17942-charter-revision, 2026-09-13T12:1xZ): no edit for this card in #18018 — the shape-1 exception (same name AND same failure signature on the merge-base ⇒ not counted against 全绿) lives in contract-review.md, occupied by PR 17990; the PR body carries Part of for this card only, and the text rides the follow-up references PR. The os-dev-report for the whole family is on the chain head (issue 17942); the draft PR is governed (.claude/** + AGENTS.md) — four-piece, no ready / enqueue / auto-merge by the dev.


    Generated by Claude Code

  10. claude commented on Sep 13, 2026

    @claude
    Contributor

    ACCEPT (family member) — skills seat, 2026-09-13T12:15Z. PR #18018 head 269933d9, this card's part landed as Part of — no edit in this PR; its contract-review.md text rides the follow-up references PR after PR #17990 lands. Record of the whole family on the chain head #17942: contract review 5653195700 (PASS), 速读 5653195856, ACCEPT 5653199243. Four-piece applied on the PR; lands under ruling C after an authorized approval. Card stays pm:dispatched + assignee until the landing record.


    Generated by Claude Code

  11. 1 remaining item

  12. claude commented on Sep 13, 2026

    @claude
    Contributor

    Rules-layer half LANDED; card back in the queue for the references PR — skills seat (session session_01DAcomhvR9kKizeYgg89Vo8), 2026-09-13T13:41Z. PR #18018 merged at 2026-09-13T13:39Z as 9489e2c0 (two readings at 2026-09-13T13:40Z: queue ref gone; origin/main has (#18018) 1, control (#18015) 1). This card was Part of that PR; what remains is its whole text — the shape-1 exception in contract-review.md 落地前检③ (no edit landed here, by design) — the charter chain's ONE references PR, dispatched from this seat now that PR #17990 has landed (contract-review.md free). pm:dispatched → pm:queue and the assignee stripped in this pass and read back; the next claim names the references branch. Family record on the chain head #17942 — contract review 5653195700, 速读 5653195856, ACCEPT 5653199243.


    Generated by Claude Code

  13. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Sep 13, 2026
  14. claude commented on Sep 13, 2026

    @claude
    Contributor

    Claim: PM loop round 1 — member of the charter chain's references PR, chain head #17942 (fold gates, file surface and serial readings on the chain-head claim)
    Session: session_01DAcomhvR9kKizeYgg89Vo8 (GitHub os-project-manager, skills seat), claimed at 2026-09-13T13:42Z
    Branch: claude/issue-17942-charter-references (shared family branch, named after the chain head)
    Worktree: objectstack-issue-17942-refs
    Domain: domain:skills
    This card's part: the whole card — the shape-1 exception in contract-review.md 落地前检③ (ruling 5652079427 option 1) — completes the card ⇒ Fixes on the references PR.
    Clause-②: no
    Thread-read: the rules-layer landing note this seat posted at 13:41Z — the newest comment at this claim


    Generated by Claude Code

  15. claude commented on Sep 13, 2026

    @claude
    Contributor

    This card's part is delivered in the charter references PR #18038 (draft, governed 事实层), commit ae17066f: contract-review.md 落地前检③ gains the shape-1 exception (merge-base 上同名同失败签名的红不计) plus the signature line (失败步 + 首错行, read from the base commit's check runs by the API; 主干红止血立单不变). File 60 → 60. The os-dev-report for the whole chain is on the chain head #17942.


    Generated by Claude Code

  16. claude commented on Sep 13, 2026

    @claude
    Contributor

    ACCEPT (references PR, member) — skills seat, 2026-09-13T14:18Z. PR #18038 head f0e533fc carries this card's remaining half as Fixes — closes on landing. Record of the whole PR on the chain head #17942: contract review 5653826097 (PASS), 速读 5653826263, ACCEPT 5653826642. Four-piece applied on the PR; lands under ruling C after an authorized approval or once #18020's guard tier lands. Card stays pm:dispatched + assignee until the landing record.


    Generated by Claude Code

  17. claude commented on Sep 13, 2026

    @claude
    Contributor

    Landed — skills seat (session session_01DAcomhvR9kKizeYgg89Vo8), 2026-09-13T15:02Z. PR #18038 → c185d087 on origin/main; the two readings and the ruling-C trail are on the chain head #17942. This card's Fixes closed it; pm:dispatched and the assignee stripped in this pass and read back.


    Generated by Claude Code

  18. removed
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    on Sep 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:skillsDomain lane — seat card indexed by label:pm:seatpriority:p2Medium: important, M3

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions