Repository navigation
docs(pm-dispatch): Tier S landed from a project needs a review of record by another account; the 分诊席 shrinks to bare cards; decision cards stay in their repo and the 总监席 scans every repo - #25422
Conversation
…ord by another account; the 分诊席 shrinks to bare cards; decision cards stay in their repo and the 总监席 scans every repo Rule text only, on the maintainer's word of 2026-10-23. - contract-review.md: a project seat's Tier S landing needs a `Reviewed-by:` session from an account other than the PR author's (attribution login and relay sender); a same-account subagent is a review, not the record; prose-only PRs owe one cross-account TIER_DEFAULT record; the interim rule while no other account is seated is the maintainer's own message naming each PR. - landing-operations.md: `pm:mailbox` PRs owe no CI, are never queued and are excluded from the landing ledger queries. - dispatch-runbook.md: the patrol section becomes 〈巡查常设项〉: seat-post liveness goes to the 总监席 digest, every project's patrol runs the `needs:contract-review` pass (claim-shaped comment, review, strip on PASS), the lane patrol takes hold/closed re-validation and the fork-PR sweep. - triage-duties.md / lanes/triage.md: the 分诊席 keeps bare-card first touch and cross-lane dedupe on objectstack and objectui only; half-labelled cards go to the owning lane seat; app repos have no triage seat; the release board, pin chain and decision-inbox duties move to lanes/director.md (declared cross-file move 120→103 / 70→87); the human-ruling floor is untouched. - lanes/director.md: the inbox is every repo's `needs-user-decision`, cards stay where filed; the thin triage pairing, the daily digest, the release board, the pin chain extended to every app repo, the roster pointer. - cross-repo-coordination.md: 「决策收件箱按仓」 replaced; the new-repo checklist gains GOVERNED_REPOS, the fleet App and the lane charter file. Claude-Session: https://claude.ai/code/session_011XvnQKt7WvdyvD2X4DLc8R Co-authored-by: Claude <noreply@anthropic.com>
The contract-review independence lines now say the record carries a Reviewed-by-account: line (the reviewing session's login) beside Reviewed-by:, and pre-landing check 1 compares it to the PR attribution login, matching the key the queue guard reads. Claude-Session: https://claude.ai/code/session_011XvnQKt7WvdyvD2X4DLc8R Co-authored-by: Claude <noreply@anthropic.com>
… details The release board and pin chain details moved to the director charter, so the pointer line says where they went; only the in-flight liveness re-check keeps its details in this file. Same line count and under the byte width. Claude-Session: https://claude.ai/code/session_011XvnQKt7WvdyvD2X4DLc8R Co-authored-by: Claude <noreply@anthropic.com>
…authorization Per the maintainer's ruling on the card (batch 7 item 2, letter A): while no other account is seated, the substitute for pre-landing check 1 is the maintainer's own words in the executing thread, either naming each PR number or a standing Tier S authorization for that seat, revocable by one sentence. The line wraps once to stay under the byte width. Claude-Session: https://claude.ai/code/session_011XvnQKt7WvdyvD2X4DLc8R Co-authored-by: Claude <noreply@anthropic.com>
Contract review (delta)Served-tier: Reviewed at 2026-10-23T16:15Z. Delta review over the prior full review of head ① Derived judgments
Surface, budgets, merge on this head: 8 files changed, the same 7 reference files plus the ratchet's ceiling rows; ② Semver level
③ Boundary flags
Implemented-by: VERDICT: PASS |
席位核对ACCEPT · Landing authority: the maintainer's standing Tier S word in this seat's thread of the Claude Code project "Objectstack" (
Generated by Claude Code |
Requested by Elon · project thread
Fixes #25414
Clause-②: no
Metadata-protocol: none
维护者速读(草稿)
Reviewed-by:会话必须属于 PR 作者之外的账户(记录另带一行Reviewed-by-account:写复核账户的 login,须异于 PR 正文 attribution 的 github_login,与 check-governed-queue-guard: a PR landed from a project thread needs a review of record whose Reviewed-by session belongs to a different account from the PR's attribution github_login, else Tier S does not enqueue (maintainer's word 2026-10-23) #25415 队列守卫读的键一致);同账户的隔离子代理只算复核、不作落地记录;只动散文面的 PR 同样欠另一账户一条 TIER_DEFAULT 记录;过渡期没有另一账户在席时,替代是您本人在执行线程的话:逐个点名 PR 编号,或对该席位的 Tier S 长期授权(一句可撤;批 Remove explicit pnpm version from workflows to fix version conflict #7 卡 2 裁定 A)。②pm:mailbox信箱 PR 不欠 CI、永不入队、台账查询排除。③ 每个项目的巡查多一项:扫needs:contract-review的 open PR、剔除本账户署名的、留 Claim 形评论再复核、PASS 同笔摘标;总监席摘要列等候逾 24 小时的 PR。④ 分诊席缩为薄席:只做 objectstack、objectui 两仓裸卡的首触定级与路由、跨车道查重,只写标签与审计评论;半标卡归所属车道席补齐;应用仓无分诊席;发版板、pin 链、决策箱勤务移到总监席章程,fork PR 扫描与 hold 解锁重验移到车道巡查。⑤ 决策卡留在立卡仓,总监席扫全部仓的needs-user-decision按批呈您;pin 链扩到每个应用仓;新仓清单加 GOVERNED_REPOS、车队 App、车道宪章文件。project-forms.md)之后落地,pm-dispatch: project forms — lane project and director project, lanes read from the seat post's 🟢 line, the maintainer's one-sentence assignment, takeover of a walled account, mailbox PRs, generated roster board (maintainer's word 2026-10-23) #25412 已先合入,main 已并进本 PR,lanes/director.md 的 project-forms.md 指针与「直连无 Routine」那行核对后无需再改;② 分诊席的人工决裁底线(风险判据、工作量判据、人工地板、不呈清单)原文未动。What changed
Seven files under
.claude/skills/pm-dispatch/references/**plus the ceiling rows inscripts/pm/check-skill-line-ratchet.mjs; rule text only; every edited line is at or under 120 bytes.contract-review.md独立性对 (48 → 54, ceiling 60)--templateReviewed-by:from an account other than the PR author's: the record carries aReviewed-by-account:line (the reviewing session's login) besideReviewed-by:, and it must differ from the PR body attributiongithub_login(the same key and comparison the #25415 queue guard reads); a same-account isolated subagent is a review, not the record; a prose-only PR owes one cross-accountTIER_DEFAULTrecord. +2 beside 落地前检: ① gains the account condition for project seats; the interim rule while no other account is seated is the maintainer's own words in the executing thread, either naming each PR number or a standing Tier S authorization for that seat, revocable by one sentence (batch 7 item 2, letter A, on the card; the line wraps once, 53 → 54). The card nameslanding-operations.mdfor item 2, but the 落地前检两条 lines live here since the rules-only rewrite, so the text went where the rule islanding-operations.md入队与落地 (101, net 0)pm:mailbox: owes no CI, never queued, excluded from the landing ledger and orphan-PR queries; paid by folding 「外部评审链降为可选事后审计」 into the design-fork linedispatch-runbook.md(241, net 0)is:pr is:open label:needs:contract-reviewquery minus this account's attribution, theClaim:-shaped comment before reviewing, review percontract-review.md, strip the marker on PASS, the digest lists PRs waiting over 24 h); the lane patrol takes hold/closed re-validation and the fork-PR sweep (1 line). Paid by merging two 读数成本 lines. 〈分诊两级盘点细则〉: 四仓 → 两仓;Restart-when:batch scan → lane patrol, inbox back-fill → 总监席; sweep disjuncts ①②③ → ①②triage-duties.md(120 → 103)Restart-when:re-validation (2) and the release board (5) leave; line 5 names where the release board and pin chain went (总监席 digest, details now inlanes/director.md) and that the in-flight liveness re-check goes to the same digest with its details staying here. Lines 95–120 (人工地板, 风险判据, 工作量判据, 不呈 list, 例外一/二) are untouchedlanes/triage.md(7, net 0)lanes/director.md(70 → 87)needs-user-decision, cards stay in the repo they were filed in; the two 入箱勤务 lines moved from triage-duties. New 职责四 (+12): the daily digest line (in-flight / awaiting ruling / awaiting landing / wall notes, PRs waiting over 24 h for review, release board, pin lag, cardless fork PRs); seat-post and in-flight liveness; the release board (5 lines moved, main-repo producer now this seat); the pin chain (3 lines, extended to every app repo); the roster regenerated by the digest, pointing atproject-forms.md(sibling card #25412)cross-repo-coordination.md(51, net 0)needs-user-decision呈批」; the new-repo checklist gainsGOVERNED_REPOS, the fleet App and the lane charter file, and names 「应用仓无分诊席」; paid by merging the 准入 and hotcrm-charter linesscripts/pm/check-skill-line-ratchet.mjstriage-duties.md120 → 103,lanes/director.md70 → 87, declared as one CROSS_FILE_MOVE (destination director.md, was 70; source triage-duties.md, was 120): +17 against a net source decrease of 17, map total unchangedAcceptance checks on this head:
git grep -n '决策收件箱按仓' -- .claude/skills→ no hit;git grep -n 'os-bill\|hotlong\|os-elon-musk' -- .claude/skills/pm-dispatch/references/→ no hit; no rule line names a login.Line budget
references/contract-review.mdreferences/landing-operations.mdreferences/dispatch-runbook.mdreferences/triage-duties.mdreferences/lanes/triage.mdreferences/lanes/director.mdreferences/cross-repo-coordination.mdSKILL.mduntouched by this PR (318/318 after themainmerge that brought #25427). Widest edited line 120 bytes.Gates
On
3e07aa8(after mergingmainwith #25427):pnpm check:pm-skill-ratchet✓ (self-test 164 cases; declared cross-file moves 3, total ceilings down 488; every covered file at or under its ceiling),pnpm check:pm-skill-id-lint✓ (87 files clean),pnpm check:skill-frame-sync✓,pnpm check:skill-frame-freshness✓,scripts/check-commit-card-trailers.mjs --range origin/main..HEAD✓. No published package moves (.claude/**and one ceiling file), soskip-changeset.Ordering and open PRs
project-forms.md): its PR merged first andmainis merged in here (clean, no conflict). The two spots re-read after that merge need no edit: theproject-forms.mdpointer inlanes/director.md职责四 now resolves to the file that card added, and the 授权面 line onmainalready reads 「直连 ⛔ 无 Routine/cron」, which leaves the project-run 总监席's hourly inbox scan and daily digest (project-forms.md例行) intact. Post-merge counts:SKILL.md318,lanes/director.md87,seat-lifecycle.md95.dispatch-runbook.md〈卡线程〉 L141–L142,lanes/director.mdL1), docs(pm-dispatch): a project-coordinator reference — the cross-lane scheduling rules a Claude Code project runs by, so its instructions name only its lanes #25255 (newcoordinator.md, runbook L136), docs(pm-dispatch): fold the engine, services and cli lanes into domain:server #25247 (lane files). This PR touches none of their hunks (runbook L39–L46, L52–L53, L64, L69–L70; director.md L22, L51, L68).Acceptance notes
record-recognisers.mjs --templaterun that shows where the account line goes;scripts/pm/record-recognisers.mjsis outside this claim's file surface (devx S card, same stroke as the queue-guard check). Until that lands, the reviewer adds theReviewed-by-account:line by hand besideReviewed-by:, ascontract-review.mdnow says; the key name is the one the check-governed-queue-guard: a PR landed from a project thread needs a review of record whose Reviewed-by session belongs to a different account from the PR's attribution github_login, else Tier S does not enqueue (maintainer's word 2026-10-23) #25415 queue guard reads, so the two PRs agree without waiting for the template change.seat-post-protocol.md发版板运维 still reads 「生产者:主仓归分诊座位」;seat-lifecycle.md〈座位贴协议〉 still says the triage round releases a silent claim, and its 轮次报告 line still counts disjunct ④. All three files are outside this claim's surface (and docs(pm-dispatch): a project-run seat form beside the Routine form — the seat post as a stub, the dispatch order in the card thread, event wake plus one patrol per project, 项目总监 → 总监席 #25385 edits the first two); one-line follow-ups for the seat: 「主仓归总监席」, 「由总监席摘要一笔中继释放」, 「析取④ → 车道席补齐」.RECLAIM_AFTER_HOURS,Release:) stay intriage-duties.mdbecauseseat-lifecycle.mdpoints there; line 5 of that file names the 总监席 digest as the run that executes them.os-dev.md〈干净收尾〉 forbids HTML comments in GitHub text. Reported as a deviation, not hidden.Governed surface
.claude/**(Tier S): draft, awaiting the seat'sCONTRACT_REVIEW_TIERreview and the maintainer's word; ⛔ not to be flipped ready, queued or armed by this thread.🤖 Generated with Claude Code
https://claude.ai/code/session_011XvnQKt7WvdyvD2X4DLc8R