From a49c279853be200c92b643bbb774f6295a195d46 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 9 Aug 2026 03:35:38 +0000 Subject: [PATCH] docs(pm-dispatch): give the objectui local backlog its own target:v17 producer (#6903) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The release board had exactly one producer (the objectstack triage seat, whose step-0 sweep is repo-scoped by design), while the board design routed objectui "via the console bundle" — a clause with consumers and no standing producer. Measured 2026-08-09: objectui's target:v17 was used 7 times in the 2026-08-06/07 audit and all 7 are closed, while its local backlog grew to 117 open / 48 pm:queue (re-measured 119 / 52) with zero open board items. Three surgical edits to the 发版板 section of .claude/skills/pm-dispatch/SKILL.md: 1. producer scope becomes "exactly one producer per backlog" — objectstack triage seat for the main backlog, objectui whole-repo seat for objectui's own local backlog, same binary criterion and same four blocking classes; other execution seats still never add/remove the label, mislabels escalate; 2. the stock-clearing posture is recorded as a separate bullet: objectstack cleared once on 2026-08-06 (309 -> 46), objectui gets one equivalent pass (#6904), and both sides are incremental-only afterwards, never full-rescan; 3. the sibling-repo line points at the new producer and records that the release-day inventory is two queries, with the consumer-bullet wording left to #6906. Maintainer authorization (2026-08-09): 「1 补上生产者」, 「三个动作都创建issue」, 「派发这两个任务」. Internal tooling only (.claude/**) — no release, so the skip-changeset route applies. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01LGRN2cSRfggfX9B2L83bQc --- .claude/skills/pm-dispatch/SKILL.md | 30 +++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/.claude/skills/pm-dispatch/SKILL.md b/.claude/skills/pm-dispatch/SKILL.md index 239cea0593..219f2387b8 100644 --- a/.claude/skills/pm-dispatch/SKILL.md +++ b/.claude/skills/pm-dispatch/SKILL.md @@ -1073,10 +1073,24 @@ Prime Directive #10 是一个强力生产者,而循环原本只有「修掉」 (发布后修不回);④ 发布说明里需要为它道歉的(含「照文档抄即失败」的首小时 体验)。改进型、优化、重构、观察类 finding、内部工具、纯展示瑕疵默认**不 阻塞** —— 坐下一班车。 -- **生产者唯一 = 分诊座位**(与 `domain:*` 同款单一生产者纪律):step 0 分诊 - defect 类新单时顺手判;执行座位不打不摘 `target:`,误判走上报。存量 - 已于 2026-08-06 全量清过一次(309 条 → 46 条),此后只有增量,⛔ 永不再全量 - 重扫。 +- **每个 backlog 恰好一个生产者**(与 `domain:*` 同款单一生产者纪律,只是把 + 作用域切对 —— 一个生产者管一个 backlog,不是一个生产者管全部): + - **objectstack 主 backlog → 分诊座位**:step 0 分诊 defect 类新单时顺手判; + - **objectui 本地 backlog → objectui 整仓座位**(`/pm-dispatch + repo:objectstack-ai/objectui`):在它自己的本地 backlog 扫描时,用**同一条 + 二元判据 + 同四类阻塞**在 objectui 仓里打 `target:`。 + 其余执行座位一律不打不摘 `target:`,误判走上报 —— 单一生产者纪律没有 + 放松,放松的只是「一个座位扫得完所有 backlog」这个错误前提。⛔ 两个生产者 + 各扫各的 backlog,谁都不去扫对方的(step 0 的 repo-scoped 限定正为此,见 + 「析取 2 必须 repo-scoped」)。 + 为什么补这条(实测 2026-08-09):objectui 的 `target:v17` 只在 2026-08-06/07 + 那次审计用过 7 次且全部已闭,此后本地 backlog 长到 117 open / 48 `pm:queue` + (立单读数;本 PR 复测 119 / 52)而板上 open **0** 条 —— 「随 console bundle 入板」有消费方却**没有常设生产 + 者**,而控制台正是从这个 backlog 发出去的。 +- **存量清板姿态(一次性,每侧各一次)**:objectstack 已于 2026-08-06 全量清过 + 一次(309 条 → 46 条);objectui 的存量补一次等价的清板(#6904,判据与四类 + 阻塞照抄本节)。两侧各清完那一次之后**只有增量**,⛔ 永不再全量重扫 —— + 全量重扫正是此前历次一次性标注腐烂的那步。 - **消费者三处**(a label exists iff something reads it):维护者的发版清单 = `label:target: is:open` 一条查询(与 `pm:seat` 状态板同构,标签即 看板);step 3 批次选择板上项优先;step 9 轮次报告第四健康指标。 @@ -1084,8 +1098,12 @@ Prime Directive #10 是一个强力生产者,而循环原本只有「修掉」 已修/不成立的摘牌 + 一句评论(main 一天 ~18 合并,阻塞判断有半衰期)。 - **发版时刻 = 清板,不是重扫**:板上每条三选一 —— 修掉 / 摘牌(不再成立)/ **明示接受带病发布**(摘标签 + 一句 accepted-for-GA 评论留痕,进 release - notes 的 known issues)。姊妹仓同标签:objectui 随 console bundle 入板; - cloud 独立部署不入板,advisory 单列。 + notes 的 known issues)。姊妹仓同标签:objectui **在自己仓里上板**,生产者是 + objectui 整仓座位(见上),修复经 console bundle 随 pin bump 进这次发布; + cloud 独立部署不入板,advisory 单列。⇒ 发版时刻的清单因此是**两条查询** + (objectstack 与 objectui 各一条 `label:target: is:open`),两张板都要 + 清到空;上面「消费者三处」仍写作一条查询,口径更新与发版前 console bump 的 + 衔接归 #6906,不在本次改动范围。 ### 1. Fetch candidates