Восемнадцать веток «плагина нет» описывали недостижимое: скиллы и агенты теперь в одном плагине и разрешаются всегда. Где предмет всё же может отсутствовать — ветка переписана на след в проекте (нет 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, ссылки на язык в закрытом журнале.
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 — это формат на день её появления, что бы
проекту ни пришлось пройти до неё.
Что сделать проекту.
- Догнать формат по журналу канона, если каталог отстал. Признаки известны
поимённо: каталог лежит в
docs/tasks/(канон 11 велитgit mv docs/tasks tasksи починку относительных ссылок внутри записей), в нём естьSPRINT.mdили тегиsprint:<слаг>(канон 12 велит снести файл, вернуть строки в беклог черезcheck --fixи расставить порядок грумингом). Ничего из этого нет — каталог уже в сегодняшнем формате, и шаг пропускается. - Завести
<каталог задач>/.tasks.json, если его нет. Имена частей в него не переписываются: там только то, что отличается от умолчания. - Записать версию:
"tasks": 1первым ключом. tasks.py check --dir <каталог задач>— до отсутствия расхождений.
Что при этом не трогается. Записи в items/, индексы и REJECTED.md не
меняются ни строкой: версия 1 объявляет то, что уже есть, а не переделывает его.