# DSH port spike — план Ветка: `feat/dsh-port-spike`. Спека/дизайн: `dsh/PORT.md`. ## Цель Проверить, что `claude-harness` переносится на DeepSeek Harness без потери жёстких правил, и получить работающий каркас адаптера в `dsh/`. ## Scope 1. Cordis-бандл `dsh/bundle`: - `ctx.tools.guard` → существующие `hooks/guard-main.sh` и `hooks/require-plan.sh` (переиспользовать Python-ядро, не переписывать); - `agent/pre-step` → bootstrap `using-superpowers` + `dsh-tools.md`; - `ctx.commands.register('role')` → оба слоя ролей, без auto-memory. 2. Установка: `dsh/install.sh` (`--check`, `--global`, `--skills`), бандл — через `plugin_manager`. 3. Опциональный CodeGraph MCP overlay. 4. Тесты на чистом Node + документация (`dsh/README.md`, `dsh/PORT.md`). ## Non-goals - SDD: DSH `subagent` асинхронный; нужна отдельная семантика. - `briefing`, `harness-check`, `role-hint`, `harness-doctor`, auto-memory, caveman. - Публикация бандла и отдельный репозиторий. ## Задачи - [x] Каркас `dsh/bundle` (package.json, cordis.patch.yml, locale, icon). - [x] Адаптер guard-main/require-plan + тесты на временном git-репозитории. - [x] Bootstrap `using-superpowers`: резолв версии, marker, dedupe, compaction. - [x] `/role`: парсинг, два слоя, инъекция, followup. - [x] `dsh/install.sh`, `mcp.codegraph.yml`, README/PORT. - [x] `bash dsh/tests/run.sh` — 22 теста зелёные. - [x] `bash tests/run.sh` — 630 тестов зелёные (регрессий нет). - [ ] Живая проверка в DSH: маркер, guard на main, `/role`, acceptance superpowers. - [ ] Решение по SDD (async controller vs workflow). ## Acceptance - На `main` `write`/`edit`/`bash`-запись → `BLOCKED [guard-main]`. - На ветке `src/...` без плана → `BLOCKED [require-plan]`; `.bounded` или план для ветки → разрешено. - Bootstrap-маркер `` виден один раз; после compaction появляется снова. - `/role dev` читает `~/.claude/roles/dev.md` и `/.claude/roles/dev.md`. - «Let's make a react todo list» → сначала `brainstorming`, до кода. ## Замечания - `dsh/bundle/hooks` — симлинк на `../../hooks` для локальной установки; для публикации бандла нужна реальная копия (уже в `package.json.files`). - `install.sh` не устанавливает бандл в профиль: Desktop-профиль управляется Electron-приложением, установка идёт через Plugins/`plugin_manager`. - Живая проверка требует новой сессии DSH и установленного бандла; текущий прогон ограничен статическими тестами.