Skip to content

Commit 97afcb5

Browse files
claude[bot]claude
andauthored
pm-dispatch: a governed PR at ACCEPT gets needs-user-decision and a Chinese maintainer brief (#15908)
At ACCEPT on a governed-surface PR the seat, in the same stroke, adds the needs-user-decision label to the PR and posts a Chinese 「维护者速读」 comment in a fixed five-part shape (what changed in business terms / why / risk and cost incl. rollback / the seat's recommendation / the one act asked). The brief is split: the dev drafts it in the PR body under `## 维护者速读(草稿)` with 席位意见 left blank; the seat finalizes it at ACCEPT against its own diff read and posts the final comment, which is what the maintainer reads. The English ACCEPT stays the review record. On a PR the label means "awaiting the maintainer's review", outside the six-state card set, and leaves with the merge or when the seat withdraws the verdict. Decision cards carry the same brief above their four-facet block, ending in the one-word answer asked. The brief is named as the fourth Chinese channel in the language rule; the three existing channels are unchanged. SKILL.md stays line-neutral (811/811, table pin 342): the additions are funded by folding lines already stated elsewhere in the file or in the review checklist. ensure-pm-labels.sh: the needs-user-decision description gains the PR meaning (93 characters, under the 100-character cap). Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox Co-authored-by: os-steve <noreply@anthropic.com>
1 parent 7b20ae2 commit 97afcb5

2 files changed

Lines changed: 14 additions & 13 deletions

File tree

.claude/skills/pm-dispatch/SKILL.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
9393
- 所有状态在 GitHub:只经 issue 标签、assignee、正文行与 `pm:seat` 座位贴读写。
9494
- 循环必须能从全新会话恢复。
9595
- PM 不写文件、不写代码;唯一例外及其全部条件见红线。
96-
- GitHub 上一切新内容用英文。
97-
- 中文只留三通道:轮次报告、派发令里的裁决引文、决策四维分析(评论与四棱块)。
96+
- GitHub 上一切新内容用英文;中文只留四通道,含 `## 维护者速读`(受管 PR 与决策卡)
97+
- 另三通道:轮次报告、派发令里的裁决引文、决策四维分析(评论与四棱块)。
9898
- 裁决引文照抄不译;四维中文只管新记录,存量英文块 ⛔ 不迁移;存量中文 ⛔ 不追溯改写。
9999
- 先认领后动工;assignee 不是你 ⇒ 已被认领,永不碰。
100100
- 一座位一车道双射:域 X 谁管、PM Y 管什么,各恰好一个答案。
@@ -351,11 +351,12 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
351351
- `pm:queue` 也收恢复不变量的 finding 与 test-only pin。
352352
- `needs-user-decision` = 设计卡、feature/契约形状提案、需要 appetite 的多周程序。
353353
- 碰存量数据迁移形状或删除已发布能力的卡也进决策箱。
354-
- 决策卡落卡必带四棱卡面块,⛔ 不留待有人接手再补。
354+
- 决策卡落卡必带四棱卡面块与其上的「维护者速读」,⛔ 不留待有人接手再补。
355+
- 决策卡的速读同题,用业务语言先讲事情与选项,末句只问一字:A/B/C 或是否。
355356
- `finding` = 观察类(死代码、未演练漂移、抛光;真实但今天没有用户撞上),待首次定级。
356357
- 先修复:正文被 sanitizer 截断的卡不可派发,评论修复指令后跳过。
357358
- 停摆指令判据必须比其它分类更硬(双读取),事后证伪同处公开作废。
358-
- 决策箱勤务:落卡入箱时校验/补全标准四棱卡面块;存量卡低频子轮回填,语言按不变量。
359+
- 决策箱勤务:落卡入箱时校验/补全四棱块与速读;存量卡低频子轮回填,语言按不变量。
359360
- 原生 issue 类型 Bug/Feature/Task 是分诊的固定产出。
360361
- 分诊席是 `type` 字段的唯一权威生产者;立单者可预填,分诊校正。
361362
- 判据:违背已声明契约 ⇒ `Bug`,扩大接受集/公开面 ⇒ `Feature`,其余 ⇒ `Task`
@@ -592,13 +593,10 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
592593
- PR 形态与范围:draft、目标 `main``Fixes`/`Part of` 首行判据,翻 ready 前亲核。
593594
- `Part of` 卡 MERGED 时点收口;changed files 范围与 changeset/`skip-changeset` 分流;测试证据。
594595
- 报告在草稿 PR 时点到达,CI 收敛读数只属于复核侧:gate `in_progress` 是诚实读数。
595-
- 放行前亲核判据;收敛期补丁轮与本单等 CI 例外见 checklist。
596596
- 绿色输出≠ 该绿证明了被测风险:拒收断言、全绿方向与时序、pin 翻转、边界后收益。
597597
- 证伪是好运行:`premise_still_valid: false` 是再分诊输入;dev 纠正 PM 当众认。
598-
- 判据被测量推翻照 ACCEPT,证据要件在 checklist。
599598
- 删除与二进制:死代码删除亲核引用面;`+0/-0` 先疑 NUL;sweep 范围外产出成组列出。
600-
-`skills/**` 的 PR 加问整包价值密度:从整包加载的客户 agent 的座位上读。
601-
- ⛔ 不从功能作者的座位读价值密度。
599+
-`skills/**` 的 PR 加问整包价值密度:从整包加载的客户 agent 座位读,⛔ 不从作者座位读。
602600
- 超派发预算或小功能大扩写 ⇒ REWORK,⛔ 不因已经写好了放行。
603601
- 判决 ACCEPT:issue 英文短评论,核对清单结论 + 抽查读数 + 偏差,链接 PR,⛔ 不复述其叙事。
604602
- 判决 REWORK:逐项反馈,同认领重派;补丁轮优先 SendMessage 续派原 dev;最多 2 轮,第三次升级。
@@ -607,18 +605,21 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
607605
- 路径面用 `get_files` 取,⛔ 不看报告自述;动手之前先分,不是事后对照。
608606
- governed 面统一定义:`docs/adr/**` + `.claude/**`(全量,含 agents/hooks/settings)+ `skills/**`
609607
- governed 面同含 `AGENTS.md` + `CLAUDE.md`;agent 指令文件跨仓同判,仓集读 `GOVERNED_REPOS`,此处不列。
610-
- 路径面一条命中 ⇒ ACCEPT 换终局四件套。
608+
- 路径面一条命中 ⇒ ACCEPT 换终局四件套,混合 diff ⛔ 不按比例判;要拆让 dev 单独开 PR
611609
- ① 复核结论照常写在 issue 上;技能面 PR 的复核席须跑在契约复审档位。
612610
- ② PR 留给维护者看得见地悬着;终局两条:人工直合即审核记录;授权批准 ⇒ 队列放行。
611+
- 看得见 = ACCEPT 同笔挂 `needs-user-decision` + 贴终稿「维护者速读」评论;①仍是审核记录。
612+
- 速读五段固定:改了什么/为什么改/风险与代价(含回滚)/席位意见/你要做的(一个动作)。
613+
- 草稿归 dev:受管面 PR 正文带 `## 维护者速读(草稿)`,中文、业务角度,席位意见留空。
614+
- 终稿 = 席位对照自己读的 diff 校正草稿、填席位意见后贴评论;维护者只读评论。
615+
- PR 上的标签 = 待维护者审阅,不入六态;与请审同为等人合清单,随合并或撤回判决离开。
613616
- 批准判定单源 = 队列守卫常量 `GOVERNED_APPROVERS`:授权账户 APPROVED 即算,⛔ 不卡 `commit_id`
614617
- 批准后再推提交也不过期;无批准 ⛔ 不翻 ready、不入队、不挂 auto-merge。
615618
- ③ 在 draft PR 上向两个授权批准账户 `os-zhuang``hotlong` 都 request review,主动推。
616-
- 等人合清单从此活在 GitHub 的 Review-requested 队列,合并自动消项。
617619
- PR 作者身份即两账户之一的席位时,对该账户请审必失败(author-identity 422)。
618620
- 该账户改为把 PR assign 给它替代通知,另一账户照常请审;轮次报告点名说明走了兜底。
619621
- 请审走免碰 draft 位的专用 REST 端点,MCP 兜底显式带 `draft: true`;端点事实住 platform-readings。
620622
- ④ 轮次报告单列 awaiting a human merge。
621-
- 混合 diff 一条命中就分叉,⛔ 不按比例判;要拆就让 dev 单独开 PR。
622623
- 已入队才读到本条 ⇒ 转 draft 与 disable 都做;出队以阳性探针答,ref 缺席只旁证。
623624
- skills 车道自有 PR 再按 diff 内容分流:diff 含任一 `.md` 文件 ⇒ 终局四件套照旧。
624625
- 纯代码面(`scripts/pm/` 工具、`.claude/` hooks/workflows/settings、非 md 产物)⇒ skills 席自审。
@@ -755,7 +756,6 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
755756
- 长远合理性权重恒 ≥50%:推荐以长远的读数领起,四轴冲突时其余各轴合起来投不翻它。
756757
- 权重按缩小而非扩大特例与契约增生读,⛔ 不据它为投机扩张背书。
757758
- 权重是推荐规则不是授权规则:50% 不把人工地板的事变成可派发的事。
758-
- 标准四棱卡面块是落卡与升级的必备件,每张 `needs-user-decision` 卡落卡即带。
759759
- 收件箱由维护者定期消化,⛔ 不 assign 推送。
760760
- 四维分析从业务的角度写;写法六项与四棱块固定形状见 `references/decision-analysis.md`
761761
- 推荐是输入,永不是放行,人工地板不变。

scripts/pm/ensure-pm-labels.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,8 @@ gh() {
183183
for R in objectstack-ai/objectstack objectstack-ai/objectui objectstack-ai/cloud objectstack-ai/objectos objectstack-ai/hotcrm; do
184184
gh label create pm:queue -R "$R" -c 0e8a16 -d "Ready for the PM dispatch loop" 2>/dev/null || true
185185
gh label create pm:dispatched -R "$R" -c 1d76db -d "Dispatched to a dev agent by /pm-dispatch" 2>/dev/null || true
186-
gh label create needs-user-decision -R "$R" -c d93f0b -d "Blocked on a maintainer decision — do not dispatch" 2>/dev/null || true
186+
# needs-user-decision on a PR means awaiting the maintainer's review (SKILL.md 复核, 终局四件套); on a card it is the ruling inbox.
187+
gh label create needs-user-decision -R "$R" -c d93f0b -d "Blocked on a maintainer decision — do not dispatch; on a PR: awaiting the maintainer's review" 2>/dev/null || true
187188
gh label create pm:on-hold -R "$R" -c e4e669 -d "Decision made, deliberately deferred — no dispatch, no nag; restart condition in the hold comment" 2>/dev/null || true
188189
gh label create pm:blocked -R "$R" -c b60205 -d "Blocked by another issue/PR — body carries Blocked-by: #N" 2>/dev/null || true
189190
# pm:awaiting-maintainer — the state for a card whose remaining work is a

0 commit comments

Comments
 (0)