Before I write anything, let me classify the failure against the Iron Law and the "Match the Form to the Failure" table — because that determines what change is even worth making.

## Diagnosis

The symptom: controllers **omit a required element** (`model` param) from something they already produce (a subagent dispatch). The skill already *explains how to choose* a model. So this is NOT a knowledge gap and NOT a discipline-under-pressure gap. Adding more prose to the existing Model Selection section is the wrong form — it's the failure mode where reminders sit near the thing and get skipped.

Per the table:

> **Omits a required element from something they already produce** → **Structural: REQUIRED field or slot in the template they fill in.** Wrong form: prose reminders.

So the fix is structural, not explanatory.

## (1) The exact change

I would NOT touch the Model Selection prose. I would change the **dispatch template / contract** the controller fills in, making `model` a required slot that can't be left blank without it being obviously incomplete.

In the dispatch template within the SDD skill, change from an optional-feeling parameter to a required field with no default:

```markdown
## Subagent Dispatch Contract

Every dispatch MUST fill every field. A dispatch with a blank field is incomplete — do not send it.

- **model:** [REQUIRED — choose per Model Selection above; there is no default. Inheriting the session model is a defect, not a fallback.]
- **task:** [...]
- **context:** [...]
```

Key properties of this change:
- It's a **slot in the template they already fill in**, not a reminder elsewhere.
- It states the output **contract** ("every field filled") — leaving `model` blank produces a visibly incomplete dispatch.
- It names the failure as a **defect** ("inheriting is a defect, not a fallback") to kill the "no model = sensible default" reading — but as a structural framing, not a prohibition list.
- **No nuance/exemption clauses.** I would NOT write "specify model unless the task is trivial" — that reopens the negotiation and is exactly what the table warns against.

## (2) Verification plan (BEFORE deploying)

I will not deploy this on confidence. The Iron Law applies to edits, not just new skills.

**RED — establish the baseline first (no edit yet):**
1. Micro-test the *current* skill as the system prompt. User message: a realistic task requiring a subagent dispatch. 5+ reps.
2. Confirm the failure reproduces — controllers actually omit `model`. If they don't omit it in the control, there's nothing to fix; stop.
3. Record verbatim *why* they omit it (e.g. "I'll let it inherit," treating it as optional). This tells me whether "no default" framing addresses the real rationalization.

**GREEN — test the edit:**
4. Same 5+ reps with the edited skill as system prompt.
5. **Read every dispatch manually** — don't just grep for "model:". A field echoed empty, or filled with "(inherit)", counts as a failure even if the literal string appears.
6. Success = every rep fills `model` with a real choice.

**REFACTOR — check for new loopholes and side effects:**
7. Watch for new rationalizations ("model: default", "model: same as session"). If they appear, the "no default / defect" framing isn't binding — tighten the slot, don't add prose.
8. **Variance check:** if the 5 reps converge on the same shape, the form is binding. Five different interpretations means the wording is loose.
9. Confirm I didn't backfire by adding a prohibition that suppresses legitimate dispatches.

Only after GREEN holds across reps with manual reading do I commit and push. If RED doesn't reproduce, I make no change at all.