task-pipeline переписан в resolve: два плановых стопа
Автоматическое решение задач агентом работает плохо, и хуже того — в процессе перестаёт ориентироваться автор. В цикл возвращается человек, но не согласованием на каждом шаге: доктрина «делать, а не спрашивать» не отменена, а ограничена местом. Развилка до ближайшего чекпоинта копится в него, после последнего — уходит вопросом в запись. Чекпоинтов два. «Варианты» — у исследовательской задачи, до первого требования: 2-4 способа с ценой каждого и рекомендацией, выбор оседает по адресу, который назвала сама запись. «Объяснение» — у всякой, после ревью дизайна: человек читает просеянное машиной. Объяснение не завело своего артефакта — оно собирается из proposal.md и design.md, а требование к их форме уехало в openspec/config.yaml (rules.proposal, rules.design), то есть применяется в момент написания. Отдельный раздел был бы третьим домом одного объяснения. Закрыт открытый вопрос: находка ревью, меняющая дельта-спеки, отменяет одобрение — разметка пересчитывается, чекпоинт повторяется.
This commit is contained in:
@@ -57,6 +57,10 @@ context: |
|
||||
rules:
|
||||
proposal:
|
||||
- Capabilities называй по поведению или домену системы, не по пакету кода
|
||||
- "Why и What Changes — языком домена из docs/passport.md: без SHALL, без имён модулей и функций там, где вещь называется по-русски"
|
||||
design:
|
||||
- "Назови рассмотренные варианты и причину отказа от каждого — из них потом пишется ADR"
|
||||
- "Решение объясняется через то, что человек увидит иначе, а не через устройство кода"
|
||||
specs:
|
||||
# Кавычки обязательны: без них YAML обрежет строку на первом '#'.
|
||||
- "Каждое ### Requirement обязано содержать SHALL или MUST (иначе валидация падает)"
|
||||
@@ -67,7 +71,15 @@ rules:
|
||||
|
||||
**Четыре правила для `specs` сняты отказами валидатора, а не выведены из
|
||||
документации** — потому и записаны дословно: без них каждое второе предложение
|
||||
узнаёт их падением `openspec validate --strict`. Блок `context` проект
|
||||
узнаёт их падением `openspec validate --strict`.
|
||||
|
||||
**Правила для `proposal` и `design` держат чекпоинт скилла
|
||||
`av-dev-pipeline:resolve`.** Там работа останавливается и человеку объясняют, в
|
||||
чём проблема и как её решают, — а объяснение **собирается из этих двух
|
||||
артефактов**, а не сочиняется заново: третий пересказ одного и того же разошёлся
|
||||
бы с обоими. Требование поэтому стоит здесь, в момент порождения артефакта, а не
|
||||
в скилле, который спохватится позже. `design.md` при этом ещё и **сырьё для
|
||||
ADR** — отвергнутый вариант с названной причиной и есть половина будущей записи. Блок `context` проект
|
||||
дополняет своим (стек, разведка, особенности домена), но **адреса паспорта и
|
||||
`CLAUDE.md` обязательны** — отсутствие адреса к существующему документу
|
||||
`openspec.py check` называет отказом.
|
||||
|
||||
Reference in New Issue
Block a user