Repository navigation
pm-dispatch references: the seat record reads the head's check-runs as gate evidence; ACCEPT is the PR's seat record; two pre-landing checks - #23439
Conversation
…ence; ACCEPT is the PR's seat record; two pre-landing checks - review-checklist.md: the seat record's gate evidence is the head-pinned check-runs (name + conclusion); a local union evidences only its local subset and never stands in for a missing check-run. Paid by deleting the post-review re-run line, a restatement of the dev contract's own re-run duty and of the stale-sha verdict on the line above it. - execution-duties.md: the ACCEPT verdict is the PR's seat-record comment, with a pointer line on the card, for every PR. - landing-operations.md: the Tier S landing passes the two pre-landing checks contract-review.md enumerates, not three. Claude-Session: https://claude.ai/code/session_013zGKMG1cRedVzWtqGGGZW9 Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewServed-tier: Reviewed in seat by the dispatching skills seat (served tier read from ① Derived judgments
② Semver levelNone owed: ③ Boundary flags
Implemented-by: VERDICT: PASS Generated by Claude Code |
席位核对 · PR #23439 at
|
Fixes #23409
Clause-②: no
The card's two items plus the three added in comment 6163735021, inside triage's scope (comment 6163828327): text only, all under
.claude/skills/pm-dispatch/references/**; noSKILL.md, noscripts/**, no new gate. Dispatched by thedomain:skillsseat 1 under the claim in comment 6164024645 (branchclaude/issue-23409-seat-record-reads-check-runs, sessionsession_013zGKMG1cRedVzWtqGGGZW9). Base:origin/mainat04a314873c, with PR #23389 and PR #23422 both onmain.Authority: the remainder of #23378's 方案 4 under the maintainer's 「同意」, verbatim: 「dev 本地验证瘦身,CI 是证据。本地只跑改动包的 typecheck 和测试、以及读到改动文件的门禁族;全量门禁族交给 PR 的 CI check-runs,ACCEPT 读 check-runs(复审员已经这么做)。」 This PR carries its change 4, the seat half; the dev half is already on
mainfrom PR #23405.维护者速读(草稿)
改了什么:PM 派发协议的三份参考文件,各改一行,纯文本:
① 复核清单写明「席位核对」的门禁证据就是 PR 当前 head 上的 CI check-runs(名称+结论),dev 在本地跑的门禁只证明本地那一小部分,不能顶替缺席的 check-run;
② ACCEPT 判决的落点从「卡上一条英文短评论」改为「PR 上的
## 席位核对评论,卡上只留一行指针」,对所有 PR 一律适用;③ 落地细则里「落地前检三条」改为「两条」,与契约复核细则的枚举对齐。
为什么改:落实您对「CI 是证据、ACCEPT 读 check-runs」的同意——dev 一侧已落地,本卡补上席位一侧;另两处是今天两份协议 PR 落地后遗留的文本不一致,不改会让席位按两种说法各行其是。
风险与代价(含回滚):无代码、无脚本、无新门禁;三个文件行数均不增(77/183/101 持平)。复核清单为腾出一行,删去了「复核后又推提交须补跑并集」一句——dev 契约自带同一句,上一行也已判过时的本地并集不作数,所以不丢规则。回滚 = revert 本 PR。
席位意见:
你要做的:无需操作——
.claude/**属 Tier S,由席位契约复审档复核 PASS 后入队;若反对「ACCEPT 一律落在 PR 上」,在 #23409 线程留一句否决即可。Rule sentences, before → after
1.
references/review-checklist.md〈测试与门禁证据〉: the seat record's gate evidence (77 → 77 lines)New line 49, 118 bytes. It sits after the two head-pin lines for check-runs (
:47pins every gate reading tohead.sha,:48the non-headcancelled), so 「钉 head」 is that pin, and before the local union's own head pin (:49→:50, unchanged).Paid by a same-file deletion:
Why it restates: its remedy is the dev contract's own unconditional duty,
.claude/agents/os-dev.md:161–162「复核后任何一次 push,都在新 head 上重跑并集。」 「至少重跑 ratchet 族,然后才更新报告或 PR 正文。」; and its seat-side verdict is the line kept just above it, 「dev 本地并集钉 head:所抄git rev-parse --short HEAD不符 PRhead.sha或没抄 ⇒ 双向都不入账。」 A union whose cited HEAD did not move after a later push is exactly that case. Under the new line the seat's gate evidence after such a push is the new head's check-runs, never a re-run union.The dispatch's mechanism note (one amended line may be enough) was measured and does not hold:
:44is 112 bytes and:45119; the full rule folded into:44measures 140 bytes, over the 120-byte cap.:44's 「⛔ 不因报告写了本地绿跳过」 stays: it governs the act of reading the two required jobs, the new line governs what counts as evidence. The dispatch's suggested spelling (147 bytes) was shortened to fit.2.
references/execution-duties.md:179: the ACCEPT verdict's location (183 → 183, in place)116 → 118 bytes. This is the seat's ruling A in comment 6163735021 (every PR, governed or not). Its veto window was read at this head: the comments after it on #23409 are the unblock (6163808287), triage (6163828327) and the claim (6164024645); none overrules. The dispatch's suggested spelling measures 137 bytes, not 118, because each CJK character is 3 bytes, so it was shortened. 「核对」 is dropped because 清单 is this section's 复核清单. 「英文」 is dropped because
SKILL.md:95already makes every new GitHub text English. 「链接 PR」 is dropped because the record now sits on the PR. The pointer's spelling stays single-sourced atSKILL.md:190. Consistent with the one machine reader of the verdict:check-half-states.mjsH48 already reads it as an issue comment on the PR.3. Pre-landing check count: two.
references/landing-operations.md:59corrected in place (101 → 101)Evidence that two is the true count:
references/contract-review.md:32–36. That is PR tooling(pm): the contract review's tier follows the face that made it owed #23389's landed text; lines 32, 35 and 36 are untouched by it. 「落地前检两条,过则 Tier S 入队、Tier H 等人批:① 达档条款②复核 PASS 在案(同形记录)。」 … 「② PR check 全绿,⛔ 非 required 子集;…」.references/lanes/director.md:35points into it by number: 「受管面两层落地见../contract-review.md落地前检②」.## Contract reviewrecord for the current head withServed-tier: CONTRACT_REVIEW_TIERand a PASS verdict, "and every check is green".check-governed-merges.mjs --branchon this branch prints the same two (record + "every check green").--deepen=600, then--deepen=1500).c2cce8fd1b(2026-09-14, PR docs(pm): landing-operations names the two landing tiers and lanes/ui.md's spec pointer states the landed rule (#18037) #18111) wrote the 「三条」 sentence while contract-review.md's list had three items: ① PASS 在案, ② 双载体已清 (check-clause2-carriers.mjs --pair N), ③ PR check 全绿.7e0bfce400(2026-09-22, PR pm(skills): retire the clause-② gate text — label hang/clear, --pair, double carrier, independence requirement (step ②) #19694) retired the double-carrier item and renumbered the list to 「两条」. Its PR body named the director.md pointer drift (③ → ②) but notlanding-operations.md:59, which has said 「三条」 since..claude/,AGENTS.mdandscripts/pm/*.mjs: contract-review.md:32 (两条), landing-operations.md:59 (三条), lanes/director.md:35 (②), SKILL.md:197 (no count), plus script prose that quotes SKILL.md:197.check-governed-merges.mjs --pr Nanswering Tier S, is the tier classifier. It already has its own bullet one line above,landing-operations.md:58「转 ready/入队前跑check-governed-merges.mjs --pr N:受管面照两层;…」. contract-review.md:32 uses it to choose the branch (「过则 Tier S 入队、Tier H 等人批」), not as a third condition to pass. Listing it inside contract-review.md would restate:58. "Roster-skipped" is item ②'s own exception (SKILL.md:205「每 check 绿或预期 skip」), not a separate check.dispatch-gates.mjscalls the--prread "the landing pre-check" in English prose. That names a pre-landing step, not an item of this list.4. Under-tier route: read, nothing written
references/execution-duties.md:112「自审随面定档:仅申报面车道席作TIER_DEFAULT记录;余面未达档 ⛔ 不自审,起隔离子代理。」 andreferences/cross-repo-coordination.md:45「认领即跟到 MERGED:派发后发现跨车道面(含 spec)不移卡,复核按面定档,未达档借隔离复核。」 were both rewritten by PR #23389 (4f81f31526). Their earlier spellings were 「未达档 ⛔ 不自审,起隔离达档子代理」 and 「认领席借契约复审档隔离复核」. Reading: they agree. The tier follows the face, and a seat below the face's tier does not review its own work: it takes an isolated review at that tier. No reconciliation is owed, socross-repo-coordination.mdis untouched (51/51).SKILL.md:190, read against them and not edited (triage excludesSKILL.md): 「指针ACCEPT → PR #n comment ID;技能面 hunk 须由契约复审档的席复核,档外席先交 skills 席。」 The pointer's placeholder is respelled as ID for the body sanitizer.CONTRACT_REVIEW_TIER(contract-review.md:11), and the governed surfaces aredomain:skills' lane (SKILL.md 域车道 table).Acceptance notes
needs-user-decisionon the PR, a final 维护者速读 …"). Triage excludes these files, so they are not edited:scripts/pm/check-governed-merges.mjs:220and:1865, andscripts/pm/check-governed-queue-guard.mjs:384and:1993. A fifth site the dispatch did not list carries the same phrase:scripts/pm/dispatch-gates.mjs:11928(the size-limb remedy). All five are prose; no reading depends on them.carrier: none — tooling card if the maintainer wants the prose moved.SKILL.md:190route reading above: two routes for an under-tier review of a skills-face hunk.carrier: none(aSKILL.mdcard, if the seat wants one route).Verification, at head
229a926376The local subset is the families
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderives for this diff. Each exit code was captured before any pipe:--ranreconciliation: 「Run reconciliation — 18 derived, 18 run, 0 NOT-MEASURED, 0 UNRUN.」 and 「a DERIVED zero — all 18 recorded an exit code and none of them is 3」.Every line of the three files is 120 bytes or less (widest: 119, 120, 120). The added lines carry no full-width punctuation, and there are no control bytes. There is no ablation, because the change is text only. CI's families are read off this PR's check-runs and are not re-run locally. The tier reading from
check-governed-merges.mjs --branchis GOVERNED, Tier S,.claude/**×3, size 6 ≤ 3000; the landing tier is read at landing by--pr.skip-changeset:.claude/**ships in no package.Generated by Claude Code