приоритет стал исполнимым: move без --section и тексты, догнавшие правило 4
Механизм расстановки приоритета не запускался ни разу: --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>
This commit is contained in:
@@ -94,8 +94,9 @@ python3 $tk adopt apply --plan tasks-adopt-plan.json \
|
||||
быть названо, иначе следующий агент примет пустой беклог за поломку.
|
||||
|
||||
`apply` печатает состояние по факту: сколько задач без цели (это **ошибки**
|
||||
`check`) и сколько без критериев (`check` их ошибкой не считает, но `ready`
|
||||
такую задачу не пропустит). Закрывается это **порциями груминга** — скилл
|
||||
`check`) и сколько не собрало разделы своего типа (для `check` это не ошибка, а
|
||||
строка здоровья, но `ready` такую задачу не пропустит). Закрывается это
|
||||
**порциями груминга** — скилл
|
||||
`groom`, 5–8 задач за порцию: проставить цели, превратить «готово, когда» в
|
||||
критерии с оракулами, вынуть вопросы из прозы в раздел «Вопросы». Там же
|
||||
беклогу впервые назначается **порядок**: после адаптации его нет вовсе, а
|
||||
|
||||
@@ -73,21 +73,31 @@
|
||||
Без него через месяц не отличить проверенную находку от догадки.
|
||||
7. `tasks.py check`.
|
||||
|
||||
## Куда девается серьёзность, если приоритетов нет
|
||||
## Куда девается серьёзность находки
|
||||
|
||||
Приоритетов нет, и отображать серьёзность некуда — но **выкидывать её нельзя**.
|
||||
Правило замены:
|
||||
Уровня серьёзности в записи нет — но **выкидывать её нельзя**: серьёзность
|
||||
отображается **в позицию в очереди**, потому что приоритет и есть порядок строк
|
||||
в беклоге (правило 4 [SKILL.md](../SKILL.md)). Отображается через довод, а не
|
||||
напрямую: своей шкалы у интейка нет, доводы расстановки перечислены в
|
||||
[скилле груминга](../../groom/SKILL.md#приоритет-как-его-расставляют), и
|
||||
серьёзность попадает ровно в один из них.
|
||||
|
||||
- **тяжёлая находка со свидетельством** → задача под ту цель, которой она
|
||||
угрожает, и **кандидат на верх очереди**: серьёзность здесь превращается в
|
||||
довод при расстановке приоритета, а не в уровень в файле. Довод записывается
|
||||
причиной в мете (`--reason`), иначе к моменту груминга его никто не вспомнит.
|
||||
Саму строку интейк ставит в конец секции: очередь назначает человек;
|
||||
- **находка, которая не ждёт груминга вовсе** (необратимый ущерб, сломан общий
|
||||
станок), — не интейк: это работа прямо сейчас, а в беклог она падает, только
|
||||
если ждать всё-таки можно;
|
||||
- **тяжёлая находка со свидетельством о сломанном сейчас** → задача под ту цель,
|
||||
которой она угрожает, и **первой строкой секции**: `move <слаг> --first
|
||||
--reason «сломано сейчас: …»`. Это довод «что сломано сейчас» из перечня
|
||||
груминга — единственный, который не требует сравнения с соседями по очереди,
|
||||
потому что сломанное дорожает само. Позицию всё равно назначает человек, и
|
||||
здесь он её уже назначил: верх очереди для такой находки предъявляется картой
|
||||
шага 5, а не проставляется молча;
|
||||
- **тяжёлая находка о риске, а не о поломке** (дорожает от ожидания,
|
||||
разблокирует остальное) → в конец секции, а довод — причиной в мете
|
||||
(`--reason`). Позицию назначит человек на ближайшем груминге, сравнив её с
|
||||
верхом очереди; без записанного довода сравнивать он будет с нуля;
|
||||
- **находка, которая не ждёт груминга вовсе** (необратимый ущерб, покраснела
|
||||
проверка, которую проект назвал сломанным), — не интейк: это работа прямо
|
||||
сейчас, а в беклог она падает, только если ждать всё-таки можно;
|
||||
- **низкая уверенность или нет свидетельства** → сырьё (`research` с пустым
|
||||
разделом «Вопрос»);
|
||||
разделом «Вопрос»): его место в очереди производно от типа — конец секции;
|
||||
- **мелочь** → строка в пакетный файл;
|
||||
- **уже починено / развилка решена сейчас** → ничего.
|
||||
|
||||
|
||||
@@ -57,9 +57,11 @@
|
||||
`REJECTED.md` здесь — не «выкинули», а именно тот след, что переживает запись:
|
||||
через квартал вопрос «куда делась задача X» отвечается строкой со ссылками на
|
||||
наследников, а не археологией git;
|
||||
- родитель осмыслен как **возможность**, а не как шаг → это цель. Тип на месте
|
||||
не меняется (цель живёт в другом индексе): заводится `--type goal` в `ROADMAP.md`,
|
||||
части получают `--goal <новый слаг>`, родитель закрывается с причиной-ссылкой.
|
||||
- родитель осмыслен как **возможность**, а не как шаг → это цель, и **строка
|
||||
переезжает**: `edit <slug> --type goal --section <часть роадмапа>` снимает её с
|
||||
`BACKLOG.md` и вставляет в `ROADMAP.md`. Файл в `items/` при этом не двигается —
|
||||
он и есть запись. Части получают `--goal <слаг родителя>`, а закрывать родителя
|
||||
нечем и незачем: он не выкинут, он стал целью.
|
||||
|
||||
**Промежуточного зонтика между целью и задачей нет.** Тип `epic` упразднён:
|
||||
роль зонтика играет цель, а слишком крупный шаг дробится на шаги помельче под
|
||||
@@ -70,7 +72,7 @@
|
||||
|
||||
Задача, которая **оказалась крупнее задачи**, распознаётся до того, как под неё
|
||||
заведено предложение об изменении: иначе его придётся выбрасывать. Она выходит
|
||||
уходит на декомпозицию, а её строка возвращается в беклог с причиной
|
||||
из работы на декомпозицию, а её строка возвращается в беклог с причиной
|
||||
(`move … --reason "крупнее задачи"`). Части заводятся сразу под той же целью, и
|
||||
**место в очереди им назначает человек**: машина поставит их в конец секции, а
|
||||
крупная задача редко распадается на что-то менее срочное, чем была сама.
|
||||
|
||||
@@ -48,13 +48,13 @@
|
||||
5. **Проверить, что это не «заодно».** Обслуживание любит склеиваться в пачку
|
||||
(«обновить зависимости и переписать сборку и убрать мёртвый код»). Не
|
||||
мерджится порознь — это несколько задач ([split.md](split.md)).
|
||||
6. **Цель не проставлять.** `chore` служит работоспособности, а не направлению,
|
||||
работоспособности, а не направлению. Работа по сопровождению проекта
|
||||
при этом видна в роадмапе — секцией `Сопровождение`, но целью не становится.
|
||||
6. **Цель не проставлять.** `chore` служит работоспособности, а не направлению.
|
||||
Работа по сопровождению проекта при этом видна в роадмапе — секцией
|
||||
`Сопровождение`, но целью не становится.
|
||||
|
||||
## Что видит машина, а что человек
|
||||
|
||||
`check` и `ready` смотрят на **наличие непустого** `Затрагивает` и на
|
||||
`ready` смотрит на **наличие непустого** `Затрагивает` и на
|
||||
**число** критериев — ровно то же, что у `feature`. Разница между типами здесь не
|
||||
в строгости проверки, а в том, **кому адресован ответ** на «что станет
|
||||
наблюдаемо иначе», — и это судит человек.
|
||||
|
||||
@@ -48,9 +48,11 @@
|
||||
|
||||
## Что видит машина, а что человек
|
||||
|
||||
`check` и `ready` смотрят на **наличие непустого** раздела `Затрагивает`,
|
||||
на **число** критериев (меньше двух — отказ, больше пяти — замечание) и на цель.
|
||||
Наличие оракула проверяется **эвристикой** — словом «оракул» в пункте.
|
||||
Схему типа судит `ready` на входе в работу: **наличие непустого** раздела
|
||||
`Затрагивает`, **число** критериев (меньше двух — отказ, больше пяти —
|
||||
замечание) и цель. Наличие оракула проверяется **эвристикой** — словом «оракул»
|
||||
в пункте. `check` этого поимённо не говорит, а считает строкой здоровья
|
||||
(`SKILL.md`, «Что механизировано, а что нет»).
|
||||
|
||||
Полнота перечня границ машине не видна: границу, которую забыли назвать, она от
|
||||
отсутствующей не отличает. Настоящий оракул от слова «оракул» тоже не отличает.
|
||||
|
||||
@@ -54,9 +54,8 @@
|
||||
почти всегда есть парный критерий: **прежнее поведение не сломалось**
|
||||
(«ввод `а1` принимается по-прежнему»). Без него починка чинит одно и ломает
|
||||
соседнее.
|
||||
6. **Цель не выдумывать.** `fix` служит работоспособности, а не направлению, и в
|
||||
работоспособности, а не направлению. Придуманная цель — то же враньё, от
|
||||
которого спасает тип.
|
||||
6. **Цель не выдумывать.** `fix` служит работоспособности, а не направлению.
|
||||
Придуманная цель — то же враньё, от которого спасает тип.
|
||||
7. **Записать дефект в журнал** `docs/review.md` с пометкой «проскочил / пойман
|
||||
ревью». Проскочившие — проверочный набор для калибровки конвейера; пойманные с
|
||||
оракулом — лучшая опора для прохода ревью: проектные, воспроизводимые,
|
||||
@@ -64,7 +63,7 @@
|
||||
|
||||
## Что видит машина, а что человек
|
||||
|
||||
`check` и `ready` смотрят на **наличие непустого** `Воспроизведения` и
|
||||
`ready` смотрит на **наличие непустого** `Воспроизведения` и
|
||||
`Затрагивает` и на **число** критериев. Годность воспроизведения — человеку:
|
||||
шаги, по которым ничего не воспроизводится, машина от годных не отличает, и
|
||||
делать вид, что проверено больше проверенного, хуже, чем не проверять вовсе.
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
имя таблицы стабильно, номер последней миграции протухает молча. Пишется
|
||||
`таблица points и её миграция`, а не `миграция 0042`.
|
||||
|
||||
**Что из этого механизировано.** `check` и `ready` смотрят только на
|
||||
**Что из этого механизировано.** `ready` смотрит только на
|
||||
**наличие непустого раздела**. Полнота перечня машине не видна: границу, которую
|
||||
забыли назвать, она от отсутствующей не отличает. Раздела нет — отказ во взятии:
|
||||
оценивать нечем.
|
||||
@@ -158,7 +158,7 @@
|
||||
конкретизация вопроса «по чему видно, что закончено» из теста готовности ниже:
|
||||
там сказано «признак завершённости», здесь — «признак плюс чем проверяется».
|
||||
|
||||
**Что из этого механизировано.** `check` и `ready` считают пункты: меньше
|
||||
**Что из этого механизировано.** `ready` считает пункты: меньше
|
||||
двух — отказ («— работает» одной строкой больше не проходит), больше пяти —
|
||||
замечание, обычно это признак, что задача крупнее задачи. Наличие оракула
|
||||
проверяется **эвристикой** — словом «оракул» в пункте, — и потому даёт только
|
||||
|
||||
@@ -75,9 +75,9 @@
|
||||
не попадает: `Готово` отвечает «что приложение умеет», а отменённая цель не
|
||||
умеет ничего.
|
||||
|
||||
**Место этому — переоценка на сессии, а не отдельный заход.** Отмена цели значит
|
||||
разбор всех её задач, а разбор задач и есть шаг 3 сессии
|
||||
(скилл `groom`, разбор «что перестало быть важным»). Отменять на ходу,
|
||||
**Место этому — груминг, а не отдельный заход.** Отмена цели значит
|
||||
разбор всех её задач, а разбор задач и есть шаг 3 груминга
|
||||
(скилл `groom`, «что перестало быть важным»). Отменять на ходу,
|
||||
между делом, — верный способ закрыть скопом то, что стоило перевесить.
|
||||
|
||||
## Что видит машина, а что человек
|
||||
|
||||
@@ -75,9 +75,9 @@
|
||||
|
||||
## Что видит машина, а что человек
|
||||
|
||||
`check` и `ready` смотрят на **наличие непустых** разделов `Вопрос` и
|
||||
`Куда ляжет ответ`, считают сырьё отдельной строкой здоровья и держат его в конце
|
||||
секции. Годность вопроса — человеку: «вопрос это или тема» машина не различает,
|
||||
`ready` смотрит на **наличие непустых** разделов `Вопрос` и
|
||||
`Куда ляжет ответ`; `check` считает сырьё отдельной строкой здоровья и держит
|
||||
его в конце секции. Годность вопроса — человеку: «вопрос это или тема» машина не различает,
|
||||
и `check` о годности молчит намеренно.
|
||||
|
||||
Штурм сырья, дробление исхода на задачи и тест «части мерджатся порознь» —
|
||||
|
||||
Reference in New Issue
Block a user