fix(dsh): объяснить ошибку одностороннего маршрута subagent (#52)

This commit is contained in:
Andrey Epifancev 2026-10-24 21:49:16 +04:00
parent ec7c028f6b
commit c08fba2a82
3 changed files with 17 additions and 3 deletions

View File

@ -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

View File

@ -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

View File

@ -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/)