журнал решений: разложен по теме на файл, метки решений стали номерами
- DECISIONS.md (4040 строк, 65 тем) → decisions/, файл на тему плюс указатель; - буквенные метки решений заменены сквозными Р1–Р234, следствия получили префикс С при прежних номерах: схема букв выродилась до пятибуквенных и сломалась — `АЕАКЛ` была занята и темой 53, и темой 65; - 42 перекрёстные ссылки переписаны под новые номера и стали живыми; где номер означал тему, а слово стояло «решение», формулировка исправлена.
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
# 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`.
|
||||
Reference in New Issue
Block a user