Skip to content

docs(pm-dispatch): move clause-2 contract review in-seat — dispatching seat reviews and releases; external chain becomes optional audit - #13812

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-13795-pm-dispatch-inseat-contract-review
Aug 31, 2026
Merged

os-zhuang merged 1 commit into
mainfrom
claude/issue-13795-pm-dispatch-inseat-contract-review

Conversation

@os-warren

Copy link
Copy Markdown
Collaborator

Fixes #13795

What this does

Reworks the clause-② review process in the pm-dispatch skill from "dock the PR and wait for the external review chain" to an in-seat fable contract review by the dispatching seat, per the maintainer's 2026-08-31 ruling (three verbatim sentences on the card; the operative one, quoted untranslated in references/contract-review.md):

「项目经理是fable 或者可以派fable的子任务都可以自己contract view吧?」

The six substantive points of the card, and where each landed

  1. Clause-② fable dispatch mandate unchanged — no edit. The 模型分档 section and the gate's dual-limb + tier mechanics (first 8 lines of the 条款②入队闸门 bullet) are untouched.
  2. Post-delivery review upgraded — references/contract-review.md new bullets 契约判断清单 (derived judgments item by item · semver grading vs the changeset · boundary-flag disposition, recorded on the card/PR, never prose self-attestation) and 独立性件 —— 隔离复核子代理 (on a true fork in contract judgment, or a dev flag awaiting adjudication, the dispatching seat spawns a context-isolated fable review subagent: fed only the card, standing rulings and the PR itself, never the dispatch brief or the seat's own conclusions; adversarial brief — look for reasons to reject; verdict adopted verbatim after transcript tier verification).
  3. Release — SKILL.md gate bullet + contract-review.md 放行 = 清标即落地 bullet: PASS strips needs:contract-review (both carriers) in the same stroke, cites the 2026-08-31 ruling as provenance, then ready + auto-merge/enqueue; FAIL is a patch round. The draft + label short dock at PR creation stays (it guards against enqueue before the review completes); what is removed is the open-ended "waiting for an external seat" state.
  4. External review chain demoted to optional — the triage seat's timed wheel and the director summons become a post-hoc audit/spot-check: their verdicts are still respected (an audit FAIL flips labels back to a patch round), but they are no longer a release precondition. Landed in contract-review.md (外部评审链降为可选), lanes/director.md 职责一, and the SKILL.md director paragraph's four-duty listing.
  5. Maintainer decision box preserved — stated in both the SKILL.md gate bullet and contract-review.md: a card stuck on a decision goes to the decision inbox only, never self-adjudicated; true design forks still escalate.
  6. Motivation (recorded here, not in rule text) — on 2026-08-31 the review chain was absent as a whole; two green-and-docked PRs sat for hours (over 4h on the PR delivering feat(spec): declare rows (multiline editors) and options[].description as authorable field-metadata keys (objectui#6140 / objectui#6153, spec half) #13669, over 3h on the one delivering feat(spec): wizard view v1 — declaration-and-refusal tightening of FormViewSchema type:'wizard' (Card S) #13733 — both remain governed by their own cards; neither is addressed here), and the maintainer had to unlock three times with personal words (the morning's five green PRs, then each of the two above). Same-tier review adds no capability redundancy; independence now comes from the context-isolated review subagent instead of from a separate seat.

Contradicting clauses rewritten (before → after)

Where Before After
SKILL.md 条款②入队闸门 「派发席职责止于:卡上记一行认定、停手;⛔ 禁止自查放行。…复审链细则…见 references/contract-review.md」 「交付后复核由派发席在席内完成(维护者 2026-08-31 裁定…):PASS ⇒ 同席剥标、ready、auto-merge;FAIL ⇒ 补丁轮;⛔ 免复核不放行;…外部评审链降为可选事后审计,非放行前提。」 The invariant survives as ⛔ 免复核不放行 (release without review is still forbidden — what changed is who reviews); 卡上记一行认定 moved to the reference's carrier bullet.
SKILL.md director paragraph 四职 = needs:contract-review 复审链、… 四职 = needs:contract-review 事后审计(可选,放行归派发席席内复核 —— 见条款②闸门)、… (2026-08-27 verbatim quotes kept unchanged)
SKILL.md 负边界 「不走复审链」 「不走契约复核」 (wording follow-through only)
contract-review.md title/归属 复审链细则; 归属 = 常设唯一分诊席定时轮,总监席召唤兜底,标清后方可入队 复核细则(席内); 归属 = 该卡派发席,交付后收集复核当轮席内完成; the 2026-08-21 「你自己就是 Fable,自己就可以审核」 precedent and the 2026-08-25 「审核通过你应该直接负责合并吧…」 clearing-lands ruling are kept verbatim; the 2026-08-27 timed-wheel ownership quote is kept and marked as rewritten by this ruling
contract-review.md 载体纪律 同笔在该 PR 上向复审席账号 request review(仅通知) dropped — there is no external review seat to notify; replaced by 停靠短暂…⛔ 无「等外部席位」的无限期状态
lanes/director.md 职责一 兜底位,非常设处理者(常设定时处理归分诊席) 审计位,非放行链 — audit/spot-check; the 处理三分支 2026-08-27 verbatim quote and its three branches are unchanged
lanes/director.md 交接台账 …2026-08-27 再裁:常设 = 分诊定时轮,本席退为兜底 chain extended: → 2026-08-31 再裁:放行改派发席席内复核,定时轮与本席降为可选事后审计
lanes/skills.md 契约复审链与决裁勤务归项目总监席 契约复核归派发席席内、决裁勤务归项目总监席
landing-operations.md B 契约复审链 PASS 落地的 PR… 契约复核 PASS 落地的 PR…(席内清标与落地同一笔)

Deliberately untouched (checked, judged consistent): state-machine.md dual-carrier row (mechanics of hang/clear, process-neutral); seat-post-protocol.md linger scope line; SKILL.md 分诊席直连自排 duties line (代裁 stays; at-tier duties still run via transcript-verified fable subagents); check-half-states.mjs H31/H35 (their 自查放行 refers to the sweeper script never writing gate labels — unchanged semantics); ensure-pm-labels.sh / dispatch-gates.mjs label and tier constants.

Two verbatim quotes compressed to date-only references in lanes/director.md (both grounded mechanisms now two supersessions dead, retained as dated ledger entries): 2026-08-23 「要不还是你挂个定时处理审核吧」 and 2026-08-27 「同意,继续」. Flagging for the reviewing maintainer; easy to restore if wanted.

Line ratchet

  • contract-review.md ceiling raised 51 → 57 (landed count, headroom 0). Paid in place first: the wheel-ownership bullet, the request-review clause and the standalone qualification bullet were deleted or folded; the residual +6 could not be paid without deleting ruled clauses (refused on the state-machine precedent). Ruling authorizing the growth: maintainer 2026-08-31, quoted at the top of this PR. The map comment carries the same measurement.
  • SKILL.md 960 → 962 lines (ceiling 1005, headroom 43): +1 line of principle in the gate bullet, +1 from wrapping the director four-duty line to the 120-byte budget.
  • All other touched files land at unchanged line counts (director.md 77/77, skills.md 35/35, landing-operations.md 80/80).

Verification

Full gate union re-run on the final commit, head 9f16a386:

  • pnpm check:pm-skill-ratchet — ✓ (self-test 111 cases; every ceiling green, contract-review.md 57/57, SKILL.md 962/1005; 120-byte line budget clean)
  • pnpm check:pm-skill-id-lint — ✓ 23 file(s) clean
  • pnpm check:pm-governed-prose, pnpm check:skill-frame-sync (4 copies isomorphic), pnpm check:nul-bytes, pnpm check:doc-authoring, pnpm check:pm-governed-merges (230 assertions), pnpm check:watch-hint-literal, pnpm check:entry-guard, pnpm check:parse-guard, pnpm check:bash32-floor, pnpm check:cli-command-ids, pnpm check:agent-test-spelling, pnpm check:cross-package-test-inputs, pnpm check:pnpm-filter-targets — all ✓
  • Edited-gate-script obligations: node scripts/pm/check-skill-line-ratchet.mjs --self-test ✓ 111 cases; pnpm check:pm-dispatch-gates ✓ 1048 cases; node scripts/pm/bare-root-worklist.mjs --self-test ✓ (none stale/missing/contradicted); node scripts/check-ci-filter-parity.mjs ✓; node scripts/check-shard-attestation.mjs ✓; pnpm --filter @objectstack/lint run check:doc-formula-expressions ✓ after building @objectstack/formula and @objectstack/lint
  • NOT MEASURED locally (prerequisite not met, CI-owned): check-governed-queue-guard.mjs (reads the workflow event payload) and check-test-completeness.mjs (grades a saved turbo test log; this diff runs no tests)

This PR touches .claude/** and scripts/pm/** only — internal agent tooling, no published package: skip-changeset applies. Governed surface (.claude/**): stays draft for human review per the governed-merge rules.

Generated by Claude Code


Generated by Claude Code

…-08-31 ruling

The dispatching seat now completes the contract review itself after delivery
(judgment checklist; context-isolated adversarial fable review subagent on a
true fork or a dev flag), strips the needs:contract-review dual carrier on
PASS and releases (ready + auto-merge); FAIL is a patch round. The draft +
label short dock at PR creation stays. The external review chain (triage
timed wheel / director summons) is demoted to an optional post-hoc audit —
respected, but no longer a release precondition. The maintainer decision box
is untouched: true design forks still escalate.

contract-review.md ceiling 51 -> 57 (in-place payment exhausted; map comment
carries the measurement).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PBjwYLS6BciTQW3c9xQiD2
@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation labels Aug 31, 2026
@os-warren os-warren added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 31, 2026 — with Claude
@os-warren
os-warren marked this pull request as ready for review August 31, 2026 14:01
@os-warren
os-warren added this pull request to the merge queue Aug 31, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Aug 31, 2026
@os-warren
os-warren added this pull request to the merge queue Aug 31, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Aug 31, 2026
@os-zhuang
os-zhuang added this pull request to the merge queue Aug 31, 2026
Merged via the queue into main with commit 5c34b7e Aug 31, 2026
34 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-13795-pm-dispatch-inseat-contract-review branch August 31, 2026 16:23
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

Development

Successfully merging this pull request may close these issues.

[skill] pm-dispatch 条款② 复核改制:席内 fable contract review 取代「停靠等外部评审链」,缺位死等成为历史

3 participants