feat(blitz): spawn-time model assessment over label table
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+24
-16
@@ -11,24 +11,32 @@ babysitting and cleanup.
|
|||||||
|
|
||||||
## Model routing
|
## Model routing
|
||||||
|
|
||||||
Default table, by the repo's `difficulty/` label (issues without one: judge
|
**Assess each issue at spawn time.** You have just read its body to write the
|
||||||
the tier yourself from the issue's shape):
|
prompt — use that read to pick the model. The question is not "how big is
|
||||||
|
this" but **how much judgment does the session still have to exercise**:
|
||||||
|
|
||||||
| Difficulty | Models |
|
- Body settles the approach (root cause named, fix shape decided, numbers
|
||||||
|---|---|
|
suggested, files pointed at) — the thinking happened at filing time; the
|
||||||
| hard | Fable (`--tool claude --extra-args "--model claude-fable-5"`) |
|
session executes. **Sonnet** (`--tool claude --extra-args "--model
|
||||||
| moderate | Opus (`--tool claude --extra-args "--model claude-opus-5"`) |
|
claude-sonnet-5"`), regardless of size: a large mechanical CRUD issue is
|
||||||
| easy / trivial | Sonnet (`--tool claude --extra-args "--model claude-sonnet-5"`) |
|
still execution.
|
||||||
|
- Body states the goal but the session must design the interface, choose the
|
||||||
|
data model, or amend the design doc — **Opus** (`--model claude-opus-5`).
|
||||||
|
- The design doc itself is thin or contradictory where this issue lives,
|
||||||
|
correctness is subtle, or the change is cross-cutting with unclear blast
|
||||||
|
radius — **Fable** (`--model claude-fable-5`).
|
||||||
|
|
||||||
The operator overrides this by just saying so in the invocation ("run these
|
A `difficulty/` label is one input — a filing-time guess that cannot see how
|
||||||
on codex", "use ox alpha for the easy ones") — no config file. Route by how
|
much the body scaffolds. Trust your read of the body over it; the label is a
|
||||||
much judgment the session still has to exercise, not by the label alone: an
|
tie-breaker. When in doubt between two tiers take the lower one: escalation
|
||||||
issue whose body already settles the approach (root cause named, fix shape
|
on failure is cheap, and a failed cheap run teaches something a successful
|
||||||
decided, numbers suggested) drops a tier, because the thinking happened when
|
expensive run does not.
|
||||||
it was filed. When a tier
|
|
||||||
has two models, alternate within it rather than draining one first — a bad
|
The operator overrides any of this by just saying so in the invocation ("run
|
||||||
run should be visible early. Escalate *sideways* (the tier's other model)
|
these on codex", "use ox alpha for the easy ones") — no config file. When
|
||||||
before escalating up, and never de-escalate mid-issue.
|
routing across peer models, alternate rather than draining one first — a bad
|
||||||
|
run should be visible early. Escalate *sideways* (a peer model) before
|
||||||
|
escalating up, and never de-escalate mid-issue.
|
||||||
|
|
||||||
## Spawning
|
## Spawning
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user