Repository navigation
pm-dispatch SKILL.md 〈路径分叉〉: one under-tier route for a skills-face hunk — an isolated review at the face’s tier - #23453
Conversation
… — an isolated review at the face's tier
SKILL.md 〈路径分叉〉's pointer line carried a second under-tier route
("hand the hunk to the skills seat") beside the one the references carry
(execution-duties.md:112, cross-repo-coordination.md:45: the review's tier
follows the face; a seat below it spawns an isolated at-tier review). The
second clause now states that one route. The skills lane charter
(lanes/skills.md:12) places contract review with the dispatching seat
in-seat and reserves the TEXT for the skills seat, so no lane-ownership
sentence about the review of record is kept. Pointer clause verbatim;
119 → 111 bytes; 319/319 lines; the four-axis block is untouched.
Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013zGKMG1cRedVzWtqGGGZW9
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 #23453 at
|
Fixes #23445
Clause-②: no
One line in
.claude/skills/pm-dispatch/SKILL.md〈路径分叉〉 (L190): the pointer line's second clause named a second under-tier route for a skills-face hunk ("hand it to the skills seat") beside the one the references carry. It now names the one route — an isolated review at the face's tier. Pointer clause verbatim; no other line of the file; 319/319 in place.Before → after (L190; the angle brackets around
idin the pointer clause are spelledIDhere, the file keeps them)Before (119 bytes):
After (111 bytes):
The two reference lines this follows (verbatim, on
61b12584f0)references/execution-duties.md:112「自审随面定档:仅申报面车道席作TIER_DEFAULT记录;余面未达档 ⛔ 不自审,起隔离子代理。」references/cross-repo-coordination.md:45「认领即跟到 MERGED:派发后发现跨车道面(含 spec)不移卡,复核按面定档,未达档借隔离复核。」Both are #23352's ruling B′ with C as PR #23389 landed it: the review's tier follows the face that made it owed, and a seat below that tier takes an isolated review at the tier. PR #23422 (#23381) kept the SKILL.md clause verbatim while moving it onto the pointer line; #23409's dev read it (PR #23439) and this card carried it.
Charter reading — is "a skills-face hunk is the skills lane's to review" an ownership sentence the charter supports?
No. Read in full on
61b12584f0:references/lanes/skills.md:7「两个技能根:.claude/skills/**(含 pm-dispatch 本体)与skills/**(发布目录,恒英文)。」 — the lane's SCOPE is the two skill roots (the text).references/lanes/skills.md:12「契约复核归派发席席内、决裁勤务归项目总监席(director.md);本席保留 skill 与治理文本。」 — the charter itself places the contract review with the DISPATCHING seat, in-seat, and reserves for the skills seat the skill and governance TEXT.references/lanes/director.md:65「改 skill、指令或治理文本归 skills 席;出裁决、清复审标、清点待人工清单归本席。」 — the same split from the director's side: editing the text is the skills seat's.references/contract-review.md:7「欠不欠按面判 ⛔ 不按车道」,:11「档随面定:已发布 schema 或 governed 规则文本 ⇒CONTRACT_REVIEW_TIER」,:16「谁跑 = 派发席,达档者席内审。」,:17「复核记录 = 一条评论落 PR 或卡,席内与子代理同形」 — the review of record is owed by face, run by the dispatching seat, in-seat when at tier, by the isolated subagent otherwise.So the charter supports ownership of the skills-face TEXT by the skills lane (who files, dispatches and edits it), not ownership of the review of record of a sibling-lane PR's skills-face hunk — that review is the dispatching seat's, tiered by face. "Hand it to the skills seat" was a route, and the charter does not back it as ownership either, so the clause is dropped rather than kept as an ownership sentence. What stays is the tier rule and its one under-tier route.
Why no inline pointer: the file's pointer convention is 「见
references/FILE.md」 (L124, L151, L231, L235), which costs 38 bytes after the 41-byte pointer clause and leaves 41 bytes for the rule itself — not enough. The 阶段细则索引 already routes the execution seat toreferences/execution-duties.mdon every fire (「执行席每次 fire · … · 复核」), so the sentence stands alone and the detail lives where the index already points.Ratchet arithmetic and constraints
.claude/skills/pm-dispatch/SKILL.md: 319 → 319 lines (ceiling 319, headroom 0); L190 119 → 111 bytes (cap 120).abff5f852c8fd09b79ec0623439aa4f0before and after — unchanged; L108 untouched; L188–194's other lines untouched.references/**, noscripts/**, noAGENTS.md.git diff --stat: 1 file, +1 −1.Local verification (head
9029eea30e; each exit captured before any pipe)node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack(no paths; derived from git off the merge-base) → 20 commands;--ranreconciliation: 20 derived, 20 run, 0 NOT-MEASURED, exit 0.pnpm check:pm-skill-ratchet✓ … pm-dispatch/SKILL.md is 319 lines (ceiling 319; headroom 0); every line within 120 bytespnpm check:pm-skill-id-lint✓ check-skill-id-lint: 87 file(s) cleanpnpm check:pm-governed-prose✓ … 2 instruction surface(s) name all 7 registered governed surfaces … and claim no otherspnpm check:skill-frame-sync✓ … the one declared copy of the decision frame is internally coherentpnpm check:pm-governed-mergespnpm check:nul-bytes·check:doc-authoring·check:agent-test-spelling·check:cross-package-test-inputs·check:driver-memory-census·check:gitlink-declared·check:pm-expected-skips·check:refd-timer-probe·check:watch-hint-literalnode scripts/check-closing-keyword-parity.mjs(+--self-test) ·check-comment-mask-corpus.mjs·pm/check-governed-queue-guard.mjs --self-test·pm/check-harness-current.mjs --self-testpnpm --filter @objectstack/lint run check:doc-formula-expressions@objectstack/formula/@objectstack/lint, not a finding); prerequisite built underscripts/pm/os-verify-lock.sh(turbo cache hit), rerun exit 0Local-only family (CI runs only its self-test):
pnpm check:skill-frame-freshnessexit 0 — the frame is current withorigin/main. The farm (pnpm lint,pnpm test, builds) is CI's; read off this PR's check-runs. No ablation: text-only diff.Changeset
None —
.claude/**ships in no package;skip-changesetapplies and is requested throughscripts/pm/label-write.mjs.Landing
Tier S by the register (
.claude/**); the landing tier is read at landing bynode scripts/pm/check-governed-merges.mjs --pr N. Draft until the contract-review record for this head is in place.Acceptance notes
references/contract-review.md, which the 阶段细则索引 does not list directly — it is reached throughexecution-duties.mdandlanding-operations.md, andlanes/director.md:31points to it by name.维护者速读(草稿)
改了什么:pm-dispatch SKILL.md 〈路径分叉〉的指针行(L190)第二句。原来写「技能面 hunk 须由契约复审档的席复核,档外席先交 skills 席」,现在写「技能面 hunk 复核随面定档:席未达档起隔离达档复核」。指针半句原样不动,全文件只动这一行,319/319 行不变。
为什么改:同一件事在仓里有两条路。references 里(execution-duties、cross-repo-coordination)写的是 #23352 裁决 B′:复核档位跟着面定,席位不达档就起隔离的达档复核;SKILL.md 这一句却写成「先交 skills 席」。两条细则冲突按 〈优先级〉要立卡处理,这张卡就是。查 skills 车道岗位说明:它把「契约复核」明确归派发席席内,skills 席保留的是 skill 与治理文本本身——所以「交 skills 席复核」既不是裁决定的路,也不是岗位说明支持的归属,直接删掉,只留一条路。
风险与代价(含回滚):风险极低,一行治理文本,不碰代码、不碰 references、不碰四轴框架块(md5 前后一致)。本地 20 个派生门禁全绿,棘轮 319/319、行宽 111/120。回滚 = revert 这一个 commit。
席位意见:(留空)
你要做的:本 PR 属 Tier S(
.claude/**),由席位在达档复核 PASS 后入队落地,不需要维护者点击;若想看一眼,只需对照上面的前后两句。Generated by Claude Code