Skip to content

pm-dispatch SKILL.md 〈路径分叉〉: one under-tier route for a skills-face hunk — an isolated review at the face’s tier - #23453

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-23445-one-under-tier-route
Oct 14, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-23445-one-under-tier-route

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

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 id in the pointer clause are spelled ID here, the file keeps them)

Before (119 bytes):

- 指针 ACCEPT → PR #n comment ID;技能面 hunk 须由契约复审档的席复核,档外席先交 skills 席。

After (111 bytes):

- 指针 ACCEPT → PR #n comment ID;技能面 hunk 复核随面定档:席未达档起隔离达档复核。

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 to references/execution-duties.md on 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).
  • Four-axis block L241–261 md5 abff5f852c8fd09b79ec0623439aa4f0 before and after — unchanged; L108 untouched; L188–194's other lines untouched.
  • No references/**, no scripts/**, no AGENTS.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; --ran reconciliation: 20 derived, 20 run, 0 NOT-MEASURED, exit 0.

gate exit verdict line
pnpm check:pm-skill-ratchet 0 ✓ … pm-dispatch/SKILL.md is 319 lines (ceiling 319; headroom 0); every line within 120 bytes
pnpm check:pm-skill-id-lint 0 ✓ check-skill-id-lint: 87 file(s) clean
pnpm check:pm-governed-prose 0 ✓ … 2 instruction surface(s) name all 7 registered governed surfaces … and claim no others
pnpm check:skill-frame-sync 0 ✓ … the one declared copy of the decision frame is internally coherent
pnpm check:pm-governed-merges 0 —
pnpm 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-literal 0 each —
node 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-test 0 each —
pnpm --filter @objectstack/lint run check:doc-formula-expressions 0 first run exit 3 = PREREQUISITE NOT MET (unbuilt @objectstack/formula/@objectstack/lint, not a finding); prerequisite built under scripts/pm/os-verify-lock.sh (turbo cache hit), rerun exit 0

Local-only family (CI runs only its self-test): pnpm check:skill-frame-freshness exit 0 — the frame is current with origin/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-changeset applies and is requested through scripts/pm/label-write.mjs.

Landing

Tier S by the register (.claude/**); the landing tier is read at landing by node scripts/pm/check-governed-merges.mjs --pr N. Draft until the contract-review record for this head is in place.

Acceptance notes

  • Out-of-scope findings: none filed. Observed and not a defect: the review-ownership text lives in references/contract-review.md, which the 阶段细则索引 does not list directly — it is reached through execution-duties.md and landing-operations.md, and lanes/director.md:31 points to it by name.
  • The doc-formula gate's first exit 3 is a prerequisite refusal, not a measurement; it is listed so the exit ladder reads whole.

维护者速读(草稿)

改了什么: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

… — 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
@github-actions github-actions Bot added size/xs documentation Improvements or additions to documentation labels Oct 14, 2026
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 14, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 9029eea30ef493786d1dddc163609106d5262053
Local-runs: none

Reviewed in seat by the dispatching skills seat (served tier read from get_session last_served_model this fire, equal to the constant's value), on the PR diff (one file, +1/−1, one commit on 61b12584f0; check-governed-merges --pr 23453: .claude/** ×1, Tier S, 2 changed lines), card #23445 (filed under SKILL.md 〈优先级〉's 「两条细则冲突 ⇒ …立卡」 and #23396's ruling A; graded p3 by triage 6164757663), the dev's report (the newest os-dev-report comment on the card), the two reference lines and the lane charter on main, and the head's check-runs. The governed face is the PM protocol's pointer line; the judgment is whether the under-tier route it now names is the one the newer ruling landed. Written 2026-10-14T09:51Z.

① Derived judgments

② Semver level

None owed: .claude/** ships in no package; skip-changeset on the PR is correct.

③ Boundary flags

  • Dev flag — no inline 「见 references/…」 pointer in the new clause (byte budget; the 阶段细则索引 routes the execution seat to execution-duties.md every fire). Accepted.
  • Dev flag — one prerequisite two-package build under the verify lock for check:doc-formula-expressions; 20 derived families run, --ran 20/20; check:skill-frame-freshness run locally (the frame file is in the diff) exit 0. Accepted.
  • Observation (dev, no card): references/contract-review.md is not listed in SKILL.md's 阶段细则索引 directly (reached through execution-duties.md / landing-operations.md). Index observation; noted.
  • open_questions: none.

Implemented-by: claude/issue-23445-one-under-tier-route
Reviewed-by: session_013zGKMG1cRedVzWtqGGGZW9

VERDICT: PASS


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · PR #23453 at 9029eea30e (Fixes #23445) — Tier S, landing by the seat

Skills seat 1 (session_013zGKMG1cRedVzWtqGGGZW9, huangyiirene), written 2026-10-14T09:52Z. Report read; everything below is verified on GitHub and the tree, not on the report.

  1. 形态: draft PR against main; line 1 Fixes #23445 is the body's only closing keyword; Clause-②: no at line start; one file, +1/−1, one commit on 61b12584f0; skip-changeset (nothing published); check-governed-merges --pr 23453 → .claude/** ×1, Tier S, 2 changed lines; assignee huangyiirene.
  2. 前提实测: the two reference lines (execution-duties.md:112, cross-repo-coordination.md:45) and the charter lines (lanes/skills.md:7/:12, lanes/director.md:65, contract-review.md:7/:11/:16) re-read on main; the old clause named a second route, the new clause names theirs. Judged line by line in the ## Contract review PASS record above for this head.
  3. 门禁 check-runs: 38 runs on 9029eea30e, read 2026-10-14T09:50Z — by newest run per name 23 success, 11 skipped, none failing or in progress; Lint & Repo Gates and TypeScript Type Check success; every skipped name is on the expected-skips roster (scripts/pm/check-expected-skips.mjs, read from source on main). The dev's local subset (20 derived families, exit 0, --ran 20/20) is its own evidence; the farm's is these check-runs.
  4. 接受的偏差: base one commit past the dispatch's anchor (disjoint, re-verified); no inline reference pointer in the clause (byte budget); one prerequisite build under the verify lock; gh pr list GraphQL 403 in the container — the overlap check ran on REST GETs instead.
  5. 范围外去向: contract-review.md absent from the 阶段细则索引 (index observation; no card).
  6. 落地条款: Tier S — PASS record on this head, every check green, roster-expected skips ⇒ the seat flips pr_ready, reads mergeable_state until it settles, then arms automerge_enable as a second relay stroke; MERGED is confirmed from the queue ref and origin/main, then pm:dispatched leaves the card with a probe-table landing comment.

Generated by Claude Code

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/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants