- DECISIONS.md (4040 строк, 65 тем) → decisions/, файл на тему плюс указатель; - буквенные метки решений заменены сквозными Р1–Р234, следствия получили префикс С при прежних номерах: схема букв выродилась до пятибуквенных и сломалась — `АЕАКЛ` была занята и темой 53, и темой 65; - 42 перекрёстные ссылки переписаны под новые номера и стали живыми; где номер означал тему, а слово стояло «решение», формулировка исправлена.
116 lines
9.3 KiB
Markdown
116 lines
9.3 KiB
Markdown
# 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`.
|