Before I make any change, let me classify the failure and check the Iron Law.

## Diagnosis

The skill **already has** a Model Selection section explaining *how to choose*. The agents read it, understand it, and still **omit** the model parameter when dispatching. This is not a knowledge gap — it's an **omitted required element from something they already produce** (the dispatch call).

Per *Match the Form to the Failure*:

| Baseline failure | Right form | Wrong form |
|---|---|---|
| Omits a required element from something they already produce | **Structural: REQUIRED field/slot in the template they fill in** | Prose reminders, more explanation |

Adding more explanation to the "how to choose" prose is the **wrong form** — they already have explanation and still omit. The fix is structural: make `model` a required slot in the dispatch template they copy, so a missing model is visibly an unfilled blank rather than a silent inheritance.

## The Iron Law applies — I have NOT seen this test fail yet

I'm told agents omit the parameter, but I haven't run the baseline myself. I will not write the change as deployed text until I've watched the failure and confirmed the control exhibits it. Below is the change I *would* make, contingent on baseline confirmation.

---

## (1) The exact change

**Do NOT** expand the Model Selection prose. Instead, change the **dispatch template** in the SDD skill so `model` is a required, unfillable-by-default slot.

If the current template looks like:

```markdown
Dispatch a subagent:
- Task: <what the subagent should do>
- Context: <relevant files/state>
```

Change it to:

```markdown
Dispatch a subagent. Every dispatch has these fields, in order:
- **model:** <REQUIRED — choose per Model Selection below; never leave blank, never omit>
- **task:** <what the subagent should do>
- **context:** <relevant files/state>

A dispatch missing the `model` field is incomplete. Subagents do NOT inherit
a sensible default — an omitted model silently runs on the session's most
expensive model.
```

Rationale tied to the form table:
- `model` is now the **first field** in the structure they fill in, not a reminder elsewhere.
- The blank is **visible**: an unfilled `<REQUIRED ...>` slot reads as obviously incomplete.
- One conditional consequence stated against an observable fact (omission → most expensive model), no nuance clauses.
- I am **not** adding a prohibition list ("never forget...") — that's the wrong form for an omission and tends to backfire under pressure.

The existing Model Selection section stays as-is (the *how-to-choose* reference); the template now *forces a reference to it*.

## (2) Verification plan (before deploying)

**RED — baseline, confirm the failure exists:**
1. Micro-test, no-guidance control: system prompt = the **current** SDD skill (with the existing Model Selection section but the old template); user message = a task that requires dispatching subagents. 5+ reps.
2. Score: read each dispatch manually. Does the `model` parameter appear? If the control does **not** omit it, **stop — there is nothing to fix**, and I've avoided authoring a change against a non-existent failure.
3. Record verbatim *why* it was omitted when it was (e.g., "inherited from session", forgotten under multi-step pressure).

**GREEN — verify the structural change binds:**
4. Same micro-test, system prompt = SDD skill **with the new required-slot template**. 5+ reps.
5. Manually read every dispatch. Pass = `model` present and explicitly chosen in all reps.
6. **Variance check:** do reps converge on filling the slot the same way? If the model field is filled inconsistently (or some reps still drop it), the slot isn't binding — tighten the structure before adding words.

**Pressure scenarios (final gate):**
7. Run dispatch tasks under combined pressure — long multi-task plan + time pressure + "just get it dispatched" — since omission shows up under load, not in clean single calls. Confirm `model` still appears.

**REFACTOR:**
8. Any new rationalization for omission goes into the structure, not into prose. Re-test until every rep fills the slot.

**Deploy only after** the control demonstrably fails and the changed template demonstrably passes across reps and pressure scenarios.