From 7900d80bdf82ebf09877674ce45ee4cd41cebc17 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 14 Sep 2026 03:21:09 +0000 Subject: [PATCH 1/2] docs(pm): landing-operations names the two landing tiers and lanes/ui.md's spec pointer states the landed rule MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The landing runbook sent every governed hit to the human-merge lane, and lanes/ui.md's pointer restated the rule its SKILL.md target had retired — a reader who trusts the pointer gets the retired rule with the authority of the current one. landing-operations.md now forks by path face: a PR whose governed paths all lie under this skill's references/ is the facts tier and enqueues on the in-seat contract-tier record after the three pre-landing checks; everything else is the rules layer, which stays draft with the four-piece until an authorized approval, after which the claiming seat lands it. Neither tier is ever approved by a seat, and the clause about the strip-and-land path sharing this gate is kept. lanes/ui.md states that new packages/spec work is always the domain:spec seat's to close out and that a dispatched card is not re-seated for touching spec. Both files stay at their ratchet ceilings (69 and 38 lines); the extra tier line is paid by merging two duplicate "same action as confirming MERGED" lines, every clause surviving. Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8 Co-authored-by: Claude --- .../skills/pm-dispatch/references/landing-operations.md | 8 ++++---- .claude/skills/pm-dispatch/references/lanes/ui.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.claude/skills/pm-dispatch/references/landing-operations.md b/.claude/skills/pm-dispatch/references/landing-operations.md index 49b779ca6d1..86b2adc9994 100644 --- a/.claude/skills/pm-dispatch/references/landing-operations.md +++ b/.claude/skills/pm-dispatch/references/landing-operations.md @@ -24,17 +24,17 @@ - 契约复核 PASS 落地的 PR 到窗口时已 ready 且 auto-merge 在挂,见 `contract-review.md`。 - 窗口自身权责不变:跟到 MERGED、踢出处置、落地后对账。 - 转 ready 或挂 auto-merge 前先判受管面:`node scripts/pm/check-governed-merges.mjs --test` 加变更路径。 -- 一条命中 ⇒ 整 PR 改走人工合并道:复核照写 + 留 draft + 向授权批准人请审 + 状态评论。 -- ⛔ 不翻 ready、不入队;清标即落地同受此闸,漏判会被队列守卫在 merge group 里拒收。 +- 受管路径全在本技能 `references/` 者事实层:席内达档复核过落地前检三条即转正式入队。 +- 其余为规则层:四件套留 draft 等人合,⛔ 不翻正式不入队;获授权批准后认领席落地。 +- ⛔ 两层不由席位批准;清标即落地同受此闸,漏判会被队列守卫在 merge group 里拒收。 - 再读 `mergeable_state`:`dirty` ⇒ 先 merge `origin/main` 再挂;生成物在面上按 A 的固定序。 - ready + 全绿 ≠ 已入队:队列从不主动拉 PR,入队是显式动作。 - 零 `enqueued` 事件按序查三条:① `mergeable_state` 是否 `dirty`。 - ② enable-auto-merge 调用根本没落地,重发与效果验证序列见 `platform-readings.md`。 - ③ PR 碰 `.github/workflows/**` 而 token 缺 workflows 权限。 -- 确认 MERGED 的同一动作里给 `Part of` 卡收口,`Fixes` 卡代关但标也须摘。 +- 确认 MERGED 同一动作里给 `Part of` 卡收口、`Fixes` 卡代关但标也须摘,⛔ 不拆到下轮巡检。 - `Part of` 卡开着不摘 `pm:dispatched`,无在飞物的卡就永远算进 `label:pm:dispatched is:open`。 - 摘标换回 `pm:queue` 或按剩余物定级,加一条写清交付了什么、剩下归谁的评论。 -- 摘标与 MERGED 确认是一个动作,⛔ 不拆到下轮巡检。 - 同刻读相关卡 `closed_by_pull_requests`,确认没有卡被正文闭合关键词误关。 - 每次合并后重拉一次车道盘点与预期状态对账,⛔ 不留给下轮巡检。 - 取 open 卡清单对照预期 diff:预期之外从 open 消失的,就是被闭合关键词静默误关的卡。 diff --git a/.claude/skills/pm-dispatch/references/lanes/ui.md b/.claude/skills/pm-dispatch/references/lanes/ui.md index e90bab77a87..0c877d05dfc 100644 --- a/.claude/skills/pm-dispatch/references/lanes/ui.md +++ b/.claude/skills/pm-dispatch/references/lanes/ui.md @@ -19,7 +19,7 @@ - 构建产物经 `pnpm objectui:refresh` 回流,见 SKILL.md 〈多仓协调〉。 - 回流后的 console pin bump 是 objectstack 的单张卡,⛔ 永不做本仓 PR 的 rider。 -- 凡触 `packages/spec` 一律转 `domain:spec` 座位,见 SKILL.md 〈多仓协调〉。 +- 新 `packages/spec` 工作恒归 `domain:spec` 席,已派发卡 ⛔ 不因此转席,见 SKILL.md 〈多仓协调〉。 - `scripts/pm/**` 单写手恒在 objectstack 侧 ⇒ 本席的工具需求走上游卡带 `Blocked-by:` 回链。 - 受管面五项含仓根发布 `skills/**`,清单、判据与禁令见 objectui AGENTS.md §9 受管面段。 - ⇒ 命中即停 draft;⛔ 未获授权批准不 ready 不入队不自合、永不批准,获批后认领席落地。 From 460b36b330ceff82f972f3988f8cc7f087920e3f Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 14 Sep 2026 03:27:56 +0000 Subject: [PATCH 2/2] docs(pm): the rules layer waits for a human approval, not a human merge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Under ruling C the rules-layer endgame that this runbook line names is an authorized APPROVED review, after which the claiming seat lands it — the same shape lanes/ui.md :25 already carries. "等人合" restated the human-merge lane this card exists to remove, so the line now reads 等人批. Byte-neutral (112 bytes, the ratchet's classifyLine returns null), equal line count (69/69), no ceiling moved. Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8 Co-authored-by: Claude --- .claude/skills/pm-dispatch/references/landing-operations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.claude/skills/pm-dispatch/references/landing-operations.md b/.claude/skills/pm-dispatch/references/landing-operations.md index 86b2adc9994..6da1bee4f2b 100644 --- a/.claude/skills/pm-dispatch/references/landing-operations.md +++ b/.claude/skills/pm-dispatch/references/landing-operations.md @@ -25,7 +25,7 @@ - 窗口自身权责不变:跟到 MERGED、踢出处置、落地后对账。 - 转 ready 或挂 auto-merge 前先判受管面:`node scripts/pm/check-governed-merges.mjs --test` 加变更路径。 - 受管路径全在本技能 `references/` 者事实层:席内达档复核过落地前检三条即转正式入队。 -- 其余为规则层:四件套留 draft 等人合,⛔ 不翻正式不入队;获授权批准后认领席落地。 +- 其余为规则层:四件套留 draft 等人批,⛔ 不翻正式不入队;获授权批准后认领席落地。 - ⛔ 两层不由席位批准;清标即落地同受此闸,漏判会被队列守卫在 merge group 里拒收。 - 再读 `mergeable_state`:`dirty` ⇒ 先 merge `origin/main` 再挂;生成物在面上按 A 的固定序。 - ready + 全绿 ≠ 已入队:队列从不主动拉 PR,入队是显式动作。