Восемнадцать веток «плагина нет» описывали недостижимое: скиллы и агенты теперь в одном плагине и разрешаются всегда. Где предмет всё же может отсутствовать — ветка переписана на след в проекте (нет docs/, нет каталога задач, нет openspec/); где отсутствовать нечему — снята. Туда же анонсы, обещавшие ветку, которой в разделе больше нет. Правило копий и его применение разъезжались в одном коммите: правило называло два законных случая, а absence.md разослан семью копиями по SKILL.md. Назван третий случай, и разрез проверяемый — файл, который модель получает целиком, против файла, за которым она идёт отдельным чтением. Заодно сняты объявления копий там, где копию сменила ссылка, и довод у карты домов в doc-consistency: он ссылался на отсутствие плагина, хотя устав едет вместе с плагином. Описания скиллов во фронтматтерах звали снятые короткие имена — по ним скилл не находится. task-track перестал обещать повышение: версию двигает doc-canon. Язык: сняты кросс-вызов, опцион и деградация, конверсия и «читатель» в config.py, charter'ы против уставов, замер против подсчёта, страдательный залог в журнале. Строка «настройки av-dev» в таблице отсутствия — слово «раскладка» называло и целое, и его часть. Мелкое: тема 52 в README была 64, транслит в task-wording машина не проверяет, мёртвая ветка REQUIRED в addresses.py, ссылки на язык в закрытом журнале.
6.4 KiB
🧹 chore — обслуживание, наблюдаемое поведение не меняется
Зависимости, сборка, перенос, чистка, оснастка. Отвечает на «что нужно сделать», глаголом в неопределённой форме.
Общая форма записи (мета, слаг, строка индекса) — task-format.md. Здесь только то, что у этого типа своё.
Схема
| Заголовок отвечает на | что нужно сделать |
| Обязательные разделы | Затрагивает, Критерии приёмки |
| Допустимые сверх того | Рамки, Вопросы |
| Поле места | Категория — полка домена беклога |
Цель (goal:<слаг>) |
нет: цель — это возможность, а здесь её не появляется |
| Индекс | BACKLOG.md |
| Берётся в работу | да |
Адресат — разработчик, и это законно
Тест готовности спрашивает «что станет наблюдаемо иначе». У chore ответ
адресован разработчику, а не пользователю: «перестанет собираться два раза»,
«уедет последний вызов устаревшего API», «проверки гоняются одной командой».
Это ответ, а не отговорка.
У chore тест готовности слабее честно, а не молча. Пока типа не было,
такие задачи либо не заводились вовсе, либо формулировались как выдуманная
пользовательская польза — и то и другое хуже, чем сказать прямо, для кого работа.
Отсюда же граница: если после задачи меняется то, что видит пользователь, — это
не chore. Тип, оставшийся от первой формулировки, врёт ровно там, где по нему
отбирают.
Обнаружилось это уже в работе — запись переформулируется, а не дорешивается.
Исполнитель останавливается, называет тип, которым задача оказалась (fix —
поведение расходится с заявленным, feature — снаружи появляется то, чего не
было), и человек решает: сменить тип и решать процессом того типа — либо
прекратить. Тип меняет этот скилл, а не исполнитель по ходу: у нового типа своя
схема разделов, и ready проверит её заново.
Алгоритм
- Проверить, что поведение не меняется. Меняется — это
featureилиfix, и у неё другие требования (цель, воспроизведение). - Назвать, что перестанет мешать — одной фразой, адресуясь разработчику. «Прибраться в модуле X» — не ответ: непонятно, что изменится.
- Назвать границы в
Затрагивает. У обслуживания они часто не в коде: конфиг и его образцы, версия зависимости, команда сборки, файл CI. Границей считается то, у чего есть внешняя сторона и цена изменения. - Написать критерии приёмки — 2–5 утверждений с оракулами. У
choreоракул обычно самый дешёвый из всех типов: команда, которая раньше падала или требовала трёх шагов, теперь отрабатывает одним. - Проверить, что это не «заодно». Обслуживание любит склеиваться в пачку («обновить зависимости и переписать сборку и убрать мёртвый код»). Не мерджится порознь — это несколько задач (split.md).
- Цель не проставлять.
choreслужит работоспособности, а не направлению. Работа по сопровождению проекта при этом видна в роадмапе — секциейСопровождение, но целью не становится.
Кто такую задачу решает
Решает её конвейер проекта — скилл av-dev:code-resolve,
сценарий обслуживания: он не заводит change и не пишет требований, потому что
у работы, не меняющей поведения, дельта-спек нет по построению. Тип записи там
только предлагает сценарий, а подтверждает его отсутствие дельт: разошлись —
работа останавливается, и это тот самый случай, когда тип, оставшийся от первой
формулировки, врёт. Задачу ведут не этим процессом — она решается как проект
привык, а этот скилл её только заводит и закрывает.
Что видит машина, а что человек
ready смотрит на наличие непустого Затрагивает и на
число критериев — ровно то же, что у feature. Разница между типами здесь не
в строгости проверки, а в том, кому адресован ответ на «что станет
наблюдаемо иначе», — и это судит человек.