# S02: Per-Stage LLM Model Routing + Think-Tag Stripping — UAT

**Milestone:** M003
**Written:** 2026-03-30T02:12:55.741Z

## UAT: S02 — Per-Stage LLM Model Routing\n\n- [x] Settings has 8 per-stage fields (llm_stage{2-5}_model and llm_stage{2-5}_modality)\n- [x] LLMClient.complete() accepts modality and model_override\n- [x] Thinking modality skips response_format, appends JSON instructions, strips think tags\n- [x] strip_think_tags handles single, multiline, multiple, empty, and no-tag cases\n- [x] All 4 stages (2-5) call _get_stage_config and pass config to LLM client\n- [x] .env.example documents per-stage vars\n- [x] All 59 tests pass
