Files
dev-skills/av-dev/skills/task-track/references/task-chore.md
T
av 3849f084be задачи: цель упразднена, у проекта появилась стадия
Тип goal и индекс ROADMAP.md убраны: цель — зонтик над параллельными
направлениями, а у проекта на одного человека список работ линеен. Роадмап
при этом наполовину дублировал беклог, а «что уже умеет» отвечают спеки и
git log индекса. Секция «Готово» удалена, а не перенесена.

Вместо цели — ось «стадия проекта»: build (беклог это план стройки, порядок
строк значит зависимость, секция одна) и support (очередь правок, порядок
значит важность, секции — полки домена). Стадия объявляется ключом
[tasks] stage, меняется командой stage, без неё check отказывает: порядок
строк нечем прочитать.

Ушли теги goal:/decomposed, поле «Секция», раздел «Завершение», флаги
--goal и edit --section. Версия раскладки 2 → 3, перевод проекта расписан
записью журнала.
2026-08-13 14:26:21 +03:00

74 lines
5.9 KiB
Markdown

# 🧹 `chore` — обслуживание, наблюдаемое поведение не меняется
Зависимости, сборка, перенос, чистка, оснастка. Отвечает на **«что нужно
сделать»**, глаголом в неопределённой форме.
Общая форма записи (мета, слаг, строка индекса) — [task-format.md](task-format.md).
Здесь только то, что у этого типа своё.
## Схема
| | |
| --- | --- |
| Заголовок отвечает на | что нужно сделать |
| Обязательные разделы | `Затрагивает`, `Критерии приёмки` |
| Допустимые сверх того | `Рамки`, `Вопросы` |
| Поле места | **Категория** — полка домена беклога |
| Индекс | `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)).
## Кто такую задачу решает
Решает её конвейер проекта — скилл `av-dev:code-resolve`,
**сценарий обслуживания**: он не заводит change и не пишет требований, потому что
у работы, не меняющей поведения, дельта-спек нет по построению. Тип записи там
только **предлагает** сценарий, а подтверждает его отсутствие дельт: разошлись —
работа останавливается, и это тот самый случай, когда тип, оставшийся от первой
формулировки, врёт. Задачу ведут не этим процессом — она решается как проект
привык, а этот скилл её только заводит и закрывает.
## Что видит машина, а что человек
`ready` смотрит на **наличие непустого** `Затрагивает` и на
**число** критериев — ровно то же, что у `feature`. Разница между типами здесь не
в строгости проверки, а в том, **кому адресован ответ** на «что станет
наблюдаемо иначе», — и это судит человек.