DSH: SDD follow-ups — односторонний маршрут subagent и образец describe (#52) #68

Merged
aep merged 2 commits from feat/52-sdd-followups into main 2026-10-24 20:51:23 +03:00
Owner

Закрывает содержательные пункты #52 (follow-ups из #41), очередь порта — #48.

O-2/O-3 — «provider and model must be supplied together»

Это не гонка инициализации model selection и не нестабильная валидация DSH.
В транскрипте прогона #41 (сессия session-7a98b324, события tool/call)
видно, что оба упавших вызова содержали только model:

Событие Аргументы маршрута Результат
tool/call (Task 2 implementer) model: deepseek-flash ошибка «…must be supplied together»
повтор того же вызова provider: deepseek-official, model: deepseek-flash started subagent …
tool/call (Task 2 reviewer) model: deepseek-v4-pro та же ошибка
повтор того же вызова provider: deepseek-official, model: deepseek-v4-pro started subagent …

Валидация DSH корректна: односторонний маршрут (model без provider)
отклоняется. Upstream-баг не заводим — сообщение соответствует входу.

Что поправлено в нашем адаптере: формулировка dsh/skills/sdd/SKILL.md,
которая называла это «нестабильной валидацией». Теперь skill говорит, что
model нельзя передать один, ошибка означает отсутствие provider, и повтор
делается с обоими полями. В dsh/PORT.md §7 добавлен риск с этим диагнозом;
dsh/tests/sdd-skill.test.mjs закрепляет новую формулировку.

O-5 — симметричный вход в образце

trial/README.md описывает plan.md как образец для повторного прогона,
поэтому вход теста describe заменён на несимметричный: [1, 2, 6] →
mean 3.0, median 2.0 (перестановка mean/median теперь ловится). В шапке
плана и в README стоит пометка «пост-фактум»: сам прогон шёл с [1, 2, 3],
это по-прежнему видно в reports/review-3.md; отчёты не переписывались.
Статусы O-2/O-3 и O-5 в design.md переведены из deferred в fixed.

Findings

Маркер Что Статус
O-2, O-3 вызов subagent без provider; валидация DSH корректна fixed c08fba2
O-5 симметричный вход в образце describe fixed bd8024e

Rulings I made

  • R-1. Править архивный plan.md можно, потому что README объявляет его
    образцом для повторного прогона; правка помечена «пост-фактум», отчёты
    прогона не тронуты. Цена ошибки: если архив считается строго неизменяемым,
    правку нужно откатить и оставить только пометку в README.
  • R-2. Upstream-issue по O-2/O-3 не заводится: DSH отклонил вызов без
    provider правильно; менять надо формулировку skill, а не DSH.

Проверка

  • bash dsh/tests/run.sh — 64 pass, 0 fail.
  • bash tests/run.sh — 630 passed, 0 failed.
  • python3 — [1,2,6] даёт mean 3.0, median 2.0.

Отложенных находок нет.

Закрывает содержательные пункты #52 (follow-ups из #41), очередь порта — #48. ## O-2/O-3 — «provider and model must be supplied together» Это не гонка инициализации model selection и не нестабильная валидация DSH. В транскрипте прогона #41 (сессия `session-7a98b324`, события `tool/call`) видно, что оба упавших вызова содержали только `model`: | Событие | Аргументы маршрута | Результат | |---|---|---| | `tool/call` (Task 2 implementer) | `model: deepseek-flash` | ошибка «…must be supplied together» | | повтор того же вызова | `provider: deepseek-official, model: deepseek-flash` | `started subagent …` | | `tool/call` (Task 2 reviewer) | `model: deepseek-v4-pro` | та же ошибка | | повтор того же вызова | `provider: deepseek-official, model: deepseek-v4-pro` | `started subagent …` | Валидация DSH корректна: односторонний маршрут (`model` без `provider`) отклоняется. Upstream-баг не заводим — сообщение соответствует входу. Что поправлено в нашем адаптере: формулировка `dsh/skills/sdd/SKILL.md`, которая называла это «нестабильной валидацией». Теперь skill говорит, что `model` нельзя передать один, ошибка означает отсутствие `provider`, и повтор делается с обоими полями. В `dsh/PORT.md` §7 добавлен риск с этим диагнозом; `dsh/tests/sdd-skill.test.mjs` закрепляет новую формулировку. ## O-5 — симметричный вход в образце `trial/README.md` описывает `plan.md` как образец для повторного прогона, поэтому вход теста `describe` заменён на несимметричный: `[1, 2, 6]` → `mean 3.0`, `median 2.0` (перестановка mean/median теперь ловится). В шапке плана и в README стоит пометка «пост-фактум»: сам прогон шёл с `[1, 2, 3]`, это по-прежнему видно в `reports/review-3.md`; отчёты не переписывались. Статусы O-2/O-3 и O-5 в `design.md` переведены из `deferred` в `fixed`. ## Findings | Маркер | Что | Статус | |---|---|---| | O-2, O-3 | вызов `subagent` без `provider`; валидация DSH корректна | `fixed c08fba2` | | O-5 | симметричный вход в образце `describe` | `fixed bd8024e` | ## Rulings I made - **R-1.** Править архивный `plan.md` можно, потому что README объявляет его образцом для повторного прогона; правка помечена «пост-фактум», отчёты прогона не тронуты. Цена ошибки: если архив считается строго неизменяемым, правку нужно откатить и оставить только пометку в README. - **R-2.** Upstream-issue по O-2/O-3 не заводится: DSH отклонил вызов без `provider` правильно; менять надо формулировку skill, а не DSH. ## Проверка - `bash dsh/tests/run.sh` — 64 pass, 0 fail. - `bash tests/run.sh` — 630 passed, 0 failed. - `python3` — `[1,2,6]` даёт `mean 3.0`, `median 2.0`. Отложенных находок нет.
aep added 2 commits 2026-10-24 20:49:40 +03:00
aep merged commit 2eaaa99399 into main 2026-10-24 20:51:23 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: aep/claude-harness#68
No description provided.