Files
dev-skills/TODO.md
T
av c6be879831 правило обращения к соседнему плагину получило дом
Стояло в пяти местах в пяти редакциях: два разных довода, ни в одном
месте оба, и три места из пяти молчали о том, что делать при
неразрешившемся вызове. Плюс невысказанный инвариант: $CLAUDE_PLUGIN_ROOT
ведёт только в свой плагин.

Дом — shared/plugin-boundary.md, блок «граница-плагинов», семь помеченных
копий. В дом вошло правило, последствия остались на местах вызова:
«нет плагина задач — учёт остаётся владельцу» знает только конвейер.

Оглавление адресов в CLAUDE.md проекта отклонено — второй дом раскладки,
и протухший адрес в нём выходит правдоподобной строкой честной
деградации. Сверка адресов уходит машине, записана в TODO разделом 5.
2026-08-09 15:02:46 +03:00

138 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-pipeline` (SDD и конвейер
ревью, он же заводит OpenSpec), `av-dev-git`. Общее, что нужно нескольким
дословно, живёт домом в `shared/` и уезжает копиями.
Канон документов — **версия 11**. Живые проекты стоят на 2–3 и на плагине
`av-dev-pm`, которого больше нет.
## 1. Живые проекты — вернуть в рабочее состояние
Блокирует всё остальное: под текущим каноном не стоит ни один проект, и ни один
скилл, кроме `docs.py check`, не исполнялся на живом коде ни разу
(см. REMAINING, «Что ещё не сделано»).
### healthlog — первым
- [ ] переустановить плагины: снять `av-dev-pm`, поставить `av-dev-docs` и
`av-dev-tasks`. `marketplace update`, затем `plugin update` — одного шага
мало (README, «Обновление»)
- [ ] удалить проектные копии: `.claude/skills/healthlog-{task,review}-pipeline`
и девять `.claude/agents/healthlog-review-*.md`. Они прошлого поколения и
после переезда указывают на документы, которых уже не будет
- [ ] `av-dev-docs:canon` в режиме `adopt` — он приведёт проект к канону 11
сразу, картой и с подтверждением. Файл-в-файл здесь не расписан: раскладку
знает скилл, и второй перечень разошёлся бы с ним
- [ ] каталог задач — в `tasks/` корня (канон 11), не в `docs/tasks/`. Скилл
задач зовётся из `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`, `task-batch` — **ровно как в плагине**, и короткое имя
может увести в устаревшую копию молча (REMAINING)
## 2. Учёт работ без спринтов
Решено: спринты отменяются, беклог и роадмап остаются. Причина — процесс идёт
задача за задачей, и замороженный набор перестал что-либо удерживать.
- [ ] снять спринт: `SPRINT.md`, команды `sprint *`, переходы схемы состояний,
правило «задача живёт в одном индексе за раз» упрощается до беклога
- [ ] **приоритет — явный порядок строк в беклоге.** Правило 4 скилла задач
(«порядка нет, есть цель») переписывается целиком: оно обосновано тем, что
«что делать дальше» отвечает набор спринта, — а набора больше нет.
Записать, что приоритет это **свойство очереди, а не задачи**, и потому его
дом индекс: то же исключение из правила 2, что уже есть у «в каком индексе
лежит задача, знают индексы»
- [ ] **перевесить гейт готовности.** Схема типа (обязательные разделы, ≥2
критерия, границы) проверяется на `sprint take`. Спринта нет — момента нет;
нужен `tasks.py ready <слаг>` или `check --task <слаг>` на входе пайплайна,
иначе задача уедет в работу без критериев приёмки
- [ ] `check --fix`: восстановленная строка индекса теряет позицию, а позиция
теперь и есть приоритет. Класть в конец категории и печатать пометкой, что
приоритет назначен не человеком
- [ ] `session` → скилл груминга внутри `av-dev-tasks`: пересортировка беклога,
разбор вопросов, переоценка. `references/sprint.md` в мусор, `cadence.md`
переписать под ритуал без спринта
- [ ] запись в журнал версий канона: проектам надо снести `SPRINT.md` и
расставить порядок
## 3. Калибровка — блокирует переезд jellybit
- [ ] замер на четырёх находках healthlog: скелет из `null`, откат бинаря,
канонизация в транзакции, `-1 >= -1`. Цена и ожидаемый исход — REMAINING,
«Главный незакрытый риск»
## 4. Пайплайн одной задачи — три этапа
Обкатывается на healthlog после разделов 1 и 2. Пайплайн нескольких задач на
паузе намеренно.
- [ ] **этап 1** — первичный ресерч и смысл задачи. Заканчивается дешёвым
подтверждением: две строки «понял так, собираюсь делать это». Без него
проверка «то ли я делаю» приходит после готового дизайна, то есть когда
ошибка стоит дороже всего
- [ ] **этап 2** — propose, дизайн, ревью дизайна, краткое объяснение решения.
Заканчивается полноценным чекпоинтом
- [ ] **этап 3** — код, ревью, архивация. Автоматически: дизайн уже согласован.
Решить, что делает этап, когда ревью находит расхождение **с утверждённым
дизайном**: находка внутри дизайна дожимается сама, находка, отменяющая
дизайн, отменяет и чекпоинт и обязана всплыть к человеку
- [ ] перемерить `review-pipeline` тем же вопросом, что и проект целиком:
сколько из пяти стадий реально смотрятся глазами. 1028 строк, и весь
автоматический этап держится на них
## 5. Стык плагинов — проверка адресов
Не блокирует ничего и делается после раздела 1: писать чекер лучше, когда
`adopt` на живом проекте покажет, какие адреса называются вслух. Правило
обращения к соседу дом уже получило (`shared/plugin-boundary.md`, решение 54) —
осталась вторая половина.
- [ ] `scripts/addresses.py`: владелец отдаёт перечень своих адресов машинно
(константа, по которой он и так проверяет раскладку, — `docs.py` и
`tasks.py`), чекер грепает чужие деревья и падает на адресе, которого у
владельца нет. **Зачем машина, а не внимание:** протухший адрес в проходе
ревью попадает в механизм честной деградации и выходит правдоподобной
строкой «документа в проекте нет» (решение 54, вывод 179)
- [ ] форма адреса нормализуется до имени темы: `docs/security.md`,
`docs/security/` и `docs/security.*` — одна запись. Иначе чекер начнёт
требовать выбора формы, которую канон сознательно оставляет проекту
- [ ] упоминание **отставленного** адреса в чужом плагине — тоже находка:
карта RETIRED у `docs.py` уже есть, и сейчас её не сверяет никто. Журнал
версий из проверки исключается — задним числом он не переписывается
## 6. Обкатка
- [ ] один-два цикла healthlog на новом процессе; наблюдение к первой обкатке —
не выродились ли «границы покрытия» в шаблон (REMAINING, «Открытые
вопросы»)