DECISIONS 17 и TODO: итоги разбора заметок

Тема 17, решения HHH–QQQ и следствия 68–71. Отдельной строкой — что версию
канона 3 занял роадмап с родом работы, поэтому отложенное решение темы 16
(каталог вместо файла в docs/) вводится версией 4; поправлено в обоих
местах.

TODO раздел 6: повышение healthlog и jellybit до канона 3. Оба стоят на
версии 2 с живым PLAN.md — 55 и 43 задачи, — так что переименование это не
свободная правка, а миграция по журналу версий. Род работы и «Затрагивает»
там проставляются не задним числом: сперва то, что идёт в ближайший набор,
остальное по ходу переоценки.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
av
2026-08-04 16:49:58 +03:00
co-authored by Claude Opus 5
parent b99c0c2366
commit 69f67c20aa
2 changed files with 110 additions and 4 deletions
+93
View File
@@ -1152,3 +1152,96 @@ HTML-комментарии, невидимые в отрендеренном ma
67. **Материал для решения даёт `healthlog`, а не `jellybit`.** У второго 169
строк архитектуры — там вопрос не стоит вовсе, и принимать по нему решение
значит принимать его без предмета.
## 17. Разбор заметок: ступень ревью, род работы, роадмап (2026-08-04)
### Что было
Семь заметок из `NOTES.md`, накопленных по ходу работы: переименование
`PLAN.md`, тип у каждой задачи, цвета сабагентов по модели, кавычки во
фронтматтерах, уровни ревью для проекта, задачи в терминах функций и границ,
язык задач без англицизмов. Разного размера и из разных мест, но три из них
оказались об одном — **о том, можно ли оценить задачу, не открывая код**.
### Решено
**HHH. Цвет charter'а кодирует модель, а не роль прохода.** Раскладка
`sonnet` → green, `opus` → yellow, `fable` → red. Роль прохода видна из имени, а
стоимость прогона — ниоткуда; цвет, розданный по ролям, не отвечает ни на один
вопрос, который задают во время прогона. Дом раскладки — таблица «Модель по
проходу» в `review-pipeline/SKILL.md`.
**III. Фронтматтеры проверяются машиной, а не вниманием.** Три описания из
четырнадцати содержали `: ` в незакавыченном значении — для YAML это вложенное
отображение, то есть синтаксическая ошибка, которую **нельзя увидеть чтением**:
текст читается правильно. Тот же класс, что у mermaid-диаграмм, и лечится тем же
способом — `scripts/frontmatter.py`. Он же держит раскладку цветов (HHH) и
сверку `name` с именем каталога.
**JJJ. Между `standard` и `deep` заведена ступень `wide`.** Прыжок стоил самого
дорогого прохода конвейера, а платить приходилось за одну архитектурную находку:
изменений, которые трогают публичный контракт, но не вводят нового правила
слияния, — большинство. `wide` — это `standard` плюс `architecture` (вход шире
диффа, отсюда имя), семь проходов против восьми у `deep`.
**KKK. Триггер независимой реализации стал триггером профиля.** Раньше условие
«изменение вводит новое правило идентичности, слияния или разбора» стояло
**внутри** `deep`, и профиль означал то семь проходов, то восемь. Реестр состава,
который «сверяется взглядом до коммита», проверять было нечем: у профиля не было
одного правильного ответа. Теперь условие выбирает профиль, а `reimpl` в `deep`
безусловен — и он единственное, чем `deep` отличается от `wide`.
**LLL. Барьер стоимости остался только в `deep`.** В `wide` за ним стоял бы один
дешёвый проход с потолком в 3 находки, а барьер не бесплатен — он сериализует то,
что могло идти разом. Вторая причина помельче: барьер спрашивает «выживает ли
форма изменения», а `architecture` — как раз тот, кто на этот вопрос отвечает.
**MMM. Род работы — вторая ось типа, и живёт тегом.** Тип записи
(`goal`/`idea`/`epic`/`task`) отвечает «что это за запись», род
(`feature`/`fix`/`chore`/`research`) — «какого рода работа». В один префикс их не
свести: идея бывает *про* функцию, эпик функцией *и является*. Дом — тег
`kind:<род>`, потому что теги здесь и есть единственный механизм разметки, а
`list --kind` работает даром. Принятая цена: в строку индекса род не попадает
(индексы производны), и состав набора по роду виден командой, а не глазами.
Словарь **закрыт** — открытый разъехался бы на синонимах `bug`/`bugfix`/`fix`.
**NNN. У `chore` тест готовности ослаблен честно.** Вопрос «что станет наблюдаемо
иначе» для обслуживания отвечается разработчику, а не пользователю. Пока рода не
было, такие задачи либо не заводились, либо придумывали себе пользовательскую
пользу — и это второе хуже: оно проходит проверку.
**OOO. Задача называет границы, а не намерения.** Раздел «Затрагивает» —
эндпоинт, таблица и миграция, формат на диске, публичный тип пакета. Без него
задача оценивается по объёму текста, а не по объёму поверхности, и оценка
систематически занижена ровно там, где текст короткий, а границ много. Механизм
проверяет **наличие** непустого раздела: полноту перечня машина не видит, и
делать вид, что видит, хуже, чем не проверять.
**PPP. Род и границы требуются к взятию в спринт, а не к заведению.** Тот же
приём, что уже работает для критериев приёмки, и по той же причине: беклог
пополняется чаще, чем разбирается, а требование на входе выгоняет в заметки то,
что должно лежать задачей. `check` о пропаже напоминает замечанием — иначе два
живых проекта покраснели бы на 98 задачах, заведённых до этого решения.
**QQQ. `PLAN.md` → `ROADMAP.md`, вместе с ключом конфига и токенами команд.**
Слово «план» в репозитории значит три разных вещи — оглавление целей, план
реализации внутри задачи и `PLAN.json` разовой адаптации. Переименовано всё:
`tasks.plan` → `tasks.roadmap`, `--index plan` → `--index roadmap`,
`--plan-sections` → `--roadmap-sections`. Старый ключ в `docs/.pm.json` не
игнорируется молча — скрипт останавливается и называет переименование.
### Что из этого следует
68. **Версия канона 3 занята этим изменением.** Отложенное решение темы 16
(каталог вместо файла в `docs/`) вводится теперь версией **4**, а не 3.
69. **Род работы ничего не предписывает конвейеру.** Профиль ревью выбирается по
факту изменения: `chore` бывает миграцией схемы, `fix` — правкой публичного
контракта. Правило «предписание процесса в теле задачи снимается» родом не
отменяется, а подтверждается.
70. **Проверка фронтматтеров — третья проверка репозитория того же класса.**
Копии, диаграммы, фронтматтеры: всё это ошибки, невидимые при чтении. Класс
опознаётся по признаку «диff выглядит разумно, а результат ломается», и
каждый его представитель получает скрипт, а не пункт чек-листа.
71. **Ступеней профиля четыре, и правило выбора читается сверху вниз.** Первое
сработавшее условие и есть ответ: правило слияния → `deep`, контракт или
схема → `wide`, видимое снаружи поведение → `standard`, иначе `quick`.
+17 -4
View File
@@ -116,12 +116,13 @@
- [ ] `canon adopt`; `docs/backlog/``docs/tasks/`
- [ ] `architecture.md` 1662 строки → обзор, остаток маркерами (W)
- [ ] после выноса поведения — замерить остаток `architecture.md` и решить по
каталожной форме: жмёт → канон версии 3 для `architecture.md` и
`review.md`, точка входа `README.md` (тема 16, GGG, 65)
каталожной форме: жмёт → канон версии **4** для `architecture.md` и
`review.md`, точка входа `README.md` (тема 16, GGG, 65; версию 3 занял
роадмап с родом работы, тема 17, 68)
- [ ] завести `security.md` с периметром первой строкой (J)
- [ ] `review-journal.md``review.md` + настройка конвейера (K, L)
- [ ] `conventions.md``conventions/`, `local-research.md``research/` (G)
- [ ] `plan.md``docs/tasks/PLAN.md` (E)
- [ ] `plan.md``docs/tasks/ROADMAP.md` (E)
- [ ] завести `docs/adr/`
- [ ] `CLAUDE.md`: severity инвариантов, семантика гейта, убрать раздел
«Процесс» (M, N)
@@ -149,8 +150,20 @@
- [ ] `docs/specs/architecture.md``docs/architecture.md`, `database.md`
`docs/database.md`, `jellyfin-layout.md``docs/research/`
- [ ] `docs/review/journal.md``docs/review.md`
- [ ] `drafts/` растворить: roadmap → `PLAN.md`, conventions-backlog → задачи
- [ ] `drafts/` растворить: roadmap → `ROADMAP.md`, conventions-backlog → задачи
`[idea]`, logical-title-model → ADR (H)
- [ ] `docs/backlog/``docs/tasks/`
- [ ] удалить проектные копии скиллов и агентов (4 из REMAINING)
- [ ] `av-dev-backlog` удалить из маркетплейса
## 6. Канон версии 3 — повысить живые проекты (тема 17)
Оба проекта стоят на каноне 2 и держат `docs/tasks/PLAN.md`: healthlog 55 задач,
jellybit 43. Шаги повышения — [changelog.md](av-dev-pm/skills/canon/references/changelog.md),
запись «Версия 3»; делаются скиллом `av-dev-pm:canon` в режиме `upgrade`.
- [ ] healthlog: `PLAN.md``ROADMAP.md`, ссылки, `"canon": 3`
- [ ] jellybit: то же
- [ ] род работы и раздел «Затрагивает» — **не задним числом**: сперва то, что
идёт в ближайший набор (`sprint take` без них откажет), остальное по ходу
переоценки (PPP)