Skip to content

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

Closed

Description

@os-zhuang

Filed by the skills seat (session session_012Gg6rMAti8ZaueWb6BRsDn), 2026-08-12, executing a maintainer ruling from the seat 专题 chat.

Provenance (maintainer, verbatim, untranslated)

还有我发现 agent 派出的云卡片总是忘了归档,派的太多也确实麻烦,我想讨论中级的卡片是不是应该改成子 agent,但是我需要先确认一个事情,子agent 可以指定模型吗?比如 项目经理用 Fable / OPus,子agent可以让项目经理根据难度指定 sonnet opus 或 fable 吗

同意你的建议,刚才几个卡片可以合并开发。

The factual precondition was confirmed before the ruling: the Agent tool takes a per-dispatch model parameter (sonnet / opus / haiku / fable) that overrides the agent definition's frontmatter pin; resolution order is env CLAUDE_CODE_SUBAGENT_MODEL → per-call param → frontmatter → inherit.

The revision (supersedes the 2026-08-10 「M 及以上默认云卡」 default)

  • S mechanical + M ⇒ mode:subagent (the PM's own container), with per-dispatch model tiering: S-mechanical sonnet, M opus, judgment-heavy fable; the mandatory claude-fable-5 clause for cards editing .claude/skills/pm-dispatch/** is unchanged and unaffected by size.
  • Cloud (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).
  • Rationale on record: cloud's three fixed taxes (archival debt — measured up to 11 forgotten containers on one seat; the create_session/poke/subscribe/collect plumbing; per-card container+clone startup) vs the subagent's one real cost (dies with the PM session — mitigated by the measured branch-early + report-at-draft-PR contract, SendMessage transcript revival, and the worktree handoff protocol).
  • Consequence: the archive duty applies only to cloud cards, shrinking the forgotten-container surface to L-grade dispatches.

Landing notes

  • Edits the backend/sizing section of .claude/skills/pm-dispatch/SKILL.md; ⚠️ ratchet headroom 0 — additions offset in-PR.
  • Model tiering mandatory clause: dispatch with model: claude-fable-5.
  • ADR-class: draft PR, human merge.

Activity

  1. added
    pm:queueReady for the PM dispatch loop
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Aug 12, 2026
  2. self-assigned this
    on Aug 12, 2026
  3. os-zhuang commented on Aug 12, 2026

    @os-zhuang
    ContributorAuthor

    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:

    Claim: PM loop round 4 (skills seat)
    Session: session_012Gg6rMAti8ZaueWb6BRsDn
    Branch: the two branches above, both off origin/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.md mirror + scripts/pm/check-skill-id-lint.mjs scan-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 #7936 ab19075, PR #7938 8d80e12); 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

  4. os-zhuang commented on Aug 12, 2026

    @os-zhuang
    ContributorAuthor

    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

  5. os-zhuang commented on Aug 12, 2026

    @os-zhuang
    ContributorAuthor
    {
      "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

  6. os-zhuang commented on Aug 12, 2026

    @os-zhuang
    ContributorAuthor

    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 in references/dispatch-runbook.md); seat-post 读侧闭环 rule verified in both SKILL.md and references/seat-post-protocol.md (my first greps missed the wording — settled by reading the diff, not by trusting the claim). Mandatory claude-fable-5 clause 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-scope green (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

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

Metadata

Metadata

Assignees

Labels

domain:skillsDomain lane — seat card indexed by label:pm:seat

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions