Skip to content

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

Merged
objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/project-thread-e8y326
Oct 23, 2026

Conversation

@objectstack-fleet

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

Copy link
Copy Markdown
Contributor

Requested by Elon · project thread

Fixes #25414

Clause-②: no
Metadata-protocol: none

维护者速读(草稿)

What changed

Seven files under .claude/skills/pm-dispatch/references/** plus the ceiling rows in scripts/pm/check-skill-line-ratchet.mjs; rule text only; every edited line is at or under 120 bytes.

File Before After
contract-review.md 独立性对 (48 → 54, ceiling 60) the pair is read off --template +3: a project seat's Tier S landing needs a Reviewed-by: from an account other than the PR author's: the record carries a Reviewed-by-account: line (the reviewing session's login) beside Reviewed-by:, and it must differ from the PR body attribution github_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-account TIER_DEFAULT record. +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 names landing-operations.md for item 2, but the 落地前检两条 lines live here since the rules-only rewrite, so the text went where the rule is
landing-operations.md 入队与落地 (101, net 0) — +1 pm:mailbox: owes no CI, never queued, excluded from the landing ledger and orphan-PR queries; paid by folding 「外部评审链降为可选事后审计」 into the design-fork line
dispatch-runbook.md (241, net 0) 〈座位贴活性巡查(分诊轮常设项)〉, six lines run by the triage Routine 〈巡查常设项(每项目巡查与总监席摘要)〉: seat-post liveness goes to the 总监席 digest (3 lines, same tests); the cross-account review pass (3 lines: the is:pr is:open label:needs:contract-review query minus this account's attribution, the Claim:-shaped comment before reviewing, review per contract-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) the full triage duty list the seat keeps bare-card first touch and cross-lane dedupe; disjunct ② stays (queue label, no domain), the half-labelled ③④ go to the owning lane seat; 全仓 → 两仓; the fork-PR sweep, the pin chain (6), the decision-inbox duties (3), the closed/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 in lanes/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 untouched
lanes/triage.md (7, net 0) pickup alternation and the starvation guard summoned by the maintainer's sentence into any project, by default beside the 总监席; labels and audit comments only, no PR, no claim; scope = objectstack/objectui bare cards + cross-lane dedupe, app repos have no triage seat; the alternation, 4 h starvation guard, no-second-seat and no-frequency-change rules kept
lanes/director.md (70 → 87) 决裁勤务 inbox line +1 授权与形态: the 分诊席 is summoned beside this seat by default, its hourly run may share the inbox scan. 职责二 +2: the inbox is every repo's 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 at project-forms.md (sibling card #25412)
cross-repo-coordination.md (51, net 0) 「决策收件箱按仓:平台在 objectstack / objectui,元数据项目在本仓」 「决策卡留在立卡仓,总监席扫全部仓 needs-user-decision 呈批」; the new-repo checklist gains GOVERNED_REPOS, the fleet App and the lane charter file, and names 「应用仓无分诊席」; paid by merging the 准入 and hotcrm-charter lines
scripts/pm/check-skill-line-ratchet.mjs — triage-duties.md 120 → 103, lanes/director.md 70 → 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 unchanged

Acceptance 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

File Lines Ceiling Net
references/contract-review.md 54 60 +6 (headroom was 12)
references/landing-operations.md 101 101 0 (+1 −1)
references/dispatch-runbook.md 241 241 0 (+1 −1, 4 edited in place)
references/triage-duties.md 103 103 (was 120) −17
references/lanes/triage.md 7 7 0 (rewritten)
references/lanes/director.md 87 87 (was 70) +17 (cross-file move)
references/cross-repo-coordination.md 51 51 0 (+1 −1, 1 edited)

SKILL.md untouched by this PR (318/318 after the main merge that brought #25427). Widest edited line 120 bytes.

Gates

On 3e07aa8 (after merging main with #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), so skip-changeset.

Ordering and open PRs

Acceptance notes

Governed surface .claude/** (Tier S): draft, awaiting the seat's CONTRACT_REVIEW_TIER review 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

…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>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 23, 2026
@os-elon-musk
os-elon-musk self-requested a review October 23, 2026 12:53
@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation labels Oct 23, 2026
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>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review (delta)

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 3e07aa849a7952760efeb82974bdec32dca47e09
Local-runs: probe — pnpm check:pm-skill-ratchet on the head in a detached scratch worktree, to confirm the declared cross-file move still grades after the 53 → 54 raise in contract-review.md; check:pm-skill-id-lint, check:skill-frame-sync and check:skill-frame-freshness were run in the same worktree (all exit 0), which is beyond the one-probe shape and is disclosed here rather than hidden; the check conclusions below come from the head's check-runs, not from these runs
Scope: .claude/skills/pm-dispatch/references/contract-review.md, .claude/skills/pm-dispatch/references/landing-operations.md, .claude/skills/pm-dispatch/references/dispatch-runbook.md, .claude/skills/pm-dispatch/references/triage-duties.md, .claude/skills/pm-dispatch/references/lanes/triage.md, .claude/skills/pm-dispatch/references/lanes/director.md, .claude/skills/pm-dispatch/references/cross-repo-coordination.md, scripts/pm/check-skill-line-ratchet.mjs + card #25414 ruling comment 6369035432

Reviewed at 2026-10-23T16:15Z. Delta review over the prior full review of head f0f3de9484441675beb4cdeaf34341fe0aea3df5 (this seat, not posted; its one FAIL is the first item below). git diff f0f3de9..3e07aa8 touches exactly two files, 3 insertions / 2 deletions, in two commits (eadbdfc, 3e07aa8); no main merge since (merge-base with origin/main is still ea33919f56a9879f95a00d45418385ff7dbb974f, the PR's base). Read-only: git diff/git show/git merge-tree in a clone, no checkout of the branch.

① Derived judgments

  1. FAIL-1 of the prior review — fixed exactly. triage-duties.md L5 on the head reads 「- 发版板、pin 链归总监席摘要,细则见 director.md;活性复查同归,细则留本文;⛔ 无代裁通道。」 — byte-identical to the fix the prior review asked for (119 B, file still 103/103). The PR body's triage-duties.md row now says 「line 5 names where the release board and pin chain went (总监席 digest, details now in lanes/director.md) and that the in-flight liveness re-check goes to the same digest with its details staying here」 — the 「details staying here」 claim is now attached only to the liveness re-check, which is the one block that did stay (L71–L73). RIGHT.
  2. Ruling A written in, nothing else. Card pm-dispatch: Tier S PR landed from a project needs a contract-review record by another account; triage shrinks to bare cards in the director project; decision cards stay in their repo, the director scans every repo (maintainer's word 2026-10-23) #25414 comment 6369035432 (maintainer 「25422 同意」 2026-10-23T15:55:37Z, batch Remove explicit pnpm version from workflows to fix version conflict #7 item 2, letter A) gives the suggested text 「过渡:无另一账户在席时,① 的替代 = 维护者本人在执行线程的话:逐个点名 PR 编号,或对该席位的 Tier S 长期授权(一句可撤)。」. The head's contract-review.md L41–L42 read 「- 过渡:无另一账户在席时,① 的替代 = 维护者本人在执行线程的话:逐个点名 PR 编号,」 (110 B) and 「 或对该席位的 Tier S 长期授权(一句可撤)。」 (57 B); with the list marker and the continuation indent removed, the two lines concatenate to the ruling's sentence character for character. The wrap falls after the comma that separates the two alternatives, so the rule reads as one sentence with two disjuncts under one condition (「无另一账户在席时」); the ruling's 「it lapses once another account's Reviewed-by: review of record is available」 is carried by that same condition. The ruling's 「line count unchanged」 is a wording estimate — the sentence does not fit in 120 B on one line, so the file goes 53 → 54 against ceiling 60. The diff since f0f3de9 contains nothing beyond these two edits. RIGHT.
  3. Everything else the prior full review held — items 1–6 of card pm-dispatch: Tier S PR landed from a project needs a contract-review record by another account; triage shrinks to bare cards in the director project; decision cards stay in their repo, the director scans every repo (maintainer's word 2026-10-23) #25414 (独立性对 + Reviewed-by-account: matching the feat(pm): the queue guard refuses a project-thread Tier S record reviewed from the PR's own account #25436 guard key; 落地前检 placed in contract-review.md; pm:mailbox line; runbook 〈巡查常设项〉 and the cross-account review pass; thin triage in lanes/triage.md with every moved block having a named home; decision cards staying in their filing repo with the 总监席 all-repo scan; no login in any rule line) — is unchanged on this head (git diff f0f3de9..3e07aa8 is limited to the two lines above) and passes by reference to that review.

Surface, budgets, merge on this head: 8 files changed, the same 7 reference files plus the ratchet's ceiling rows; SKILL.md untouched (318 on the head); no Tier H path (AGENTS.md, CLAUDE.md, docs/**, skills/**, .github/workflows/** untouched); no scripts/** other than the ratchet. Budgets (wc -l / ceiling): contract-review.md 54/60, cross-repo-coordination.md 51/51, dispatch-runbook.md 241/241, landing-operations.md 101/101, lanes/director.md 87/87, lanes/triage.md 7/7, triage-duties.md 103/103; widest line in every touched file 120 B, no added line over 120 B. Ratchet on the head: exit 0, the declared cross-file move reported as 「+17 (70→87) against a net source decrease of 17 (triage-duties.md 120→103)」, total ceilings down 488; id-lint 87 files clean; frame-sync and frame-freshness pass. Human floor: main triage-duties.md L95–L120 vs head L78–L103 byte-identical (裁决恒归维护者人工, 人工地板, 风险判据, 工作量判据, 不呈, 例外一/二). git grep -n 'os-bill\|hotlong\|os-elon-musk' -- .claude/skills/pm-dispatch/references/ on the head: no hit. Merge: git merge-tree --write-tree of the head onto the current origin/main 05cc3ee9533a7e9076a439cfd3aeb9b606edcda7 (two refactor commits after the base, both outside .claude/**) is clean, and with open PR #25474's head c246fb07b1c60e62e82c944d2b69a20efa3957f1 (contract-review.md +1, coordinator.md, runbook, execution-duties.md) is clean — no overlapping hunks.

② Semver level

skip-changeset correct: .claude/** and one script under scripts/pm/ move no published package. Clause-②: no and Metadata-protocol: none match a rule-text-only diff. No changeset owed. PR body consistent with the head: the 维护者速读 states the ruling (「批 #7 卡 2 裁定 A」, 「您 15:55Z 的「25422 同意」已裁定过渡行」) and the 「你要做的」 line correctly says no further per-PR naming is needed under the 14:14Z standing word; the line-budget table (54/60, 103/103, 87/87) matches wc -l; the Gates paragraph names the head 3e07aa8. One stale figure, not a rule claim: 「SKILL.md untouched (319/319)」 beside 「Post-merge counts: SKILL.md 318」 — the head has 318; cosmetic.

③ Boundary flags

  • ③-0 Same-account review. This record is rendered by an isolated subagent of the domain:skills seat 2 under account os-elon-musk, the same login as the PR body's attribution github_login; by the head's own text 「同账户子代理只算复核」 it is a review, not the review of record. Under the ruling A text now on the head (「…或对该席位的 Tier S 长期授权(一句可撤)」), the maintainer's standing Tier S word for this seat — 2026-10-23T14:14Z in the skills seat thread, 「后续按 pm-dispatch 规则审核通过的都可以落地」 — is the ① substitute for landing this PR; comment 6369035432 says the same (「no further per-PR naming is needed for it」). The prior ③-1 (two readings of the interim rule) is resolved by that ruling and dropped.
  • ③-2 The card's item 1 names two sources of the author's account (the attribution github_login line 「and the relay sender」); the head reads the body line only and the record states the reviewer's account (Reviewed-by-account:), the author's being machine-read from the body — what feat(pm): the queue guard refuses a project-thread Tier S record reviewed from the PR's own account #25436 can read. Accepted as the implementable half; the gap stays visible.
  • ③-3 Out-of-surface text now stale (seat-post-protocol.md L28 / L80, seat-lifecycle.md L39 / L76, check-half-states.mjs prescription string 「四仓全量对账」, cross-repo-coordination.md L7 「定级的唯一生产者」) — carried by card pm-dispatch: after the thin 分诊席 (#25414) lands, five lines elsewhere still give triage its old duties (seat-post liveness, main-repo producer, the 析取④ reference, the release-by-triage step, central grading) #25490 for the seat's follow-up; unchanged by this delta.
  • ③-4 PR author is objectstack-fleet[bot] (opened through the relay); the body's first line is the project attribution HTML comment, reported by the thread itself as a deviation from os-dev.md 〈干净收尾〉. Check-runs on this head re-read at 2026-10-23T16:15Z before posting: all 47 completed, every one success or skipped, none failed.

Implemented-by: claude/project-thread-e8y326
Reviewed-by: session_01REMuzhz6MWRjg8uohedMnM
Reviewed-by-account: os-elon-musk

VERDICT: PASS

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对

ACCEPT · domain:skills#2 · os-elon-musk · session_01REMuzhz6MWRjg8uohedMnM · 2026-10-23T16:16Z · head 3e07aa849a7952760efeb82974bdec32dca47e09 · Tier S (check-governed-merges.mjs --pr 25422: .claude/** and ratchet ceiling rows, no Tier H path)

Landing authority: the maintainer's standing Tier S word in this seat's thread of the Claude Code project "Objectstack" (os-elon-musk account), 2026-10-23T14:14Z: 「后续按 pm-dispatch 规则审核通过的都可以落地」; and his ruling on this PR's interim line, batch #7 item 2 = A (2026-10-23T15:55Z, 「25422 同意」, recorded on #25414 comment 6369035432).

  1. Shape: draft, base main, Fixes #25414 the only closing keyword, skip-changeset; author objectstack-fleet[bot] (opened through the relay).
  2. Premise measured: the card quotes the maintainer's words of 2026-10-23 with the 12:25Z amendment; the interim landing line now reads the ruling A sentence verbatim (two lines, 110 + 57 bytes).
  3. Gates (check-runs pinned to this head): 47 check-runs, all completed, none failed.
  4. Contract review: CONTRACT_REVIEW_TIER PASS on this head, record 6369430152 (same-account review; under the ruling A text the standing word above is the ① substitute). The unposted full review at f0f3de94 found one FAIL (triage-duties.md L5 pointer), fixed at eadbdfc.
  5. Accepted deviations: 落地前检两条 lives in contract-review.md, so item 2's text landed there rather than in landing-operations.md; card item 1's relay-sender half is not machine-readable and is not carried (record ③-2).
  6. Out of scope, carried: five stale triage lines outside the claim surface → card pm-dispatch: after the thin 分诊席 (#25414) lands, five lines elsewhere still give triage its old duties (seat-post liveness, main-repo producer, the 析取④ reference, the release-by-triage step, central grading) #25490 (record ③-3). PR docs(pm-dispatch): the Writes: line names the relay as the only GitHub write path and bans GitHub MCP writes by name; the card thread's opening message carries it verbatim; contract review notes a PR not authored by the fleet bot #25474 (card pm-dispatch: card threads write to GitHub only through the relay (pr_create and the other ops), never GitHub MCP; the dispatch order carries that line verbatim; review flags a PR not authored by the fleet bot (maintainer's word 2026-10-23) #25457) merges main after this lands.
  7. Landing: merges cleanly onto main 05cc3ee953 (git merge-tree, no conflict). This seat flips ready and arms auto-merge now.

Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 23, 2026 16:17
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 23, 2026
Merged via the queue into main with commit 5497d4a Oct 23, 2026
55 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-e8y326 branch October 23, 2026 16:46
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