docs(openspec): dsh-prestep — builder-check отчёт, адьюдикации в дизайне (#43)
This commit is contained in:
parent
0d5d621fdc
commit
5f2a914de0
19
openspec/changes/dsh-prestep/builder-check.md
Normal file
19
openspec/changes/dsh-prestep/builder-check.md
Normal file
@ -0,0 +1,19 @@
|
||||
# Builder-check: dsh-prestep
|
||||
|
||||
Дата: 25.10.2026. Свежий субагент (v4-pro). Три вопроса — все адьюдицированы
|
||||
контроллером в design.md:
|
||||
|
||||
1. Триггер role-hint видит собственные инъекции (bootstrap/harness-check —
|
||||
user-source сообщения) → добавлен фильтр: сообщение не считается первым,
|
||||
если начинается с `<!-- DSH-HARNESS-` или содержит `[claude-harness]`;
|
||||
скан — только новые сообщения текущего pre-step (`decision.messages`).
|
||||
2. harness-check при literal-sessionCwd даёт ложную подсказку в подкаталоге
|
||||
репозитория и вне git → upward-walk до ближайшего `.git`/корня ФС, вне
|
||||
git-репозитория — пропуск (как CC-хук); без spawn git.
|
||||
3. «грант» в admin-ключевиках — опечатка «Гант» → список приведён к
|
||||
AGENTS.md точно (admin: jira, гант, спринт).
|
||||
|
||||
Подтверждено: текста вопроса с четырьмя вариантами в репо нет — сочинён в
|
||||
дизайне (D-7); в sdd-скилле TDD-предложения нет — текст T3.4 добавляется
|
||||
с нуля (D-8); гейт инъекций — прямое `typeof ctx.on` (D-5, selfcheck
|
||||
пропускает bootstrap при config.bootstrap=false).
|
||||
@ -20,29 +20,38 @@ bootstrap).
|
||||
|
||||
### harness-check
|
||||
|
||||
- Сигнал подключения: `CLAUDE.md` или `AGENTS.md` в корне cwd содержит
|
||||
`OpenSpec и superpowers` ИЛИ существует `openspec/` ИЛИ
|
||||
`.claude/code-paths` ИЛИ `CLAUDE.harness-section.md`. Нет — инъекция:
|
||||
- Сигнал подключения: upward-walk от sessionCwd до корня ФС: ближайший
|
||||
каталог с `.git` (или без него до упора) — «корень проекта»; в нём
|
||||
`CLAUDE.md`/`AGENTS.md` содержит `OpenSpec и superpowers` ИЛИ есть
|
||||
`openspec/` ИЛИ `.claude/code-paths` ИЛИ `CLAUDE.harness-section.md`.
|
||||
Вне git-репозитория (`.git` не найден до корня) — пропуск, как у
|
||||
CC-хука (молчит). Нет сигнала — инъекция:
|
||||
«[claude-harness] Проект не подключён к обвязке: предложи владельцу
|
||||
`adopt-project.sh` или спроси, нужна ли обвязка». Не блокирует.
|
||||
- cwd — `sessionCwd` (та же резолюция, что у гейтов: workingDirectory →
|
||||
process.cwd()).
|
||||
- Реализация — fs-чтения (stat/readFile) по путям, без spawn git.
|
||||
|
||||
### role-hint
|
||||
|
||||
- Триггер: первое пользовательское сообщение сессии (в `decision.messages`
|
||||
ищем message с `source.kind === 'user'` и текстом; до первого такого —
|
||||
инъекции нет).
|
||||
- Ключевые слова (порядок приоритета, как в AGENTS.md):
|
||||
- admin: `jira`, `грант`, `гант`, `спринт`;
|
||||
- Триггер: **новое** пользовательское сообщение текущего pre-step
|
||||
(`decision.messages`), source.kind === 'user', И текст не начинается с
|
||||
`<!-- DSH-HARNESS-` и не содержит `[claude-harness]` (фильтр собственных
|
||||
инъекций — bootstrap/harness-check не считаются «первым сообщением»).
|
||||
Нет такого — инъекции нет (в т.ч. автономные раунды без нового
|
||||
сообщения).
|
||||
- Ключевые слова (точно как в AGENTS.md; builder-check нашёл опечатку —
|
||||
«грант» убран):
|
||||
- admin: `jira`, `гант`, `спринт`;
|
||||
- qa: `стенд`, `прогон`, `скриншот`, `макет`;
|
||||
- analyst: `тз`, `oq`, `спека`, `методика`;
|
||||
- dev: `срез`, `issue`, `pr`, `тест`, `миграция`.
|
||||
Совпадение — инъекция `[claude-harness] Роль сессии: <r>. Вызови
|
||||
skill role. Если не так — скажи.` Нет — инъекция вопроса с четырьмя
|
||||
вариантами (текст — как в AGENTS.md).
|
||||
- Матчинг: нижний регистр, подстроки по границам слов (русские слова —
|
||||
подстрока в нижнем регистре; `pr` — только как отдельное слово).
|
||||
skill role. Если не так — скажи.` Нет — инъекция вопроса (текст сочинён
|
||||
здесь, в репо его не было): «Роль сессии неясна. Вызови skill role:
|
||||
dev — код, issue, PR, тест, миграция; admin — Jira, Гант, спринт;
|
||||
analyst — ТЗ, OQ, спека, методика; qa — стенд, прогон, скриншот, макет.
|
||||
Задай владельцу один вопрос с этими четырьмя вариантами.»
|
||||
- Матчинг: нижний регистр; `pr` — только отдельным словом; остальные —
|
||||
подстроки.
|
||||
|
||||
## Decisions made without discussion
|
||||
|
||||
@ -52,7 +61,10 @@ bootstrap).
|
||||
| D-2 | harness-check — только подсказка, без HARNESS_AUTO_ADOPT | YAGNI; авто-подключение — отдельная фича при запросе | Сессия в неподключённом проекте продолжает работу — как и сейчас |
|
||||
| D-3 | Общий хелпер инъекций (рефакторинг bootstrap) без изменения поведения bootstrap | Два новых pre-step не должны дублировать маркер/дедуп | Регрессия bootstrap — страхуется существующими тестами bootstrap |
|
||||
| D-4 | #62-пункты едут задачами этого change (не отдельными фичами) | Мелкие, один PR-цикл дешевле трёх | Смешивание тем в одном PR — компенсируется отдельными задачами плана |
|
||||
| D-5 | Конфиг-ключи harnessCheck/roleHint — по умолчанию true, гейтятся bootstrapOk (нужен ctx.on) | Симметрия с bootstrap; без pre-step обе инъекции невозможны | Нет |
|
||||
| D-5 | Конфиг-ключи harnessCheck/roleHint — по умолчанию true; гейт — прямое `typeof ctx.on === 'function'` (не bootstrapOk: selfcheck пропускает запись bootstrap при config.bootstrap=false, а инъекциям нужен ctx.on независимо от bootstrap) | Симметрия с bootstrap; корректность при выключенном bootstrap | Нет |
|
||||
| D-6 | Маркер инъекций — `<!-- DSH-HARNESS-PRESTEP:<hash> -->` (формат bootstrap, не `<--`); `isBootstrapVisible` → общий `isInjectionVisible` (переименование трогает imports bootstrap.test.mjs — учтено в плане) | Одна машинерия видимости на все инъекции | Регрессия bootstrap — страхуется его тестами |
|
||||
| D-7 | Текст вопроса с четырьмя вариантами сочинён в этом дизайне (в репо его не было) | Builder-check подтвердил отсутствие | Нет |
|
||||
| D-8 | T3.4: в sdd-скилле предложения про TDD-порядок нет — текст добавляется с нуля (пин в тесте), а не «усиливается» | Факт builder-check | Нет |
|
||||
|
||||
## Тесты (идеи для плана)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user