Skip to content

docs(pm-dispatch): narrow tiering clause ① to protocol semantics; seat-tier policy (maintainer 2026-08-20) - #10311

Merged
qq9340100 merged 1 commit into
mainfrom
claude/issue-10279-tiering-narrow-clause-1
Aug 20, 2026
Merged

docs(pm-dispatch): narrow tiering clause ① to protocol semantics; seat-tier policy (maintainer 2026-08-20)#10311
qq9340100 merged 1 commit into
mainfrom
claude/issue-10279-tiering-narrow-clause-1

Conversation

@qq9340100

Copy link
Copy Markdown
Collaborator

Fixes#10279

Implements the maintainer's 2026-08-20 ruling (「接受你的建议」, accepting the seat's B+C recommendation — fable 当审计师用,不当施工队用) on the pm-dispatch model-tiering section, governed surface, human merge only.

What changed

.claude/skills/pm-dispatch/SKILL.md — 模型分档 section (681/682 lines, net −1, no ceiling change):

  1. Clause ① narrowed to protocol semantics: model: "claude-fable-5" stays mandatory only for the SKILL.md main file, the decision-frame copies wherever check:skill-frame-sync enforces them, and .claude/agents/os-dev.md. References-only surfaces, or one-line-class mechanical text edits on a pm-dispatch governed surface, drop to opus execution (sonnet floor for pure one-liners at PM discretion).
  2. Compensating control named explicitly: the EXISTING skill-face review-tier requirement (ACCEPT 路径分叉 ① — reviewing seat at the contract-review tier). Opus-executed governed edits reach the maintainer only through a fable-tier seat review; no new label, no new chain.
  3. Seat-tier policy line: execution PM seats outside the skills lane default to opus sessions; fable stays for the triage Routine, the skills seat, and clause-② work. Routine model pins remain the maintainer's Routines-UI action — the skill records policy, it creates no triggers.
  4. Quota exemption unchanged (2026-08-13 quote preserved verbatim) plus the proactive low-headroom downgrade, both recorded with reason in the claim's Container & model line. The 2026-08-10 and 2026-08-12 provenance quotes are preserved verbatim — narrowed, not erased.

scripts/pm/dispatch-gates.mjs — the clause-① mandate derivation had to follow (its printout must never contradict the skill): MANDATORY_TIER_GLOBS replaces the single .claude/skills/pm-dispatch/** entry with the three protocol-semantic files; the mandatory rendering now names every sanctioned exit (mechanical one-liner downgrade with its compensating review at CONTRACT_REVIEW_TIER, quota exemption, proactive downgrade); the frame-copy half of the mandate is pinned mechanically against check:skill-frame-sync's exported COPIES table via a spawned import, so a frame copy added to that gate cannot silently fall out of the mandate. Self-test updated: baseline 388 → 398 cases, the old "references path is fable-mandatory" pin deliberately inverted.

scripts/pm/check-dispatch-gates.mjs — one declared constant (FRAME_MODULE), following that file's own SURFACE_MODULE convention: the tool's self-test now reaches check-skill-frame-sync.mjs through a spawned import, which is not a discoverable watch hint, so without the constant a COPIES edit would move this gate's verdict while deriving nothing. This file was not in the dispatch's named surface; it is the bounded companion of the mandated dispatch-gates self-test change, pinned live by a new self-test case.

Verification (all at head 2174525)

  • check:pm-dispatch-gates — "✓ dispatch-gates self-test: 398 cases pass."
  • Reverse verification, four legs, each mutation grep-confirmed on disk before running and restored from the committed state after: (A) dropping the published-skill glob → 2 red, the COPIES pin names the unmandated file; (B) restoring the pre-narrowing .claude/skills/pm-dispatch/** glob → the inverted references pin reds; (C) regressing the exit rendering to "the only exit" → the exits pin reds; (D) deleting FRAME_MODULE → the live coupling pin reds.
  • Gate union re-run at the final commit, all green: check:pm-skill-ratchet ("681 lines (ceiling 682)"), check:pm-skill-id-lint, check:pm-governed-prose, check:pm-governed-merges, check:skill-frame-sync ("4 copies … structurally isomorphic"), check:doc-authoring, check:cross-package-test-inputs, check:nul-bytes, pnpm --filter @objectstack/lint run check:doc-formula-expressions.

Notes for the reviewer

Tests/docs/.claude only — skip-changeset.


Generated by Claude Code

…t-tier policy (maintainer 2026-08-20)
Clause ① of 模型分档 narrows from the whole pm-dispatch tree to the
protocol-semantic surfaces: the SKILL.md main file, the decision-frame
copies wherever check:skill-frame-sync enforces them, and
.claude/agents/os-dev.md. References-only or one-line-class mechanical
governed edits drop to opus execution (sonnet floor for pure one-liners
at PM discretion), compensated by the EXISTING skill-face review-tier
requirement (reviewing seat at CONTRACT_REVIEW_TIER) — no new label, no
new chain. Adds the seat-tier policy line (non-skills execution PM seats
default opus) and the proactive low-headroom downgrade beside the
unchanged quota exemption. dispatch-gates.mjs mandate derivation,
printout and self-test updated in the same PR so the tool never
contradicts the skill; the frame-copy half of the mandate is pinned
against check:skill-frame-sync's COPIES table.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019T1sSZbQTnLhrK9HhNdNiB
@github-actionsgithub-actionsBot added size/m documentation Improvements or additions to documentation labels Aug 20, 2026
@qq9340100qq9340100 added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 20, 2026 — with Claude
@qq9340100
qq9340100 marked this pull request as ready for review August 20, 2026 15:48
@qq9340100
qq9340100 enabled auto-merge August 20, 2026 15:48
@qq9340100
qq9340100 added this pull request to the merge queueAug 20, 2026
Merged via the queue into main with commit 279188aAug 20, 2026
25 checks passed
@qq9340100
qq9340100 deleted the claude/issue-10279-tiering-narrow-clause-1 branch August 20, 2026 16:32
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

@qq9340100@claude