DSH: SDD — skill, overlay, пробный прогон (#41) #50

Merged
aep merged 4 commits from feat/41-dsh-sdd-spike into main 2026-10-24 16:55:43 +03:00
Owner

Issue: #41. Change: openspec/changes/dsh-sdd/.

Что сделано

  • dsh/skills/sdd/SKILL.md — DSH-семантика исполнения плана: два режима контроллера (главная сессия / фоновый субагент), асинхронный протокол (бриф и отчёт файлами, контракт DONE/DONE_WITH_CONCERNS/NEEDS_CONTEXT/BLOCKED), ожидание через завершение хода и уведомление (без job_output и поллинга), ревью задачи, fix-loop до 5 раундов с адъюдикацией, финальное ревью ветки, ledger с ## Findings, таблица отличий от Claude-SDD.
  • dsh/subagent-models.yml — opt-in overlay профиля: subagent-model-selection-settings (маршруты deepseek-flash, deepseek-v4-pro) и subagent.maxDepth: 2. В бандл не входит: строки нет в headless. install.sh --check сообщает overlay и находит maxDepth: 2 в патче профиля.
  • Тесты без DSH runtime: dsh/tests/sdd-skill.test.mjs, dsh/tests/subagent-models.test.mjs; dsh/tests/install.test.mjs ждёт два локальных skill. README и PORT обновлены.
  • Пробный прогон: три задачи в temp-репозитории (implementer'ы deepseek-flash, все ревью deepseek-v4-pro) и отдельная проба режима 2. Артефакты — openspec/changes/dsh-sdd/trial/ (план, спека, брифы, отчёты, ledger), результаты — design.md.

Приёмка #41

Пункт Чем доказан Статус
3 задачи не теряются ledger Task 1..3: complete, 4 коммита выполнен
отчёты собираются 9 отчётов в trial/reports/ со статусом в первой строке выполнен
ревьюер находит и проверяет дефект T2.1 (медиана чётной длины) и T2.2 (нет теста) найдены независимо, fixed 186575c, ре-ревью APPROVED выполнен
fix-loop завершается раунд 1 из 5, ре-ревью чистое выполнен
ledger с ## Findings и статусами trial/ledger.md выполнен
прогон тестов зелёный python3 -m unittest 7/7; dsh/tests/run.sh 38/38; tests/run.sh 630/630; openspec validate dsh-sdd valid выполнен
отличие от Claude-SDD указано таблица в dsh/skills/sdd/SKILL.md выполнен

Находки и наблюдения

Маркер Что Статус
T2.1 median на чётной длине возвращал верхний средний элемент вместо среднего двух fixed 186575c
T2.2 не было теста на чётную длину fixed 186575c
O-1 «Interfaces» плана обещают аннотации, «Exact code» их не содержит rejected (правка плана в прогоне не даёт результата)
O-2, O-3 первый вызов subagent с переданными provider/model вернул «child LLM provider and model must be supplied together»; повтор проходит deferred (нестабильная валидация DSH; в skill добавлен повтор)
O-4 число тестов в плане устарело после fix-раунда fixed (правило в skill)
O-5 симметричный вход describe([1,2,3]) не отличил бы перестановку mean/median deferred (слабость плана прогона, код верен)

Rulings I made

  • R-1 — план Task 2 прогона исполняется буквально, расхождение со спекой ловится ревью, а не правится до диспатча. Цена ошибки: приёмка «ревьюер находит дефект» не доказана; прогон фиксирует наблюдение.
  • R-2 — overlay записан в форме, которая фактически работает в профиле (service-row subagent-model-selection-settings + subagent.maxDepth), а не в форме трёх tool-строк из комментария к #41: именно эта форма включена у владельца и даёт provider/model в схеме subagent. Цена ошибки: другой профиль потребует иной записи — PORT.md §5 объясняет.
  • R-3 — workflow в первой версии не используется (гибрид отложен по design.md); веер задач — отдельная правка skill.
  • R-4 — docs/retro/scripts/__pycache__/ (появляется от tests/run.sh) не добавляю в .gitignore: вне скоупа #41, репозиторий от этого не ломается.

Тесты

bash dsh/tests/run.sh   # 38/38
bash tests/run.sh       # 630/630
openspec validate dsh-sdd  # valid

Проверка вживую

  • overlay уже включён в desktop-профиле: у subagent есть provider/model, глубина 2 работает (проба режима 2 в trial/ledger.md);
  • bash dsh/install.sh --check — ok: subagent overlay, ok: subagent maxDepth=2.
Issue: #41. Change: `openspec/changes/dsh-sdd/`. ## Что сделано - **`dsh/skills/sdd/SKILL.md`** — DSH-семантика исполнения плана: два режима контроллера (главная сессия / фоновый субагент), асинхронный протокол (бриф и отчёт файлами, контракт `DONE`/`DONE_WITH_CONCERNS`/`NEEDS_CONTEXT`/`BLOCKED`), ожидание через завершение хода и уведомление (без `job_output` и поллинга), ревью задачи, fix-loop до 5 раундов с адъюдикацией, финальное ревью ветки, ledger с `## Findings`, таблица отличий от Claude-SDD. - **`dsh/subagent-models.yml`** — opt-in overlay профиля: `subagent-model-selection-settings` (маршруты `deepseek-flash`, `deepseek-v4-pro`) и `subagent.maxDepth: 2`. В бандл не входит: строки нет в headless. `install.sh --check` сообщает overlay и находит `maxDepth: 2` в патче профиля. - **Тесты без DSH runtime**: `dsh/tests/sdd-skill.test.mjs`, `dsh/tests/subagent-models.test.mjs`; `dsh/tests/install.test.mjs` ждёт два локальных skill. README и PORT обновлены. - **Пробный прогон**: три задачи в temp-репозитории (implementer'ы `deepseek-flash`, все ревью `deepseek-v4-pro`) и отдельная проба режима 2. Артефакты — `openspec/changes/dsh-sdd/trial/` (план, спека, брифы, отчёты, ledger), результаты — `design.md`. ## Приёмка #41 | Пункт | Чем доказан | Статус | |---|---|---| | 3 задачи не теряются | ledger `Task 1..3: complete`, 4 коммита | выполнен | | отчёты собираются | 9 отчётов в `trial/reports/` со статусом в первой строке | выполнен | | ревьюер находит и проверяет дефект | `T2.1` (медиана чётной длины) и `T2.2` (нет теста) найдены независимо, `fixed 186575c`, ре-ревью APPROVED | выполнен | | fix-loop завершается | раунд 1 из 5, ре-ревью чистое | выполнен | | ledger с `## Findings` и статусами | `trial/ledger.md` | выполнен | | прогон тестов зелёный | `python3 -m unittest` 7/7; `dsh/tests/run.sh` 38/38; `tests/run.sh` 630/630; `openspec validate dsh-sdd` valid | выполнен | | отличие от Claude-SDD указано | таблица в `dsh/skills/sdd/SKILL.md` | выполнен | ## Находки и наблюдения | Маркер | Что | Статус | |---|---|---| | `T2.1` | `median` на чётной длине возвращал верхний средний элемент вместо среднего двух | `fixed 186575c` | | `T2.2` | не было теста на чётную длину | `fixed 186575c` | | `O-1` | «Interfaces» плана обещают аннотации, «Exact code» их не содержит | `rejected` (правка плана в прогоне не даёт результата) | | `O-2`, `O-3` | первый вызов `subagent` с переданными `provider`/`model` вернул «child LLM provider and model must be supplied together»; повтор проходит | `deferred` (нестабильная валидация DSH; в skill добавлен повтор) | | `O-4` | число тестов в плане устарело после fix-раунда | `fixed` (правило в skill) | | `O-5` | симметричный вход `describe([1,2,3])` не отличил бы перестановку `mean`/`median` | `deferred` (слабость плана прогона, код верен) | ## Rulings I made - **R-1** — план Task 2 прогона исполняется буквально, расхождение со спекой ловится ревью, а не правится до диспатча. Цена ошибки: приёмка «ревьюер находит дефект» не доказана; прогон фиксирует наблюдение. - **R-2** — overlay записан в форме, которая фактически работает в профиле (service-row `subagent-model-selection-settings` + `subagent.maxDepth`), а не в форме трёх tool-строк из комментария к #41: именно эта форма включена у владельца и даёт `provider`/`model` в схеме `subagent`. Цена ошибки: другой профиль потребует иной записи — PORT.md §5 объясняет. - **R-3** — `workflow` в первой версии не используется (гибрид отложен по design.md); веер задач — отдельная правка skill. - **R-4** — `docs/retro/scripts/__pycache__/` (появляется от `tests/run.sh`) не добавляю в `.gitignore`: вне скоупа #41, репозиторий от этого не ломается. ## Тесты ``` bash dsh/tests/run.sh # 38/38 bash tests/run.sh # 630/630 openspec validate dsh-sdd # valid ``` ## Проверка вживую - overlay уже включён в desktop-профиле: у `subagent` есть `provider`/`model`, глубина 2 работает (проба режима 2 в `trial/ledger.md`); - `bash dsh/install.sh --check` — `ok: subagent overlay`, `ok: subagent maxDepth=2`.
aep added 4 commits 2026-10-24 16:49:58 +03:00
Design note и spec delta для фазы #41: два режима контроллера (главная
сессия / фоновый сабагент), асинхронный протокол диспатча и отчётов,
fix-loop, ledger с ## Findings, карта из двух маршрутов моделей.

Основание — измеренные ограничения DSH 0.2.1-rc.3: subagent.maxDepth по
умолчанию 1, у subagent нет provider/model без modelSelectionSettings,
выбор модели работает сразу только в workflow.agent().

Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
dsh/subagent-models.yml — opt-in overlay: subagent-model-selection-settings с
маршрутами deepseek-flash/deepseek-v4-pro и subagent.maxDepth: 2. В бандл не
входит: строки нет в headless, включённый флаг ломает загрузку.

install.sh --check сообщает overlay и находит maxDepth: 2 в патче профиля.
PORT.md §5 — как включить и что это даёт; §7/§8 обновлены.

Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
dsh/skills/sdd/SKILL.md: два режима контроллера (главная сессия / фоновый
субагент), проверка глубины и маршрутов моделей, диспатч и отчёт файлами,
контракт DONE/DONE_WITH_CONCERNS/NEEDS_CONTEXT/BLOCKED, ожидание через
завершение хода и уведомление, ревью задачи и fix-loop 5 раундов, ledger
с ## Findings, таблица отличий от Claude-SDD.

Тесты: frontmatter, режимы, инструменты, маршруты, ledger, отсутствие
job_output как ожидания; install.test.mjs ждёт два локальных skill.

Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
Три задачи в temp-репозитории: implementer'ы deepseek-flash, все ревью
deepseek-v4-pro. Ревьюер Task 2 независимо нашёл T2.1 (медиана чётной длины
противоречит спеке) и T2.2 (нет теста), fix-раунд 1 → 186575c, скоуп-ре-ревью
APPROVED, финальное ревью ветки APPROVED. Режим 2 (фоновый контроллер, глубина
2) проверен отдельной пробой: вызов subagent из контроллера прошёл.

Артефакты прогона — openspec/changes/dsh-sdd/trial/ (план, спека, брифы,
отчёты, ledger), результаты — design.md. По урокам прогона skill sdd уточнён:
DONE_WITH_CONCERNS при замеченном расхождении, число тестов в плане — ориентир,
повтор при ошибке валидации provider/model.

Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
aep merged commit 303b7f08aa into main 2026-10-24 16:55:43 +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#50
No description provided.