Files
dev-skills/decisions/03-review-brief-is-canon.md
T
av bf6a173115 журнал решений: разложен по теме на файл, метки решений стали номерами
- DECISIONS.md (4040 строк, 65 тем) → decisions/, файл на тему плюс указатель;
- буквенные метки решений заменены сквозными Р1–Р234, следствия получили
  префикс С при прежних номерах: схема букв выродилась до пятибуквенных и
  сломалась — `АЕАКЛ` была занята и темой 53, и темой 65;
- 42 перекрёстные ссылки переписаны под новые номера и стали живыми; где номер
  означал тему, а слово стояло «решение», формулировка исправлена.
2026-08-13 12:40:56 +03:00

116 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 3. Брифа ревью нет — бриф это и есть канон (2026-08-03)
## Что было
Контракт брифа — 413 строк, 13 разделов, отдельный файл `docs/review-brief.md`,
который каждый проход читает как истину. Заполнение на обоих проектах дало 841 и
734 строки, и `REMAINING.md` уже отметил, что часть разделов вырождается в
пересказ.
Разбор по разделам после решения [Р6](02-project-doc-canon.md) (жёсткие пути)
показал: **посредник между агентом и файлом не нужен, когда путь известен**.
Восемь из тринадцати разделов дублируют канон или снимаются жёсткими путями.
## Решено
**Р9. Отдельного файла-брифа нет.** Проектную конкретику проходам дают документы
канона напрямую, по жёстким путям. Формулировка владельца: «артефакты в `docs` и
должны стать частями брифа, а для ревью достаточно дать ссылки на эти
артефакты».
*Причина:* один факт — один дом. Бриф был вторым домом для паспорта, инвариантов
и карты, а разошедшийся бриф хуже отсутствующего: он выглядит актуальным.
**Р10. Заводится `docs/security.md`.** Периметр **первой строкой** (целевой и
сегодняшний, если контур не развёрнут), недоверенный вход и его каналы, из чего
строятся пути и ключи, что разграничивает доступ, что чувствительнее чего, что
вне модели. Материал уже есть, но рассыпан: у healthlog — раздел
«Аутентификация» в `architecture.md` и строка про секреты в `CLAUDE.md`, у
jellybit — секреты в `conventions/config.md`. **Периметра нет ни у одного**, а
без него враждебный проход не выбирает между «открыт наружу» и «контур
доверенный».
**Р11. `review-journal.md` → `docs/review.md`:** журнал дефектов плюс настройка
конвейера под проект. Туда садится остаток брифа, который фактом о проекте не
является — типовые узлы, типовые ложноположительные, вопросы к проходам,
недоступно проверке.
*Причина:* все четыре — производные калибровки, и журнал им источник. `##
Вопросы к проходам` сам называет журнал главным источником; `### Перестали
проверять сознательно` требует ссылки на его запись.
**Р12. Журнал расширяется до всех воспроизведённых дефектов** с пометкой
«проскочил / пойман ревью». Проверочный набор для калибровки — выборка по
пометке.
*Причина:* пойманные дефекты с оракулом (768 МиБ пика, 5.019 с удержания
блокировки) сегодня не сохраняются нигде, кроме отчётов триажа в архиве change, а
они и есть лучшая опора для прохода — проектные, воспроизводимые, однажды
оказавшиеся правдой.
**Р13. Семантика гейта — в `CLAUDE.md`, расширением раздела «Команды».** Чем
краснеет безусловно и почему, где логи, что означает исход, чего в гейте
намеренно нет, **кто и когда обязан гонять дорогое вне гейта**, что запускать
запрещено (с путями). Гейт краснеет не только в ревью — это факт о проекте.
**Р14. Severity инвариантов дописывается в `CLAUDE.md`** рядом с формулировкой.
Контракт брифа сам называл это лучшим исходом; жёсткие пути делают возможным.
Оговорка «выведена по обратимости» исчезает вместе с пересказом.
## Канон после темы 3
```
CLAUDE.md что это, стек, инварианты с severity, команды,
семантика гейта, запреты, слоты
docs/
passport.md зачем и для кого; чем НЕ является; сценарии; референсы
architecture.md как сложено — обзор; окружение, внешние зависимости,
наблюдатель, характер потока
database.md схема хранилища; представление данных и настройки
с числовым значением (таймаут занятости, лимит тела,
режим журналирования, ретеншен)
security.md периметр первой строкой; недоверенный вход; из чего
строятся пути и ключи; разграничение; что вне модели
conventions/README.md + <тема>.md
research/README.md + <тема>.md наблюдения и измеренные числа с провенансом
adr/README.md + template.md + ADR-*.md
review.md настройка конвейера под проект + журнал дефектов
tasks/ av-dev-tasks
openspec/
config.yaml, specs/<capability>/spec.md, changes/archive/
```
Слотов **нет** у: `docs/review-brief.md`, `docs/drafts/`, `docs/specs/`,
`docs/plan.md`, `BRIEF.md`, `docs/backlog/`, `docs/review-journal.md`.
## Что из этого следует
**С13. Скилл `project-brief` растворяется.** Заведение недостающих документов
канона — часть скилла старта/адаптации ([тема 5](05-project-start-lifecycle.md),
требование [Т1](README.md)).
**С14. Девять charter'ов переписываются второй раз.** Сейчас каждый читает «из
раздела `## X` брифа»; станет — из файла канона. **Цена названа вслух:** первая
переписка (вынос в плагин) осталась незамеренной — `REMAINING.md`, пункт 1.
Вторая делает замер по четырём реальным находкам healthlog **обязательным, а не
желательным**: два неизмеренных изменения подряд в том самом месте, где
присваивается severity.
**С15. Теряется соседство фактов, и charter обязан сшивать.** Контракт
настаивал, что замер становится находкой только рядом с настройкой: «768 МиБ
пика» — аномалия, лишь если известно, что запись лежит сжатой и распаковывается
целиком; «5.019 с удержания блокировки» — отказ соседа, лишь если известен
таймаут занятости. Теперь это `research/` и `database.md`, и charter'ы `ops`,
`adversary`, `reimpl` обязаны прямо говорить «собери из этих двух», иначе проход
снимет верное число и честно понизит находку до гипотезы.
**С16. Деградация становится поразрядной** — и это лучше прежнего «нет брифа →
деградирует всё». Нет `security.md` — деградирует `adversary`; нет `research/`
числа неизвестны `ops`, `adversary` и `reimpl`; нет `passport.md`
архитектурный проход теряет границу домена. Каждый проход пишет свою строку в
границы покрытия.
**С17. Открытый вопрос из `REMAINING.md` закрыт:** раздел `## Триггеры`
удаляется вместе с брифом. Правило выбора профиля остаётся в скилле конвейера;
проектная конкретизация, если понадобится, — в `docs/review.md`.