# DSH port spike — план Ветка: `feat/35-dsh-port-spike` (issue #35). Спека/дизайн: `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` — 26 тестов зелёные. - [x] `bash tests/run.sh` — 630 тестов зелёные (регрессий нет). - [x] Живой `guard-main`: `write` и `bash` на main → `BLOCKED`. - [x] Живой `require-plan`: `src/probe.ts` без `.bounded` → `BLOCKED`; с `.bounded` → разрешено. - [x] Bootstrap: marker `6b676dd9bb8a0234` пришёл в контекст сессии. - [x] `/role dev` — команда работает (пользовательский вызов). - [x] Acceptance superpowers в чистой сессии: bootstrap + `brainstorming` до кода. - [x] `/compact` → повторный bootstrap. - [ ] Решение по 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 и установленного бандла; текущий прогон ограничен статическими тестами. - `/role` — пользовательская команда; модель её не вызывает. Авто-загрузка роли — #39.