Repository navigation
pm-dispatch SKILL: M-grade cards default to the subagent backend with per-dispatch model tiering — cloud reserved for L/XL, long-lived, browser-verify (maintainer ruling 2026-08-12) #7944
Description
Activity
Batch conversion + claim — this card is the carrier of a consolidated dispatch (maintainer: 「刚才几个卡片可以合并开发」, 2026-08-12).
Composition — ONE os-dev subagent (
mode:subagent,model: claude-fable-5— this batch is itself the first run under the backend revision this card lands), two PRs:- PR₁ (
claude/issue-7944-pm-skill-backend-and-reads): SKILL.md — this card's backend/tiering revision + pm-dispatch SKILL: seat-post reads cover only comments newer than the last body edit (token-waste fix, maintainer-approved) #7942's seat-post comment-read boundary.Fixes #7944,Fixes #7942. Ratchet headroom 0 — offsets in-PR. - PR₂ (
claude/issue-7943-agents-principles): AGENTS.md principles-only rewrite per AGENTS.md principles-only rewrite — the largest remaining per-dev-session text cost (maintainer-approved) #7943 (its cautions binding: human-readable, 「AGENTS.md wins」 preserved, CLAUDE.md mirror consistent, ID-lint extended with an order-independence waiver if needed).Fixes #7943.
Claim: PM loop round 4 (skills seat)
Session:session_012Gg6rMAti8ZaueWb6BRsDn
Branch: the two branches above, both offorigin/main(≥8d80e12, post-#7938)
Worktree: dedicated worktrees inside the PM session's container (subagent backend)
Domain:domain:skills
File surface:.claude/skills/pm-dispatch/SKILL.md+references/seat-post-protocol.md(PR₁);AGENTS.md+CLAUDE.mdmirror +scripts/pm/check-skill-id-lint.mjsscan-set (PR₂). Stop on breach; explain in the report.
Container & model: docs-only M batch,mode:subagent(per the ruling this batch implements),model: claude-fable-5(mandatory clause)
Serial constraints cleared: SKILL.md hot-file queue empty (principles-only batch fully landed — PR #7936ab19075, PR #79388d80e12); zero open PRs touch SKILL.md, AGENTS.md, or os-dev.md (checked at claim time). Members #7942 / #7943 are not independent candidates (membership noted on each).
Both PRs ADR-class: draft, human merge.
Generated by Claude Code
- PR₁ (
Dispatched (PM loop round 4, skills seat): os-dev subagent,
model: claude-fable-5, launched 2026-08-12 ~07:5xZ inside the PM session's container — the first dispatch under the backend revision this very batch lands (subagent for docs-M work; per-dispatch model param confirmed working). Two draft PRs expected per the composition above. Collection: os-dev-report comment here + the subagent's direct return channel; ADR-class terminal (human merge) on both.
Generated by Claude Code
{ "issue": 7944, "status": "done", "branch": "claude/issue-7944-pm-skill-backend-and-reads", "pr": "https://github.com/objectstack-ai/objectstack/pull/7946", "batch_members": { "7944": "PR₁ https://github.com/objectstack-ai/objectstack/pull/7946 (Fixes #7944, Fixes #7942)", "7942": "rides PR₁", "7943": "PR₂ https://github.com/objectstack-ai/objectstack/pull/7948 (branch claude/issue-7943-agents-principles)" }, "premise_still_valid": true, "summary": "Both draft PRs open, both ADR-class awaiting human merge. PR₁ revises SKILL.md's dispatch backend per the 2026-08-12 ruling (S-mechanical + M ⇒ subagent with per-dispatch tiering; cloud reserved for L/XL / outlive-session / browser-verify / build-heavy-M; archive duty narrows to cloud cards; rationale recorded in references/dispatch-runbook.md) and adds the seat-post read boundary (body + comments newer than the body's last edit) with detail in references/seat-post-protocol.md — SKILL.md held at exactly 686 lines (ceiling 686, headroom 0), every addition offset in touched sections, offsets itemized in the PR body. PR₂ rewrites AGENTS.md principles-only: 1050 → 818 lines, 84,665 → 66,935 chars, 123 → 0 issue-ID citations; all 15 Prime Directives whole, rulings kept date + verbatim, RELEASE-OWNED anchor row byte-preserved (check:docs-audit-scope green), CLAUDE.md mirror updated in the same PR, id-lint scan set extended to AGENTS.md with no waiver (same-PR travel; dead os-dev waiver entry deleted, self-test now 10 cases); dropped-with-rationale list in the PR body for line-by-line review.", "tests": "PR₁ worktree: check:pm-skill-ratchet green (686/686, headroom 0; self-test 5/5); check:pm-skill-id-lint green (8 files; self-test 9/9); check:skill-frame-sync green (4 copies isomorphic; self-test 12/12); check:doc-authoring green (375 files); check:nul-bytes green (7279 files; self-test 75 assertions). PR₂ worktree: check:pm-skill-id-lint green ('9 file(s) clean' incl. AGENTS.md at 0; updated self-test 10/10); check:pm-skill-ratchet green (SKILL.md untouched); check:skill-frame-sync green; check:doc-authoring green; check:nul-bytes green; check:docs-audit-scope green (affected-docs 56 + audit-scope 22 self-test cases; 'release-owned pages are in scope and read-only: 9 page(s)'). CI on both PRs: in_progress at report time — honest reading; PM owns convergence.", "open_questions": [], "out_of_scope_findings": [] }skip-changeset: applied and read back on both PRs (7946: documentation, size/s, skip-changeset; 7948: size/xl, skip-changeset). Worktrees removed; no servers or monitors started.
Generated by Claude Code
Review: ACCEPT — PR #7946 (PR₁) + PR #7948 (PR₂), both at the ADR-class terminal: awaiting a human merge
First run of the subagent backend for an M docs batch, for the record: zero containers provisioned, zero archive debt, report via the direct return channel + on-card dual drop — the plumbing the ruling was bought for.
Verified against GitHub and the branches, not the report:
- PR docs(pm-dispatch): subagent default for S+M with per-dispatch model tiering; seat-post read boundary #7946 (SKILL.md, 3 files): held at exactly 686 lines (ratchet ceiling untouched, offsets itemized in the PR body and spot-checked);
#[0-9]{3,}= 0. Backend revision verified in the diff (「资源与后端(维护者 2026-08-12 裁定…)」 — S+M ⇒ subagent, cloud's reserved list, archive duty narrowed, rationale inreferences/dispatch-runbook.md); seat-post 读侧闭环 rule verified in both SKILL.md andreferences/seat-post-protocol.md(my first greps missed the wording — settled by reading the diff, not by trusting the claim). Mandatoryclaude-fable-5clause intact. CI: fully green (Check Changeset re-ran to success; ESLint + TypeScript conclusions = success). - PR docs(agents): principles-only AGENTS.md rewrite — lessons distilled in place, no issue-ID citations #7948 (AGENTS.md + CLAUDE.md + id-lint, 3 files): 1050 → 818 lines, 123 → 0 issue-IDs (measured on the branch); all 15 Prime Directives present (counted in the section, content spot-checked); 「AGENTS.md wins」 present ×1; CLAUDE.md mirror at 0 IDs. Dropped-with-rationale list reviewed line by line — every entry is narrative/measurement whose normative content survives; nothing binding lost. Two flagged judgment calls both accepted: the header-side restatement of the wins-rule (additive, faithful, not an inversion) and the deletion of the dead os-dev waiver entry (blessed by the script's own header; the waiver mechanism stays self-tested with a synthetic entry — sound).
check:docs-audit-scopegreen (RELEASE-OWNED anchor byte-preserved). CI: Check Changeset success; ESLint + TypeScript in_progress at review time — an honest reading; a red triggers a patch round before merge, and this seat is subscribed.
Terminal state: both PRs stay visibly hanging — the maintainer merges by hand. On landing, members close as: #7944 + #7942 via PR₁; #7943 via PR₂. The closing batch (#7945 + #7947, one subagent, one PR) dispatches when PR #7946 reaches MERGED.
Generated by Claude Code
- PR docs(pm-dispatch): subagent default for S+M with per-dispatch model tiering; seat-post read boundary #7946 (SKILL.md, 3 files): held at exactly 686 lines (ratchet ceiling untouched, offsets itemized in the PR body and spot-checked);
Filed by the skills seat (session
session_012Gg6rMAti8ZaueWb6BRsDn), 2026-08-12, executing a maintainer ruling from the seat 专题 chat.Provenance (maintainer, verbatim, untranslated)
The factual precondition was confirmed before the ruling: the
Agenttool takes a per-dispatchmodelparameter (sonnet/opus/haiku/fable) that overrides the agent definition's frontmatter pin; resolution order is envCLAUDE_CODE_SUBAGENT_MODEL→ per-call param → frontmatter → inherit.The revision (supersedes the 2026-08-10 「M 及以上默认云卡」 default)
mode:subagent(the PM's own container), with per-dispatch model tiering: S-mechanicalsonnet, Mopus, judgment-heavyfable; the mandatoryclaude-fable-5clause for cards editing.claude/skills/pm-dispatch/**is unchanged and unaffected by size.mode:cloud) reserved for: L/XL cards; work that must outlive the PM session; browser/dogfood verification; and build-heavy M cards by explicit judgment (the shared-container contention that motivated the old default — docs/instruction M cards never hit it).Landing notes
.claude/skills/pm-dispatch/SKILL.md;model: claude-fable-5.