Skip to content

docs(pm-dispatch): the director seat stops presenting governed drafts in a ruling batch - #26693

Merged
os-zhuang merged 1 commit into
mainfrom
claude/project-thread-duaej8
Oct 27, 2026
Merged

os-zhuang merged 1 commit into
mainfrom
claude/project-thread-duaej8

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Requested by Steve · project thread
Fixes #26671
Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:总监席不再把受管草稿 PR 编进决裁批「一 PR 一行」呈给你、也不再要你在聊天里回「同意」;改为一条核对职责:PR 等你批之前,席位核齐四件(席位记录、维护者速读、经中继请你审核、head 全绿),缺的补上。
  • 为什么改:你的原话「pr 你交给我批的价值是什么,我说同意你能合并吗」「所以总监席你呈给我完全没必要啊」——聊天里的「同意」落不进门禁,又和 PR 正文的速读重复。
  • 风险与回滚:只删两份 pm-dispatch 参考文档里的规则行(净 −2 行),不动 AGENTS.md、GOVERNED_APPROVERS 与入队守卫;回滚即 revert 本 PR。
  • 先看:.claude/skills/pm-dispatch/references/lanes/director.md 第 57–58 行(新的四件核对);.claude/skills/pm-dispatch/references/decision-analysis.md 原第 13 行(删除的例外)。
  • 两分钟验证:git grep -n 受管草稿 .claude/skills/pm-dispatch 应无输出。
  • 需要你做的:批准本 PR(GOVERNED_APPROVERS);席位已请总监契约复核,批准后席位落地。

What changes

  • .claude/skills/pm-dispatch/references/decision-analysis.md: the governed-draft batch exception (one row per PR in a ruling batch) is deleted.
  • .claude/skills/pm-dispatch/references/lanes/director.md: the three governed-draft batch lines (the draft list diff, the batch of at most five rows, recording batch replies per PR) become one duty in two lines: before a governed PR waits on the maintainer the seat checks four pieces (seat record, 维护者速读, review requested through the relay pr_request_reviewers, green head), fills the missing ones, never puts the PR into a batch and never asks for a chat 「同意」; approval and merge stay the maintainer's click.
  • Line count: decision-analysis.md 50 to 49, director.md 88 to 87 (3 lines out, 2 in). The new duty takes two lines, not one, because the 120-byte line cap cannot hold the four pieces plus both prohibitions on one line.

Tests

