Skip to content

skills(pm-dispatch): charter revision — rulings A/③/C, governed-surface tiering, ui/triage lane lines (#17942 chain) - #18018

Merged
os-zhuang merged 9 commits into
mainfrom
claude/issue-17942-charter-revision
Sep 13, 2026
Merged

os-zhuang merged 9 commits into
mainfrom
claude/issue-17942-charter-revision

Conversation

@claude

@claude claude Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Fixes #17971
Fixes #17742
Fixes #17624
Part of #17942
Part of #17950
Part of #17933
Part of #17934
Part of #17951

Dev session session_01DAcomhvR9kKizeYgg89Vo8 on branch claude/issue-17942-charter-revision (worktree objectstack-issue-17942). Rules-layer charter revision for the eight-card family whose chain head is #17942. Deferred to the follow-up references PR (files occupied by PR #17990 / #17992, seat-landable once this PR lands the tiering): contract-review.md (the #17934 落地前检③ exception, #17933's per-lane table, #17950's 落地前检③ line, #17942's 复核归属 / 独立性件), dispatch-runbook.md (#17942's 跨车道直接接手), lanes/director.md + decision-analysis.md (#17951's director half); the #17950 register / queue-guard script items are their own script PR. #17934 has no edit here — its ruling lives in a deferred file.

Rulings landed (verbatim, one commit per card)

Acceptance greps (git grep -c -F at BASE → this head; every file's control still hits)

card 0 → 1 phrase file control (1 → 1)
#17942 「认领即跟到 MERGED」, 「分诊座位唯一生产」, 「在飞卡衍生三分」; 「简单阻塞项」 3 → 0 SKILL.md 「每个方案必须沿四条固定评估轴分析」
#17950 「受管面两层」 / Landing is tiered / 「两层分档」 SKILL.md / AGENTS.md / lanes/skills.md GOVERNED_SURFACES / 「QA 波次由维护者手动触发」
#17971 「席位落地」 0 → 3 (SKILL) and 0 → 1 (core-rules); landed by the owning seat SKILL.md, core-rules.md, AGENTS.md 「一座位一车道双射」
#17933 「条款②复核本席适用」; 「不凭记忆或继承的注记」 1 → 0 lanes/ui.md 「零读数恒配点亮的正控」
#17742 「析取 ④」, 「未定级数另计析取④」; core 「队列卡缺域或缺定级」 SKILL.md, core-rules.md 「分诊座位唯一」
#17951 「受管草稿呈为一批」; director seat requests as ONE SKILL.md, AGENTS.md A version release is performed by the maintainer
#17624 「六态属他席」; 「分诊不挂」 1 → 0 lanes/triage.md 「饥饿守卫」

Line budgets (net 0 per file, paid by density inside the file — payments named in each commit)

SKILL.md 812 → 812 (widest table row 342 B, untouched); core-rules.md 151 → 151; AGENTS.md 1075 → 1075 (widest row 768 B, untouched; the node -e helper line under PD #14 is the one deletion that is not a rule); lanes/ui.md 38 → 38; lanes/triage.md 7 → 7; lanes/skills.md 33 → 33. Every added line ≤ 120 B (git diff BASE..HEAD | grep '^+' | awk 'length>120' prints nothing); the whole-file awk 'length($0)>120' baseline is 23 / 23 on SKILL.md and 15 → 14 on AGENTS.md — all table rows or the dropped helper line, the shape the ratchet exempts (the PM's "empty over edited files" expectation is false on origin/main already). Decision frame block byte-identical: md5 3327d02c56f8a0eca88569dad2270f32 (now at :733–:754).

Deviations from the dispatch, stated

  • P1 「:454 leave」 falsified: the ruling lifts the S-level cap that :454 stated; leaving it would keep SKILL.md contradicting Q2 class 2 while the references PR cannot touch SKILL.md and stay seat-landable — the four 简单阻塞项 lines became the three-class rule (commit 1).
  • 5652544529's 「lanes/triage.md gains the cache line」: triage.md is 7/7 and its only spendable line went to ruling B — the cache rule lands in SKILL.md 〈分诊座位职责〉 instead.
  • The references/** spelling in prose: check:pm-governed-prose reds any **-shaped code span outside the register, so the tier is spelled .claude/skills/pm-dispatch/references/ (AGENTS.md) and 本技能 references/ (SKILL.md).
  • SKILL.md 〈复核〉 had a carve-out letting .claude/ hooks/workflows/settings PRs self-land on the skills seat's review; the pm-dispatch: tier the governed surface — the rules layer stays hand-merged, .claude/skills/pm-dispatch/references/** lands through the queue after in-seat contract-tier review (maintainer ruling 2026-09-13) #17950 ruling names hooks and settings in the rules layer, so those three lines became the tiering lines (provenance beyond the shallow window not read).
  • Table rows left untouched (widest-row pins): 状态模型 rows still list 「跨车道移交」 / 「跨域 PR 指定车道」; the bullet lines govern.

Gates (derived with node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack on the merged head 269933d9; all 18 run in the foreground, exit codes captured before any pipe, --ran reconciled: 18 derived, 18 run, 0 unrun)

check:pm-skill-ratchet ✓ (SKILL.md 812/812 · core-rules 151/151 · AGENTS.md 1075/1075 · ui 38/38 · triage 7/7 · skills 33/33; both widest-row pins at headroom 0) · check:pm-skill-id-lint ✓ 27 files clean · check:skill-frame-sync ✓ · check:pm-governed-prose ✓ (5 register surfaces named, no over-claim) · check:pm-governed-merges ✓ · check:nul-bytes ✓ 8593 files · check:refd-timer-probe ✓ · check:doc-authoring ✓ · check:required-contexts ✓ · check:watch-hint-literal ✓ · check:agent-test-spelling ✓ · check:docs-audit-scope ✓ · check:driver-memory-census ✓ · check-closing-keyword-parity (+ self-test) ✓ · check-comment-mask-corpus ✓ · check-governed-queue-guard --self-test ✓ 183 cases · @objectstack/lint check:doc-formula-expressions ✓ (first run exit 3 PREREQUISITE NOT MET — formula/lint unbuilt; built under the verify lock, 2m52s, then ✓). No package is touched ⇒ no build/test closure owed; changeset: .claude/** and AGENTS.md publish nothing ⇒ skip-changeset.

Acceptance notes (noted, not filed; 承接者 named)

维护者速读(草稿)

改了什么:把这周你在聊天里定下的八条裁决写进 PM 章程的规则层——认领的卡跟到合并(碰到 spec 面借复核不换席)、衍生子卡与阻塞项的三分表、定级/路由/查重收回分诊席(立卡者只附查重词)、受管面分两层(只有 pm-dispatch 的 references 目录经席内复核后入队,其余仍由你确认)、你批准之后由席位自己落地(后续推送也是)、ui 车道条款②适用面写明、分诊 sweep 补第四态、总监席把待你确认的受管草稿一批呈报、分诊席「并发出现的六态属他席」。SKILL.md、核心条款、AGENTS.md 第 14 条、三个车道文件,行数全部不变,每处新增都在同文件删重付账。

为什么改:每条都是已裁未落地的章程滞后;裁决原文逐字引在各 commit 与上文。

风险与代价(含回滚):不发布任何包、无 changeset;规则层文本改动,回滚 = revert 本 PR。风险在两处判断:AGENTS.md 第 14 条为付行数删掉了 node -e 打印受管面的辅助命令(注册表所在文件仍点名);〈复核〉里「.claude/ hooks/settings 纯代码面由 skills 席自审直接落地」的旧例外被你 09-13 的分层裁决覆盖,已删。

未含:references 层的对应条文(contract-review.md 的落地前检③例外与逐车道适用表、dispatch-runbook.md 的接手细则、director.md 与 decision-analysis.md 的总监批呈)另起一个 references PR,待 PR #17990 / #17992 落地后由席位自落;#17950 的注册表与队列守卫脚本项另起脚本 PR。

一句问:同意「hooks/settings 的旧自审直落例外」随分层裁决一并删除吗(是/否)?


Generated by Claude Code

…iage is the sole producer of grading, routing and dedupe

Charter revision, chain head card 17942 (rules layer). Three rulings land here, quoted verbatim:

- Q1 and Q2 (director seat, decision batch 131 item 1, 2026-09-13): 「同意」 to `1A(+三类表)·2(1)·3A·4B` — the claiming seat owns a card to MERGED; a cross-lane surface found after dispatch imports an isolated contract-review-tier review whose record carries `Implemented-by:` / `Reviewed-by:`; `pm:retriage` re-routing is pre-dispatch only; the spec seat keeps the intake of NEW `packages/spec` work; derived work in three classes (in-scope ⇒ sub-issue owned by the claiming seat at inherited priority; unclaimed blocker ⇒ the blocked seat claims and does it, any size; in-flight blocker ⇒ wait, `pm:blocking` ranks it first; incidental ⇒ a separate card).
- The seat's plan, accepted verbatim: 「以上接受你的建议。」
- Ruling ③ (skills seat record, 2026-09-13T09:51Z): 「同意」 to the five points — 「一律经过分诊。定级、路由、查重、跨仓 shadow 检查、`duplicate_of` 关单,全部收回分诊席一个人做」; 「唯一例外:在飞卡的衍生子卡」; 「立卡者不查重,只在卡面附 3–5 个查重词」; 「查重缓存住在分诊席自己的容器里」. Q3 (self-routing / self-grading) is WITHDRAWN; no self-routing text had reached SKILL.md (git grep -E '自路由|自定级|self-rout' over origin/main exits 1, control 「分诊座位唯一」 hits), so nothing comes out.

SKILL.md (812 → 811 in this commit; the family PR nets 0):
- 多仓协调: 「跨座位转移 … 唯一豁免:简单阻塞项直接接手」 becomes 认领即跟到 MERGED plus the imported-review record line (+1); 「凡触 packages/spec 一律转」 narrows to NEW spec work; 「跨仓查重/shadow 检查恒归中央」 is deleted — the rule survives in the rewritten 分诊座位唯一生产 line (查重 / shadow / duplicate_of named) and in core-rules 多仓协调; the 单车道仓 repo:* 席 restatement is deleted — it survives at the 单车道仓 … 自理机械三务 line of the same section and the skills-lane finding self-triage line of 分诊座位职责.
- 域车道: domain:* production gains the one ruled exception; the third boundary-crossing channel is named.
- Epic 子树车道: 衍生问题三分 is deleted — generalised to every dispatched card in 执行座位职责, where the four 简单阻塞项 lines are rewritten as the three-class rule and the blocker rules (the S-level cap is lifted by the ruling; the incidental class survives at 顺带发现 ⇒ 独立立单).
- 分诊座位职责: the triage-side dedupe cache line (+1) — lanes/triage.md is at 7/7 with its one spendable line taken by ruling B, so the cache rule lands in the rules layer the triage seat reads.
- 平台读数纪律 and 报告契约: 立单前查重 → 立卡者附查重词; 立卡查重先行 → 立卡附查重词.

core-rules.md (151/151): mirrors of every moved rule — dedupe keywords, triage as the sole producer including 查重, follow-through plus new-spec intake, the blocker rule, the domain-label exception.

Not in this commit (references layer, follow-up PR): contract-review.md 复核归属与资格 / 独立性件 and dispatch-runbook.md 跨车道简单阻塞项直接接手. The 「分诊不重指派」 wording that option B named does not exist in the instruction tree (git grep exits 1), so there is nothing to narrow.

Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8
Co-authored-by: Claude <noreply@anthropic.com>
…s hand-merged, pm-dispatch references land after in-seat contract-tier review

Ruling on card 17950 (live chat with the skills seat, 2026-09-13T07:2xZ–07:4xZ), maintainer verbatim: 「收窄受管面,但是 skills 是不是还是应该我来确认?」, then to the seat's boundary — 「**规则层(你确认)**:所有 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/**`」 — 「我点头」.

SKILL.md 〈复核〉 (net 0): the three skills-lane self-landing lines (diff 含 .md ⇒ 四件套 / 纯代码面 including `.claude/` hooks, workflows and settings ⇒ skills 席自审 / 直接落地 ⛔ 不推维护者) are replaced by three lines — the non-governed pure-code path (`scripts/pm/`) keeps its in-seat contract-tier self-review and landing; the two-layer definition; the per-layer landing. The old carve-out that let `.claude/` hooks, workflows and settings PRs land on the skills seat's own review is superseded: the ruling names hooks and settings in the rules layer. The ACCEPT fork line now reads 命中规则层.
core-rules.md 执行座位职责: the mirror.
lanes/skills.md (33/33): 受管面 PR 恒 draft 等人合 → 规则层受管 PR 恒 draft 等维护者的字; the 范围 pointer names the two layers. The objectui half (published skills/** governed there too) is already stated by lanes/ui.md 常设承诺 and the 跨仓同判 line of 〈复核〉 — measured, no line owed.
AGENTS.md Prime Directive 14 (1075 → 1072 in this commit; the PR nets 0): the tiering sentence, paid inside the directive by folding the four ⛔-never spellings into one clause, dropping the node -e helper (the register sentence already names the file), and compressing the armed-or-queued paragraph and the detection sentence without removing a rule. The prose gate's anchor sentence and all five register spans are unchanged; the references prefix is spelled with a trailing slash, never as a ** glob, because check-governed-prose reds any **-shaped span outside the register.

Not in this commit: the register and queue-guard script items of the card (a separate script PR) and contract-review.md 落地前检③ (references PR).

Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8
Co-authored-by: Claude <noreply@anthropic.com>
…eat lands a governed PR — later pushes included

Ruling C on card 17971 (maintainer, live chat with the skills seat, 2026-09-13T08:50Z), verbatim: 「C. approve 后不管后续改动都由席位落地:」 — chosen over A (byte-pinned approval) and B (status quo) with the seat's own reservation in front of the maintainer.

AGENTS.md Prime Directive 14: the first sentence gains its converse (confirmed by an authorized approval and then landed by the owning seat; before that approval the four acts stay forbidden); the approval sentence now says WHO lands it — the owning seat, later pushes included, re-queuing after an ejection or a rebase on its own pre-landing check — and that the maintainer's word is spent once per PR. Multi-agent discipline §7 (a): 「never enter this path, however green」 → 「on green alone」. Post-Task Checklist step 2: landing waits for the maintainer's word instead of 「by hand」 alone. Line counts unchanged at each spot.
SKILL.md: red line 27 gains 「批准在案后席位落地」, paid on the same line by folding the three 永不 into one; 复核 ②: 授权批准 ⇒ 席位落地; the 批准后再推亦不过期 line now defines 席位落地 = 过落地前检、清标、ready、auto-merge, 踢出/变基同法 (its former 无批准 ⛔ 不翻 ready… half survives at red line 27).
core-rules.md 红线: the mirror.

Unchanged by design: the queue guards (their predicate already accepts the approval on any commit), objectui's AGENTS.md §9 (sibling repo, its own PR), and each seat's Routine text (updated at its next re-arm, per the card).

Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8
Co-authored-by: Claude <noreply@anthropic.com>
…e ui lane instead of pointing at it

Card 17933 (p2 Task, routed into this lane by the maintainer's direct word). The maintainer read the pointer as 「不是说你的 ui 车道不需要契约复审了吗?为什么还有 `needs:contract-review`」 — a misreading that had already happened on the rule's own user.

lanes/ui.md 席内判断, one line replaced (38/38): the pointer 「档位与复核豁免边界读源码与 references/contract-review.md,⛔ 不凭记忆或继承的注记」 becomes the statement synthesised from contract-review.md's three paragraphs — clause ② review applies to this lane as default-tier self-review plus gates with the label hung as usual; only the independence piece and the downgrade fuse are exempt. The per-lane applicability table and the ruling on the 「复核正为补偿低档派发而存在」 derivation live in contract-review.md and ride the references PR.

Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8
Co-authored-by: Claude <noreply@anthropic.com>
…graded card in pm:queue with a domain:*

Card 17742, graded by the lane's self-triage (2026-09-12T02:20Z), verbatim: 「admitted as class (a) with one measured instance … Grade: pm:queue · Task · priority:p2 … (1) COUNT the population on both boards first … (2) then the cheapest of the card's three shapes that the count supports — a fourth disjunct if the population is small, the H-row home if it is large; (3) the round report's 裸卡 metric must say what it becomes」.

Count, posted on the card before this edit (2026-09-13T11:46Z, repo-scoped REST lists, both boards, every page read): pm:queue ∧ domain:* ∧ ¬priority:* = 7 on objectstack and 31 on objectui — small, so the fourth disjunct is the shape; the pm:on-hold pool (69 / 46) is a decision already made and not a dispatch slot, so it stays outside the disjunct and is recorded as a measurement only.

SKILL.md 分诊座位职责 (net 0): 析取 ④ takes the line of 「②③ 只取 updated_at …」 and carries that clause for ②③④; the 半状态治愈积压 line reads ②③④; the 轮次报告 裸卡数 metric line states 未定级数另计析取④.
core-rules.md 分诊座位职责: the sweep mirror names 队列卡缺定级.

Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8
Co-authored-by: Claude <noreply@anthropic.com>
…waiting the maintainer's word as one decision batch

Card 17951 (p2 Task; the reading-cost half of the maintainer's question, verbatim: 「③ 受管面手合本身也是一条队列。能否简化我的审核步骤,比如我召唤项目总监时可以批量决定?」).

SKILL.md 升级与决策 (+1; the family PR nets 0): after the director's four duties, one line — every summon presents the governed drafts carrying an in-seat ACCEPT as one batch of at most five rows; the approval and the merge stay the maintainer's own clicks. AGENTS.md Prime Directive 14: the same duty as one clause of the tiering sentence (the directive is 34 lines before and after the family; 1072 → 1075 across its commits).

Not in this commit: lanes/director.md and decision-analysis.md (references PR).

Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8
Co-authored-by: Claude <noreply@anthropic.com>
… concurrently belongs to the seat that wrote it

Ruling B on card 17624 (director seat, decision batch 125 item 5, 2026-09-13): 「同意」 — the concurrency principle replaces line 7 of lanes/triage.md, a near-verbatim duplicate of the SKILL.md 分诊座位职责 line; the ratchet cap stays at 7.

Precondition (ruling item 2) measured word by word: line 7 differs from the SKILL.md line only by 「分诊」 inserted (the subject the SKILL.md section already supplies) and 「裁定」 dropped (SKILL.md is the stricter spelling); neither difference carries a rule absent from SKILL.md, so B stands. lanes/triage.md line 7 (7/7): the restatement is replaced by 「补半状态前先确认无人在动;读取之后才出现的六态属他席,停手重读,⛔ 不替换」. The other three disciplines stay closed by measurement (no shared six-state writer under scripts/pm/), per the ruling's item 3.

Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8
Co-authored-by: Claude <noreply@anthropic.com>
…ough ruling — planned spec sub-issues still route to the spec seat, derived work stays with the claiming seat

Follow-up on card 17942 (same ruling as the first commit: 「同意」 to `1A(+三类表)·2(1)·3A·4B`, and 「以上接受你的建议。」 — the spec seat keeps the intake of NEW packages/spec work; a cross-lane surface found after dispatch, packages/spec included, does not move the card). Two 座位贴协议 / Epic 子树车道 lines still said 「packages/spec 恒归 spec 座位」 and 「(sub-issue 或衍生)⇒ 照旧转 spec 座位队列」, which would have re-created the transfer the ruling removed for derived work. Both are rewritten in place (net 0): planned spec sub-issues still route to the spec seat with the epic side writing Blocked-by:; derived work follows the three-class rule of 执行座位职责.

Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation labels Sep 13, 2026
@claude claude Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 13, 2026
@claude

claude Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor Author
  • Served-tier: 803/803 claude-fable-5-1 — harness model stamp counted over this seat's own transcript (non-sidechain assistant messages a model served; <synthetic> harness notices excluded) at 2026-09-13T12:14Z; get_session external_metadata.last_served_model read claude-fable-5-1 at 2026-09-13T12:12Z.

Contract review

Head: 269933d9 (PR #18018, chain head #17942; members #17950 · #17971 · #17933 · #17934 · #17742 · #17951 · #17624) — read at 2026-09-13T12:14Z by the skills seat at the contract-review tier (MANDATORY for SKILL.md). Governed: .claude/skills/pm-dispatch/SKILL.md (27/27), references/core-rules.md (8/8), AGENTS.md (37/37), lanes/ui.md (1/1), lanes/triage.md (1/1), lanes/skills.md (2/2) — six files, +76 −76, all rules layer, all inside the chain-head claim's surface (5652966799); the four deferred references files untouched.

① derived judgments — every changed rule read against its ruling, whole diff read line by line:

  1. Ruling C ([Ruling] After an authorized approval, the owning seat lands a governed PR — later pushes need no second word from the maintainer (maintainer, 2026-09-13, option C) #17971, 5652306063 「C. approve 后不管后续改动都由席位落地:」)SKILL.md :27 gains the converse (「批准在案后席位落地」), 〈入队与落地〉 :610 / :619 state the seat's landing sequence (过落地前检、清标、ready、auto-merge, 踢出/变基同法) and that a later push does not expire the word; core-rules.md :8 mirrors; AGENTS.md PD feat: Comprehensive CRM example demonstrating all ObjectStack protocol features #14 says it in English (「That word is spent once per PR: the OWNING seat then lands it, later pushes included」), §7 (a) 「on green alone」, Post-Task step 2 「waits for the maintainer's word」. Exact. Fixes #17971 right.
  2. Ruling A + Q2 + ruling ③ ([Decision] A claimed card follows through to MERGED; cross-lane surfaces import the review instead of exporting the card; in-scope derived work and unclaimed blockers stay with the claiming seat (maintainer question after #17718, 2026-09-13) #17942: 5651976160, 5652079343, 5652544529) — 〈多仓协调〉 :224–:227: a claimed card follows to MERGED, post-dispatch cross-lane faces (spec included) do not move the card and are reviewed in isolation at the contract tier with Implemented-by:/Reviewed-by:; pm:retriage re-routes only pre-dispatch; NEW packages/spec work still closes at the spec seat (the ruling's 「spec seat keeps intake of new spec work」) while a dispatched card never transfers for touching spec. 〈域车道〉 :254 opens the ONE exception to 「域标签只由分诊席产出」: an in-flight card's derived sub-issue inherits the parent's domain; :259 names the three crossing channels. :453–:456 replace the four 简单阻塞项 lines with the three-class table (in-scope derived → parent sub-issue, claiming seat's, inherited priority, the ONLY triage bypass, swept post hoc; unclaimed blocker → the blocked seat claims and does it, no size cap; in-flight blocker → wait with pm:blocking, p0/p1 propagating). The 「S 级」 cap the dispatch said to leave at :454 is lifted because the ruling lifts it and the references PR cannot touch SKILL.md — the dev's P1 override is correct and stated. Ruling ③: :175 「立卡者不查重,只附 3–5 个查重词;分诊按词查自有列表」, :220 「分诊座位唯一生产:定级/路由/type/查重/shadow/duplicate_of;执行席永不定级或路由裸卡」 (Q3 withdrawn — the self-routing corollary never reached origin/main, measured), :314 the triage seat's session-local cache (full pull on a fresh session, since after; no branch, no sharing, no dependence on the backup — the shape the maintainer declined), :778 out_of_scope_findings 「立卡附查重词」; the epic lane and the seat-post line keep 「新 spec 工作恒归 spec 座位」 and drop only the derived-work transfer, which the ruling removed. Mirrors in core-rules.md :51 / :55 / :61 / :62 / :67. Exact. Part of #17942 right (its contract-review.md 复核归属/独立性件 and dispatch-runbook.md 跨车道 sections are the references PR's).
  3. Tiering (pm-dispatch: tier the governed surface — the rules layer stays hand-merged, .claude/skills/pm-dispatch/references/** lands through the queue after in-seat contract-tier review (maintainer ruling 2026-09-13) #17950, 「我点头」) — :607 stays the whole-set definition; :608 「路径面命中规则层 ⇒ ACCEPT 换终局四件套」; :627–:629 define the two layers (事实层 = 本技能 references/ only; everything else rules layer, published skills/** and SKILL.md named) and their landings; core-rules.md :122 mirrors; AGENTS.md PD feat: Comprehensive CRM example demonstrating all ObjectStack protocol features #14 「Landing is tiered」 with the path spelled as .claude/skills/pm-dispatch/references/ (the ** glob is refused outside the register by check:pm-governed-prose — measured by the dev); lanes/skills.md :11 and :18. The deleted 〈复核〉 carve-out (「纯代码面(scripts/pm/.claude/ hooks/workflows/settings、非 md 产物)⇒ skills 席自审」 then 「直接落地」) is superseded on its face: the ruling names hooks and settings in the rules layer; scripts/pm/ self-review survives at :627. ⚠️ DECLARED, NOT YET ENFORCED: scripts/pm/check-governed-queue-guard.mjs passes a governed diff at merge-group time only on a pinned authorized approval (its docblock :84–:88; the one existing zero-approval class is the byte-exact register recompute), so a references/-only PR still needs the click until the guard learns the tier — a derived sub-issue of pm-dispatch: tier the governed surface — the rules layer stays hand-merged, .claude/skills/pm-dispatch/references/** lands through the queue after in-seat contract-tier review (maintainer ruling 2026-09-13) #17950 filed by this seat in the same pass (class 1, owned here at inherited priority). Until it lands, the 「one hand merge」 of the chain-head claim is not yet true for the references PR; the AGENTS.md sentence 「the queue guard refuses an unpinned governed diff」 stays true today. Part of #17950 right.
  4. pm-dispatch: lanes/ui.md 指向条款②的适用面却不陈述它 —— 维护者据此读成「本车道无需契约复核」 #17933lanes/ui.md :38 now states the applicability (「条款②复核本席适用:默认判断档自审加门禁,标照挂;豁免只有独立性件与降档保险丝」), byte-consistent with contract-review.md :27 / :49–:51. Part of right (its contract-review.md half deferred).
  5. backlog sweep: an UNGRADED card sitting in pm:queue with a domain:* matches none of the three disjunctions — invisible to triage, visible to the lane's candidate query #17742 — 析取 ④ (:323, pm:queue + domain:* without priority:*) joins ②③ in the freshness and oldest-first lines; the health metric line :680 counts it; core-rules.md :82 mirrors; the dev posted the population count on the card first (5653074219). Fixes right.
  6. pm-dispatch: the director seat presents the governed drafts awaiting a human merge as one decision batch, and checks each carries its four-piece (maintainer, 2026-09-13) #17951 — :767 「每场召唤把带席内 ACCEPT 的受管草稿呈为一批 ≤5 行决裁;批准与合并仍是维护者的点击」 and the PD feat: Comprehensive CRM example demonstrating all ObjectStack protocol features #14 clause 「which the director seat requests as ONE batch of at most five rows」. Part of right (director.md / decision-analysis.md half deferred; those files are FREE now that PR docs(pm): derive the recommendation from axis 1 first, and five director-lane charter items #17992 landed).
  7. skills(pm tooling): 分诊席一班攒下的四道写入纪律只活在会话 scratchpad 里 —— 随容器消失,其中「并发出现的六态属他席」这条原则章程未成文 #17624 (ruling B, 5650203410)lanes/triage.md :7 replaced by the concurrency principle (「读取之后才出现的六态属他席,停手重读,⛔ 不替换」), ceiling untouched; the replaced 「分诊不挂 needs:contract-review」 line survives verbatim in SKILL.md 分诊座位职责. Fixes right.
  8. pm-dispatch: 落地前检③「PR 全部 check 全绿」对 base 继承的红没有处置 —— 主干一红,整条车道所有已复核 PASS 的 PR 同时不可落 #17934 — no edit, Part of only, as the claim required (its file is PR feat(pm): gate the clause-② carrier strip on the served tier the verdict declares #17990's).

Density payments, each checked to survive elsewhere: 跨仓查重/shadow line (→ :220 + core-rules.md :56); the 单车道仓 repo:* restatement (→ :191 + :284 / :380 skills-lane finding self-triage); Epic 衍生三分 (→ :453 generalised); the four 简单阻塞项 lines (→ the three-class rule; the dispatch-runbook.md 〈跨车道简单阻塞项直接接手〉 pointer is gone with them, so that section's rewrite is now owed by the references PR — named for its dispatch); :27's three 永不 folded; the three self-landing lines → the tiering lines; :619's 无批准 half (→ :27); 析取 ④ takes the ②③ freshness line. Nothing deleted whose rule has no surviving home.

Seat measurements on the head tree (git archive 269933d9): check-skill-line-ratchet exit 0 — 812/812, 151/151, 1075/1075, 38/38, 7/7, 33/33, pins 342 B / 768 B untouched; frame block md5 3327d02c56f8a0eca88569dad2270f32 unchanged (now :733–:754); added lines over 120 bytes: 0. --pair 18018 exit 0 (both Fixes pairs read clean). Checks on 269933d9 at 2026-09-13T12:11Z: 29 runs, 0 red, 4 running (Lint & Repo Gates, the three Type Check lanes) — read again before landing. The dev's 18 derived gate families all exit 0, reconciled.

② semver: nothing publishes; skip-changeset right.

③ boundary flags: open_questions empty. Deviations accepted: the :454 override; the second #17942 commit (epic-lane spec lines rewritten so derived work is not re-transferred); the carve-out deletion (superseded by the ruling — the 速读 names it for the maintainer); the node -e helper line dropped from PD #14 (not a rule); the cache line placed in SKILL.md because lanes/triage.md is 7/7 and its one line went to ruling B. Residue card #18019 (three rules-layer lines outside this surface, incl. objectui AGENTS.md §9) is a class-1 derived item of this chain — this seat's after landing.

Implemented-by: claude/issue-17942-charter-revision
Reviewed-by: session_01DAcomhvR9kKizeYgg89Vo8

Verdict: PASS — the rules layer of all eight rulings, each verbatim, each paid inside its file; one declared-not-enforced gap named and carded (the queue guard's tier). Governed rules layer: draft stays; needs-user-decision + reviewers os-zhuang / hotlong; landing by this seat under ruling C once an authorized approval exists and every check reads green.


Generated by Claude Code

@claude

claude Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor Author

维护者速读(终稿)

改了什么 —— 一个 PR 把今天裁过的八张卡的「规则层」文字落进章程:SKILL.mdcore-rules.mdAGENTS.md 第 14 条、三个车道文件;六个文件行数全部不变(都在上限),每处新增都在同文件内折句付账。四条实质:① 裁决 C——受管 PR 有授权批准后由席位落地,后续推送不再要你第二次点;② 裁决 A / ③——认领席跟到 MERGED,派发后碰到的跨车道面(含 spec)不转卡、借契约复审档隔离复核;新的 spec 工作仍由 spec 席收口;定级/路由/查重/shadow 全归分诊,执行席不再自路由;立卡只附 3–5 个查重词,分诊席内缓存;③ 受管面分两层——只有 .claude/skills/pm-dispatch/references/ 走队列(席内达档复核),其余(含发布的 skills/**、SKILL.md、agents/hooks/settings、ADR、AGENTS.md)仍等你的字,由总监席一次呈 ≤5 行;④ 三处小修:lanes/ui.md 把条款②适用面写明、lanes/triage.md 第 7 行换成「读取后才出现的六态属他席」、backlog sweep 多一条「队列卡缺定级」。

为什么 —— 这些裁决今天上午已生效,章程文本落后一上午;每个席位读的是文本。

风险与代价 —— 纯文本,回滚 = revert。两点要你知道:(a) 分层现在只是「写了」,合并队列守卫(check-governed-queue-guard.mjs)还只认授权批准,所以 references 层 PR 在守卫改之前仍要你点一次——本席已立子卡跟进,守卫是脚本,席内可落;(b) 删了一条旧的「.claude/ hooks/workflows/settings 纯代码可由 skills 席自审自落」豁免——它与你点头的分层(hooks/settings 属规则层)相抵,按新裁决删;dev 没能读到那条豁免的出处(浅克隆),如果它是你当年专门裁的,请说一声。

未含 —— contract-review.md(等 #17990)、director.md / dispatch-runbook.md / decision-analysis.md 的条目走下一个 references PR。

批准即由本席按裁决 C 落地(四个 check 还在跑,绿了才落)。要不要批?


Generated by Claude Code

@os-zhuang
os-zhuang marked this pull request as ready for review September 13, 2026 13:13
@os-zhuang
os-zhuang enabled auto-merge September 13, 2026 13:14
@os-zhuang
os-zhuang added this pull request to the merge queue Sep 13, 2026
@claude

claude Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor Author

Ruling C landing step — skills seat (session session_01DAcomhvR9kKizeYgg89Vo8), 2026-09-13T13:14Z. Authorized approval read: os-zhuang APPROVED on head 269933d9 at 2026-09-13T13:13Z (review 5190787487; not dismissed), who also flipped the PR ready (13:13:50Z) and armed auto-merge (13:14:09Z). Seat readings at 2026-09-13T13:14Z: ① contract review of record 5653195700 names this head 269933d9 (unchanged since); ② check-clause2-carriers --pair 18018 exit 0 (both Fixes pairs); ③ 35 checks on 269933d9, 0 red, 1 running (Governed Surface Queue Guard — the queue's own leg, which admits the PR on the pinned approval); ④ needs-user-decision cleared in this pass and read back (labels now documentation, size/m, skip-changeset). Queue ref not yet present at the reading — the enqueue follows the guard; the seat re-reads and re-arms only if the queue ejects it. Landing records follow on the eight cards once origin/main carries (#18018): Fixes closes #17971 · #17742 · #17624; Part of #17942 · #17950 · #17933 · #17934 · #17951 return to pm:queue for the references PR. The 速读's one question (the deleted hooks/settings self-landing carve-out) stands answered by this approval unless the maintainer says otherwise.


Generated by Claude Code

Merged via the queue into main with commit 9489e2c Sep 13, 2026
39 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-17942-charter-revision branch September 13, 2026 13:39
os-project-manager pushed a commit that referenced this pull request Sep 13, 2026
…es tier

The maintainer tiered the governed surface on 2026-09-13 and the charter text
landed with PR #18018, but the queue guard still demanded an authorized
approval for every governed path — so the tier was declared and not enforced.

The merge-group leg now classifies each governed pull request's governed paths
and, when they ALL lie under `.claude/skills/pm-dispatch/references/`, accepts
the skills seat's review of record on the CURRENT head in place of the
approval: a `## Contract review` comment on the PR thread carrying a
`Reviewed-by:` line and a `Served-tier:` reading that stands. Every other
governed path is the rules layer and keeps today's predicate byte-for-byte —
16 predicate bodies are md5-identical to their pre-change selves.

Recognition is IMPORTED, never re-implemented: the heading marker, the head-sha
span test, the newest-of resolution, the `Reviewed-by:` key line and the
`Served-tier:` reader all come from the two files that own them. Reaching them
needed the module-eval cycle solved rather than worked around, so the import is
lazy and this file's dispatch no longer carries a top-level await; the battery
pins that precondition against this file's own source.

The leg is MONOTONE by construction — consulted only for an entry no authorized
approval satisfied — so it can lift a refusal and can never create one.

Claude-Session: https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8
Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/m skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants