Files
dev-skills/TODO.md
T
av 42849c13eb resolve: третий сценарий — обслуживание, у цикла SDD там нет входа
Задача, не меняющая поведения (тулчейн, зависимости, сборка, гит-хуки, перенос,
чистка), шла полным циклом решения. Все его шаги стоят на дельта-спеках, а у
chore их нет по построению: цикл не урезан ради дешевизны, он остаётся без входа.

Признак — связка: тип записи предлагает, отсутствие дельт подтверждает, а
расхождение признаков это стоп. Размер признаком не стал намеренно: «мелкое —
коротким путём» и есть самая дешёвая лазейка. Планового стопа у сценария нет
вовсе — объяснять человеку нечего, выбора там не делают; правило необратимого
поэтому действует жёстче, чем в двух других.

Ревью идёт фиксированным планом без метки и без разметчика — autotests и
operations, плюс conventions с техническим разбором, когда дифф трогает код.
Конвейер получил раздел «Прогон без change»: он написан вокруг change, и без
этой строки вызов упирался бы в предпосылку OpenSpec. Главный шаг сценария —
синк документации, а триггеры ADR работают стоп-признаком: своего источника у
обслуживания нет, и решение с ценой уходит в разведку.
2026-08-13 09:22:50 +03:00

132 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Что осталось сделать
**Здесь только работы и их порядок.** Чего здесь нет намеренно:
- **риски, открытые вопросы и принятые пределы** — [REMAINING.md](REMAINING.md);
- **почему решено так** — [DECISIONS.md](DECISIONS.md), записи датированы;
- **шаги повышения проекта с версии канона на версию** — журнал версий
([changelog.md](av-dev-docs/skills/canon/references/changelog.md)). Пересказ их
сюда был бы вторым домом, и прежний план на этом уже разъезжался: он повторял
записи версий 3, 4 и 5 построчно, и половина повторов протухла молча.
Сделанное отсюда **удаляется, а не помечается галочкой**. След остаётся в
коммитах и в `DECISIONS.md`; список из двух сотен `[x]` перестают читать целиком,
и живые пункты в нём теряются — прежний план умер именно так.
## Где мы сейчас
Плагинов четыре, и каждый ставится отдельно: `av-dev-docs` (канон документов и
их содержимое), `av-dev-tasks` (задачи и цели), `av-dev-code` (код по задачам:
цикл SDD, конвейер ревью, OpenSpec), `av-dev-git`. Общее, что нужно нескольким
дословно, живёт домом в `shared/` и уезжает копиями.
Канон документов — **версия 14**; формат задач — **версия 1**, своя и со своим журналом. Живые проекты стоят на 2–3 и на плагине
`av-dev-pm`, которого больше нет.
Бумажная часть закрыта аудитом четырёх плагинов и четырьмя пропусками правок
(DECISIONS, запись 59). Всё, что ниже, проверяется **только на живом коде**.
## 1. Живые проекты — вернуть в рабочее состояние
Блокирует всё остальное: под текущим каноном не стоит ни один проект, и ни один
скилл, кроме `docs.py check`, не исполнялся на живом коде ни разу
(см. REMAINING, «Что ещё не сделано»).
### healthlog — первым
- [ ] переустановить плагины: снять `av-dev-pm` и `av-dev-pipeline`, поставить
`av-dev-docs`, `av-dev-tasks`, `av-dev-code`, `av-dev-git`. Оба прежних
имени мертвы, и `plugin update` их не переименует — только снять и
поставить. `marketplace update`, затем `plugin update` — одного шага мало
(README, «Обновление»)
- [ ] удалить проектные копии: `.claude/skills/healthlog-{task,review}-pipeline`
и девять `.claude/agents/healthlog-review-*.md`. Они прошлого поколения и
после переезда указывают на документы, которых уже не будет
- [ ] `av-dev-docs:canon` в режиме `adopt` — он приведёт проект к канону 14
сразу, картой и с подтверждением. Файл-в-файл здесь не расписан: раскладку
знает скилл, и второй перечень разошёлся бы с ним
- [ ] каталог задач — в `tasks/` корня (канон 11), не в `docs/tasks/`, без
`SPRINT.md` (канон 12) и с версией формата в `tasks/.tasks.json` (журнал
задач, версия 1). Скилл задач зовётся из `adopt` сам
- [ ] гейт проекта: три шага вместо одного — `docs.py check`, `tasks.py check
--dir tasks`, `openspec.py check`. **Второй и третий раньше не были
нужны:** согласованность задач тянул за собой `docs.py`, форму `config.yaml`
он же. Теперь оба молчат, и без своих шагов дрейф перестанет ловиться
- [ ] разобрать урожай `doc-consistency` и `doc-code-drift` порциями — правило
единственного дома на живом проекте не проверял никто
### jellybit — после калибровки
Порядок не произволен: замер (раздел 3) блокирует переезд jellybit, и только его.
- [ ] то же, что у healthlog: плагины, проектные копии, `adopt`, каталог задач,
гейт
- [ ] проектные копии здесь опаснее: скиллы названы `task-pipeline`,
`review-pipeline` — **ровно как в плагине**, и короткое имя
может увести в устаревшую копию молча (REMAINING)
## 2. Учёт работ без спринтов — что осталось
Сделано: спринт снят со скрипта и текстов, приоритет стал порядком строк в
беклоге, гейт готовности переехал в `tasks.py ready`, `session` стал скиллом
`groom`, запись 12 в журнал версий канона написана.
- [ ] прогнать груминг на живом беклоге — на фикстуре проверялись команды, а не
сам разбор. Наблюдение к первому прогону: **не выродился ли шаг 4 в
«оставить как есть»** — признак тот, что доклад не называет ни одного
движения с доводом
## 3. Калибровка — блокирует переезд jellybit
- [ ] замер на четырёх находках healthlog: скелет из `null`, откат бинаря,
канонизация в транзакции, `-1 >= -1`. Цена и ожидаемый исход — REMAINING,
«Главный незакрытый риск»
## 4. Конвейер: что осталось после `resolve`
Сам скилл написан (`av-dev-code:resolve`, три сценария — разведка, решение и
обслуживание; чекпоинт есть у первых двух, у обслуживания планового стопа нет),
`task-batch` удалён. Осталось то, что на бумаге не проверяется:
- [ ] прогнать сценарий разведки на живой задаче: он написан целиком на бумаге и
не исполнялся ни разу. Самое неизвестное — выбор сценария на входе (не
уедет ли всё в решение, потому что «способ вроде понятен») и объём того,
что разведка пишет в документы
- [ ] прогнать сценарий обслуживания на живой задаче `chore`. Неизвестных три:
**держится ли связка признаков** (не уедет ли в обслуживание то, что меняет
поведение, и наоборот — не заведут ли пустой change по привычке); **работает
ли ревью без change** — конвейер написан вокруг него, и прогон с
фиксированным планом не запускался ни разу; **есть ли чем сверить состав
гейта** — на живых проектах семантика гейта в `CLAUDE.md` может не называть
шагов поимённо, и тогда сверка вырождается в цвет
- [ ] перемерить скилл `review` тем же вопросом, что и проект целиком:
сколько из его стадий реально смотрятся глазами. Тысяча строк, и весь
автоматический участок между чекпоинтами держится на них
- [ ] чекпоинт «объяснение» собирается из `proposal.md` и `design.md`, а
требования к их форме уехали в `openspec/config.yaml` (`rules.proposal`,
`rules.design`). **На живом проекте это ни разу не работало:** неизвестно,
хватает ли двух артефактов, чтобы объяснение не пришлось дописывать руками
## 5. Мелочь, оставленная аудитом сознательно
Одной пачкой, когда будет повод открыть эти файлы, — не раньше:
- [ ] «чекпоинт» несёт третий смысл — точка наблюдаемости в коде
(`finding-contract.md`, `promote.md`). Слово занято дважды по своему же
правилу, но домены разные, и переименование здесь может выйти дороже
путаницы
- [ ] закрытый словарь `shared/language.md` не содержит ни «конвейера», ни
«чекпоинта», ни «груминга» — трёх рабочих терминов репозитория. Список
объявлен закрытым, и пополнять его на ходу нельзя
- [ ] `move <слаг>` без флагов теперь легален и значит «в конец своей секции» —
осмысленная операция, но в прозе не описана нигде
- [ ] `reopen` печатает «позиция это приоритет» и для целей роадмапа, где секции
очередью не являются
## 6. Обкатка
- [ ] один-два цикла healthlog на новом процессе. Наблюдения к первой обкатке
два: не выродились ли «границы покрытия» в шаблон (REMAINING, «Открытые
вопросы») и **не превратился ли чекпоинт в ритуал одобрения** — признак
тот же, дословно повторяющийся текст и согласие без единой правки