# 🧹 `chore` — обслуживание, наблюдаемое поведение не меняется Зависимости, сборка, перенос, чистка, оснастка. Отвечает на **«что нужно сделать»**, глаголом в неопределённой форме. Общая форма записи (мета, слаг, строка индекса) — [task-format.md](task-format.md). Здесь только то, что у этого типа своё. ## Схема | | | | --- | --- | | Заголовок отвечает на | что нужно сделать | | Обязательные разделы | `Затрагивает`, `Критерии приёмки` | | Допустимые сверх того | `Рамки`, `Вопросы` | | Поле места | **Категория** — полка домена беклога | | Цель (`goal:<слаг>`) | нет: цель — это возможность, а здесь её не появляется | | Индекс | `BACKLOG.md` → `SPRINT.md` | | Берётся в спринт | да | ## Адресат — разработчик, и это законно Тест готовности спрашивает «что станет наблюдаемо иначе». У `chore` ответ адресован **разработчику**, а не пользователю: «перестанет собираться два раза», «уедет последний вызов устаревшего API», «проверки гоняются одной командой». Это ответ, а не отговорка. **У `chore` тест готовности слабее честно, а не молча.** Пока типа не было, такие задачи либо не заводились вовсе, либо формулировались как выдуманная пользовательская польза — и то и другое хуже, чем сказать прямо, для кого работа. Отсюда же граница: если после задачи меняется то, что видит пользователь, — это не `chore`. Тип, оставшийся от первой формулировки, врёт ровно там, где по нему отбирают. ## Алгоритм 1. **Проверить, что поведение не меняется.** Меняется — это `feature` или `fix`, и у неё другие требования (цель, воспроизведение). 2. **Назвать, что перестанет мешать** — одной фразой, адресуясь разработчику. «Прибраться в модуле X» ответом не является: непонятно, что изменится. 3. **Назвать границы** в `Затрагивает`. У обслуживания они часто не в коде: конфиг и его образцы, версия зависимости, команда сборки, файл CI. Границей считается то, у чего есть внешняя сторона и цена изменения. 4. **Написать критерии приёмки** — 2–5 утверждений с оракулами. У `chore` оракул обычно самый дешёвый из всех типов: команда, которая раньше падала или требовала трёх шагов, теперь отрабатывает одним. 5. **Проверить, что это не «заодно».** Обслуживание любит склеиваться в пачку («обновить зависимости и переписать сборку и убрать мёртвый код»). Не мерджится порознь — это несколько задач ([split.md](split.md)). 6. **Цель не проставлять.** `chore` служит работоспособности, а не направлению, и в набор спринта входит помимо его цели. Работа по сопровождению проекта при этом видна в роадмапе — секцией `Сопровождение`, но целью не становится. ## Что видит машина, а что человек `check` и `sprint take` смотрят на **наличие непустого** `Затрагивает` и на **число** критериев — ровно то же, что у `feature`. Разница между типами здесь не в строгости проверки, а в том, **кому адресован ответ** на «что станет наблюдаемо иначе», — и это судит человек.