Skip to content

pm-dispatch: tier the governed surface — the rules layer stays hand-merged, .claude/skills/pm-dispatch/references/** lands through the queue after in-seat contract-tier review (maintainer ruling 2026-09-13) #17950

Description

@claude

Filed by the domain:skills seat (session session_01DAcomhvR9kKizeYgg89Vo8, GitHub os-project-manager) at 2026-09-13T07:49Z, routed and graded into this lane under the maintainer's 2026-09-13 self-routing ruling (recorded on #17942). This is an EXECUTION card: the ruling is already made; nothing here is a decision request.

The ruling (live chat with this seat, 2026-09-13T07:2xZ–07:4xZ, verbatim, untranslated)

Maintainer: 「③ 受管面手合本身也是一条队列。能否简化我的审核步骤,比如我召唤项目总监时可以批量决定?」
Seat: proposed (a) a director-seat batch presentation of governed drafts and (b) tiering the governed surface, recommending (a) now plus (b).
Maintainer: 「收窄受管面,但是 skills 是不是还是应该我来确认?」
Seat, the boundary put to the maintainer, verbatim:

规则层(你确认):所有 SKILL.md 级的规则文本——发布的 skills/**(两个仓)、.claude/skills/*/SKILL.md(含 pm-dispatch 本体和内部 playbook)、core-rules.md、.claude/agents/**、hooks、settings、AGENTS.md、CLAUDE.md、ADR。
事实层(席内契约复审档复核后入队):只有 .claude/skills/pm-dispatch/references/**——平台读数表、runbook、契约复核细则、车道文件、状态机细则。
Maintainer: 「我点头」

⇒ Ruled: published skills/** (both repos), every .claude/skills/*/SKILL.md, core-rules.md, .claude/agents/**, .claude/hooks/**, .claude/settings*, AGENTS.md, CLAUDE.md and docs/adr/** keep the human hand merge exactly as today. Only .claude/skills/pm-dispatch/references/** changes: a PR whose governed paths are all under that directory lands through the merge queue after the skills seat's in-seat contract-tier review (served tier verified per references/contract-review.md), with the ratchets unchanged and the post-merge audit still listing it.

Governing text

  • AGENTS.md Prime Directive feat: Comprehensive CRM example demonstrating all ObjectStack protocol features #14: the governed surfaces are named there and 「The register is the GOVERNED_SURFACES table in scripts/pm/check-governed-merges.mjs; adding a surface is an edit there, never here, and pnpm check:pm-governed-prose reds per-PR when this paragraph names fewer surfaces than the register — or more.」
  • .claude/skills/pm-dispatch/SKILL.md 〈复核〉: 「governed 面统一定义:docs/adr/** + .claude/**(全量,含 agents/hooks/settings)+ skills/**」 and 「路径面一条命中 ⇒ ACCEPT 换终局四件套」.
  • references/contract-review.md: 「受管面人工合并 ⛔ 不替代复核,两道保障叠加」 and 落地前检③ 「受管面不适用,draft-only 终局不变」.
  • references/lanes/skills.md 常设承诺: 「受管面 PR 恒 draft 等人合;flip 或 arm 前跑 check-governed-merges --test 带路径」.
  • The queue guard: scripts/pm/check-governed-queue-guard.mjs (Governed Surface Queue Guard, the seventh required context) refuses an unpinned governed diff in the merge group; GOVERNED_APPROVERS lives there.

Work items (one PR; it touches AGENTS.md and SKILL.md, so it is itself hand-merged by the maintainer)

  1. scripts/pm/check-governed-merges.mjs: the register distinguishes LANDING from AUDIT — the .claude/** row keeps auditing everything under .claude/, but .claude/skills/pm-dispatch/references/** is marked as landing through the queue after seat review (a per-row landing field, or a carve-out row — the dev measures which shape the existing --test / --pr / --branch readers and the self-test support with the smallest diff). --test on a references path prints a verdict that names the tier; --test on .claude/skills/pm-dispatch/SKILL.md, .claude/skills/spec-property-retirement/SKILL.md, .claude/agents/os-dev.md, .claude/hooks/*.sh, AGENTS.md, docs/adr/*.md, skills/** stays GOVERNED. Self-test cases in both directions.
  2. scripts/pm/check-governed-queue-guard.mjs: the merge-group leg reads the same predicate (import, not a copy) so a references-only diff passes the queue without an authorized approval, and a mixed diff (references plus any rules-layer path) stays refused. Self-test both directions. objectui's scripts/check-governed-queue-guard.mjs: measure whether objectui has any .claude/skills/pm-dispatch/references/ path at all; if none, no change there — say so.
  3. AGENTS.md Prime Directive feat: Comprehensive CRM example demonstrating all ObjectStack protocol features #14 paragraph: name the carve-out in one sentence so check:pm-governed-prose stays green (measure it before and after; the gate's own rule is the authority on what the paragraph must name).
  4. .claude/skills/pm-dispatch/SKILL.md 〈复核〉 governed-face definition line and the ACCEPT fork; references/contract-review.md 落地前检③; references/lanes/skills.md 常设承诺 — each states the tier in one clause: references-only PRs = in-seat contract-tier review (served tier verified) → ready → auto-merge / queue; everything else unchanged. All at ceiling (812 / 60 / lane file) ⇒ paid by density, ⛔ re-wrap is not currency, ⛔ no ceiling raise.
  5. The round report's governed-merge audit section keeps listing references merges (with merged_by), so the maintainer still sees every one after the fact.

Acceptance

  • node scripts/pm/check-governed-merges.mjs --test .claude/skills/pm-dispatch/references/platform-readings.md ⇒ a verdict that says the path lands through the queue after seat review (NOT the GOVERNED / human-merge verdict); the same command on .claude/skills/pm-dispatch/SKILL.md ⇒ GOVERNED (unchanged). Both quoted in the PR body.
  • Queue-guard self-test: a references-only fixture passes with zero approvals; a references-plus-SKILL.md fixture is refused; the existing fixtures unchanged.
  • pnpm check:pm-governed-prose green on the branch; pnpm check:pm-skill-ratchet green (no ceiling moved); pnpm check:pm-governed-merges self-test green.
  • The audit (check-governed-merges.mjs --since-ref …) still lists a references-only merge — shown by running it over a window that contains one (e.g. PR docs(pm): rest-channel.md rows 1–2 name the ccr REST routes for the draft flip and auto-merge #17823 / docs(pm): platform-readings.md undraft rows name the ccr REST route beside MCP #17828 of 2026-09-12) with the row present.

Not in scope

  • ⛔ Published skills/** in either repo: stays the maintainer's, by the maintainer's own word.
  • ⛔ Any other surface, any change to GOVERNED_APPROVERS, any change to the ratchets.
  • The director-seat batch presentation of governed drafts is its own card (filed alongside this one).

Why p1

Maintainer-directed; today two of the five drafts waiting on the maintainer in this lane alone (PR #17803, PR #17515) are references-plus-script diffs, and references rows were the majority of this lane's hand-merged PRs on 2026-09-11 / 09-12 — the single human terminal is the longest queue in the lane.


Generated by Claude Code

Activity

  1. added theissue type on Sep 13, 2026
  2. claude commented on Sep 13, 2026

    @claude
    ContributorAuthor

    Claim: PM loop round 1 — member of the charter-revision family, chain head #17942 (fold gates and the two-layer split are on the chain-head claim)
    Session: session_01DAcomhvR9kKizeYgg89Vo8 (GitHub os-project-manager, skills seat), claimed at 2026-09-13T11:26Z
    Branch: claude/issue-17942-charter-revision (shared family branch, named after the chain head)
    Worktree: objectstack-issue-17942
    Domain: domain:skills
    This card's part: the governed-surface tiering text (rules layer hand-merged; references/** lands through the queue after in-seat contract-tier review) in SKILL.md〈复核〉+ the governed-face definition, core-rules.md mirror, AGENTS.md PD #14, lanes/skills.md if a line is owed — in THIS PR (Part of); its contract-review.md 落地前检③ line rides the follow-up references PR.
    Clause-②: no
    Thread-read: none — 0 comments on this card at this claim; ruled 「我点头」 (cross-ref #17942 comment 5652079343)


    Generated by Claude Code

  3. claude commented on Sep 13, 2026

    @claude
    ContributorAuthor

    Charter-revision dev (session session_01DAcomhvR9kKizeYgg89Vo8, branch claude/issue-17942-charter-revision, 2026-09-13T12:1xZ): this card's rules-layer half landed in #18018 (draft), commit 1ad7d17 — SKILL.md 〈复核〉 two-layer definition + per-layer landing (the old .claude/ hooks/settings self-landing carve-out superseded by the ruling), core-rules mirror, AGENTS.md Prime Directive 14 tiering sentence, lanes/skills.md 常设承诺 (規則層 wording). Deferred: contract-review.md 落地前检③ (references PR) and the register / queue-guard script items (a script PR) — the PR body carries Part of for this card, which stays open. The os-dev-report for the whole family is on the chain head (issue 17942); the draft PR is governed (.claude/** + AGENTS.md) — four-piece, no ready / enqueue / auto-merge by the dev.


    Generated by Claude Code

  4. claude commented on Sep 13, 2026

    @claude
    ContributorAuthor

    ACCEPT (family member) — skills seat, 2026-09-13T12:15Z. PR #18018 head 269933d9, this card's part landed as Part of — rules-layer half here, references-layer half rides the follow-up references PR. Record of the whole family on the chain head #17942: contract review 5653195700 (PASS), 速读 5653195856, ACCEPT 5653199243. Four-piece applied on the PR; lands under ruling C after an authorized approval. Card stays pm:dispatched + assignee until the landing record.


    Generated by Claude Code

  5. claude commented on Sep 13, 2026

    @claude
    ContributorAuthor

    Rules-layer half LANDED; card back in the queue for the references PR — skills seat (session session_01DAcomhvR9kKizeYgg89Vo8), 2026-09-13T13:41Z. PR #18018 merged at 2026-09-13T13:39Z as 9489e2c0 (two readings at 2026-09-13T13:40Z: queue ref gone; origin/main has (#18018) 1, control (#18015) 1). This card was Part of that PR; what remains is the contract-review.md 落地前检③ line; the queue-guard tier itself is #18020 (unblocked this pass) — the charter chain's ONE references PR, dispatched from this seat now that PR #17990 has landed (contract-review.md free). pm:dispatched → pm:queue and the assignee stripped in this pass and read back; the next claim names the references branch. Family record on the chain head #17942 — contract review 5653195700, 速读 5653195856, ACCEPT 5653199243.


    Generated by Claude Code

  6. claude commented on Sep 13, 2026

    @claude
    ContributorAuthor

    Claim: PM loop round 1 — member of the charter chain's references PR, chain head #17942 (fold gates, file surface and serial readings on the chain-head claim)
    Session: session_01DAcomhvR9kKizeYgg89Vo8 (GitHub os-project-manager, skills seat), claimed at 2026-09-13T13:42Z
    Branch: claude/issue-17942-charter-references (shared family branch, named after the chain head)
    Worktree: objectstack-issue-17942-refs
    Domain: domain:skills
    This card's part: the contract-review.md 落地前检③ line for the two-layer landing (its guard half is #18020) — completes the card ⇒ Fixes on the references PR.
    Clause-②: no
    Thread-read: the rules-layer landing note this seat posted at 13:41Z — the newest comment at this claim


    Generated by Claude Code

  7. claude commented on Sep 13, 2026

    @claude
    ContributorAuthor

    This card's references part is delivered in the charter references PR #18038 (draft, governed 事实层), commit c837c7c5: contract-review.md 落地前检③ carries the two-layer landing (规则层等维护者的字;受管路径全在 .claude/skills/pm-dispatch/references/ 者达档过本三条入队). The guard half is #18020; until it lands the merge-group leg still asks for an authorized approval, which the PR body's 未含 states. File 60 → 60. The os-dev-report for the whole chain is on the chain head #17942.


    Generated by Claude Code

  8. claude commented on Sep 13, 2026

    @claude
    ContributorAuthor

    ACCEPT (references PR, member) — skills seat, 2026-09-13T14:18Z. PR #18038 head f0e533fc carries this card's remaining half as Fixes — closes on landing. Record of the whole PR on the chain head #17942: contract review 5653826097 (PASS), 速读 5653826263, ACCEPT 5653826642. Four-piece applied on the PR; lands under ruling C after an authorized approval or once #18020's guard tier lands. Card stays pm:dispatched + assignee until the landing record.


    Generated by Claude Code

  9. claude commented on Sep 13, 2026

    @claude
    ContributorAuthor

    Landed — skills seat (session session_01DAcomhvR9kKizeYgg89Vo8), 2026-09-13T15:02Z. PR #18038 → c185d087 on origin/main; the two readings and the ruling-C trail are on the chain head #17942. This card's Fixes closed it; pm:dispatched and the assignee stripped in this pass and read back.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions