Repository navigation
pm-dispatch: drop the per-round tooling dispatch cap; keep the pm-rule filing gate and the two round-report readings (ruling A) - #26254
Conversation
…le filing gate and the two round-report readings stay (ruling A) Maintainer ruling A on the decision card, ruling record 6412560587, verbatim: 「A 删上限,留读数和立卡门」 — 「删掉一成上限;保留立卡门和轮次报告的两项读数, 产品提交占比连续偏低时由席位报给你」. - references/execution-duties.md: delete the 候选与批次 line that capped `tooling` cards at 10% of a dispatch round (188 → 187; ceiling 188 stays, the ratchet requires no lowering for headroom 1). - SKILL.md: the `tooling` glossary row drops the reader 「每轮派发 ≤10%」 and names three readers again, in place (319 → 319; row shrinks 228 → 207 B). - references/seat-lifecycle.md: the product-commit-share reading did not yet carry the ruled consequence, so one line under it now says the seat reports the maintainer when the share reads low for consecutive rounds; paid in-file by deleting the line that described what the session-start-fleet.sh hook prints (its own header is the authority; the 〈开轮互斥〉 rule stays) (96 → 96). Kept untouched, as ruled: references/filing-gate.md (pm-rule cards only on the maintainer's naming) and both round-report readings (the 48h follow-up-PR count and the product-commit share). Claude-Session: https://claude.ai/code/session_01LqKsGyMNFwwnbF5FTAqyPn Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewReviewed at 2026-10-26T17:34Z Served-tier: Reviewer: an independent contract-review subagent, an agent other than the drafter (the in-session os-dev subagent that produced the diff on Inputs: card #26122 body and its three comments (triage first grade 6416685670, claim 6421919798, os-dev-report 6422696560); ruling record 6412560587 on #25768 (author ① Derived judgmentsEvery rule the diff adds, removes or narrows, judged against the ruling verbatim, the triage scope (delete the ≤10% cap, keep the pm-rule filing gate and the two round-report readings, nothing else) and the skill's own regime. (a) Exactly the cap, nothing else, nothing less — holds.
(b) The added sentence — faithful. (c) The two readings kept, byte-exact. From the diff of (d) Ratchet and bytes, measured on the head tree. (e) id-lint. The two added lines carry no issue number ( ② Semver level
③ Boundary flagsPR body acceptance notes and os-dev-report flags, each answered:
Check-runs on Implemented-by: VERDICT: PASS |
席位核对 — ACCEPT ·
|
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.mjsonly nudges at headroom over 120 lines and never requires lowering; headroom is now 1)..claude/skills/pm-dispatch/SKILL.mdtoolingglossary 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 thesession-start-fleet.shhook 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 inseat-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-lintgreen).Line budget
references/execution-duties.mdSKILL.mdreferences/seat-lifecycle.mdNo 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/objectstackderived 20 families from the merge base; all 20 ran with exit 0 and--ranreconciles: 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-mergesself-test,check:pm-expected-skips,check:doc-authoring,check:nul-bytes. The lint-package gatecheck:doc-formula-expressionsfirst refused with exit 3 (PREREQUISITE NOT MET:@objectstack/formulaand@objectstack/lintunbuilt); after its prescribed build under the verify lock (VERDICT command-exit 0, 4 tasks, 1m59s) it ran green. The local-only familycheck:skill-frame-freshnessalso ran: current withorigin/main.--rannoted the tree is 4 commits behindorigin/mainat reconciliation time; the range has no file under.claude/**,AGENTS.md,CLAUDE.md,skills/**orscripts/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座位贴协议 andtriage-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.mdsays the protocol must not copy the patrol's current cadence value, whileseat-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