Skip to content

Commit e05e0de

Browse files
pm-dispatch: drop the per-round tooling dispatch cap; keep the pm-rule filing gate and the two round-report readings (ruling A) (#26254)
Fixes #26122 Clause-②: no Metadata-protocol: none Maintainer Leehom's option on the decision card, as ruling record 6412560587 carries it, verbatim: 「A 删上限,留读数和立卡门」; consequence 「删掉一成上限;保留立卡门和轮次报告的两项读数,产品提交占比连续偏低时由席位报给你」. Triage audit 6416685670: scope exactly as ruled — delete the ≤10% cap, keep the pm-rule filing gate and the two round-report readings. Nothing else is changed here. ## What changed (head `94fbb742`) - `.claude/skills/pm-dispatch/references/execution-duties.md` 候选与批次: deleted the line 「`tooling` 卡至多占一轮派发的 10%,溢出留积压、⛔ 不入 `pm:queue`;⛔ 无门禁无脚本强制。」 — 188 → 187 lines; the CEILINGS row stays 188 (`check-skill-line-ratchet.mjs` only nudges at headroom over 120 lines and never requires lowering; headroom is now 1). - `.claude/skills/pm-dispatch/SKILL.md` `tooling` glossary row: the reader 「每轮派发 ≤10%」 is dropped and the row names 三具名读者 again (候选查询排除、首触即关、普查半态行) — the exact row text the cap PR replaced. 319 → 319 lines; the row shrinks 228 → 207 bytes; widest table row stays 341 (pin 341). - `.claude/skills/pm-dispatch/references/seat-lifecycle.md` 轮次报告与节奏: the product-commit-share reading did not yet carry the ruled consequence, so one line under it now reads 「产品提交占比连续多轮偏低 ⇒ 席位报维护者。」 (64 bytes). Paid in-file (ceiling 96, headroom 0): deleted the 开轮互斥 line that described what the `session-start-fleet.sh` hook prints at session start; the hook's own header is the authority on its output and the operative rule two lines above it (fetch, compute the SKILL.md touch sha, compare with the opening mark) is untouched. 96 → 96 lines. Kept untouched, as ruled: `references/filing-gate.md` 「增改 pm 规则的卡只在维护者点名时立…」, and both round-report readings — the 48h follow-up-PR count and the product-commit share. (Measured: the cap PR #25795 landed exactly those two readings; there was never an in-flight tooling-share reading in `seat-lifecycle.md`, so the dispatch's naming of the first reading was off, the location was right.) Grep for a third spelling of the cap over `.claude/skills/**` before and after (`10%`, `一成`, `≤10`, `tooling` + 上限): before, exactly the two lines above; after, zero. The one other hit, `references/platform-readings.md` 「并发 ≤100」, is a GraphQL rate-limit fact, not the cap, and is left alone. No issue number was spelled into skill text (`check:pm-skill-id-lint` green). ## Line budget | file | before | after | ceiling | |---|---|---|---| | `references/execution-duties.md` | 188 | 187 | 188 (unchanged) | | `SKILL.md` | 319 | 319 | 319 | | `references/seat-lifecycle.md` | 96 | 96 | 96 | No re-wrap; every edited line is under 120 bytes; table rows only shrank. ## Gates (local, on `94fbb742`; exit codes captured before any pipe) `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` derived 20 families from the merge base; all 20 ran with exit 0 and `--ran` reconciles: 20 derived, 20 run, 0 NOT-MEASURED, 0 UNRUN. Among them: `check:pm-skill-ratchet` (self-test 164 cases; SKILL.md 319/319, widest row 341/341; seat-lifecycle.md 96/96; execution-duties.md 187/188), `check:pm-skill-id-lint` (104 files clean), `check:skill-frame-sync` (the one declared copy coherent, 4 axes), `check:pm-governed-prose`, `check:pm-governed-merges` self-test, `check:pm-expected-skips`, `check:doc-authoring`, `check:nul-bytes`. The lint-package gate `check:doc-formula-expressions` first refused with exit 3 (PREREQUISITE NOT MET: `@objectstack/formula` and `@objectstack/lint` unbuilt); after its prescribed build under the verify lock (VERDICT command-exit 0, 4 tasks, 1m59s) it ran green. The local-only family `check:skill-frame-freshness` also ran: current with `origin/main`. `--ran` noted the tree is 4 commits behind `origin/main` at reconciliation time; the range has no file under `.claude/**`, `AGENTS.md`, `CLAUDE.md`, `skills/**` or `scripts/pm/**`, so the derivation is unaffected and the queue's rebuild validates the merge. Dogfood battery: n/a — no `!` in the title and no `(narrowing)` arm. `skip-changeset`: `.claude/**` publishes nothing. ## Acceptance notes (observations, not cards) - `seat-lifecycle.md` 座位贴协议 and `triage-duties.md` 在飞活性复查 both state the knock-then-reclaim rule; the first names the director seat as the releasing actor, the second sits under the triage seat's duties. A protocol observation only; untouched here. - `seat-post-protocol.md` says the protocol must not copy the patrol's current cadence value, while `seat-lifecycle.md` 断粮 section carries 「默认每小时」. Observation only; untouched. ## 维护者速读(草稿) **改了什么**:删掉「tooling 卡至多占一轮派发 10%」这条上限 —— `execution-duties.md` 一行、`SKILL.md` 术语表 `tooling` 行的一个读者;立卡门与轮报两项读数原样保留;轮报读数下补一句「产品提交占比连续多轮偏低 ⇒ 席位报维护者」,以删掉一行钩子输出说明付账,文件行数不变。 **为什么改**:你在决策卡上选了 A「删上限,留读数和立卡门」。上限饿死了以工具为主的车道(28 张 open tooling 卡里 devx 21、skills 5),也压住了缺陷修复;它要保的「注意力留在产品」已由读数达成(48h 内约 143/159 的 main 提交触产品代码)。 **风险与代价(含回滚)**:风险是 tooling 派发占比回升、挤占产品;兜底是轮报两项读数加「连续偏低报维护者」。回滚 = revert 本 PR 的一个 commit(三个文件、五行),不涉脚本、不涉门禁。 **席位意见**: **你要做的**:无需动作。Tier S(`.claude/**`):席位做独立达档复核,PASS 后经队列落地。若日后想恢复上限,在卡上一句话即可,席位照裁决立卡。 --- _Generated by [Claude Code](https://claude.ai/code/session_01LqKsGyMNFwwnbF5FTAqyPn)_ Co-authored-by: Claude <noreply@anthropic.com>
1 parent 823d0f6 commit e05e0de

3 files changed

Lines changed: 2 additions & 3 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
111111
| `pm:blocking` | 有 open 下游依赖者(自 `Blocked-by:` 索引推导的缓存,⛔ 不手工挂);进选择全序 |
112112
| `pm:retriage` | 向分诊提问(改判、跨域 PR 指定车道、改路由、拆卡、裁 dev 报告留下的分叉),定车道与改路由限未派发卡,异议评论写明所求;与现行 `pm:*` 并存、⛔ 不摘原标;带本标签的 `pm:queue` 卡跳过派发 |
113113
| `finding` | 立卡三类内待首次定级,定级即离标;三类外关 not planned;不占队列不进收件箱 |
114-
| `tooling` | 修复落在门禁/脚本/workflow/技能/席位协议/PM 工具面而非产品包;分诊首触打,与 `domain:*` 同笔;四具名读者 = 候选查询排除、每轮派发 ≤10%、首触即关、普查半态行 |
114+
| `tooling` | 修复落在门禁/脚本/workflow/技能/席位协议/PM 工具面而非产品包;分诊首触打,与 `domain:*` 同笔;三具名读者 = 候选查询排除、首触即关、普查半态行 |
115115
| `target:<major>` | 发版阻塞:每个 backlog 恰好一个生产者 |
116116
| `pm:epic`(父单或 sub-issue) | 已由 epic PM 保留;其它 PM 永不取;⛔ 永不与 `pm:queue` 同挂 |
117117
| `pm:seat` | 座位登记贴:协议载体,不是待分诊的工作 |

‎.claude/skills/pm-dispatch/references/execution-duties.md‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
- 整车道一次读全,本地求交:`list_issues` 带 `labels: [domain:X]` + 最小字段拿回全车道 open 集。
88
- 候选 = open、未 assign、无 `needs-user-decision`、无 `pm:retriage`;⛔ 排除三门皆无的 `tooling` 卡。
9-
- `tooling` 卡至多占一轮派发的 10%,溢出留积压、⛔ 不入 `pm:queue`;⛔ 无门禁无脚本强制。
109
- 无分诊审计评论即非候选;例外:sub-issue 承父卡首触,main-red 锚卡见 `landing-operations.md`。
1110
- 已排队父单的 open sub-issue 自动是候选,`pm:epic` 父单的子树除外。
1211
- 每张候选读全文 + 全部评论,写派发词前做决策复读:评论读到最后一页。

‎.claude/skills/pm-dispatch/references/seat-lifecycle.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
- 异于上一开轮标记即先重读;留开轮标记(session ID + fire 时刻 + 该触碰,注明重读)再跑轮。
1919
- 同读 harness 载入面 `.claude/**` 的最新触碰与内容是否已在共享检出 HEAD。
2020
- 否 ⇒ 记座位贴,自然收班时换会话,⛔ 不中断批次;读数走 `scripts/pm/check-harness-current.mjs`。
21-
- `session-start-fleet.sh` 钩子开会话即印 SKILL.md 触碰 sha 与车道席位贴行,供比对开轮标记。
2221

2322
## 座位贴协议
2423

@@ -70,6 +69,7 @@
7069
- 项目席轮报 = 卡线程清单,⛔ 不逐轮发聊天表;五项健康指标进总监席的每日摘要。
7170
- 报告加升级项、呈裁清单、逐 PR 熔断命中项(无则 none),与已落 PR 48h 内开出的跟进 PR 数。
7271
- 与产品提交占比:已合提交不触 `.claude/` `AGENTS.md` `scripts/pm` 门禁脚本 `.github/workflows` 者。
72+
- 产品提交占比连续多轮偏低 ⇒ 席位报维护者。
7373
- 报告含 `UNRECOGNISED` 行:对本轮门禁日志 grep `UNRECOGNISED` 逐行照录,`NOT APPLICABLE` 行也在内。
7474
- 健康指标五个:可派发库存(open `pm:queue` 未认领及趋势);决策箱(待维护者数)。
7575
- 决策箱指标还要点名带开放下游依赖的决策卡,从 `Blocked-by:` 反向索引现算。

0 commit comments

Comments
 (0)