pm-dispatch: a governed PR at ACCEPT gets needs-user-decision + a Chinese 「维护者速读」 brief (dev draft, seat final) - #15908
Conversation
…hinese maintainer brief 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). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
|
ACCEPT — lands #15894 as ruled. Governed ( What the seat verified, at head
Open question answered: A. The published Follow-up already placed: the dev-side line for Implemented-by: os-dev executor, flight #15894, branch Generated by Claude Code |
维护者速读改了什么:PM 手册( 为什么改:你今天的指示,原文:「我看到有很多5小时之前积压的pr,单我从列表看不出来哪些是需要我审核的,对于需要我审核的任务,比如adr,应该由契约复审先帮我审核,用中文从业务角度写上分析和意见,然后我就可以快速确认。」今天 13:2xZ 起已有三个 PR、两张决策卡照此做;这张 PR 把做法写进手册,以后每张受管 PR 都照做,不再靠席位记得。 风险与代价(含回滚):只改 PM 手册与一个标签描述,不碰产品代码;34 个派生门禁 + 全仓 lint 全绿,席位在自己的比对树上复跑了行数棘轮、编号 lint、标签描述上限、受管面判定。代价一: 席位意见:建议批准。四轴:业务需求是你今天实测提出的,不是推测;长远上规则只住手册一处,派发令与 os-dev 规则(#15857 在飞)各引一句,不重复;防 AI 错:五段固定、草稿/终稿分工、席位校正,dev 写错由席位兜住;创业阶段:不加一行、不扩公开面,已发布的 你要做的:批准并入队,或人工直合。一字:是/否。 Generated by Claude Code |
Fixes #15894
What this PR writes
The rule, once, in the file that governs the seat —
.claude/skills/pm-dispatch/SKILL.md— plus the label description inscripts/pm/ensure-pm-labels.sh.Governed endgame (复核 → 终局四件套, under ②) — five lines, folded in below the existing ② line:
needs-user-decisionto the PR and posts the final 「维护者速读」 comment; ① (the English ACCEPT on the issue) stays the review record.## 维护者速读(草稿)— Chinese, business angle, 席位意见 left blank.Decision box (分诊) — a
needs-user-decisioncard carries the same brief above its four-facet block (same heading), business terms first, ending in the one-word answer asked (A/B/C or yes/no); box duty checks/completes both the four-facet block and the brief.Language rule (全体座位的不变量) — Chinese keeps four channels; the fourth is
## 维护者速读(on governed PRs and decision cards). The three existing channels are spelled unchanged on the next line.ensure-pm-labels.sh:187— theneeds-user-decisiondescription becomesBlocked on a maintainer decision — do not dispatch; on a PR: awaiting the maintainer's review— 93 code points (cap 100;check:pm-label-desc-capmeasures code points, agreeing with GitHub). One comment line above it states the PR meaning.Untouched by ruling: the state-model row (line 110, card meaning), the six-state exclusivity line (now 125), the dispatch ban in 红线 (line 29, about cards),
CLAUDE.md/AGENTS.md,references/**, and the patrol row — #15895 remains open, blocked behind #15884.Line-neutral proof (SKILL.md)
check-skill-line-ratchetbefore and after, same tree convention: 811 lines (ceiling 811; headroom 0) and widest table row 342 bytes (pin 342; headroom 0). Widest line I wrote: 119 bytes (LC_ALL=C awk length); every line I wrote is ≤ 120 bytes. The pre-existing 172-byte line 810 (a single long code span, the ratchet'sunbreakableclass) is onorigin/mainat4f379125e3unchanged.Six lines were added and six retired; each retirement is content already stated elsewhere, not a re-wrap:
references/review-checklist.mdlines 39 and 42; 复核 lines 590/592 (亲核)references/review-checklist.mdline 71; 复核 line 597needs-user-decision卡落卡即带Gates (all on
3b86d07a7b, exit codes captured before any pipe)node scripts/pm/dispatch-gates.mjs --tier --repo objectstack-ai/objectstack→ MANDATORY (clause ①, SKILL.md main file).--commandsderived 34 families from the committed change set (2 paths vs merge base4f379125e); every command run;--ran→✓ dispatch-gates --ran: 34 derived famil(ies) accounted for — 34 run, 0 NOT-MEASURED.33 green on first pass;pnpm --filter @objectstack/lint run check:doc-formula-expressionsexited 3 = PREREQUISITE NOT MET (@objectstack/formulanot built — not a measurement); afterpnpm exec turbo run build --filter=@objectstack/lint(closure incl.@objectstack/formula, both under the verify lock) the re-run exits 0 — self-test 58 ✓ cases; the live run judges every registered expression slot and prints its deliberate skips (6 *When site(s) SKIPPED — layer not statically determinable, so NOT judged) rather than staying silent. Every one of the 34 is now a measurement.check-skill-line-ratchet --self-test→155 cases pass; live → the two SKILL.md lines quoted above, plus every other ceiling green.check-skill-id-lint→24 file(s) clean.check-skill-frame-sync→2 copies … structurally isomorphic, 4 axes.check-half-states --self-test→2267 cases pass(no H-row pins a sentence I touched).check-label-desc-cap --self-test→ all cases passed;pnpm check:pm-label-desc-cap→23 label descriptions … all ≤100 characters (longest: 100, repo:objectui).bash -n scripts/pm/ensure-pm-labels.sh→ exit 0.pnpm check:nul-bytes→no raw ASCII control bytes.pnpm lintthroughscripts/pm/os-verify-lock.sh(slotissue-15894) →VERDICT command-exit 0 · held the lock 84s · waited 0s.check-governed-merges --teston the file list → exit 3:.claude/**hit — governed; this PR stays draft for the seat's contract-tier review and a human landing.Follow-ups (not in this diff)
.claude/agents/os-dev.mdPR-body rules need one line for the dev-side draft half; that file belongs to member 4 and finding(agents): os-dev.md still carries the falsified PR-body footer reading (a PATCH downgrades the session-URL footer to bare) after AGENTS.md moves to the measured form #15857 is queued on it — the seat folds the line into finding(agents): os-dev.md still carries the falsified PR-body footer reading (a PATCH downgrades the session-URL footer to bare) after AGENTS.md moves to the measured form #15857.skills/objectstack-pm-dispatch/SKILL.mdline 153 (published catalog) carries the card-only label description in its setup snippet; whether the published copy should learn the PR meaning is a published-catalog question — left to the seat,skills/**was out of scope by ruling.维护者速读(草稿)
改了什么:PM 手册(pm-dispatch SKILL.md)写进一条规则:受管面 PR(ADR、agent 规则、PM 协议、hook、skills)复核通过时,席位同一笔在 PR 上挂
needs-user-decision标签,并贴一条中文「维护者速读」评论(改了什么/为什么改/风险与代价/席位意见/你要做的);dev 开 PR 时先在正文写草稿,席位复核后校正、填席位意见、贴终稿。决策卡也在四棱分析之上放同样的速读,末句只问你一个字。标签描述加上 PR 上的含义。手册行数不增(811/811),靠合并已在别处写过的行付账。为什么改:你今天的指示,原文:「我看到有很多5小时之前积压的pr,单我从列表看不出来哪些是需要我审核的,对于需要我审核的任务,比如adr,应该由契约复审先帮我审核,用中文从业务角度写上分析和意见,然后我就可以快速确认。」今天 13:2xZ 起三个 PR、两张决策卡已按此做;这张 PR 把做法写进手册,以后每张受管 PR 都照做。
风险与代价(含回滚):只改 PM 手册与一个标签描述,不碰产品代码;手册行数与表宽度不变,34 个派生门禁 + 全仓 lint 全绿。代价:
needs-user-decision在 PR 上多一个含义(卡上 = 待裁决,PR 上 = 待你审阅),手册里两处分开写明。回滚 = 一次 revert。席位意见:(草稿留空,席位复核后填)
你要做的:批准 + 入队,或人工直合。
🤖 Generated with Claude Code
https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
Generated by Claude Code
Generated by Claude Code