From 08225fc116a16e32dc75b153d8e27992f87a0440 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 27 Oct 2026 10:54:48 +0000 Subject: [PATCH] docs(pm-dispatch): read mergeable_state on every look at a watched PR A PR sat in merge conflict while its thread reported it was only waiting on CI: conflict notices are best effort and often never arrive. Every look at an open PR now reads mergeable_state beside the checks, a dirty PR is merged with origin/main at once, and nobody (thread or coordinator) reports "nothing needed from you" without a settled non-dirty reading. Line-neutral per file: two landing-operations lines whose facts platform-readings.md and AGENTS.md already carry, and one coordinator line that dispatch-runbook.md carries, pay for the additions. Claude-Session: https://claude.ai/code/session_01L9qibvepenMLGwN7rQgFH4 Co-authored-by: Claude --- .claude/skills/pm-dispatch/references/coordinator.md | 2 +- .claude/skills/pm-dispatch/references/dispatch-runbook.md | 2 +- .claude/skills/pm-dispatch/references/execution-duties.md | 2 +- .claude/skills/pm-dispatch/references/landing-operations.md | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.claude/skills/pm-dispatch/references/coordinator.md b/.claude/skills/pm-dispatch/references/coordinator.md index 403c5f6a59f..c2d7ead2b5e 100644 --- a/.claude/skills/pm-dispatch/references/coordinator.md +++ b/.claude/skills/pm-dispatch/references/coordinator.md @@ -30,7 +30,6 @@ - 档位与 effort 的定法住 `execution-duties.md` 派发节:档位引 `dispatch-gates --tier`,effort 按卡难度。 - 改技能(协议语义面)的卡恒契约复审档 `CONTRACT_REVIEW_TIER`;⛔ 不抄模型名。 -- 按派发令所写的 model 与 effort 开线程,⛔ 不等维护者原话;常设原话有则席位引作 `reason:`。 ## 五、卡线程的 `needs_decision`(coordinator 收到时读;席位写分析时读) @@ -47,3 +46,4 @@ - 项目内对维护者用维护者的语言;GitHub 内容英文,照 SKILL.md 全体座位不变量。 - 只在结果、阻塞或待裁决时向维护者汇报,与席位同规;例行进展进线程清单。 +- 转述线程 PR「无需你做」前自读其 `mergeable_state`;`dirty` ⇒ 退回线程先合 main,⛔ 不转述。 diff --git a/.claude/skills/pm-dispatch/references/dispatch-runbook.md b/.claude/skills/pm-dispatch/references/dispatch-runbook.md index 73f7271321c..a0a8bfee8e8 100644 --- a/.claude/skills/pm-dispatch/references/dispatch-runbook.md +++ b/.claude/skills/pm-dispatch/references/dispatch-runbook.md @@ -137,7 +137,7 @@ - 卡线程交回或其 PR 合入,席位当即告知 coordinator 释放槽位。 - 档位与 effort 席位自推导 ⛔ 不等维护者原话:`--tier` 过路径,MANDATORY 即绑;effort 按难度。 - 派发令写两者与推导(`--tier` 行或难度读数),协调者照令开线程;常设原话有则作 `reason:`。 -- 席位留认领文本、派发令、契约复核、ACCEPT 与落地;线程实施、开 draft PR、驱动 CI。 +- 席位留认领文本/派发令/契约复核/ACCEPT/落地;线程实施、开 draft PR、驱动 CI 与可合并。 - 派发令由 coordinator 写进线程开场消息,`Writes:` 行逐字在内,⛔ 不落共享目录;卡上留指针。 - coordinator 开线程即读线程分支交席位(读不到则线程自报);⛔ 线程不认领、不写 assignee。 - 席位写 assignee+`pm:dispatched`+带该 `Branch:` 的认领;线程核对最新认领指向本分支方开工。 diff --git a/.claude/skills/pm-dispatch/references/execution-duties.md b/.claude/skills/pm-dispatch/references/execution-duties.md index 633082a7da5..e70294af154 100644 --- a/.claude/skills/pm-dispatch/references/execution-duties.md +++ b/.claude/skills/pm-dispatch/references/execution-duties.md @@ -153,7 +153,7 @@ - 收集先扫 GitHub(各模式),标记评论在 = 报告完整;评论与返回消息皆无才进探活/判死。 - 标记两种拼写等效(HTML 注释形、首行 `os-dev-report`);⛔ 永不把没收到失败通知读作还在跑。 -- 报告点名 PR ⇒ 会话席当即 `subscribe_pr_activity` 并记座位贴;中继开的 PR 永不自动挂会话。 +- 报告点名 PR ⇒ 会话席当即订阅、记座位贴,照落地 B 节看护;中继开的 PR 不自动挂会话。 - ① Routine 席巡检首动作 `list_triggers` 确认 Routine 启用;项目席由事件与巡查 routine 唤醒。 - ② Routine 席在飞期间主巡检间隔 ≤45 分钟,待命期 60–70;节奏维护者明示可改。 - ③ 已派发未回报的 dev 逐个发状态询问;派发后 ~45 分钟无远程产出即到门槛。 diff --git a/.claude/skills/pm-dispatch/references/landing-operations.md b/.claude/skills/pm-dispatch/references/landing-operations.md index b21f8e4ddfa..17f024074ef 100644 --- a/.claude/skills/pm-dispatch/references/landing-operations.md +++ b/.claude/skills/pm-dispatch/references/landing-operations.md @@ -22,7 +22,6 @@ - 该类仓的落地判据是已发布且探测通过,⛔ 不是 MERGED;跟到发布为止。 - 合并后工作流不在 PR 检查清单上,读 PR 检查的规则对它全盲;按独立检查类登记分开读。 - 人闸不是验证层的替代:答不了会不会坏的人闸只买延迟,⛔ 不以人闸代替探测。 -- 信任 suite/check 事件前先重读 PR 对象取 head:检查读数绑定该 head,⛔ 不绑事件带的 SHA。 - 落地记账:座位贴落地清单即账本,逐轮即时记;确需全仓核对时首选 `head:claude/` 精确过滤。 - 红/踢出处置在同一落地窗口内做:机器输入是 merge-queue triage workflow 的分诊评论。 - 判据唯一来源是签名台账(锚点 issue),优先于现场判断;只有人工能升级台账。 @@ -54,7 +53,6 @@ - CI success webhook 不可靠:⛔ 不坐等,也 ⛔ 不忙轮询;定点文本照定时器写法纪律。 - undraft 撞 429 ⇒ 落地入等 `resets at` 态:该刻记卡,到点一次重试;⛔ 不报阻塞、不自定节奏。 - 落地遭分类器拒 ⇒ 停手、报维护者、卡上记命令与拒因;⛔ 不换拼法、不退回 ccr 绕过。 -- 确认 MERGED 要两个读数:每轮同时读队列分支与 `origin/main`。 - 落地评论 = 两个读数的探针表 + 一行状态变更(摘标/关卡/收口),⛔ 不复述 `## 席位核对`。 - 契约复核 PASS 落地的 PR 到窗口时已 ready 且 auto-merge 在挂,见 `contract-review.md`。 - 转 ready/入队前跑 `check-governed-merges.mjs --pr N`:受管面照两层;>3000 行(含生成物)照 Tier H。 @@ -74,6 +72,8 @@ - 落地后再核一次落地判据本身:队列的合并同样走 os-regen,A 的静默吞并一样能发生。 - MERGED 不是终点:发版后义务见 `release-aftercare.md`。 - 会话席窗口内 PR 须在挂 `subscribe_pr_activity`,缺即补;⛔ 不早于报告,Routine 座位轮询。 +- PR 开出至 MERGED,每看一眼(唤醒/巡检/报告前)同读检查与 `mergeable_state`;`unknown` 即重读。 +- `dirty` ⇒ 当即合 `origin/main` 推新提交,⛔ 不等冲突通知;未见非 `dirty` ⛔ 不报无需你做。 - MERGED 或关闭即退订,同刻把 `mode:cloud` 派的会话 `archive_session`。 - 触发条件是卡终局且报告已收复核;⛔ 合并前不归档,误归档可 unarchive 但容器现场已失。 - 暂停或交接时把在挂订阅清点进座位贴,⛔ 不留孤儿订阅。