# 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//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`.