Model dispatch matrix

August 19, 2026 · View on GitHub

Single prose fact source for coding agents (ZCode / Claude Code / Cursor / Codex / DSH). Machine canon remains routing-policy.yaml; this page does not invent a second policy YAML.

Verified model ids (2026-08-19, this host):

SurfaceDefault Grok 4.6 idFast / second shuttle4.5 (explicit downgrade only)
Cursor ACP / chat (~/.cursor/cli-config.json)grok-4.6 (effort=high, fast=true)same id + fast=truegrok-4.5
cursor-agent models (agent-run)cursor-grok-4.6-highcursor-grok-4.6-high-fastcursor-grok-4.5-high, cursor-grok-4.5-high-fast
Grok CLI (grok models)grok-4.6 (CLI default)n/anot listed as a native id; do not assume grok-4.5 still launches

Do not invent slugs. If a catalog changes, re-read cursor-agent models and grok models before editing the canon.

Task type → seats

Columns: exec (who writes) → reviewbilling layerdegradeforbid.

Task typeExec seat / model / effortReviewBilling layerDegradeForbid
mechanical / scan / tiny editCursor Composer 2.5 Fast (composer-2.5-fast, effort low, mode fast)Dual-seal when L3/L4 or gated docs; else focused verifyCursor subscriptionSecond shuttle: cursor-grok-4.6-high-fast / ACP grok-4.6 fast. Explicit 4.5 only if 4.6 catalog-missingFlagship (Opus, Sol, Fable, Terra) for the write
ordinary_bug_fixCodex Terra (gpt-5.6-terra, medium/fast) or Claude SonnetSame-family independent Codex pass allowed (D3); Sol must not both write and reviewCodex or Claude loginSonnet ↔ TerraSol as writer and reviewer of the same diff
standard_featureDirection: Claude Opus (medium/careful). Land: Cursor Grok 4.6 or DSH Kimi K3Sol (stage default high; overlay still ratchets to xhigh)Claude login for direction; Cursor or DSH/Command Code for landLand → Grok 4.6 if DSH peak-hours; direction does not drop below Opus without user waiverComposer as sole author of behavior
judgmentClaude Opus high/carefulCross-family blind; disputes → Fable MaxClaude loginOpus stays; do not downshift effort below highComposer; DSH self-GO; Sol both directing and finally reviewing
restricted_zoneClaude Opus high/careful — no downshiftSol xhigh. If Codex produced the diff → Fable reviews (cross-family). Overlay still appliesClaude + Codex/Fable loginsFallback reviewer is provisional only (degradation.cross_family_mandatory_items)DSH self-reported GO/NO-GO; Composer as final review; PTC/code preset; effort downshift
arbitrationclaude-fable-5 max/carefulThis seat is the tie-break; not a writerClaude loginNone without user waiverUsing the producer family as the arbitrator
Parallel subtasksComposer Fast ∥ Grok 4.6 FastIndependent review after landCursor familySerial if file-set collides>2 concurrent Cursor-family jobs; new bulk DSH in Beijing 09:00–12:00 and 14:00–18:00
Pure retrievalLuna (gpt-5.6-luna) / DeepSeek Flash / Gemini FlashNone (read-only)Codex / Command Code / CursorFlash → Luna if the question needs more contextFlagship writers; spawning DSH sessions
Docs / proseGrok 4.6 or Sonnet or GLMSol only if the doc is a gated/L3+ deliverableCursor / Claude / ZCode-GLMGLM → Grok 4.6 → SonnetComposer changing meaning (format-only is OK)

House rules that still win over this table:

  • Landing seat ≠ final-review seat. Direction seat ≠ final-review seat.
  • Cursor is a broker: review independence follows the concrete model family (Grok = xAI, Composer = Cursor, Claude = Anthropic, GPT = OpenAI).
  • Claude/Codex cross-seat work goes through agent-run (local subscriptions), not Cursor-billed Claude/GPT.
  • DSH implementation seats must not self-report GO/NO-GO.

Stage-gate enforcement

final_review.stage_gate is consumed by routing_runtime.validate_stage_gate (wired through agent-run). Same-family producer + stage final-reviewer is blocked except D3 (secondary_final_review of ordinary_bug_fix with no overlay). Overlay / cross_family_mandatory still force the reciprocal family (Codex producer → Fable). Spawn inherit without --spawn-explicit-override is rejected for final-review routes. Successful review runs close their checkpoint.

runtime_routes.codex_final_review effort stays xhigh — the stage-gate high floor is not a silent downgrade of that binding.

runtime_routes.final_review is the Grok CLI second-opinion/review binding (grok-4.6 / high). It is not the Sol stage gate. Do not cite one as the other.

task_shape → DSH preset / lane

Preset names are the four built-ins in dsh-skill-pack / dsh-mode-routing (standard, code, minimal, cordis). Do not invent extra preset ids. Preset is chosen at session create; a live session with output is agent-preset-locked — switch = new session.

task_shape / workDSH preset (id)Lane / run modeNotes
Default coding, research, review-brain, orchestrationstandarddsh web session or dsh --profile headless for one-shot90% of DSH work
Mechanical batch across >5 files, rule-first rewritecode (PTC)same; write a checkable N-step listForbidden in restricted_zone
Tiny template jobs, script+file, prompt A/B, many short sessionsminimalheadless preferredNo compaction — not for overnight
Editing DSH itself (custom preset / plugin / runtime)cordisnew session onlyTrust level = shell; not business code
ordinary_bug_fixstandardheadless if boundedNot PTC while still bisecting
standard_feature land (Kimi K3 / GLM via pi-ai)standardweb session + PR then stopPeak-hours: do not create sessions
judgment / arbitrationdo not use DSH as the seatClaude Opus / Fable
restricted_zonestandard onlystep-by-step, human-visibleNever code / minimal / cordis
Pure retrievalstandard or skip DSHread-only toolsPrefer Luna / Flash on Cursor or Command Code
Docs format-onlyminimal or skip DSHComposer Fast on Cursor is cheaper

Peak window (Beijing, from 2026-08-17): 09:00–12:00 and 14:00–18:00 — do not session.create / session.prompt / goal.create for new bulk DSH. Idle including 12:00–14:00 is OK. Already-running peak sessions: do not queue more.

How agents should use this

  1. Classify the task (mechanical / ordinary_bug_fix / standard_feature / judgment / restricted_zone / arbitration / retrieval / docs).
  2. Pick exec + review from the table. If a risk overlay trigger fires, ratchet review to xhigh and cross-family.
  3. If landing on DSH, pick preset from the second table, then follow dsh-dispatch / dsh-local-dispatch HTTP rules.
  4. Quota / endpoint failover is LiteLLM (see litellm-proxy.md); grading / seats stay in this repo. Do not silently retarget ~/.dsh/settings.yaml.