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

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. self-assigned this
    on Aug 12, 2026
  2. 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

  3. 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

  4. 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

  5. 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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions