68 lines
3.8 KiB
Markdown
68 lines
3.8 KiB
Markdown
# 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-маркер `<!-- DSH-HARNESS-BOOTSTRAP:<hash> -->` виден один раз;
|
||
после compaction появляется снова.
|
||
- `/role dev` читает `~/.claude/roles/dev.md` и `<cwd>/.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.
|