Skip to content

pm-dispatch token economics: sonnet tier for S-class mechanical cards, scoped local gates (CI runs the full farm), slimmed dispatch prompts with standard clauses sunk into the os-dev definition (maintainer-approved 2026-08-09) #6863

Description

@os-zhuang

Maintainer authorization (2026-08-09, in-session, verbatim): 「全部同意,先开任务」— approving the domain:spec seat's token-economics assessment (session session_011sGk4SKHqGRgmmqUok1P8M). Measured basis: dev subagents ≈80% of the loop's spend (~240–314k tokens per dispatch, 12 dispatches in one shift); the three items below target that 80% plus the duplicated prompt mass.

Scope — three coupled changes to the dispatch machinery (.claude/skills/pm-dispatch/SKILL.md + .claude/agents/os-dev.md)

1. Model tiering: S-class mechanical cards go to sonnet (policy line change)

The SKILL's model-split paragraph currently reads "pass model: "opus" on every dev dispatch" (reaffirmed in the 08-08 handover as 「所有派发至少 opus」). Amend: S-class mechanical cards (single-file prose/comment fixes, one-spread additions, dead-vocabulary row removals, alias/tombstone bookkeeping — cards whose correctness is enforced mechanically by the gate farm) dispatch on sonnet; M/L cards, ruling-implementation cards, multi-face semantic cards, and anything with design judgment stay on opus. The PM's container-assessment line in the claim comment already grades size — extend it to carry the model tier so the choice is auditable. PM review discipline (step 7) unchanged.

2. Local gate scoping: targeted gates locally, the full farm is CI's job (os-dev definition + SKILL clauses)

Today every dev runs every check:* enumerated from lint.yml (55+ gates) locally, then ALSO waits for CI to run the identical farm before reporting — a double payment created when the "wait for CI convergence" clause was added on top of the older "enumerate all gates locally" rule (#5738 era). Amend both files: local verification = build closure + affected-package suites + the gate-family checks relevant to the card's surface (the dispatch prompt names them); the full farm runs once, in CI, which the dev already waits on. Accepted cost, stated in the rule: an occasional extra push-fix lap when a non-obvious gate reddens in CI — cheaper than paying the full local farm on every dispatch. Keep intact: build-first, prefix-direction consumer sweep, reverse verification, TEST_DEBT re-measure when adding test files, and CI convergence before reporting (that clause is what makes this safe).

3. Slimmed dispatch prompts: point at GitHub, sink the boilerplate (SKILL template + os-dev definition)

  • The SKILL's dispatch template currently mandates "paste the full issue body, never a summary". Amend the default: the prompt instructs the dev to read the full body + all comments on GitHub (which premise-first already forces it to do), and pastes only (a) ruling quotes verbatim (Chinese untranslated), (b) the 裁决 vs PM-机制假设 partition, (c) card-specific clauses and same-day-churn lines. Mitigation for the notes-12 read-truncation risk: the prompt requires the dev to verify body completeness (double-read on suspicion). Precedent: the [移交自 objectui] ComponentPropsMap 未声明 objectui 渲染器实读的 5 个顶层 prop(page:header ×3 / page:tabs.tabStyle / page:accordion.variant)—— #5775 的清点未完 #6776 dispatch ran this way successfully.
  • The standard non-negotiables block (~1.5k tokens repeated verbatim per dispatch: worktree/branch discipline, build-first, filter direction, ADR-0112 rejection assertions, authorable-surface anchor rules, gen:schema MERGE-state ban, foreground posture, English policy, report contract) moves INTO .claude/agents/os-dev.md once; dispatch prompts carry only deltas. Producer-side fix per the PD#12 instinct the SKILL itself cites.

Already in effect (seat practice, recorded here for handover durability — no file change needed)

Batched seat-post refreshes (per round-end, not per event) · terse ACCEPT comments (verdict + link + load-bearing points; the PR body is the detail authority) · race-check re-reads fetch the thread tail, not the full thread · sweep-first batching of same-class S cards extended.

Implementation notes

Filed by the domain:spec seat; routing label left to the triage seat. Dispatch under the current drain-then-single-concurrency directive.

Activity

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

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions