docs(openspec): dsh-prestep — префикс инъекций [dsh-harness] (D-10, DSH-автономность)

This commit is contained in:
Andrey Epifancev 2026-10-25 10:31:16 +04:00
parent 459bd400c9
commit c856af4ceb
2 changed files with 5 additions and 4 deletions

View File

@ -26,7 +26,7 @@ bootstrap).
секция `## OpenSpec и superpowers` в `CLAUDE.md`. Всё на месте —
молчим. Вне git-репозитория (`.git` не найден до корня) — пропуск.
Чего-то нет — неблокирующая инъекция:
«[claude-harness] Проект <root> не подключён к обвязке: нет: … .
«[dsh-harness] Проект <root> не подключён к обвязке: нет: … .
Предложи владельцу настройку: `openspec init --tools agents`,
`codegraph init` и секцию «OpenSpec и superpowers» в CLAUDE.md.»
(DSH-нативный текст: без `~/.claude`-путей и adopt-скрипта CC — их
@ -38,7 +38,7 @@ bootstrap).
- Триггер: **новое** пользовательское сообщение текущего pre-step
(`decision.messages`), source.kind === 'user', И текст не начинается с
`<!-- DSH-HARNESS-` и не содержит `[claude-harness]` (фильтр собственных
`<!-- DSH-HARNESS-` и не содержит `[dsh-harness]` (фильтр собственных
инъекций — bootstrap/harness-check не считаются «первым сообщением»).
Нет такого — инъекции нет (в т.ч. автономные раунды без нового
сообщения).
@ -48,7 +48,7 @@ bootstrap).
- qa: `стенд`, `прогон`, `скриншот`, `макет`;
- analyst: `тз`, `oq`, `спека`, `методика`;
- dev: `срез`, `issue`, `pr`, `тест`, `миграция`.
Совпадение — инъекция `[claude-harness] Роль сессии: <r>. Вызови
Совпадение — инъекция `[dsh-harness] Роль сессии: <r>. Вызови
skill role. Если не так — скажи.` Нет — инъекция вопроса (текст сочинён
здесь, в репо его не было): «Роль сессии неясна. Вызови skill role:
dev — код, issue, PR, тест, миграция; admin — Jira, Гант, спринт;
@ -70,6 +70,7 @@ bootstrap).
| D-7 | Текст вопроса с четырьмя вариантами сочинён в этом дизайне (в репо его не было) | Builder-check подтвердил отсутствие | Нет |
| D-8 | T3.4: в sdd-скилле предложения про TDD-порядок нет — текст добавляется с нуля (пин в тесте), а не «усиливается» | Факт builder-check | Нет |
| D-9 | DSH-автономность (замечание владельца 25.10): в текстах и сигналах дизайна нет CC-артефактов — ни `~/.claude`-путей, ни `adopt-project.sh`, ни `.claude/code-paths`; CC-хуки harness-check.sh/role-hint.sh живут только для CC-сессий; DSH-порт adopt-скрипта — отдельная фича (non-goal этого change) | Порт должен жить самостоятельно; CC-сторона — параллельный мир | Подключение проекта в DSH остаётся ручным до порта adopt-скрипта — инъекция даёт точный список шагов |
| D-10 | Префикс DSH-инъекций — `[dsh-harness]` (не `[claude-harness]`); фильтр собственных сообщений — по нему и по `<!-- DSH-HARNESS-` | Имя бандла — dsh-harness; старый префикс — след CC-происхождения | Установленный AGENTS.md пока содержит `[claude-harness]` — фильтр учитывает оба префикса до обновления install.sh |
## Тесты (идеи для плана)

View File

@ -25,7 +25,7 @@ AGENTS.md). Плюс три мелких follow-ups из #42 (#62: T2.1 — PATH
2. **role-hint как pre-step**: на первом пользовательском сообщении —
ключевые слова из AGENTS.md (Jira/Гант/спринт → admin; стенд/прогон/
скриншот/макет → qa; ТЗ/OQ/спека/методика → analyst; срез/issue/PR/
тест/миграция → dev) → инъекция `[claude-harness] Роль сессии: <r>` с
тест/миграция → dev) → инъекция `[dsh-harness] Роль сессии: <r>` с
указанием вызвать `skill role`; нет совпадения — инъекция вопроса с
четырьмя вариантами. Один раз за сессию. Конфиг `roleHint: true`.
Заголовка сессии в DSH нет — сигнал берём из первого сообщения