слияние: три плагина стали одним av-dev, скиллы получили префиксы
Каталоги, агенты и общие дома переехали в av-dev/; скиллы названы по прежнему плагину — doc-*, task-*, code-*, с двумя смысловыми именами вместо тавтологии: doc-sync вместо docs, task-track вместо tasks. Манифесты сведены к двум плагинам. Пространства имён вызовов и пути внутри дерева переписаны машинно; проза, которая называет прежние плагины отдельными, идёт следующим шагом.
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# 🧹 `chore` — обслуживание, наблюдаемое поведение не меняется
|
||||
|
||||
Зависимости, сборка, перенос, чистка, оснастка. Отвечает на **«что нужно
|
||||
сделать»**, глаголом в неопределённой форме.
|
||||
|
||||
Общая форма записи (мета, слаг, строка индекса) — [task-format.md](task-format.md).
|
||||
Здесь только то, что у этого типа своё.
|
||||
|
||||
## Схема
|
||||
|
||||
| | |
|
||||
| --- | --- |
|
||||
| Заголовок отвечает на | что нужно сделать |
|
||||
| Обязательные разделы | `Затрагивает`, `Критерии приёмки` |
|
||||
| Допустимые сверх того | `Рамки`, `Вопросы` |
|
||||
| Поле места | **Категория** — полка домена беклога |
|
||||
| Цель (`goal:<слаг>`) | нет: цель — это возможность, а здесь её не появляется |
|
||||
| Индекс | `BACKLOG.md` |
|
||||
| Берётся в работу | да |
|
||||
|
||||
## Адресат — разработчик, и это законно
|
||||
|
||||
Тест готовности спрашивает «что станет наблюдаемо иначе». У `chore` ответ
|
||||
адресован **разработчику**, а не пользователю: «перестанет собираться два раза»,
|
||||
«уедет последний вызов устаревшего API», «проверки гоняются одной командой».
|
||||
Это ответ, а не отговорка.
|
||||
|
||||
**У `chore` тест готовности слабее честно, а не молча.** Пока типа не было,
|
||||
такие задачи либо не заводились вовсе, либо формулировались как выдуманная
|
||||
пользовательская польза — и то и другое хуже, чем сказать прямо, для кого работа.
|
||||
|
||||
Отсюда же граница: если после задачи меняется то, что видит пользователь, — это
|
||||
не `chore`. Тип, оставшийся от первой формулировки, врёт ровно там, где по нему
|
||||
отбирают.
|
||||
|
||||
**Обнаружилось это уже в работе — запись переформулируется, а не дорешивается.**
|
||||
Исполнитель останавливается, называет тип, которым задача оказалась (`fix` —
|
||||
поведение расходится с заявленным, `feature` — снаружи появляется то, чего не
|
||||
было), и человек решает: сменить тип и решать процессом того типа — либо
|
||||
прекратить. Тип меняет этот скилл, а не исполнитель по ходу: у нового типа своя
|
||||
схема разделов, и `ready` проверит её заново.
|
||||
|
||||
## Алгоритм
|
||||
|
||||
1. **Проверить, что поведение не меняется.** Меняется — это `feature` или `fix`,
|
||||
и у неё другие требования (цель, воспроизведение).
|
||||
2. **Назвать, что перестанет мешать** — одной фразой, адресуясь разработчику.
|
||||
«Прибраться в модуле X» — не ответ: непонятно, что изменится.
|
||||
3. **Назвать границы** в `Затрагивает`. У обслуживания они часто не в коде:
|
||||
конфиг и его образцы, версия зависимости, команда сборки, файл CI. Границей
|
||||
считается то, у чего есть внешняя сторона и цена изменения.
|
||||
4. **Написать критерии приёмки** — 2–5 утверждений с оракулами. У `chore`
|
||||
оракул обычно самый дешёвый из всех типов: команда, которая раньше падала
|
||||
или требовала трёх шагов, теперь отрабатывает одним.
|
||||
5. **Проверить, что это не «заодно».** Обслуживание любит склеиваться в пачку
|
||||
(«обновить зависимости и переписать сборку и убрать мёртвый код»). Не
|
||||
мерджится порознь — это несколько задач ([split.md](split.md)).
|
||||
6. **Цель не проставлять.** `chore` служит работоспособности, а не направлению.
|
||||
Работа по сопровождению проекта при этом видна в роадмапе — секцией
|
||||
`Сопровождение`, но целью не становится.
|
||||
|
||||
## Кто такую задачу решает
|
||||
|
||||
Решает её конвейер проекта — в плагине `av-dev-code` это скилл `resolve`,
|
||||
**сценарий обслуживания**: он не заводит change и не пишет требований, потому что
|
||||
у работы, не меняющей поведения, дельта-спек нет по построению. Тип записи там
|
||||
только **предлагает** сценарий, а подтверждает его отсутствие дельт: разошлись —
|
||||
работа останавливается, и это тот самый случай, когда тип, оставшийся от первой
|
||||
формулировки, врёт. Плагина нет — задача решается как проект привык, а этот скилл
|
||||
её только заводит и закрывает.
|
||||
|
||||
## Что видит машина, а что человек
|
||||
|
||||
`ready` смотрит на **наличие непустого** `Затрагивает` и на
|
||||
**число** критериев — ровно то же, что у `feature`. Разница между типами здесь не
|
||||
в строгости проверки, а в том, **кому адресован ответ** на «что станет
|
||||
наблюдаемо иначе», — и это судит человек.
|
||||
Reference in New Issue
Block a user