Skip to content

docs(pm-dispatch): repo-class governance split, md-content review fork, and the standing 5-card adjudication flow - #12443

Merged
os-steve merged 2 commits into
mainfrom
claude/issue-12227-skill-governance
Aug 26, 2026
Merged

docs(pm-dispatch): repo-class governance split, md-content review fork, and the standing 5-card adjudication flow#12443
os-steve merged 2 commits into
mainfrom
claude/issue-12227-skill-governance

Conversation

@claude

@claudeclaudeBot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Fixes#12227
Fixes#12434

Family dispatch (chain head #12227 + folded member #12434), one PR, two per-card commits. Rewrites the pm-dispatch multi-repo/governance text to the repo-class model adopted in the final ruling on the chain head, and codifies the two 2026-08-26 rulings recorded on the member card. File surface: .claude/skills/pm-dispatch/SKILL.md and .claude/skills/pm-dispatch/references/decision-analysis.md only.

What changed

Commit 1 — repo classes + amended governance split (chain head, full 6-point scope of the final ruling):

  • Repo classes: multi-lane repos (objectstack, objectui) keep central triage as sole producer of domain:*/type/grading; single-lane repos (cloud, objectos, hotcrm, www.objectos.ai, future repos by default) self-triage the conflict-free mechanical duties only (own sweep, own type, own finding first-touch grading; no domain:*).
  • Registration is a checklist (seat post, labels, class assignment, gate inventory) with the admission criterion "does this repo genuinely need a standing seat".
  • Adjudication + cross-repo skills/instruction-surface work sit with the skills seat in the maintainer-driven human flow (verbatim strokes quoted in 升级与决策).
  • 代裁 retained, hard-gated on tier: measured serving model must equal claude-fable-5, machine-read via the downgrade fuse, never self-description; channel runs only on the triage Routine or the skills seat; all other 2026-08-12 confidence-gate conditions stand (gate ⑤ now points at the single home of the tier gate).
  • Cross-repo dedupe/shadow stays central; single-lane decision cards queue in the objectstack inbox by default.

Commit 2 — the two 2026-08-26 rulings (member card):

  • md-content review fork (ACCEPT path fork): a skills-lane PR whose diff contains any .md file keeps the governed ending (draft, review-requested, human merge); a code-only skills-lane PR is self-reviewed by the seat at the contract-review tier (checklist unchanged) and landed directly (ready then queue). Scope bounded to the skills lane's own PRs; the Guardrails governed-merge bullet points at the fork.
  • Standing 5-card decision-batch flow: principle + both verbatim rulings in SKILL.md 升级与决策 (replacing the 回批入口 paragraph it supersedes); batch order, reply format and roll-in detail in references/decision-analysis.md.

Line ratchet

filebeforeafter
.claude/skills/pm-dispatch/SKILL.md1005/1005 (at ceiling)1004/1005 (headroom 1)
references/decision-analysis.md46/46 (at ceiling)46/46 (at ceiling)

Readings from pnpm check:pm-skill-ratchet at the final commit 8e950280 (union re-run after the last commit): "SKILL.md is 1004 lines (ceiling 1005; headroom 1)" · "decision-analysis.md is 46 lines (ceiling 46; headroom 0)". Ceilings untouched (shrink-only; no raise needed). All new/edited lines respect the 120-byte line rule (gate-verified).

Cut ledger — every added line paid by a same-file cut

SKILL.md (compression candidates named on the ruling: the five-repo enumeration, the 代扫 exception text; plus the ACCEPT-fork paragraph named on the member card):

cutwhere the content survives
Five-repo enumeration (三仓依赖链 + 第四仓 objectos + 第五仓 hotcrm narrative)Replaced by the repo-class definition (the ruling's own compression candidate). Dependency chain kept verbatim; objectos operational facts (no changeset flow, no packages/, merge queue live) kept compressed in the same paragraph; hotcrm pointer to references/lanes/hotcrm.md kept
2026-08-18 objectos seat-opening quoteSuperseded by the 2026-08-26 registration checklist (seat creation is now a standing checklist, not a per-repo ruling); quote survives in git history and on the ruling thread
"执行已自 domain:devx 迁出" migration noteDead history — no operational reader
Rule 4 "五仓唯一(仓单即首段五仓)""唯一" + class scoping; the class definition in the intro is the single source
Rule 4 sister-seat clause "姊妹仓收窄为执行座位(⛔ 不产 domain:*/type/定级)"Replaced per ruling point 1: 单车道仓席 = 执行座位 + 机械三务自理 (type/grading devolve; domain:* does not)
代扫 rationale "两个分类生产者并存,单一生产者的保障当场归零"Condensed to "双生产者并存即失守" (named candidate); channel scoped to 多车道仓
"代裁权限唯一归本座位,任何执行座位⛔ 不代裁"Replaced by the tier-hard-gated channel (2026-08-26 verbatim quote; runners = triage Routine or skills seat)
Sweep ② per-repo exemption list ("今日为主仓与 objectui…豁免仅余 cloud、objectos")Recast in class terms; the repo names survive via the class definition in 多仓协调
Gate ⑤ fable-tier + downgrade-fuse detailDeduplicated into the section intro's hard gate (single home); ⑤ keeps a pointer
回批入口 paragraphFolded into 常设决裁流程 (the standing flow it became); the 「处理决策卡」 trigger and the 2026-08-19 no-summary-issue tombstone survive inside the block; the 标准四棱卡面块 cross-reference updated
ACCEPT-fork paragraph degenerate wraps ("撤回只/有" single-character lines)Tightened while inserting the fork (named candidate on the member card); content byte-identical
"读五仓代码定落点" / "每日一 fire 跑四仓全量对账""全仓" — repo count is no longer an enumerable constant (the 2026-08-20 quote containing 四仓 is verbatim and untouched)

decision-analysis.md:

cutwhere the content survives
出处 anecdote (implementation-view analysis drew a follow-up; business-view ruled on the spot)The 2026-08-20 quote stays; the lesson is now carried live by the 2026-08-26 「决裁流程今天这样很好…」 confirmation quoted in the main file; story in git history
骨架 "标签就是维护者的收件箱,答复后按四件录裁"Inbox semantics live in the main file's state model; recording kept as the pointer "录裁与状态转换归主文件「落卡/升级流程」③"
Item 5 tail "结尾给低摩擦裁决格式(「回一个字母即可;或『C,但 X』= 自动落到 B」)"Superseded by the batch reply format (「1A 2B …」 / 「X, 但…」) in the new 常设决裁批流程 section; item 5 keeps a pointer

Verification (union at final commit 8e95028)

  • pnpm check:pm-skill-ratchet — green (verdict lines quoted above)
  • pnpm check:pm-skill-id-lint — "22 file(s) clean"
  • pnpm check:skill-frame-sync — "4 copies of the decision frame are structurally isomorphic across 3 files" (four-axis frame untouched)
  • pnpm check:pm-governed-prose — "2 instruction surface(s) name all 5 registered governed surfaces … and claim no others" (fork prose deliberately avoids glob-shaped spans for non-governed paths)
  • pnpm check:doc-authoring, pnpm check:agent-test-spelling, pnpm check:pm-governed-merges, pnpm check:nul-bytes — all green
  • pnpm --filter @objectstack/lint run check:doc-formula-expressions — green (after building @objectstack/formula and @objectstack/lint)
  • node scripts/pm/check-governed-queue-guard.mjs — NOT MEASURED locally: it reads the workflow event payload and correctly refuses to run without one; CI owns it
  • No changeset: the diff is .claude/ instruction text only and publishes nothing — skip-changeset label applied

Landing

.claude/** is a governed surface and this diff is md-content, so per the md-content fork itself: draft, human review, maintainer merges by hand. Do not flip ready, do not queue, do not arm auto-merge.

Generated by Claude Code


Generated by Claude Code

Multi-lane repos (objectstack, objectui) keep central triage as the sole
producer of domain:*/type/grading; single-lane repos (cloud, objectos,
hotcrm, www.objectos.ai, future repos by default) self-triage the
conflict-free mechanical duties only. Registration becomes a checklist
with a standing-seat admission criterion. The auto-adjudication channel
is retained, hard-gated on the measured serving tier; adjudication and
cross-repo skills work sit with the skills seat in the maintainer-driven
5-card batch flow. Cross-repo dedupe stays central; single-lane decision
cards queue in the objectstack inbox.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JANH3y7qe3MD8aLaLXci8N
…ch flow
A skills-lane PR whose diff contains any .md file keeps the governed
draft/human-merge ending; a code-only skills-lane PR is self-reviewed by
the seat at the contract-review tier and landed directly. The 2026-08-26
decision-batch flow is written in as the standing adjudication process:
batches of five, business-angle explanation, concrete options, four-axis
analysis, one-line batch reply, atomic post-ruling execution.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JANH3y7qe3MD8aLaLXci8N
@claudeclaudeBot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 26, 2026
@github-actionsgithub-actionsBot added the documentation Improvements or additions to documentation label Aug 26, 2026
@os-steve
os-steve marked this pull request as ready for review August 26, 2026 05:00
@os-steve
os-steve added this pull request to the merge queueAug 26, 2026
Merged via the queue into main with commit ade757fAug 26, 2026
29 checks passed
@os-steve
os-steve deleted the claude/issue-12227-skill-governance branch August 26, 2026 05:33
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/mskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants

@os-steve@claude