Механизм расстановки приоритета не запускался ни разу: --section у move был обязательным, а все три места, где груминг его предписывает, дают команду без него — usage error. Чиню скриптом, а не текстами: перестановка внутри секции — самая частая операция груминга, и требовать повторить текущую секцию значит приглашать указать не ту. - move: --section необязателен, без него берётся секция из индекса; сообщение различает перестановку и перенос - докстринги, отрицавшие правило 4 («в беклоге порядок значения не имеет»), приведены к действительности - reopen ставил возвращённую строку после сырья и давал ошибку check на ровном месте - edit портил написание секции в мете; корень шире — брался нижний регистр из разбора, а не написание заголовка. То же в close и reopen - дыра гейта: между заведением и ready запись не судил никто. Своя строка здоровья check, отдельная от «готово к взятию» — она про другое - шесть файлов и два устава обещали, что схему типа проверяет check - раздел from-review о серьёзности стоял на «приоритетов нет» - остатки спринта и сессии в семи местах, включая description агента формы - индексов два, а не три; два определения порога готовности после adopt Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
5.5 KiB
✨ feature — снаружи появляется то, чего не было
Задача, после которой наблюдаемое поведение меняется в сторону новой возможности. Отвечает на «что нужно сделать» и пишется глаголом в неопределённой форме.
Общая форма записи (мета, слаг, строка индекса) — task-format.md. Здесь только то, что у этого типа своё.
Схема
| Заголовок отвечает на | что нужно сделать («Печатать поле одним куском кода») |
| Обязательные разделы | Затрагивает, Критерии приёмки |
| Допустимые сверх того | Рамки, Вопросы |
| Поле места | Категория — полка домена беклога |
Цель (goal:<слаг>) |
обязательна |
| Индекс | BACKLOG.md |
| Берётся в работу | да |
Цель обязательна, и это единственный тип, у которого так. Новая возможность
и есть содержание цели: подходящей нет — либо она заводится, либо перед тобой не
feature. ready без цели откажет.
Алгоритм
- Найти цель или завести её. Задача без цели, названная функцией, — самый частый способ пронести в беклог работу, которой никто не заказывал.
- Назвать границы в разделе
Затрагивает: эндпоинт или команда, таблица и миграция, формат на диске, публичный тип пакета, внешний сервис. Названы границы, а не замысел: «переписать хранилище на новый драйвер» — замысел,таблица points и её миграция— граница. Проверяется вопросом «это можно назвать до того, как решено как делать?». - Написать критерии приёмки — 2–5 проверяемых утверждений списком, у каждого назван оракул. Не «работает корректно», а «повторный прогон даёт тот же отпечаток — оракул: команда сверки».
- Сказать, какую строку «Завершения» цели задача двигает. Одной строкой в теле. Это защита от задачи «отрефакторить X»: она проваливается не потому, что невидима снаружи, а потому, что не находит строки, к которой относится.
- Проверить, что задача одна. Отвечается всё, но задача не делается одним заходом и не мерджится целиком — это несколько задач под одной целью, дроби сразу (split.md). Промежуточного зонтика между целью и задачей нет.
- Реализация — дело пайплайна проекта, не этого скилла. Закрывается
close <слаг> --implemented: файл и строка удаляются, суть переезжает вopenspec/specs/и документацию.
Что видит машина, а что человек
Схему типа судит ready на входе в работу: наличие непустого раздела
Затрагивает, число критериев (меньше двух — отказ, больше пяти —
замечание) и цель. Наличие оракула проверяется эвристикой — словом «оракул»
в пункте. check этого поимённо не говорит, а считает строкой здоровья
(SKILL.md, «Что механизировано, а что нет»).
Полнота перечня границ машине не видна: границу, которую забыли назвать, она от отсутствующей не отличает. Настоящий оракул от слова «оракул» тоже не отличает. Поэтому в докладе это называется как есть: «проверено число пунктов и наличие границ, годность оракулов и полнота границ — глазами».
Критерии — пол, но расхождение с ними есть дефект критериев. Видишь, что критерии закрыты, а суть задачи не достигнута — правь критерии и возвращай задачу, а не держи невидимое сверх-требование: иначе исполнитель никогда не знает, закончил ли, и мотивирован занижать критерии заранее.