Skip to content

Commit d285586

Browse files
claude[bot]claude
andauthored
docs(pm-dispatch): 发版板协议 —— target:<major> 作为发版视角的常设轴(维护者 2026-08-06 拍板) (#6087)
维护者痛点:「想发版时,哪些优先,始终没有渠道知道」;历次一次性标注均因无生产 者/无消费者/无所有者而腐烂。本次把发版轴接进常设机器:二元判据四类(已发布面 缺陷/契约撒谎/存量数据/道歉级含首小时体验);分诊座位唯一生产(同 domain:* 纪律);三处消费者(维护者标签查询、step 3 批次优先、step 9 第四健康指标); 与发现分诊轮同节奏的鲜度复查;发版时刻 = 清板三选一(修/摘/明示接受留痕)。 存量 309 条已于 2026-08-06 全量清过(46 条上板),此后只有增量。 按 #5925-7 裁决的零混装纪律,本件不含任何搬移;瘦身另行纯搬移 PR。 Claude-Session: https://claude.ai/code/session_01GcjbQLUQKysMU9uXB34iyv Co-authored-by: Claude <noreply@anthropic.com>
1 parent b691ba9 commit d285586

1 file changed

Lines changed: 35 additions & 1 deletion

File tree

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

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ write state only through these signals:
5252
| label `needs-user-decision` | a decision is **pending** — never dispatch, never auto-answer; it sits in the maintainer's inbox and MAY be surfaced again in round reports |
5353
| label `pm:on-hold` | a decision was **made** and the answer is "not now" — never dispatch AND never nag; wait for the restart condition recorded in the hold comment |
5454
| label `pm:blocked` + body line `Blocked-by: #N` | waiting on another issue/PR — skip at selection; re-check when #N closes |
55+
| label `target:<major>`(如 `target:v17`) | 发版阻塞(发版板)—— 分诊座位唯一生产;step 3 优先、step 9 计数、维护者清单查询消费;详见「发版板」 |
5556
| label `pm:epic`(on a parent)| 整棵子树已委托给一个专职 epic PM(会话与文件领地写在**父单正文**;`label:pm:epic` 即全量索引,`pm:seat` 座位贴体系不重复记)— 其它 PM 一律不把该子树的 sub-issue 当候选(见「Epic 子树车道」) |
5657
| open PR referencing the issue | implemented, in review |
5758
| merged PR with `Fixes #n` | done (GitHub closes the issue) |
@@ -787,6 +788,33 @@ Prime Directive #10 是一个强力生产者,而循环原本只有「修掉」
787788
关系的发现挂进去等于让未分诊的东西静默入池;那种情况独立立单 +
788789
`Blocked-by:`(cloud#1045/#1046 之于 cloud#1050 即此形)。
789790

791+
#### 发版板(`target:<major>` —— 发版视角的常设轴,维护者 2026-08-06 拍板)
792+
793+
维护者的原始痛点:「我想发版了,不可能清单上这么多问题都处理,哪些优先,我始终
794+
没有渠道知道」—— `pm:queue` 是工作蓄水池,不是发版清单;此前的历次一次性标注
795+
都因**无生产者、无消费者、无所有者**而腐烂。本节把发版轴接进常设机器:
796+
797+
- **判据(二元;⛔ 不做 P1-P5 渐变 —— 渐变没人维护,一周就烂)**:对 defect 类
798+
issue 问一句「**不修它,当前 RC 能不能发?**」。判阻塞的四类:① 用户今天就会
799+
撞的已发布面缺陷(数据错、静默丢、安全洞、跑不起来);② 公开契约的
800+
declared≠enforced(发出去就是撒谎的 API/schema);③ 存量数据/迁移形状
801+
(发布后修不回);④ 发布说明里需要为它道歉的(含「照文档抄即失败」的首小时
802+
体验)。改进型、优化、重构、观察类 finding、内部工具、纯展示瑕疵默认**
803+
阻塞** —— 坐下一班车。
804+
- **生产者唯一 = 分诊座位**(与 `domain:*` 同款单一生产者纪律):step 0 分诊
805+
defect 类新单时顺手判;执行座位不打不摘 `target:<major>`,误判走上报。存量
806+
已于 2026-08-06 全量清过一次(309 条 → 46 条),此后只有增量,⛔ 永不再全量
807+
重扫。
808+
- **消费者三处**(a label exists iff something reads it):维护者的发版清单 =
809+
`label:target:<major> is:open` 一条查询(与 `pm:seat` 状态板同构,标签即
810+
看板);step 3 批次选择板上项优先;step 9 轮次报告第四健康指标。
811+
- **鲜度**:与发现分诊轮同节奏(每 ~5 轮)对板上 open 项做过时前提检查 ——
812+
已修/不成立的摘牌 + 一句评论(main 一天 ~18 合并,阻塞判断有半衰期)。
813+
- **发版时刻 = 清板,不是重扫**:板上每条三选一 —— 修掉 / 摘牌(不再成立)/
814+
**明示接受带病发布**(摘标签 + 一句 accepted-for-GA 评论留痕,进 release
815+
notes 的 known issues)。姊妹仓同标签:objectui 随 console bundle 入板;
816+
cloud 独立部署不入板,advisory 单列。
817+
790818
### 1. Fetch candidates
791819

792820
List open issues matching the filter, excluding anything assigned or labeled
@@ -935,6 +963,10 @@ an issue to a later round, record the known trap on it before the round ends.
935963
(assign + claim comment + race check 一步不少)。此前协议通篇没有这个标签的
936964
消费者,违反「a label exists iff something reads it」—— 本段就是它的读取方。
937965

966+
**发版板优先。** 批次选择时 `target:<major>` 板上项排在普通队列项之前(仅次于
967+
`priority:p0` 插队;两者叠加 = 最高优先)。板上项照常受同文件串行与认领协议
968+
约束 —— 优先是排序,不是豁免。
969+
938970
### 4. Claim
939971

940972
All agents share one GitHub identity, so the assignee alone says "some agent
@@ -1765,7 +1797,9 @@ area; that is the loop working, not failing):
17651797

17661798
- **dispatchable inventory** — open `pm:queue` unassigned, and its trend;
17671799
- **decision inbox**`needs-user-decision` count awaiting the maintainer;
1768-
- **finding median age** — aging findings mean the 发现分诊轮 is overdue.
1800+
- **finding median age** — aging findings mean the 发现分诊轮 is overdue;
1801+
- **release blockers** — open `target:<major>` count and trend(归零 = 可发版;
1802+
清板协议见「发版板」)。
17691803

17701804
**座位 Routine 没有交互通道。** fresh-session fire 没有对话对面的人,轮次报告
17711805
因此走 Routine 的**完成通知**(`notifications`,fresh-session Routine 专有;

0 commit comments

Comments
 (0)