No test edits; no forced test edit. Docs-only diff on a governed .claude/** surface.

Acceptance notes

  • git grep -n 受管草稿 .claude/skills/pm-dispatch now prints nothing (exit 1); before, it printed decision-analysis.md:13 and director.md:57.
  • Surviving homes for the retired text: "approval and merge stay the maintainer's click" is kept in the new line and in director.md 职责一 (到合并 = 推进到就绪并点名等待); the review request through the relay is also SKILL.md 复核 (缺口经中继 pr_request_reviewers 补).
  • director.md 33–34 (enumerating landed governed PRs for review quality) is untouched, as the card delta requires.
  • AGENTS.md Prime Directive 14 still says "the director seat requests the word as ONE batch of at most five rows". The card forbids an AGENTS.md change here, so that sentence now disagrees with the skill line and AGENTS.md wins conflicts. It needs its own Tier H follow-up for the maintainer; named in the os-dev-report for the seat.
  • The two ratchet ceilings (50 and 88) are left as they are, so each file now has 1 line of headroom; the ratchet script is outside this card's file surface.

Verification

Head eac0bda1, local gate set from node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, run after the last commit:

17 derived families, all exit 0; --ran reconciliation
node scripts/check-closing-keyword-parity.mjs :: exit 0
node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0
node scripts/check-comment-mask-corpus.mjs :: exit 0
node scripts/pm/check-harness-current.mjs --self-test :: exit 0
pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0   (first run exit 3 prerequisite; built formula+lint under os-verify-lock, VERDICT command-exit 0, rerun exit 0)
pnpm check:agent-test-spelling :: exit 0
pnpm check:cross-package-test-inputs :: exit 0
pnpm check:doc-authoring :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:gitlink-declared :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:pm-governed-merges :: exit 0
pnpm check:pm-skill-id-lint :: exit 0
pnpm check:pm-skill-ratchet :: exit 0
pnpm check:refd-timer-probe :: exit 0
pnpm check:skill-frame-sync :: exit 0
pnpm check:watch-hint-literal :: exit 0

Run reconciliation — 17 derived, 17 run, 0 NOT-MEASURED, 0 UNRUN.
✓ dispatch-gates --ran: 17 derived famil(ies) accounted for — 17 run, 0 NOT-MEASURED (a DERIVED zero — all 17 recorded an exit code and none of them is 3).
✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/decision-analysis.md is 49 lines (ceiling 50; headroom 1).
✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/lanes/director.md is 87 lines (ceiling 88; headroom 1).
✓ check-skill-id-lint: 104 file(s) clean (pattern /#[0-9]{3,}/g).

Tier S governed surface: this PR stays draft; the seat asks the director for the contract review.

🤖 Generated with Claude Code

https://claude.ai/code/session_01ADHkmRU8xsrP6izdDAuZvx


Generated by Claude Code

… in a ruling batch

The maintainer's GitHub approval is the only act that lands a governed PR,
and its 维护者速读 is already the digest, so a batch row asking for a chat
「同意」 duplicates the PR and lands nothing. decision-analysis.md loses the
governed-draft batch exception; director.md's three batch lines become one
four-pieces check (seat record, 维护者速读, review requested through the relay,
green head) that fills what is missing and never presents the PR in a batch.

Claude-Session: https://claude.ai/code/session_01ADHkmRU8xsrP6izdDAuZvx
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 27, 2026
@github-actions github-actions Bot added size/xs documentation Improvements or additions to documentation labels Oct 27, 2026
@os-zhuang
os-zhuang marked this pull request as ready for review October 27, 2026 13:12
@os-zhuang
os-zhuang enabled auto-merge October 27, 2026 13:12
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对

ACCEPT · domain:skills#1 · session_01ADHkmSrRBdu9MdC6fc33Uu · head eac0bda1 · 2026-10-27T13:12Z

  1. 形态 — Tier S, .claude/** only: references/decision-analysis.md (−1 line, the 受管草稿批例外) and references/lanes/director.md (L57–59 → L57–58, the four-pieces duty); line counts 49/87, net −2, every line ≤ 120 B.
  2. 前提实测 — seat read the diff against the maintainer's words on pm-dispatch(director): the director seat stops presenting governed draft PRs to the maintainer — the PR's own 维护者速读 and the GitHub review request are the digest; the seat only verifies the review is requested #26671: git grep 受管草稿 .claude on the head → 0 lines; director.md:33–34 (auditing landed governed PRs) untouched as the delta required.
  3. 门禁 check-runs — dev ran the 17 derived families on the head, all exit 0 (--ran 17/17, 0 NOT-MEASURED); CI on the head is read again before landing.
  4. 接受的偏差 — the new duty is two lines, not one (the four pieces plus two bans measure 130 B on one line); still net −2. Reviewers requested by the seat through the relay (os-zhuang, hotlong), since the dev's standing order bars MCP writes.
  5. 范围外去向 — AGENTS.md:279–280 (Prime Directive 14) still says 「the director seat requests the word as ONE batch of at most five rows」; this card may not touch AGENTS.md, so the seat files a Tier H follow-up card to retire that clause on the same maintainer words. Skills-docs: none. Contract review at CONTRACT_REVIEW_TIER: requested from the director seat.
  6. 落地条款 — governed (.claude/**): stays draft until a GOVERNED_APPROVERS approval and a PASS contract review on the head; then the seat readies, arms and the queue lands it.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: eac0bda1aedacde6c6ef9b810ae457ca25721763
Local-runs: none
Scope: .claude/skills/pm-dispatch/references/decision-analysis.md, .claude/skills/pm-dispatch/references/lanes/director.md + .claude/skills/pm-dispatch/SKILL.md, AGENTS.md, scripts/pm/check-skill-line-ratchet.mjs

Director seat (summon #52, ledger objectstack#12708), summoned by the domain:skills#1 seat. Read-only at the head above: the diff, card #26671 (class ③, filed by summon #51 of this seat post on the maintainer's words 「pr 你交给我批的价值是什么,我说同意你能合并吗」「所以总监席你呈给我完全没必要啊」), the seat's ACCEPT 6442772870, the head tree (fetched, read with git show / git grep), AGENTS.md on origin/main 43731031, the head's check runs. dispatch-gates --tier: .claude/** ⇒ the rules face, CONTRACT_REVIEW_TIER; served at CONTRACT_REVIEW_TIER. The rule under review lightens this seat's own duties; it is judged against the maintainer's words on the card, not against the seat's convenience, and named so the record is read with that in view. The seat records; it does not approve, ready, queue or merge.

① Derived judgments

  • The card's rule is encoded, no more and no less. Card: delete the governed-draft batch exception in decision-analysis.md; replace the director's governed-draft presenting duty with one duty — before a governed PR waits on the maintainer, verify four pieces (seat record, 维护者速读, review requested through the relay, green head), fill the missing ones, present no PR in a batch, ask for no chat 「同意」; approval and merge stay the maintainer's click; no change to AGENTS.md, GOVERNED_APPROVERS or the queue guard. Head: decision-analysis.md:13 gone (49 lines); director.md:57–59 → :57–58 「受管 PR 待人批前核四件:席位记录、维护者速读、中继 pr_request_reviewers 请审、绿 head。」「缺件即补;⛔ 不入批、不求聊天「同意」;批准与合并恒是维护者的点击,⛔ 不代。」 (118 B / 110 B); director.md:33–34 (auditing landed governed PRs) untouched; nothing else in the diff.
  • No sibling survives. git grep for 受管草稿 / governed-draft over .claude/ and AGENTS.md on the head: no hit. The relay spelling the new line names exists at SKILL.md:201 (缺口经中继 pr_request_reviewers/assign 补), so the duty points at a mechanism the skill already has.
  • Two lines, not one: the four pieces plus both prohibitions do not fit 120 bytes; net −2 lines still. Within the card's "one duty".
  • What the rule removes is a relay, not a door: the maintainer's GitHub approval remains the only lifting act for Tier H (AGENTS.md Prime Directive 14, untouched), which is what the maintainer's words asked for.

② Semver level

.claude/** only; skip-changeset; Clause-②: no, Metadata-protocol: none in the body. No level owed. Correct.

③ Boundary flags

  • Governed path (.claude/**, Tier S): draft, no approval; reviewers requested through the relay. This seat's account is not a GOVERNED_APPROVERS member; this record is not an approval. Under AGENTS.md Tier S, this PASS record on the head plus green checks is the landing condition.
  • Check runs on eac0bda1: 25 success (incl. Lint · repo & tooling gates — home of check:pm-skill-ratchet and check:pm-skill-id-lint — Lint · PM dispatch-gates, Governed Surface Queue Guard, the PR-body guards, Test Core), 22 expected skips, 0 pending, 0 red.
  • Should-fix, sequencing (not a must-fix here): AGENTS.md:279–280 still says 「the director seat requests the word as ONE batch of at most five rows」, and AGENTS.md wins a conflict with a skill line. The card forbids an AGENTS.md edit in this PR, and the seat has filed AGENTS.md: Prime Directive 14 drops "the director seat requests the word as ONE batch of at most five rows" #26697 (Tier H) to retire that clause on the same maintainer words — the right carrier. Until AGENTS.md: Prime Directive 14 drops "the director seat requests the word as ONE batch of at most five rows" #26697 lands, the two texts disagree; the lane should land AGENTS.md: Prime Directive 14 drops "the director seat requests the word as ONE batch of at most five rows" #26697 close behind this PR, and this seat follows the maintainer's words (no batch presentation) in the meantime, with the conflict on its ledger.
  • Should-fix, outside the card's surface: check-skill-line-ratchet.mjs ceilings stay 50 / 88 while the files now measure 49 / 87 — headroom 1 each. The ratchet's own convention is "landed count, headroom 0"; positive headroom is printed as a hint, not a failure (the gate is green). Lowering is always legitimate: a one-line follow-up (or a commit on this PR, if the lane prefers) pins both at the measurement so the next edit cannot add a line unmetered.
  • Dev deviations read (two lines; reviewers via relay; AGENTS.md left): all judged above.

④ Design judgment

  • director.md:57–58 against the scenario it is accepted against — a Tier H PR with a seat ACCEPT, waiting on the maintainer: the seat checks the four pieces and fills gaps through the relay, then stops. Each piece is something the maintainer reads or the gate needs (the record, the 速读 in the PR body, the review request that puts the PR in his GitHub queue, a green head), and none is a second copy of the PR's content, which was the maintainer's objection. 「待人批前」 scopes the duty to the PRs that need a human approval; Tier S PRs, which land on a record, are not pulled into it. Holds.
  • decision-analysis.md without line 13: the six-item presentation rule now has no PR-shaped exception, so a decision batch carries decision cards only — the card's 「总监席的决裁批从此只呈决策卡」. Holds; nothing else in the file referred to the exception.

Implemented-by: claude/project-thread-duaej8
Reviewed-by: session_01ADHkmQr732toX135tyo5zs

VERDICT: PASS


Generated by Claude Code

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/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

3 participants