Repository navigation
docs(pm-dispatch): director duty one puts to the maintainer only the landings no authorized account approved, one plain line each - #24259
Conversation
…landings no authorized account approved, one plain line each The director charter's duty one now says which audit rows are put to the maintainer for recognition: only governed-path or size-limb landings that carry no APPROVED review from an account in GOVERNED_APPROVERS; a landing with such a review is recorded in the summary ledger and not put. Each row put carries one plain-words line on what the change did, read from the diff or body, not from the title alone. Provenance: the maintainer's order of 2026-10-18, quoted verbatim in the card body. Claude-Session: https://claude.ai/code/session_01QBcLjVCmcWbZEk6qhYMib2 Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewServed-tier: Face: governed rules text ( ① Derived judgments
② Semver level
③ Boundary flags
Implemented-by: VERDICT: PASS Generated by Claude Code |
维护者速读改了什么:总监席章程( 为什么改:执行您的原话「以后只呈"没有任何授权账号批准"的受管合并,并且每行写一句改了什么。这要改总监席的规则,开一张卡给 skills 席去改。」上一场总监呈了 5 行光秃秃的 PR 号,其中 4 行您早已批准。dev 用新规则回放那 5 行:4 行落台账,只剩 cloud 2921(hotlong 亲手合并、无 review)一行会呈,并附一句说明。 风险与代价(含回滚):只改给 agent 读的章程文本,不动代码、门禁与脚本。代价:授权账号已批准的落地不再过您的眼,只在台账可查。回滚 = 删这三行(revert 本 PR 一个提交)。 席位意见:ACCEPT。席内达档契约复核 PASS(6245828997,head 你要做的:无。一个非阻塞问题留给您:授权账号(如 hotlong)亲手合并、没有 review 的受管落地,按您原话「没有任何授权账号批准」的字面仍会呈您(如 cloud 2921);若亲手合并也算「批准」,在本 PR 评论一句,席位补一张一行 PR。 席位核对Seat Implemented-by:
Generated by Claude Code |
Fixes #24241
Clause-②: no
What this changes
One file,
.claude/skills/pm-dispatch/references/lanes/director.md, section 〈职责一:契约复核记录事后审计与抽查(可选)〉: three lines inserted directly under the enumeration bullet, where the charter already speaks of the audit. Nothing else in the file moves.APPROVEDreview from an account inGOVERNED_APPROVERS. The charter names the constant, never its account list, so the rule follows the queue guard (SKILL.md: 「批准判定单源 = 队列守卫常量GOVERNED_APPROVERS」). A landing that carries such a review is recorded in the summary ledger and is not put to the maintainer.出处:convention (asinstrument-discipline.mdwrites it): the maintainer's order of 2026-10-18, quoted verbatim in this card's body. There is no#before the number and no number inside an operative sentence (pnpm check:pm-skill-id-lintreads this file). The card body is the filing record. The card has no separate filing comment (its two comments are the claim and the dispatch order), so the line cites the card.scripts/pm/check-governed-merges.mjsis untouched: no new column, gate, flag or script. Its sweep printsmerged_byonly, so the seat reads each candidate row's reviews through REST at summon time. The charter does not spell that clause out because it would cost a fourth line (see the line budget below).How the new rule would have changed summon 44's batch
Ledger block B on the director seat post (comment 6243622639) put five bare rows to the maintainer. I read each row's reviews through REST in this session on 2026-10-18:
APPROVEDby aGOVERNED_APPROVERSaccountos-zhuangos-zhuang, 2026-10-17T21:21Zos-zhuangos-zhuangtwice, 2026-10-17T06:12Z and 07:00Zos-zhuangos-zhuang, 2026-10-16T13:39Zos-zhuangos-zhuang, 2026-10-16T12:45ZhotlongSo four rows drop and one survives. The surviving row would carry one plain line on what cloud 2921 did (+5,911/−270 over 23 files on the seat's reading), read from its diff or body. This session cannot read the cloud repository, so that line is the seat's to write at the next summon.
A reading note for the seat's contract review, not a re-decision: cloud 2921 was merged by
hotlong, which is itself an account inGOVERNED_APPROVERS, with no review at all. Under the order as written (anAPPROVEDreview), a merge click is not an approval, so the row stays. That matches the question the recognition answers under AGENTS.md Prime Directive 14 ("a merger the maintainer does not recognise"):merged_bynames an account, not a principal.Line budget
director.md: 66 → 69 lines, ceiling 72 unchanged.pnpm check:pm-skill-ratchetprints "director.md is 69 lines (ceiling 72; headroom 3)". The three new lines are 119, 117 and 59 bytes, inside the ratchet's 120-byte line cap..claude/agents/os-dev.mdrepeats. The order says those files win where they conflict with it. (The two lines together are also over the 120-byte cap.)Verification (at HEAD
b20dbc82)Derived after the final commit with
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, with no paths. The change set came from merge basef5ef054a7: 1 path, +3/−0. That gives 17 commands. I ran all 17 locally and captured each exit code before any pipe:node scripts/check-closing-keyword-parity.mjsnode scripts/check-closing-keyword-parity.mjs --self-testnode scripts/check-comment-mask-corpus.mjsnode scripts/pm/check-harness-current.mjs --self-testpnpm --filter @objectstack/lint run check:doc-formula-expressionspnpm check:agent-test-spellingpnpm check:cross-package-test-inputspnpm check:doc-authoringpnpm check:driver-memory-censuspnpm check:gitlink-declaredpnpm check:nul-bytespnpm check:pm-governed-mergespnpm check:pm-skill-id-lintpnpm check:pm-skill-ratchetpnpm check:refd-timer-probepnpm check:skill-frame-syncpnpm check:watch-hint-literal--ranprinted "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:doc-formula-expressionsfirst refused with exit 3 (PREREQUISITE NOT MET:@objectstack/formulaand@objectstack/lintwere unbuilt in this fresh worktree). I built them withpnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lint --concurrency=2under the verify lock (VERDICT command-exit 0), and the re-run was green.pnpm check:pm-governed-prose,pnpm check:pm-settings-deny-roster(its roster lives under.claude) andpnpm check:pm-prior-rulings(its header citesdirector.md).test:repo,pnpm lintand the type-check lanes run in CI.Acceptance notes
merged_byonly;--prmode reads the approval only for the size lift. This is an observation, not filed: the seat's REST read covers it, and the card keeps the script as it is. Carrier: none.scripts/pm/check-prior-rulings.mjscitesreferences/lanes/director.md:45for thegit grepprescription. That line was already at L52 onmainand is L55 after this PR. This is comment drift, not filed. Carrier: none.维护者速读(草稿)
改了什么:总监席章程「职责一」加了三行。以后请您认定的受管合并,只限没有任何授权账号(
GOVERNED_APPROVERS)给过APPROVED的那些;已有授权账号批准的,只记进席位台账,不再呈给您。呈给您的每一行都附一句白话,说明这次改动具体做了什么,从 PR 的改动或正文读出,不只看标题。为什么改:执行您的原话「以后只呈"没有任何授权账号批准"的受管合并,并且每行写一句改了什么。」上一场总监呈了 5 行光秃秃的 PR 编号,其中 4 行您的账号早已批准。按新规则那 5 行只剩 1 行(cloud 2921,没有任何 review),并附一句说明。
风险与代价(含回滚):只改给 agent 读的规则文本,不动代码、门禁或脚本;文件 66→69 行,仍在 72 行上限内。代价:授权账号已批准的落地不再请您过目,只在台账可查。回滚:删掉这一个文件里新加的三行即可。
席位意见:
你要做的:无需操作。这是 Tier S(
.claude/**)改动,席位做完契约复核后自行落地。cloud 2921 是 hotlong 合并、但没有 review,按您的原话仍会呈给您;如果您认为合并点击也算批准,告诉席位即可。Generated by Claude Code