skills(pm-dispatch): charter references — clause-② applicability, the shape-1 red exception, the two-layer landing, the three-class blocker rule, the director batch (#17942 chain, second half) - #18038
Conversation
… red with the same name and failure signature is not counted Member 17934 of the charter chain (head 17942), references half. The ruling, option 1, verbatim (maintainer 「以上接受你的建议。」 to the seat's text): **1(荐)**:加一条例外——某个红若在该 PR 的 merge-base 提交上**同名、同失败签名**地红 ⇒ 不计入「全绿」;主干红仍必须立单止血(不变)。判据机读:API 能读 base 提交上同名 check 的结论,不靠席位口头判断。 contract-review.md 60 → 60. Added on the ③ line: the exception clause (merge-base 上同名同失败签名的红不计); one new line states the signature — same failing step and same first error line, read from the base commit's check runs by the API, never a seat's word — and the unchanged stanching duty (主干红止血立单不变). Paid inside the file: the two 父会话 lines (逐字采纳/整体作废 with its three void causes, and ⛔ 不改写、删节、润色) folded into one line — they are one rule (adopt verbatim or void whole) and no clause is lost. Every edited line ≤ 120 bytes. Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8 Co-authored-by: Claude <noreply@anthropic.com>
…lity per lane, once Member 17933 of the charter chain (head 17942), references half. The misreading the card carries, verbatim (the maintainer, in a dispatch round): 「不是说你的 ui 车道不需要契约复审了吗?为什么还有 `needs:contract-review`」. lanes/ui.md :38 already states the answer for objectui (landed in the rules-layer PR); this commit makes contract-review.md carry the per-lane statement it points at, so a lane file pointing here finds the rule and not a pointer back. contract-review.md 60 → 60, four lines rewritten in place, no line added: - 复核归属与资格 :27 → 「逐车道:spec 席达档审契约增量;余席默认档自审加门禁、挂标;豁免仅独立性件与保险丝」 (the three-paragraph synthesis the card asked for, on one line). - :12 drops 「达档只在 spec 席」 — with the per-lane line and the independence piece open to a claimed card's cross-lane face, the fragment is no longer true; the rest of the line is unchanged. - 落地前检 ① 「(spec 席达档)」 → 「(档位按逐车道)」 for the same reason. - 降档保险丝 :60 closes the derivation the card names: 「复核正为补偿低档派发而存在」 → 「复核 ⛔ 不随派发档位免除」 (a non-low-tier dispatch does not waive the review; every lane hangs the label). Every edited line ≤ 120 bytes. Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8 Co-authored-by: Claude <noreply@anthropic.com>
…r waits for the maintainer's word, references-only lands through the queue Member 17950 of the charter chain (head 17942), references half; the guard's tier is its own card. The ruling, verbatim — the boundary put to the maintainer: > **规则层(你确认)**:所有 SKILL.md 级的规则文本——发布的 `skills/**`(两个仓)、`.claude/skills/*/SKILL.md`(含 pm-dispatch 本体和内部 playbook)、`core-rules.md`、`.claude/agents/**`、hooks、settings、`AGENTS.md`、`CLAUDE.md`、ADR。 > **事实层(席内契约复审档复核后入队)**:只有 `.claude/skills/pm-dispatch/references/**`——平台读数表、runbook、契约复核细则、车道文件、状态机细则。 Maintainer: 「我点头」 contract-review.md 60 → 60. Added under 落地前检③: 「规则层等维护者的字;受管路径全在 `.claude/skills/pm-dispatch/references/` 者达档过本三条入队」 — the path spelled without the `**` glob, the tier's own review being the ① PASS at the served tier the fuse verifies. Paid inside the file: the 载体纪律 line 「受管面人工合并 ⛔ 不替代复核,两道保障叠加」 deleted — its rule survives in SKILL.md 〈复核〉 ① (复核结论照常写在 issue 上;技能面 hunk 须由契约复审档的席复核) and in AGENTS.md Prime Directive 14 (a human merge is the review record, not a relaxation). Every edited line ≤ 120 bytes. Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8 Co-authored-by: Claude <noreply@anthropic.com>
…ost-dispatch cross-lane face; the runbook carries the three-class detail Chain head 17942, references half. Rulings, verbatim: - director record: to decision batch #131 presented as `1A(+三类表)·2(1)·3A·4B`: 「同意」 「同意」 - maintainer 「以上接受你的建议。」 to the seat's text: **A(荐)**:认领席跟到 MERGED。具体动作:标签不换、assignee 不清;认领席起一个隔离的 fable 复核子代理审契约(就是你对 17718 那句授权的通用化),复核记录写明 `Implemented-by:` 分支、`Reviewed-by:` 席位会话;受管面照旧留 draft 给你。spec 席仍是**新** spec 卡的唯一入口(分诊路由不变),只是不再收回已交付的活。 验收**必需**的衍生工作 → 立成父单的 sub-issue,认领席自动拥有,同席做到 MERGED,优先级继承父单。… **阻塞项**(`Blocked-by:` 指向的卡):无人认领 → 被阻塞的席位直接认领做掉;已被别席在飞 → 等,但那张卡在对方车道排到最前(`pm:blocking` 机制已有)。… **顺带发现**(与验收无关)→ 独立卡回池子,不并,防范围蔓延。边界不变:一卡一 PR;spec 新工作入口归 spec 席。 - ruling ③ (maintainer 「同意」), point 2: 2. **唯一例外:在飞卡的衍生子卡**(今早 Q2 第一类)。拥有它的席位带父卡的域和优先级直接立卡并派发,不等分诊;分诊的小时 sweep 会事后扫到它,查到重复按 `duplicate` 关。Q2 其余三类不变。 contract-review.md 60 → 60, two lines rewritten in place: - 复核归属 :26 gains 「借复核不移卡,新 spec 工作恒归 spec 席」 — the imported review moves no card and is not the intake for new spec work. - 独立性件 :34 → 「独立性件:契约真分叉、dev 挂旗或派发后的跨车道面(含 spec)⇒ 起隔离的达档复核子代理」 — the spec-seat-only prefix goes, the post-dispatch cross-lane face becomes the third trigger; the Implemented-by / Reviewed-by lines below it already carry the record. dispatch-runbook.md 241 → 241: 〈跨车道简单阻塞项直接接手〉 (heading + four lines) rewritten as 〈在飞卡衍生与阻塞项三类细则〉 (heading + four lines). Out: the S-level shape (等一周与做十分钟) and the 「`packages/spec` 恒归 spec 座位,本条不豁免」 line — both lifted by the ruling; the rules-layer PR already deleted SKILL.md's pointer to the old section, so nothing describes it any more. In, as detail under the three-class rule SKILL.md now states: the derived sub-issue's labels, keywords and parent checklist line; the unclaimed blocker's one-card scope (only the `Blocked-by:` target, return when done — the two clauses that survived the old section) and its contract face going through the independence piece, `packages/spec` included; the in-flight blocker's waiter line and p0/p1 propagation along the chain. Every edited line ≤ 120 bytes. Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8 Co-authored-by: Claude <noreply@anthropic.com>
…arrying an in-seat ACCEPT as one decision batch — mechanics in director.md and decision-analysis.md Member 17951 of the charter chain (head 17942), references half. Provenance, verbatim: Maintainer: 「③ 受管面手合本身也是一条队列。能否简化我的审核步骤,比如我召唤项目总监时可以批量决定?」 SKILL.md 〈升级与决策〉 already states the rule (every summon presents the governed drafts carrying an in-seat ACCEPT as ONE batch of ≤5 rows; the approval and the merge stay the maintainer's click). lanes/director.md 72 → 72. Added under 职责二 (three lines): the enumeration (both repos, `is:pr is:open is:draft label:needs-user-decision`, cross-checked against the awaiting-a-human-merge lists, the difference named); the presentation (those with an in-seat ACCEPT as one batch of ≤5 rows, row form in decision-analysis.md; a PR missing one of its four pieces is listed with the gap, not presented); the close (the maintainer's one-line answer recorded verbatim on each PR, missing review requests made, then stop — the approval and the merge are the maintainer's clicks). Paid inside the file: 「唯一裁决者 … 维护者在哪个仓工作就在哪个仓召唤」 deleted — both halves survive in SKILL.md 〈升级与决策〉 (项目总监席:维护者在所在仓召唤 / 总监席是唯一裁决者); 「机读保险丝照旧管 spec 席条款②复核与 skills 席 … 本席不在其内」 deleted — survives in contract-review.md 降档保险丝 (保险丝只管 spec 席条款②复核与 skills 席 / 总监席裁决 ⛔ 不受本丝); 「容器 403 归因逐条走 MCP 补齐」 folded into the check-governed-merges line it qualifies. In the same file, 职责一 「受管面照旧 draft-only 加人工合并」 now points at the two-layer landing in contract-review.md 落地前检③ — the old wording contradicted the tiering landed in the rules-layer PR (same defect class as this chain, mechanical, this file is on the claim, same gate family). decision-analysis.md 50 → 50. Added under 常设决裁批流程: the governed-draft batch is the one exception to the prose-per-card duty — one row per PR (改了什么/为什么/席位意见/一个动作), the 速读 living on the PR. Paid inside the file: 「重分析轮同纪律;适用面 = …」 and 「⛔ 不及结果陈述:轮次报告的表格照旧」 folded into one line — one rule (the applicability of the batch discipline and its one exclusion). Every edited line ≤ 120 bytes. Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8 Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewHead: ① derived judgments — every changed rule read against its ruling and against the rules-layer text PR #18018 landed (
Density payments, each checked to survive elsewhere: 「受管面人工合并 ⛔ 不替代复核」 → SKILL.md 〈复核〉 ① (复核结论照常写在 issue 上) and PD #14 「a human merge IS the review record」; 「达档只在 spec 席」 → the per-lane line; 「父会话两个合法动作」 + 「⛔ 永不改写润色」 → one line; 「复核正为补偿低档派发而存在」 → 「复核 ⛔ 不随派发档位免除」 (same rule, shorter); Seat measurements on the head tree ( ② semver: nothing publishes; ③ boundary flags: Implemented-by: Verdict: PASS — the references layer of the five rulings, each verbatim in effect, each paid inside its file. Landing: under the tiering landed by PR #18018 this is the 事实层 and lands after this review through the queue — but the merge-group guard still demands an authorized approval until #18020 (PR #18036, in flight) lands, so the four-piece is applied as well: draft stays, Generated by Claude Code |
维护者速读(终稿)改了什么 —— 章程链的下半场:四个 references 文件( 为什么 —— 上半场(PR #18018)落了规则,这些文件是各席实际照着做的机制页,不改就是两套说法。 风险与代价 —— 纯文本,revert 即回滚。要说的一点:这个 PR 本身就是「 未含 —— #18037( 批准即由本席按裁决 C 落地(四个 check 还在跑,绿了才落)。要不要批? Generated by Claude Code |
|
Ruling C landing step — skills seat (session Generated by Claude Code |
Fixes #17942
Fixes #17950
Fixes #17933
Fixes #17934
Fixes #17951
Dev session
session_01DAcomhvR9kKizeYgg89Vo8on branchclaude/issue-17942-charter-references(worktreeobjectstack-issue-17942-refs). The REFERENCES half of the charter-revision family whose rules-layer half landed as PR #18018 (9489e2c0): four files under.claude/skills/pm-dispatch/references/, one commit per member card, every ruling quoted verbatim in its commit message. Governed path — the 事实层 under the landed tiering: draft, in-seat contract-tier review; ⛔ the dev never flips ready, queues or arms it.Rulings landed (verbatim in each commit; one line each here)
ae17066f) — 「1(荐):加一条例外——某个红若在该 PR 的 merge-base 提交上同名、同失败签名地红 ⇒ 不计入「全绿」;主干红仍必须立单止血(不变)。」 → contract-review.md 落地前检③ gains the exception plus the signature line (same failing step, same first error line, read from the base commit's check runs by the API, never a seat's word).lanes/ui.md指向条款②的适用面却不陈述它 —— 维护者据此读成「本车道无需契约复核」 #17933 (a390e114) — the misreading on the card, 「不是说你的 ui 车道不需要契约复审了吗?为什么还有needs:contract-review」 → contract-review.md states the per-lane applicability once (spec 席达档审契约增量;余席默认档自审加门禁、挂标;豁免仅独立性件与保险丝) and closes the 「复核正为补偿低档派发而存在」 derivation (复核 ⛔ 不随派发档位免除)..claude/skills/pm-dispatch/references/**lands through the queue after in-seat contract-tier review (maintainer ruling 2026-09-13) #17950 (c837c7c5) — 「我点头」 → 落地前检③ carries the two-layer landing: 规则层等维护者的字;受管路径全在.claude/skills/pm-dispatch/references/者达档过本三条入队.31249ef1) — 5651976160 「同意」 · 5652079343 「以上接受你的建议。」 · 5652544529 ③ 「同意」 → 独立性件 covers a claimed card's post-dispatch cross-lane face (含 spec); 借复核不移卡,新 spec 工作恒归 spec 席; dispatch-runbook.md 〈跨车道简单阻塞项直接接手〉 rewritten as 〈在飞卡衍生与阻塞项三类细则〉 — the S-level shape and the spec-not-exempt line are gone, nothing describes the old rule.f0e533fc) — 「③ 受管面手合本身也是一条队列。能否简化我的审核步骤,比如我召唤项目总监时可以批量决定?」 → director.md 职责二: enumerate, present ≤5 rows, record the answer and stop; decision-analysis.md: the row form (改了什么/为什么/席位意见/一个动作), the one exception to 六项.Acceptance greps (
git grep -c -Fat BASEa0dd872c→ HEADf0e533fc; every control still hits 1 → 1).claude/skills/pm-dispatch/references/0→1 · 「跨车道面」 0→1 · 「借复核」 0→1draft-only1→0 · 「达档只在 spec 席」 1→0 · 「复核正为补偿低档派发」 1→0check-clause2-carriersdraft-only1→0pm:awaiting-maintaineros-decision-facetsLine budgets (net 0 per file, paid by density inside the same file; each payment and where its rule survives is named in the commit)
contract-review.md 60 → 60 · dispatch-runbook.md 241 → 241 · lanes/director.md 72 → 72 · decision-analysis.md 50 → 50 (
check:pm-skill-ratchet: all four at headroom 0).git diff a0dd872c..f0e533fc | grep '^+' | LC_ALL=C awk 'length-1>120'prints nothing; the whole-fileawk 'length>120'is empty on all four before and after. No**glob in prose; no issue number in operational text.Deviations from the dispatch, stated
draft-only1→0 row.lanes/ui.md指向条款②的适用面却不陈述它 —— 维护者据此读成「本车道无需契约复核」 #17933's per-lane line — with the independence piece open to any claimed card's cross-lane face, the fragment stopped being true.search_issues(one call).Gates (
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, no paths, atf0e533fc; all run in the foreground, exit codes captured before any pipe;--ran: 「14 derived, 14 run, 0 NOT-MEASURED, 0 UNRUN」)check:pm-skill-ratchet✓ ·check:pm-skill-id-lint✓ ·check:skill-frame-sync✓ ·check:nul-bytes✓ ·check:refd-timer-probe✓ ·check:doc-authoring✓ ·check:pm-governed-merges✓ (self-test, 317 assertions) ·check:agent-test-spelling✓ ·check:driver-memory-census✓ ·check:watch-hint-literal✓ ·check-closing-keyword-parity(+ self-test) ✓ ·check-comment-mask-corpus✓ ·@objectstack/lint check:doc-formula-expressions✓ (first run exit 3 PREREQUISITE NOT MET — formula/lint unbuilt; built under the verify lock, 3m35s shared-box, then ✓). Beyond the derivation:check:pm-governed-prose✓ (its two regions are untouched). Pre-pushcheck:commit-card-trailers✓ over the five commits. No package touched ⇒ no build/test closure owed. Changeset:.claude/**publishes nothing ⇒skip-changesetlabel.未含
references/-only governed PR — #17950's tier is declared, not enforced #18020, in flight): until it lands, the merge-group leg still refuses areferences/-only governed PR without an authorized approval — so this PR carries the four-piece as well and lands under ruling C on whichever comes first; nothing in the text claims the guard enforces the tier today.landing-operations.md:27–:28 (every governed hit ⇒ 人工合并道) andlanes/ui.md:22 (凡触 spec 一律转) still carry pre-ruling wording — outside this claim's file surface; filed as bare card pm-dispatch: two references lines still carry pre-ruling text after the charter chain — landing-operations.md sends every governed hit to the human-merge lane; lanes/ui.md :22 restates the retired 凡触 spec 转席 rule #18037 with dedupe keywords. pm-dispatch: three rules-layer lines outside the charter-revision PR still carry pre-ruling text (os-dev.md 先搜再立, SKILL.md state-table rows, lanes/ui.md :25 + objectui AGENTS §9) #18019 covers ui.md :25, os-dev.md 先搜再立 and the SKILL.md rows.维护者速读(草稿)
改了什么:把本周裁决在 PM 章程「事实层」(pm-dispatch 的 references 目录)落地:落地前检③加「主干上同名同失败签名的红不计入全绿」例外,并写明受管面两层落地(规则层等你的字,references 目录经席内契约复审档复核后入队);契约复核细则逐车道写清谁复核、怎么复核、豁免只有两件(独立性件、降档保险丝),并写明认领席派发后碰到的跨车道面(含 spec)借隔离复核、卡不换席;runbook 的「简单阻塞项直接接手」改写为衍生子卡 / 无主阻塞项 / 在飞阻塞项三类细则;总监席章程与决策写法加上「带席内 ACCEPT 的受管草稿每场呈一批 ≤5 行」的动作。四个文件行数全部不变,每处新增都在同文件删重付账。
为什么改:规则层已在 PR #18018 落地,这些是它点名「另起 references PR」的对应细则;每条裁决原文逐字引在各 commit。
风险与代价(含回滚):不发布任何包、无 changeset;纯 references 文本,回滚 = revert 本 PR。付账删掉的四条(受管面人合不替代复核、总监席唯一裁决者与召唤仓、总监席不受保险丝、容器 403 走 MCP)各在 SKILL.md 或 contract-review.md 有存活处,commit 里逐条点名。
席位意见:(席位填)
你要做的:队列守卫的分层(#18020)落地前,这张 references PR 仍要你的一次批准;落地后此类 PR 不再找你。
一句问:director.md 职责一那句「受管面照旧 draft-only 加人工合并」随本 PR 改为指向两层落地,同意吗(是/否)?
Generated by Claude Code