Пара плагинов с намеренно проведённой границей: av-dev-tasks отвечает за то, что делаем и в каком порядке, av-dev-pipeline — за то, как ведём одну задачу. Зависимости между ними нет: управление задачами работает и с ручным исполнением, пайплайн — на проекте с любым учётом задач. - av-dev-tasks — преемник av-dev-backlog: цели вместо приоритетов, спринт под одну цель с заморозкой набора, различение вопроса и блокера, каденция «вопросы — разбор — переоценка — набор». Раскладка docs/tasks с items/, PLAN.md, BACKLOG.md, SPRINT.md, REJECTED.md; проверенное из av-dev-backlog перенесено, не переписано. - av-dev-pipeline — вынос того, что лежало копиями в healthlog и jellybit (3628 строк) и уже разошлось: цикл SDD, конвейер ревью с обязательным триажем, прогон нескольких задач разом. Проектная специфика вынесена в файл-бриф, charter'ы несут метод. Коммит фиксирует состояние на момент ревью: три прохода нашли блокирующие дефекты (нет шага, заводящего бриф; git rebase на занятой worktree ветке; sprint drop пишет наполовину) — они чинятся следующими коммитами. Сохранено как база, от которой видно правки.
63 lines
4.7 KiB
Markdown
63 lines
4.7 KiB
Markdown
# Журнал проскочивших дефектов
|
||
|
||
Артефакт проекта, а не плагина: файл живёт в репозитории (путь — в разделе
|
||
`## Карта` брифа, по умолчанию `docs/review-journal.md`). Здесь описано, зачем он
|
||
и какой формы, потому что без него конвейер не учится: находки закрываются,
|
||
причины непоймания теряются, и один и тот же класс проскакивает второй раз.
|
||
|
||
## Что туда попадает
|
||
|
||
Дефект, который **прошёл ревью и всплыл позже**. Записывается **сразу**, а не
|
||
ретроспективно: со временем теряется не сам факт, а причина непоймания —
|
||
единственное, ради чего журнал существует.
|
||
|
||
Реализованные задачи, находки ревью и принятые решения сюда не пишутся: у них
|
||
есть коммит, спека и задача. Здесь только промахи конвейера.
|
||
|
||
Отдельно сюда попадают **решения о составе прогонов**: перестали звать проход,
|
||
понизили профиль правилом, сузили класс проверяемого. Не потому, что это промах,
|
||
а потому, что здесь лежит цена: если что-то теперь проскочит, первый вопрос —
|
||
«не тот ли это класс, который мы перестали проверять».
|
||
|
||
## Форма записи
|
||
|
||
```
|
||
## ГГГГ-ММ-ДД — <краткое последствие>
|
||
|
||
- **Где:** путь:строка либо «конвейер, а не код»
|
||
- **Симптом:** как обнаружилось, кем и когда
|
||
- **Причина:** что на самом деле было не так
|
||
- **Почему не поймали:** какой проход обязан был найти и что ему помешало
|
||
- **Что меняем:** правило прохода, шаг гейта, конвенция, пункт брифа — либо
|
||
«ничего, цена поимки выше цены дефекта»
|
||
```
|
||
|
||
Последний пункт важнее остальных. Вывод «ничего не меняем» — законный исход: не
|
||
всякий дефект стоит того, чтобы усложнять ради него ревью каждой задачи.
|
||
|
||
## Куда ведёт запись
|
||
|
||
Три адреса, и выбор между ними — половина ценности журнала:
|
||
|
||
- **в бриф проекта** — если проход не мог знать факта: объём, характер потока,
|
||
что здесь необратимо, какой шаг гейта красит безусловно. Самый частый адрес и
|
||
самый дешёвый.
|
||
- **в конвенции или в правило линтера** — если свойство выражается
|
||
детерминированно (процедура — [promote.md](promote.md)).
|
||
- **в charter прохода** — если сломан **метод**, а не знание. Правка charter'а
|
||
меняет поведение во всех проектах, поэтому она требует калибровки
|
||
([calibration.md](calibration.md)) и обоснования, почему это не лечится
|
||
брифом.
|
||
|
||
## Что журнал даёт конвейеру
|
||
|
||
- **пробы для калибровки** — реальный проскочивший дефект сильнее синтетического:
|
||
синтетические смещены в сторону тех, которые уже умеешь придумывать;
|
||
- **основание для правил конвейера** — требование называть запущенные проходы
|
||
поимённо, отказ от чисел, производных от размера корпуса, и правило
|
||
последовательного прогона выведены из конкретных записей, а не из общих
|
||
соображений;
|
||
- **счётчик обратимости решений** — сузили состав проходов и через месяц поймали
|
||
дефект ровно того класса, который перестали проверять: решение пересматривается
|
||
фактом, а не спором.
|