Files
dev-skills/av-dev/skills/doc-canon/references/changelog-tasks-before-merge.md
T
av 95c9499f06 конфиг: одна версия и один служебный файл, .av-dev.toml в корне
Версий было две — канон 14 в docs/.docs.json и формат задач 1 в
<каталог задач>/.tasks.json, — и порознь они двигались потому, что плагины
ставились порознь. Плагин один, версия одна и начинается с 1; журналы обеих
прежних нумераций закрыты и лежат рядом непереписанными, действующий журнал
открывается записью о слиянии с перечнем шагов проекту.

Формат TOML взят ради комментариев: файл живёт в репозитории проекта, и
назначение числа читают из него самого. Отсюда правило записи — скрипты правят
строку, а не переписывают файл. Читатель общий, shared/config.py: два разбора
одной схемы были бы двумя домами.

Каталог задач перестал узнаваться служебным файлом и называется ключом
[tasks] dir; узнают его по индексу. Прежние файлы не читаются — увидев их,
docs.py и tasks.py называют прежнюю раскладку и зовут upgrade.
2026-08-13 10:30:18 +03:00

4.5 KiB

Журнал версий формата задач до слияния плагинов

Журнал закрыт. У каталога задач была своя версия, пока плагином его ведал av-dev-tasks и ставился он отдельно. Версия теперь одна на всю раскладку — действующий журнал changelog.md, и переезд числа описан его записью 1.

Запись ниже не переписана под нынешние имена: она описывает состояние, которое было.


Версия 1 — 2026-08-11

Первая объявленная версия формата. До неё каталог задач версии не имел вовсе: формат менялся, а сказать, к какому его состоянию приведён конкретный проект, было нечем — tasks.py о расхождении молчал, и отставший каталог выглядел здоровым ровно до первой команды, которая об него спотыкалась.

Что появилось. Ключ tasks в <каталог задач>/.tasks.json — целое число, версия формата. Сам файл стал обязательным: до сих пор он заводился только ради имён, отличных от умолчания, и проект с умолчаниями жил без него. Версия — не настройка, от которой можно отказаться, поэтому init и adopt apply теперь пишут файл всегда, а check требует числа и сверяет его со своим.

Что версия значит, а что нет. Она отвечает на один вопрос — «по какой записи журнала повышать каталог». Что записи применены по существу, из числа не следует: двигают его руками, и соврать им так же легко, как любой другой строкой. check --fix недостающее число не приписывает намеренно — это было бы объявлением каталога приведённым к формату, шагов которого никто не делал.

Чего в этой записи нет. Переезды, случившиеся до появления числа, — каталог из docs/ в корень (канон 11) и отмена спринтов (канон 12) — задним числом сюда не переписаны. Они уже названы журналом канона, и второй перечень тех же шагов разошёлся бы с первым. Версия 1 — это формат на день её появления, что бы проекту ни пришлось пройти до неё.

Что сделать проекту.

  1. Догнать формат по журналу канона, если каталог отстал. Признаки известны поимённо: каталог лежит в docs/tasks/ (канон 11 велит git mv docs/tasks tasks и починку относительных ссылок внутри записей), в нём есть SPRINT.md или теги sprint:<слаг> (канон 12 велит снести файл, вернуть строки в беклог через check --fix и расставить порядок грумингом). Ничего из этого нет — каталог уже в сегодняшнем формате, и шаг пропускается.
  2. Завести <каталог задач>/.tasks.json, если его нет. Имена частей в него не переписываются: там только то, что отличается от умолчания.
  3. Записать версию: "tasks": 1 первым ключом.
  4. tasks.py check --dir <каталог задач> — до отсутствия расхождений.

Что при этом не трогается. Записи в items/, индексы и REJECTED.md не меняются ни строкой: версия 1 объявляет то, что уже есть, а не переделывает его.