diff --git a/dsh/PORT.md b/dsh/PORT.md index 858f3b9..42126fe 100644 --- a/dsh/PORT.md +++ b/dsh/PORT.md @@ -361,6 +361,10 @@ profile was removed; the real `desktop` profile was not touched. - **Model tiers.** `sonnet`/`haiku`/`opus` are not DSH models. The port uses two live routes (`deepseek-flash`, `deepseek-v4-pro`) from the opt-in overlay in `dsh/subagent-models.yml`; without it every dispatch runs on the session model. +- **One-sided model route.** The trial's «child LLM provider and model must be + supplied together» was not a race: the logged tool call carried only `model` + (issue #52). DSH rejects a one-sided route correctly, so no upstream report is + needed; the `sdd` skill now says to retry with both fields. - **`~/.claude` dependence.** No longer needed for install, bootstrap, or roles: the install-time source is explicit, and `--skills --roles` copy real files into `~/.dsh`. The Claude Code locations remain a **legacy migration diff --git a/dsh/skills/sdd/SKILL.md b/dsh/skills/sdd/SKILL.md index 433007c..dc9d1e2 100644 --- a/dsh/skills/sdd/SKILL.md +++ b/dsh/skills/sdd/SKILL.md @@ -126,9 +126,12 @@ ledger лежит в git-ignored scratch (после `git clean -fdx` восст Маршрут указывается в каждом диспатче: `provider`, `model`, `reasoning_effort`. Параметры действуют только при включённом overlay (`dsh/subagent-models.yml`); без него всё идёт на модели сессии, и отчёт -фиксирует это наблюдением `O-n`. Если `subagent` вернул «child LLM provider -and model must be supplied together», хотя оба параметра переданы, — повтори -вызов один раз: валидация в 0.2.1-rc.3 нестабильна. +фиксирует это наблюдением `O-n`. `model` нельзя передать один, «унаследовав» +провайдера: DSH требует `provider` и `model` вместе и на односторонний +маршрут отвечает «child LLM provider and model must be supplied together». +Эта ошибка означает, что в вызове не хватает `provider` (в прогоне #41 так +случилось дважды), а не сбой валидации: проверь аргументы и повтори вызов, +передав оба поля. ## Отличие от Claude-SDD diff --git a/dsh/tests/sdd-skill.test.mjs b/dsh/tests/sdd-skill.test.mjs index 3a5c318..dbc9044 100644 --- a/dsh/tests/sdd-skill.test.mjs +++ b/dsh/tests/sdd-skill.test.mjs @@ -46,6 +46,13 @@ test('sdd skill fixes the report contract and the model routes', () => { assert.match(body, /модель сессии/) }) +test('sdd skill explains the one-sided route error instead of calling validation flaky', () => { + const body = text() + assert.match(body, /must be supplied together/) + assert.match(body, /не хватает `provider`/) + assert.doesNotMatch(body, /валидаци\S* в 0\.2\.1-rc\.3 нестабильн/i) +}) + test('sdd skill requires the ledger with findings and statuses', () => { const body = text() assert.match(body, /## Findings/)