Files
dev-skills/av-dev-tasks/skills/tasks/references/task-chore.md
T
av 3653c5cff5 скилл tasks: приоритет стал порядком строк в беклоге
Правило 4 переписано целиком. Было «порядка нет, есть цель», и
обосновано это было тем, что на «что делать дальше» отвечает набор
спринта. Набора нет — вопрос остался, отвечать нечем.

Приоритет — свойство очереди, а не задачи, поэтому его дом индекс: то
же исключение из правила 2, что и «в каком индексе лежит запись».
Положи его в файл числом — два соседних файла смогли бы утверждать одно
место, а строка индекса противоречить обоим. Цель и приоритет —
независимые оси: очередь может идти поперёк целей.

Расстановка — это move --after и move --first, и только они: руками
поправленная строка не оставляет причины.

Место сырья в конце секции из очереди изъято: оно производно от типа и
заполненности, его назначает машина, приоритетом оно не становится.

Схема состояний потеряла SPRINT.md и четыре перехода; шесть уставов
типов, task-format, split, from-review и adopt переведены со «взятия в
спринт» на ready.
2026-08-09 16:36:26 +03:00

4.8 KiB
Raw Blame History

🧹 chore — обслуживание, наблюдаемое поведение не меняется

Зависимости, сборка, перенос, чистка, оснастка. Отвечает на «что нужно сделать», глаголом в неопределённой форме.

Общая форма записи (мета, слаг, строка индекса) — task-format.md. Здесь только то, что у этого типа своё.

Схема

Заголовок отвечает на что нужно сделать
Обязательные разделы Затрагивает, Критерии приёмки
Допустимые сверх того Рамки, Вопросы
Поле места Категория — полка домена беклога
Цель (goal:<слаг>) нет: цель — это возможность, а здесь её не появляется
Индекс BACKLOG.md
Берётся в работу да

Адресат — разработчик, и это законно

Тест готовности спрашивает «что станет наблюдаемо иначе». У chore ответ адресован разработчику, а не пользователю: «перестанет собираться два раза», «уедет последний вызов устаревшего API», «проверки гоняются одной командой». Это ответ, а не отговорка.

У chore тест готовности слабее честно, а не молча. Пока типа не было, такие задачи либо не заводились вовсе, либо формулировались как выдуманная пользовательская польза — и то и другое хуже, чем сказать прямо, для кого работа.

Отсюда же граница: если после задачи меняется то, что видит пользователь, — это не chore. Тип, оставшийся от первой формулировки, врёт ровно там, где по нему отбирают.

Алгоритм

  1. Проверить, что поведение не меняется. Меняется — это feature или fix, и у неё другие требования (цель, воспроизведение).
  2. Назвать, что перестанет мешать — одной фразой, адресуясь разработчику. «Прибраться в модуле X» — не ответ: непонятно, что изменится.
  3. Назвать границы в Затрагивает. У обслуживания они часто не в коде: конфиг и его образцы, версия зависимости, команда сборки, файл CI. Границей считается то, у чего есть внешняя сторона и цена изменения.
  4. Написать критерии приёмки — 2–5 утверждений с оракулами. У chore оракул обычно самый дешёвый из всех типов: команда, которая раньше падала или требовала трёх шагов, теперь отрабатывает одним.
  5. Проверить, что это не «заодно». Обслуживание любит склеиваться в пачку («обновить зависимости и переписать сборку и убрать мёртвый код»). Не мерджится порознь — это несколько задач (split.md).
  6. Цель не проставлять. chore служит работоспособности, а не направлению, работоспособности, а не направлению. Работа по сопровождению проекта при этом видна в роадмапе — секцией Сопровождение, но целью не становится.

Что видит машина, а что человек

check и ready смотрят на наличие непустого Затрагивает и на число критериев — ровно то же, что у feature. Разница между типами здесь не в строгости проверки, а в том, кому адресован ответ на «что станет наблюдаемо иначе», — и это судит человек.