docs(openspec): dsh-prestep — DSH-автономность: без CC-путей/adopt-скрипта (D-9, замечание владельца)

This commit is contained in:
Andrey Epifancev 2026-10-25 10:30:44 +04:00
parent fd74570a84
commit 459bd400c9
2 changed files with 23 additions and 15 deletions

View File

@ -11,7 +11,7 @@ CC-хуки harness-check/role-hint — SessionStart; в DSH аналог — и
## Механика ## Механика
Обе инъекции — раз за сессию, с маркером `<-- DSH-HARNESS-PRESTEP:...>` Обе инъекции — раз за сессию, с маркером `<!-- DSH-HARNESS-PRESTEP:<hash> -->`
и тем же механизмом видимости, что у bootstrap (`isBootstrapVisible` и тем же механизмом видимости, что у bootstrap (`isBootstrapVisible`
переименован в общий `isInjectionVisible(agent, messages, marker)`). переименован в общий `isInjectionVisible(agent, messages, marker)`).
Порядок в pre-step: другие инъекции → harness-check → role-hint (обе Порядок в pre-step: другие инъекции → harness-check → role-hint (обе
@ -20,15 +20,18 @@ bootstrap).
### harness-check ### harness-check
- Сигнал подключения (как у CC-хука + DSH-специфичный): upward-walk от - Сигнал подключения (проектные, без CC-артефактов): upward-walk от
sessionCwd до корня ФС: ближайший каталог с `.git` (или без него до sessionCwd до корня ФС: ближайший каталог с `.git` (или без него до
упора) — «корень проекта»; сигналы: `openspec/`, `.codegraph/`, упора) — «корень проекта»; сигналы: `openspec/`, `.codegraph/`,
секция `## OpenSpec и superpowers` в `CLAUDE.md`, DSH-бонус — секция `## OpenSpec и superpowers` в `CLAUDE.md`. Всё на месте —
`.claude/code-paths`. Всё на месте — молчим. Вне git-репозитория молчим. Вне git-репозитория (`.git` не найден до корня) — пропуск.
(`.git` не найден до корня) — пропуск, как у CC-хука. Чего-то нет — Чего-то нет — неблокирующая инъекция:
инъекция с перечнем отсутствующего и командой «[claude-harness] Проект <root> не подключён к обвязке: нет: … .
`bash <harness>/adopt-project.sh <root>` (неблокирующая, в формате Предложи владельцу настройку: `openspec init --tools agents`,
сообщения CC-хука). HARNESS_AUTO_ADOPT — вне скоупа (D-2). `codegraph init` и секцию «OpenSpec и superpowers» в CLAUDE.md.»
(DSH-нативный текст: без `~/.claude`-путей и adopt-скрипта CC — их
порт под DSH — отдельная фича, D-9). HARNESS_AUTO_ADOPT — вне скоупа
(D-2).
- Реализация — fs-чтения (stat/readFile) по путям, без spawn git. - Реализация — fs-чтения (stat/readFile) по путям, без spawn git.
### role-hint ### role-hint
@ -66,6 +69,7 @@ bootstrap).
| D-6 | Маркер инъекций — `<!-- DSH-HARNESS-PRESTEP:<hash> -->` (формат bootstrap, не `<--`); `isBootstrapVisible` → общий `isInjectionVisible` (переименование трогает imports bootstrap.test.mjs — учтено в плане) | Одна машинерия видимости на все инъекции | Регрессия bootstrap — страхуется его тестами | | D-6 | Маркер инъекций — `<!-- DSH-HARNESS-PRESTEP:<hash> -->` (формат bootstrap, не `<--`); `isBootstrapVisible` → общий `isInjectionVisible` (переименование трогает imports bootstrap.test.mjs — учтено в плане) | Одна машинерия видимости на все инъекции | Регрессия bootstrap — страхуется его тестами |
| D-7 | Текст вопроса с четырьмя вариантами сочинён в этом дизайне (в репо его не было) | Builder-check подтвердил отсутствие | Нет | | D-7 | Текст вопроса с четырьмя вариантами сочинён в этом дизайне (в репо его не было) | Builder-check подтвердил отсутствие | Нет |
| D-8 | T3.4: в sdd-скилле предложения про TDD-порядок нет — текст добавляется с нуля (пин в тесте), а не «усиливается» | Факт 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-скрипта — инъекция даёт точный список шагов |
## Тесты (идеи для плана) ## Тесты (идеи для плана)

View File

@ -15,11 +15,13 @@ AGENTS.md). Плюс три мелких follow-ups из #42 (#62: T2.1 — PATH
## What Changes ## What Changes
1. **harness-check как pre-step**: один раз за сессию (маркер-дедуп, как у 1. **harness-check как pre-step**: один раз за сессию (маркер-дедуп, как у
bootstrap) проверяем, что проект подключён (в `CLAUDE.md`/`AGENTS.md` bootstrap) проверяем, что проект подключён (upward-walk до корня
корня cwd есть секция обвязки «OpenSpec и superpowers» или файлы git-проекта; сигналы — `openspec/`, `.codegraph/`, секция «OpenSpec и
`openspec/`/`.claude/code-paths`); нет — неблокирующая инъекция: superpowers» в `CLAUDE.md`); нет — неблокирующая DSH-нативная
«проект не подключён к обвязке; предложи `adopt-project.sh` или спроси инъекция со списком отсутствующего и шагами настройки
владельца». Конфиг `harnessCheck: true`. (`openspec init --tools agents`, `codegraph init`, секция в
`CLAUDE.md`). Без `~/.claude`-путей и CC-adopt-скрипта (D-9).
Конфиг `harnessCheck: true`.
2. **role-hint как pre-step**: на первом пользовательском сообщении — 2. **role-hint как pre-step**: на первом пользовательском сообщении —
ключевые слова из AGENTS.md (Jira/Гант/спринт → admin; стенд/прогон/ ключевые слова из AGENTS.md (Jira/Гант/спринт → admin; стенд/прогон/
скриншот/макет → qa; ТЗ/OQ/спека/методика → analyst; срез/issue/PR/ скриншот/макет → qa; ТЗ/OQ/спека/методика → analyst; срез/issue/PR/
@ -52,8 +54,10 @@ AGENTS.md). Плюс три мелких follow-ups из #42 (#62: T2.1 — PATH
## Non-goals ## Non-goals
HARNESS_AUTO_ADOPT (авто-подключение) — потом, при запросе; портирование HARNESS_AUTO_ADOPT (авто-подключение) — потом, при запросе; порт
`briefing` (#45) — отдельно; анализ заголовка сессии (в DSH его нет). `adopt-project.sh` под DSH — отдельная фича (D-9, замечание владельца о
CC-независимости); портирование `briefing` (#45) — отдельно; анализ
заголовка сессии (в DSH его нет).
## Открытые вопросы ## Открытые вопросы