129 Commits

Author SHA1 Message Date
Andrey Epifancev
1a0c78cbc3 fix(dsh): форс-рефспек тега при смене DSH_SUPERPOWERS_REPO (T3.5, #69) 2026-10-25 00:26:00 +04:00
Andrey Epifancev
914a54c3e4 fix(dsh): explicit-стейджинг вне клона, вердикты --check/--skills совпадают, fetch от DSH_SUPERPOWERS_REPO (T3.1-T3.3, #69) 2026-10-25 00:18:59 +04:00
Andrey Epifancev
335e966cfc feat(dsh): --skills гоняет sync/verify по пину v7.0.1, офлайн-кейсы (#69) 2026-10-25 00:06:24 +04:00
Andrey Epifancev
e94e842dfe fix(dsh): verify — строгая проверка scripts/*, дубликаты frontmatter, тесты (T2.1-T2.6, #69) 2026-10-24 23:50:09 +04:00
Andrey Epifancev
3f7c4fc97e docs: язык субагентов — английский с Task 3 (решение владельца, #69) 2026-10-24 23:40:07 +04:00
Andrey Epifancev
eef23452ea feat(dsh): вендор verify-skills — frontmatter, префиксы, висячие ссылки (#69) 2026-10-24 23:39:37 +04:00
Andrey Epifancev
3aacd48637 fix(dsh): sync — guard --out от коллизии с источником, негативы unfired/duplicated/optional (T1.6-T1.7, #69) 2026-10-24 23:33:40 +04:00
Andrey Epifancev
6c003d1d86 fix(dsh): sync — полный набор transform-ов (16), фикстура 15 скиллов (T1.1-T1.2, #69) 2026-10-24 23:25:14 +04:00
Andrey Epifancev
fce88f04d9 feat(dsh): вендор sync-from-upstream — ассертные transform-ы, staging-swap, override dsh-tools.md (#69) 2026-10-24 23:21:53 +04:00
Andrey Epifancev
cc0c22f6e0 docs: план dsh-port-v2 — 5 задач, вариант C (#69) 2026-10-24 22:53:47 +04:00
Andrey Epifancev
ae2b55c497 docs(openspec): change dsh-port-v2 — дизайн варианта C, решения владельца (#69) 2026-10-24 22:49:38 +04:00
aep
2eaaa99399 Merge pull request 'DSH: SDD follow-ups — односторонний маршрут subagent и образец describe (#52)' (#68) from feat/52-sdd-followups into main 2026-10-24 20:51:21 +03:00
Andrey Epifancev
bd8024e7a0 docs(openspec): несимметричный вход в образце describe (#52) 2026-10-24 21:49:16 +04:00
Andrey Epifancev
c08fba2a82 fix(dsh): объяснить ошибку одностороннего маршрута subagent (#52) 2026-10-24 21:49:16 +04:00
aep
ec7c028f6b Merge pull request 'chore(openspec): архив change dsh-install-source (#49)' (#65) from chore/archive-dsh-install-source into main 2026-10-24 20:24:55 +03:00
Andrey Epifancev
044222d566 chore(openspec): архив change dsh-install-source (#49) 2026-10-24 21:24:39 +04:00
aep
9cae7e1234 Merge pull request 'DSH: установка без зависимости от ~/.claude (#49)' (#64) from feat/49-dsh-install-source into main 2026-10-24 20:23:42 +03:00
Andrey Epifancev
4054e13806 fix(dsh): валидировать legacy-кэш и пустой --superpowers-from (#49) 2026-10-24 21:20:29 +04:00
Andrey Epifancev
ab458b58d2 fix(dsh): ясное сообщение о невалидном источнике (#49) 2026-10-24 21:14:58 +04:00
Andrey Epifancev
12f19b1de5 docs(openspec): приёмка установки без ~/.claude (#49) 2026-10-24 21:14:19 +04:00
Andrey Epifancev
3bfcc583bb feat(dsh): warn about legacy ~/.claude sources at runtime (#49) 2026-10-24 21:12:21 +04:00
Andrey Epifancev
60d68464a9 feat(dsh): DSH-owned role paths in installed instructions (#49) 2026-10-24 21:11:31 +04:00
Andrey Epifancev
05178869fb feat(dsh): install superpowers from an explicit source (#49) 2026-10-24 21:10:52 +04:00
Andrey Epifancev
15cc2e38d7 docs(openspec): change dsh-install-source и план (#49) 2026-10-24 21:09:11 +04:00
aep
de58eff8c0 Merge pull request 'chore(openspec): архив change dsh-openspec (#42)' (#61) from chore/archive-dsh-openspec into main 2026-10-24 19:00:38 +03:00
Andrey Epifancev
7db024ccf5 chore(openspec): archive dsh-openspec (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 20:00:24 +04:00
aep
46e4c3d7ca Merge pull request 'DSH: OpenSpec — проектные скиллы, --openspec, проверка (#42)' (#60) from feat/42-dsh-openspec into main 2026-10-24 18:59:56 +03:00
Andrey Epifancev
8c0fc89bac fix(dsh): --openspec возвращает 1 при провале openspec init (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 19:52:36 +04:00
Andrey Epifancev
6876e4c6c8 docs(openspec): change dsh-openspec, план и видимость скиллов в приёмке (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 19:44:38 +04:00
Andrey Epifancev
ca3814f62a docs(openspec): результаты приёмки DSH-цикла (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 19:43:30 +04:00
Andrey Epifancev
4ecb9b13bd docs(dsh): вынести .agents/skills из дерева dsh/ в README (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 19:42:01 +04:00
Andrey Epifancev
cd5ef4f765 docs(dsh): OpenSpec — проектные скиллы, --openspec, проверка (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 19:35:27 +04:00
Andrey Epifancev
56bbfbac5f style(dsh): выровнять колонки usage для --openspec (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 19:29:55 +04:00
Andrey Epifancev
748f8e115a feat(dsh): --openspec добавляет agents-адаптер в проект (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 19:26:36 +04:00
Andrey Epifancev
5d0fdc4c0d fix(dsh): тест --check без openspec ищет bash через системный PATH (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 19:22:08 +04:00
Andrey Epifancev
9ecc3eb793 feat(dsh): --check сообщает OpenSpec CLI и agents-скиллы (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 19:20:42 +04:00
Andrey Epifancev
1333019ef6 feat(dsh): скиллы OpenSpec в .agents/skills проекта (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 19:16:19 +04:00
aep
ff551a9a82 Merge pull request 'DSH: run.sh чинит dsh/bundle/hooks в worktree (#56)' (#58) from fix/56-hooks-symlink into main 2026-10-24 18:04:50 +03:00
aep
5d289cf5a8 Merge pull request 'chore: игнорировать __pycache__ и *.pyc (#55)' (#57) from fix/55-pycache-gitignore into main 2026-10-24 18:04:28 +03:00
Andrey Epifancev
6ea3740d5f fix(dsh): run.sh чинит dsh/bundle/hooks в worktree (#56)
При core.symlinks=false новый worktree получает dsh/bundle/hooks обычным
файлом с текстом ../../hooks, и пять guard-тестов падают на BLOCKED.
run.sh перед прогоном восстанавливает симлинк (печатает строку о починке),
каталог-копию принимает как есть, незнакомое содержимое — явный FAIL.

Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 19:03:17 +04:00
Andrey Epifancev
37d7239efb chore: игнорировать __pycache__ и *.pyc (#55)
Тесты запускают python из docs/retro/scripts и оставляли untracked
docs/retro/scripts/__pycache__/ в main: guard-main не даёт его удалить,
дерево выглядело грязным, retro_leftovers.py считал это сигналом.

Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 19:00:54 +04:00
aep
67ff56190c Merge pull request 'DSH: install.sh --roles дописывает DSH-заметку в dev.md (#53)' (#54) from feat/53-dsh-role-notes into main 2026-10-24 17:14:12 +03:00
Andrey Epifancev
768bc46339 fix(dsh): install.sh --roles дописывает DSH-заметку в dev.md (#53)
Установленная копия роли теперь воспроизводима: после копирования roles/
install.sh вставляет в ~/.dsh/roles/dev.md пункт «в DSH исполнение плана —
skill sdd» (после «Режим по умолчанию», с откатом в конец файла, если якоря
нет). Вставка идемпотентна: каждая установка ролей перекопирует файл и
добавляет ровно одну заметку. Общий roles/dev.md не меняется — в Claude Code
строка не действует.

--check сообщает ok/WARN про заметку; тест проверяет наличие, отсутствие
дубля после второго запуска и строку в --check. PORT.md §6 объясняет.

Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 18:13:28 +04:00
aep
36bf106962 Merge pull request 'chore(openspec): archive dsh-sdd (#41)' (#51) from chore/archive-dsh-sdd into main 2026-10-24 16:57:47 +03:00
Andrey Epifancev
3ad378c1dc chore(openspec): archive dsh-sdd (#41)
Change dsh-sdd перенесён в openspec/changes/archive/2026-10-24-dsh-sdd,
дельта dsh-sdd добавлена в openspec/specs/dsh-sdd/spec.md (7 требований).

Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 17:57:35 +04:00
aep
303b7f08aa Merge pull request 'DSH: SDD — skill, overlay, пробный прогон (#41)' (#50) from feat/41-dsh-sdd-spike into main 2026-10-24 16:55:41 +03:00
Andrey Epifancev
c8b92fae01 docs(dsh): пробный прогон SDD — режимы, дефект и fix-loop (#41)
Три задачи в 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>
2026-10-24 17:49:38 +04:00
Andrey Epifancev
f714426b11 feat(dsh): skill sdd — асинхронный протокол исполнения плана (#41)
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>
2026-10-24 17:40:24 +04:00
Andrey Epifancev
2bee63d305 feat(dsh): overlay профиля — model selection и maxDepth 2 (#41)
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>
2026-10-24 17:37:54 +04:00
Andrey Epifancev
ee0d876f6b docs(dsh): дизайн SDD для DSH — режимы контроллера и маршруты моделей (#41)
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>
2026-10-24 16:59:53 +04:00