DSH: SDD spike — async controller vs workflow #41
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Цель
Сделать DSH-native SDD: контроллер исполняет план через субагентов, собирает отчёты, делает ревью и fix-loop. Не выдавать это за паритет с Claude
Task, пока не проверено живьём.Контекст
role).dsh/PORT.md, раздел 8.~/.dsh/roles/dev.md; модель загружает их черезskill role.Taskсинхронный; DSHsubagentасинхронный (send_message,maxDepth: 2),workflowсинхронный.sonnet/haiku/opusне DSH; нужна таблица реальных provider/model routes.Варианты
A. Async controller: главный агент вызывает
subagent, ждёт отчёт, затем reviewer, fix-loop. Гибко, но надо определить протокол ожидания/таймаутов.B.
workflow-скрипт: детерминированный fan-out implementer/reviewer. Проще для предсказуемых планов, хуже для адаптивных ревью.C. Гибрид: workflow для независимых задач, async controller для ревью/фиксов.
Deliverables
Acceptance
## Findingsсо статусами;Старт в новой сессии
Прочитать
dsh/PORT.md,roles/dev.md(черезskill role), этот issue. Не начинать с кода: сначала design spike и один пробный план.Состояние: фаза начата, дизайн зафиксирован
Ветка
feat/41-dsh-sdd-spike(push сделан), worktree:/Users/andrey.epifancev/projects/cc-skills/claude-harness/.claude/worktrees/sdd-spike.Коммит
ee0d876:openspec/changes/dsh-sdd/— proposal, design, spec delta(
openspec validate dsh-sdd— valid). Тесты на ветке зелёные:dsh/tests/run.sh30/30,tests/run.sh630/630.Измеренные ограничения DSH 0.2.1-rc.3 (основание дизайна)
subagent.maxDepthпо умолчанию 1 — фоновый контроллер (глубина 1) непозовёт implementer'а (глубина 2).
subagentнетprovider/model, пока строкеtool-subagentне поставленmodelSelectionSettings: true; иначе ребёнок наследует модель сессии.workflow.agent(). Маршрутов два:deepseek-official/deepseek-flash,deepseek-official/deepseek-v4-pro.subagent-model-selection-settingsесть в web/desktop-профиле иотсутствует в headless — флаг нельзя ставить в бандл, только в overlay профиля.
Решение владельца (24.10)
Режим контроллера зависит от контекста: одна сложная задача — контроллер
главная сессия; несколько задач параллельно — фоновый контроллер на задачу.
Действия владельца перед следующей сессией
Скопировать в
~/.dsh/profiles/desktop/cordis.patch.yml:Затем рестарт приложения и на странице Plugins → Official → Subagent
включить Model selection с маршрутами
deepseek-flashиdeepseek-v4-pro(и проверить Maximum recursion depth = 2). Проверка: в новой сессии у
инструмента
subagentв схеме появляютсяprovider,model,reasoning_effort.Что делает следующая сессия
writing-plans→docs/superpowers/plans/поopenspec/changes/dsh-sdd/(design.md — источник решений).dsh/subagent-models.yml(overlay, содержимое уже в design.md) +строка в
dsh/PORT.md+dsh/tests/sdd-skill.test.mjs.dsh/skills/sdd/SKILL.md+ установка черезdsh/install.sh --skills.implementer → reviewer → fix → финальное ревью; результат в design.md и сюда.
Наблюдения
dsh/bundle/hooksматериализуется обычным файлом,а не симлинком (
core.symlinks=falseна машине), из-за чего 5 тестовdsh/tests/run.shпадают наBLOCKED [guard-main]. Лечится в worktree:rm dsh/bundle/hooks && ln -s ../../hooks dsh/bundle/hooks. Стоит проверитьв
dsh/install.sh --checkили в тестах.Фаза выполнена, PR #50
Ветка
feat/41-dsh-sdd-spike, PR: #50Что в PR
dsh/skills/sdd/SKILL.md— DSH-семантика исполнения плана;dsh/subagent-models.yml— opt-in overlay (model selection +maxDepth: 2),install.sh --checkего проверяет;dsh/tests/sdd-skill.test.mjs,dsh/tests/subagent-models.test.mjs(38/38 вdsh/tests/run.sh, 630/630 вtests/run.sh);openspec/changes/dsh-sdd/trial/, результаты —design.md.Пробный прогон (главная сессия контроллер, Режим 1)
DONEdc1670f, 2 тестаAPPROVEDDONE836a730, 4 тестаCHANGES_REQUESTED:T2.1,T2.2send_messageтому же implementer'у)186575c, 6 тестовAPPROVED:T2.1 fixed 186575c,T2.2 fixed 186575cDONE7cb0383, 7 тестовAPPROVEDAPPROVEDРевьюер нашёл дефект независимо:
median([1,2]) == 2.0вместо1.5по спеке; implementer тоже заметил расхождение, но поставилDONE— в skill добавлено правило «замеченное расхождение —DONE_WITH_CONCERNS».Режим 2 (фоновый контроллер, глубина 2)
Проверен отдельной пробой: контроллер (flash) вызвал
subagent(flash), ход закончился, уведомление пришло отдельным сообщением, после него контроллер проверил отчёт, коммит0601d6eи тесты. Глубина 2 работает с overlay.Наблюдения
O-2/O-3: первый вызовsubagentс переданнымиprovider/modelвернул «child LLM provider and model must be supplied together» (2 раза за прогон); повтор тем же вызовом проходит.deferred.O-4: число тестов в плане устаревает после fix-раунда (5 → 7);fixed— правило в skill.O-5:describe([1,2,3])на симметричном входе не отличил бы перестановкуmean/median;deferred, код верен.O-1: «Interfaces» плана обещают аннотации, «Exact code» их не содержит;rejected(дефект плана прогона, не кода).Что осталось человеку
openspec archive dsh-sddотдельным PR и закрытие issue по чеклисту;design.md: добавить ли в~/.dsh/roles/dev.mdстроку «в DSH исполнение плана — skillsdd».Закрыто
sdd, overlaydsh/subagent-models.yml, тесты, пробный прогон (merge303b7f0).openspec archive dsh-sdd(merge36bf106): change вopenspec/changes/archive/2026-10-24-dsh-sdd/, спека вopenspec/specs/dsh-sdd/spec.md.Приёмка #41 — все пункты выполнены
Task 1..3: complete, 4 коммита прогонаtrial/reports/T2.1,T2.2→fixed 186575c, ре-ревью APPROVED## Findingsи статусамиtrial/ledger.mdopenspec validatevaliddsh/skills/sdd/SKILL.mdОтложенные находки
O-2/O-3(нестабильная валидацияprovider/model) иO-5(симметричный вход в тесте прогона) вынесены в follow-up issue.Чего в репозитории нет
Skill
sddне установлен в~/.dshиз сессии (запись вне workspace): развернуть —bash dsh/install.sh --skillsиз терминала.