TODO переписан с чистого листа; canon и docs остаются раздельно
План описывал мир до раскола: av-dev-pm в живых, каталог задач в docs/, шаги повышения на каноны 3, 4 и 5 — при том что канон уже 11. Двести с лишним строк, из них живых полтора десятка, и найти их можно было только прочитав всё. Умер он двумя способами сразу, и оба записаны в новом заголовке, чтобы не повторились. Первый: сделанное помечалось галочкой и оставалось в файле — список из двух сотен [x] перестают читать целиком, и живые пункты в нём теряются. Теперь сделанное удаляется, след остаётся в коммитах и DECISIONS. Второй: план построчно повторял записи журнала версий канона, то есть был вторым домом для шагов повышения, и половина повторов протухла молча. Теперь на журнал стоит ссылка. Новый план — пять разделов: вернуть живые проекты в рабочее состояние, учёт работ без спринтов, калибровка, пайплайн одной задачи в три этапа, обкатка. Поимённой раскладки файлов healthlog в нём нет намеренно: её знает canon adopt, и второй перечень разошёлся бы со скиллом. Зато названо то, чего скилл не сделает и что легко потерять — гейт проекта теперь три шага вместо одного, потому что docs.py перестал тянуть за собой и задачи, и форму config.yaml. REMAINING ссылался на разделы TODO по номерам — переведён на имена; заодно строка про непрогнанное на живом проекте дополнена скиллом openspec и оговоркой, что раскол проверен только на фикстурах и на установке каждого плагина в одиночку. Решение 53: canon и docs остаются двумя скиллами. Довод не про объём, а про description — это триггер, по которому загрузчик решает, звать ли скилл, и моменты вызова у этих двух разные. Слитое описание покрывает оба хуже, чем два покрывают каждое своё. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3274,3 +3274,28 @@ JJJ): у профиля обязан быть один правильный от
|
|||||||
вовсе. Переезд — самый дешёвый способ его обнаружить: не разбор, а смена
|
вовсе. Переезд — самый дешёвый способ его обнаружить: не разбор, а смена
|
||||||
места, из которого на код смотрят.
|
места, из которого на код смотрят.
|
||||||
|
|
||||||
|
|
||||||
|
## 53. `canon` и `docs` остаются двумя скиллами (2026-08-09)
|
||||||
|
|
||||||
|
**АЕАКЛ. Слияние отклонено, и довод у него не про объём.** Оба скилла лежат в
|
||||||
|
одном плагине, и слить их казалось естественным завершением раскола. Мешает
|
||||||
|
`description`: это не аннотация, а **триггер** — по нему загрузчик решает, звать
|
||||||
|
ли скилл вообще, и ровно ради его сохранности заведён `frontmatter.py`. Моменты
|
||||||
|
вызова у этих двух разные. `canon` срабатывает на «проверь документацию»,
|
||||||
|
«переведи на канон», «пришёл в старый проект»; `docs` — на «задача сделана,
|
||||||
|
обнови документацию», «заведи ADR», «запиши наблюдение». Одно описание покрывает
|
||||||
|
оба хуже, чем два покрывают каждое своё, и потеря здесь не в читаемости, а в том,
|
||||||
|
что скилл перестаёт находиться.
|
||||||
|
|
||||||
|
Второй довод — тот же разрез, что репозиторий подтверждал уже трижды:
|
||||||
|
**раскладка против содержимого**, «где лежит» против «что внутри». Он по глубине,
|
||||||
|
а такой разрез, в отличие от разреза по охвату (решение 50), даёт два разных
|
||||||
|
текста и держится сам, без помеченных копий.
|
||||||
|
|
||||||
|
### Что из этого следует
|
||||||
|
|
||||||
|
178. **Границу между скиллами держит не тема, а момент вызова.** Два текста об
|
||||||
|
одном предмете живут порознь законно, если зовут их в разные минуты; и
|
||||||
|
наоборот — один предмет, разрезанный так, что оба куска нужны одновременно,
|
||||||
|
разрезан неверно.
|
||||||
|
|
||||||
|
|||||||
+9
-6
@@ -36,13 +36,14 @@ severity. Пробы готовы и синтетических не нужно
|
|||||||
но работает ли обязанность, не проверено. Оркестратор реагирует на severity,
|
но работает ли обязанность, не проверено. Оркестратор реагирует на severity,
|
||||||
поэтому цена — не «не найдём», а **«найдём и не починим»**.
|
поэтому цена — не «не найдём», а **«найдём и не починим»**.
|
||||||
|
|
||||||
Сама работа — [TODO.md](TODO.md), раздел 3; здесь только цена: замер стоит
|
Сама работа — [TODO.md](TODO.md), раздел «Калибровка»; здесь только цена: замер
|
||||||
перед переездом jellybit и блокирует его (решение 39), а ожидаемый исход уже
|
стоит перед переездом jellybit и блокирует его (решение 39), а ожидаемый исход
|
||||||
назван выше.
|
уже назван выше.
|
||||||
|
|
||||||
**«Главный» здесь про цену, а не про очередь.** Первой идёт адаптация healthlog
|
**«Главный» здесь про цену, а не про очередь.** Первой идёт адаптация healthlog
|
||||||
(TODO, раздел 2): без неё нет проекта под каноном, на котором работают остальные
|
(TODO, раздел «Живые проекты»): без неё нет проекта под каноном, на котором
|
||||||
скиллы. Калибровка блокирует один шаг — переезд jellybit, — а не всё подряд.
|
работают остальные скиллы. Калибровка блокирует один шаг — переезд jellybit, — а
|
||||||
|
не всё подряд.
|
||||||
|
|
||||||
## Что ещё не сделано
|
## Что ещё не сделано
|
||||||
|
|
||||||
@@ -51,7 +52,9 @@ severity. Пробы готовы и синтетических не нужно
|
|||||||
|
|
||||||
- **Ни один скилл не прогонялся на живом проекте.** `docs.py` прогнан на
|
- **Ни один скилл не прогонялся на живом проекте.** `docs.py` прогнан на
|
||||||
healthlog и jellybit в режиме `check` и находит осмысленный дрейф; `init`,
|
healthlog и jellybit в режиме `check` и находит осмысленный дрейф; `init`,
|
||||||
`canon adopt`, `canon upgrade` и скилл `docs` не исполнялись ни разу.
|
`canon adopt`, `canon upgrade`, скилл `docs` и новый `openspec` не исполнялись
|
||||||
|
ни разу. `openspec.py` и раскол плагинов проверены только на фикстурах и на
|
||||||
|
установке каждого плагина в одиночку.
|
||||||
- **Проектные копии в healthlog и jellybit.** Два `.claude/skills/` и одиннадцать
|
- **Проектные копии в healthlog и jellybit.** Два `.claude/skills/` и одиннадцать
|
||||||
`.claude/agents/` старого поколения. У jellybit хуже: его скиллы названы
|
`.claude/agents/` старого поколения. У jellybit хуже: его скиллы названы
|
||||||
`task-pipeline`, `review-pipeline`, `task-batch` — **ровно как в плагине**.
|
`task-pipeline`, `review-pipeline`, `task-batch` — **ровно как в плагине**.
|
||||||
|
|||||||
@@ -1,227 +1,117 @@
|
|||||||
# Работы по итогам разбора
|
# Что осталось сделать
|
||||||
|
|
||||||
Порядок и обоснование — [DECISIONS.md](DECISIONS.md), тема 8. Номера в скобках —
|
**Здесь только работы и их порядок.** Чего здесь нет намеренно:
|
||||||
следствия оттуда.
|
|
||||||
|
|
||||||
Замер (шаг 3) — **единственный шаг, который нельзя переставить**: он блокирует
|
- **риски, открытые вопросы и принятые пределы** — [REMAINING.md](REMAINING.md);
|
||||||
переезд jellybit. Всё остальное можно тасовать.
|
- **почему решено так** — [DECISIONS.md](DECISIONS.md), записи датированы;
|
||||||
|
- **шаги повышения проекта с версии канона на версию** — журнал версий
|
||||||
|
([changelog.md](av-dev-docs/skills/canon/references/changelog.md)). Пересказ их
|
||||||
|
сюда был бы вторым домом, и прежний план на этом уже разъезжался: он повторял
|
||||||
|
записи версий 3, 4 и 5 построчно, и половина повторов протухла молча.
|
||||||
|
|
||||||
## 0. Предусловие
|
Сделанное отсюда **удаляется, а не помечается галочкой**. След остаётся в
|
||||||
|
коммитах и в `DECISIONS.md`; список из двух сотен `[x]` перестают читать целиком,
|
||||||
|
и живые пункты в нём теряются — прежний план умер именно так.
|
||||||
|
|
||||||
- [x] `git push` — `092d07c..88c5d97`, 17 коммитов ушли на origin (37)
|
## Где мы сейчас
|
||||||
- [x] `claude plugin marketplace update av-dev-skills` — клон встал на `88c5d97`
|
|
||||||
и видит `av-dev-pm` и `av-dev-pipeline`
|
|
||||||
|
|
||||||
## 1. Репозиторий плагинов
|
Плагинов четыре, и каждый ставится отдельно: `av-dev-docs` (канон документов и
|
||||||
|
их содержимое), `av-dev-tasks` (задачи и цели), `av-dev-pipeline` (SDD и конвейер
|
||||||
|
ревью, он же заводит OpenSpec), `av-dev-git`. Общее, что нужно нескольким
|
||||||
|
дословно, живёт домом в `shared/` и уезжает копиями.
|
||||||
|
|
||||||
### 1.1 Переименование
|
Канон документов — **версия 11**. Живые проекты стоят на 2–3 и на плагине
|
||||||
|
`av-dev-pm`, которого больше нет.
|
||||||
|
|
||||||
- [x] `av-dev-tasks` → `av-dev-pm`: каталог, `plugin.json`, `marketplace.json` (18)
|
## 1. Живые проекты — вернуть в рабочее состояние
|
||||||
- [x] пространство имён во всех текстах: `av-dev-tasks:session` →
|
|
||||||
`av-dev-pm:session`, включая ссылку из `task-pipeline` (18)
|
|
||||||
|
|
||||||
### 1.2 Канон — единственный дом определения
|
Блокирует всё остальное: под текущим каноном не стоит ни один проект, и ни один
|
||||||
|
скилл, кроме `docs.py check`, не исполнялся на живом коде ни разу
|
||||||
|
(см. REMAINING, «Что ещё не сделано»).
|
||||||
|
|
||||||
- [x] `av-dev-pm/skills/canon/references/canon.md` — раскладка, роли документов,
|
### healthlog — первым
|
||||||
правило единственного дома. Читают `init`, `canon`, `docs` (AA)
|
|
||||||
- [x] `av-dev-pm/skills/canon/references/changelog.md` — журнал версий канона,
|
|
||||||
версия 1 (26)
|
|
||||||
|
|
||||||
### 1.3 Правки существующих скиллов
|
- [ ] переустановить плагины: снять `av-dev-pm`, поставить `av-dev-docs` и
|
||||||
|
`av-dev-tasks`. `marketplace update`, затем `plugin update` — одного шага
|
||||||
- [x] `tasks`: убрать слот 6 «Команда учёта задач» (33)
|
мало (README, «Обновление»)
|
||||||
- [x] `tasks`: путь каталога жёсткий `docs/tasks`, убрать цепочку разрешения (F)
|
|
||||||
- [x] `tasks`: `.tasks.json` → `docs/.pm.json`, там же версия канона и путь
|
|
||||||
миграций (23, 30)
|
|
||||||
- [x] `tasks`: убрать слоты 3 «куда переезжает суть» и 5 «оракулы» — отвечает
|
|
||||||
канон и семантика гейта (тема 4)
|
|
||||||
- [x] `session`: убрать слот 7 и слот 4 «где живёт разбор процесса» (33, K)
|
|
||||||
- [x] `session`: переписать «Стимулы, которые процесс создаёт» — снятая граница
|
|
||||||
выбила опору у трёх защит (19)
|
|
||||||
|
|
||||||
### 1.4 Новые скиллы
|
|
||||||
|
|
||||||
- [x] `init` — интервью по брифу → канон нового проекта (R)
|
|
||||||
- [x] `canon` — `check` / `adopt` / `upgrade`; поглощает скилл `adopt` (R, 21, 24)
|
|
||||||
- [x] `docs` — содержимое канона: ADR из архивного `design.md`, промоут
|
|
||||||
конвенций, запись в `research/` и `review.md`, чистка `architecture.md` (X)
|
|
||||||
- [x] `docs.py` — раскладка, лишние файлы, битые ссылки, версия, плейсхолдеры,
|
|
||||||
маркеры долга; сверки миграции ↔ `database.md` и capability ↔
|
|
||||||
`architecture.md` (T, 31)
|
|
||||||
|
|
||||||
### 1.5 av-dev-pipeline
|
|
||||||
|
|
||||||
- [x] удалить скилл `project-brief` и `references/{project-brief,brief-template}.md` (13)
|
|
||||||
- [x] снять ветки деградации OpenSpec в трёх местах: `task-pipeline`,
|
|
||||||
`review-pipeline`, `task-batch` (1)
|
|
||||||
- [x] девять charter'ов: разделы брифа → пути канона; `ops`/`adversary`/`reimpl`
|
|
||||||
обязаны сшивать `research/` и `database.md` (14, 15)
|
|
||||||
- [x] `review-pipeline`: убрать бриф, поразрядная деградация по документам (16)
|
|
||||||
- [x] `task-pipeline` шаг 9 → построчный доклад по документам канона (28)
|
|
||||||
- [x] `task-pipeline`/`task-batch`: закрытие задачи вызовом скилла
|
|
||||||
`av-dev-pm:tasks`, слот убрать (32, 33)
|
|
||||||
- [x] `promote.md` шаг 3: перечень механизированного → `conventions/README.md` (29)
|
|
||||||
- [x] описание плагина: «требует OpenSpec» (2)
|
|
||||||
|
|
||||||
### 1.6 Прочее
|
|
||||||
|
|
||||||
- [x] `av-dev-backlog` — пометить устаревшим, переписать описание, чтобы не
|
|
||||||
ловило триггер (Q)
|
|
||||||
- [x] `README.md` маркетплейса — три плагина, канон, установка
|
|
||||||
- [x] `HISTORY.md` — сжать `AGENTIC-TASKS.md` до истории решений (CC)
|
|
||||||
- [x] `REMAINING.md` пересобрать: пункт 2 отменён, четыре вопроса закрыты,
|
|
||||||
калибровка стала обязательной (38)
|
|
||||||
|
|
||||||
### 1.7 Линтеры скриптов (тема 9)
|
|
||||||
|
|
||||||
- [x] `pyproject.toml`: ruff + pyrefly через `uv`, версии прибиты (DD, FF)
|
|
||||||
- [x] запрет внешних зависимостей двумя способами: `banned-api` + пустое
|
|
||||||
окружение pyrefly (EE)
|
|
||||||
- [x] `RUF001`–`RUF003` выключены, `av-dev-backlog` исключён (GG, HH)
|
|
||||||
- [x] починены 27 находок ruff и 14 pyrefly; `os` из `tasks.py` ушёл (40, 41)
|
|
||||||
- [x] раздел «Проверка скриптов» в `README.md`
|
|
||||||
|
|
||||||
### 1.8 Ревью двумя проходами (тема 10)
|
|
||||||
|
|
||||||
- [x] `reopen` берёт текст из `HEAD`, когда коммита удаления ещё нет (JJ)
|
|
||||||
- [x] шаг 11 коммитит учёт вторым коммитом; батч проверяет чистоту дерева (JJ)
|
|
||||||
- [x] фиктивный ключ `tasks.sections` убран из четырёх документов (KK)
|
|
||||||
- [x] `init` пишет конфиг в `docs/.pm.json`; `looks_like_tasks` его читает
|
|
||||||
- [x] урожай спринта заводится до `sprint close`, слаг — из его отчёта
|
|
||||||
- [x] ответ на вопрос опустошает раздел «Вопросы» — во всех трёх местах
|
|
||||||
- [x] путь отчёта триажа переживает архивацию (5 мест)
|
|
||||||
- [x] `review-specs` получил режим 3 — стык после слияния
|
|
||||||
- [x] остальные 12 находок: `sprint.md`, «9а», перечень проектных копий,
|
|
||||||
параллельность в батче, триаж в финальной сверке, триггеры профиля, 8–12
|
|
||||||
|
|
||||||
### 1.9 Ревью зависимостей между плагинами (тема 11)
|
|
||||||
|
|
||||||
- [x] опоры приёмки названы абстрактно, деградация без конвейера объявлена (MM)
|
|
||||||
- [x] ветка деградации шага 9 ходит в свой `project-facts.md` (NN)
|
|
||||||
- [x] `docs` даёт ветку «конвейера нет» для журнала и промоута
|
|
||||||
- [x] форма журнала дефектов сведена к дому, копия помечена в `changelog.md`
|
|
||||||
- [x] `specs` вернулся в читатели `docs/research/`; дом списка назначен
|
|
||||||
- [x] пайплайн не называет `items/` и `SPRINT.md` — их знает `av-dev-pm`
|
|
||||||
- [x] манифесты объявили `av-dev-pm` опциональным для конвейера (49)
|
|
||||||
|
|
||||||
### 1.10 Механическая проверка копий (тема 12)
|
|
||||||
|
|
||||||
- [x] `scripts/copies.py`: маркеры дома и копии, побайтовая сверка (OO)
|
|
||||||
- [x] строгий id, повторяемый в закрывающем маркере (PP)
|
|
||||||
- [x] помечены два контракта; «когда заводить ADR» сведён к дословному (50)
|
|
||||||
- [x] раздел «Проверка копий правил» в `README.md`, правило — в обоих домах
|
|
||||||
|
|
||||||
## 2. healthlog — первая боевая проверка
|
|
||||||
|
|
||||||
- [ ] `canon adopt`; `docs/backlog/` → `docs/tasks/`
|
|
||||||
- [ ] `architecture.md` 1662 строки → обзор, остаток маркерами (W)
|
|
||||||
- [ ] после выноса поведения — замерить остаток `architecture.md`; **решать
|
|
||||||
больше нечего**: канон 5 разрешил любой теме быть каталогом с `README.md`,
|
|
||||||
так что жмёт — заводи `docs/architecture/`, и это не смена версии
|
|
||||||
(тема 16, GGG, 65; закрыто темой 36)
|
|
||||||
- [ ] завести `security.md` с периметром первой строкой (J)
|
|
||||||
- [ ] `review-journal.md` → `review.md` + настройка конвейера (K, L)
|
|
||||||
- [ ] `conventions.md` → `conventions/`, `local-research.md` → `research/` (G)
|
|
||||||
- [ ] `plan.md` → `docs/tasks/ROADMAP.md` (E)
|
|
||||||
- [ ] завести `docs/adr/`
|
|
||||||
- [ ] `CLAUDE.md`: severity инвариантов, семантика гейта, убрать раздел
|
|
||||||
«Процесс» (M, N)
|
|
||||||
- [ ] `docs.py check` в `task gate` (V)
|
|
||||||
- [ ] почистить `openspec/config.yaml` (C)
|
|
||||||
- [ ] удалить проектные копии: `.claude/skills/healthlog-{task,review}-pipeline`
|
- [ ] удалить проектные копии: `.claude/skills/healthlog-{task,review}-pipeline`
|
||||||
и девять `.claude/agents/healthlog-review-*.md` — они прошлого поколения и
|
и девять `.claude/agents/healthlog-review-*.md`. Они прошлого поколения и
|
||||||
после переезда указывают на `docs/conventions.md`, `docs/local-research.md`,
|
после переезда указывают на документы, которых уже не будет
|
||||||
`docs/review-journal.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` порциями — правило
|
||||||
|
единственного дома на живом проекте не проверял никто
|
||||||
|
|
||||||
## 3. Калибровка — блокирует шаг 5
|
### 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`, откат бинаря,
|
- [ ] замер на четырёх находках healthlog: скелет из `null`, откат бинаря,
|
||||||
канонизация в транзакции, `-1 >= -1` (1 из REMAINING, 14)
|
канонизация в транзакции, `-1 >= -1`. Цена и ожидаемый исход — REMAINING,
|
||||||
|
«Главный незакрытый риск»
|
||||||
|
|
||||||
## 4. Обкатка
|
## 4. Пайплайн одной задачи — три этапа
|
||||||
|
|
||||||
- [ ] один-два спринта healthlog на новом процессе
|
Обкатывается на healthlog после разделов 1 и 2. Пайплайн нескольких задач на
|
||||||
|
паузе намеренно.
|
||||||
|
|
||||||
## 5. jellybit
|
- [ ] **этап 1** — первичный ресерч и смысл задачи. Заканчивается дешёвым
|
||||||
|
подтверждением: две строки «понял так, собираюсь делать это». Без него
|
||||||
|
проверка «то ли я делаю» приходит после готового дизайна, то есть когда
|
||||||
|
ошибка стоит дороже всего
|
||||||
|
- [ ] **этап 2** — propose, дизайн, ревью дизайна, краткое объяснение решения.
|
||||||
|
Заканчивается полноценным чекпоинтом
|
||||||
|
- [ ] **этап 3** — код, ревью, архивация. Автоматически: дизайн уже согласован.
|
||||||
|
Решить, что делает этап, когда ревью находит расхождение **с утверждённым
|
||||||
|
дизайном**: находка внутри дизайна дожимается сама, находка, отменяющая
|
||||||
|
дизайн, отменяет и чекпоинт и обязана всплыть к человеку
|
||||||
|
- [ ] перемерить `review-pipeline` тем же вопросом, что и проект целиком:
|
||||||
|
сколько из пяти стадий реально смотрятся глазами. 1028 строк, и весь
|
||||||
|
автоматический этап держится на них
|
||||||
|
|
||||||
- [ ] `BRIEF.md` → `docs/passport.md`, обновить
|
## 5. Обкатка
|
||||||
- [ ] `docs/specs/{recognition,review-ux,workflow}.md` — сверить с capability и
|
|
||||||
удалить как дубли (10)
|
|
||||||
- [ ] `docs/specs/architecture.md` → `docs/architecture.md`, `database.md` →
|
|
||||||
`docs/database.md`, `jellyfin-layout.md` → `docs/research/`
|
|
||||||
- [ ] `docs/review/journal.md` → `docs/review.md`
|
|
||||||
- [ ] `drafts/` растворить: roadmap → `ROADMAP.md`, conventions-backlog → записи
|
|
||||||
`research` (сырьё: тип есть, «Вопрос» пуст), logical-title-model → ADR (H)
|
|
||||||
- [ ] `docs/backlog/` → `docs/tasks/`
|
|
||||||
- [ ] удалить проектные копии скиллов и агентов (4 из REMAINING)
|
|
||||||
- [x] `av-dev-backlog` удалить из маркетплейса и снять с проекта (тема 30)
|
|
||||||
|
|
||||||
## 6. Канон версии 3 — повысить живые проекты (тема 17)
|
- [ ] один-два цикла healthlog на новом процессе; наблюдение к первой обкатке —
|
||||||
|
не выродились ли «границы покрытия» в шаблон (REMAINING, «Открытые
|
||||||
Оба проекта стоят на каноне 2 и держат `docs/tasks/PLAN.md`: healthlog 55 задач,
|
вопросы»)
|
||||||
jellybit 43. Шаги повышения — [changelog.md](av-dev-pm/skills/canon/references/changelog.md),
|
|
||||||
запись «Версия 3»; делаются скиллом `av-dev-pm:canon` в режиме `upgrade`.
|
|
||||||
|
|
||||||
- [x] healthlog: `PLAN.md` → `ROADMAP.md`, ссылки, `"canon": 3` — сделано,
|
|
||||||
лежит в рабочем дереве проекта некоммитнутым
|
|
||||||
- [ ] jellybit: то же
|
|
||||||
- [ ] род работы и раздел «Затрагивает» — **не задним числом**: сперва то, что
|
|
||||||
идёт в ближайший набор (`sprint take` без них откажет), остальное по ходу
|
|
||||||
переоценки (PPP)
|
|
||||||
- [ ] секции роадмапа: `порядок` → `Запланировано`, `темы` → `Направления`,
|
|
||||||
завести `Готово` и `Сопровождение`; прозаические разделы healthlog («Что уже
|
|
||||||
пройдено», «Почему в таком порядке») разложить — звенья строками в
|
|
||||||
`Готово`, обоснование очереди прозой внутри `Запланировано` (тема 19, 80).
|
|
||||||
`check` теперь называет чужую секцию ошибкой, так что шаг обязателен
|
|
||||||
- [ ] переформулировать цели ответом на «что приложение будет уметь»; цели не
|
|
||||||
про приложение («Процесс и качество разработки» в jellybit) — в
|
|
||||||
`Сопровождение`
|
|
||||||
- [ ] `check --fix` на обоих: поднимет написание канонических секций, поставит
|
|
||||||
отбивку после заголовков и сведёт секцию в мете файлов с заголовками.
|
|
||||||
Секции беклога переименовать руками — имена выбирал проект (тема 20, ККК)
|
|
||||||
- [ ] заголовки задач в форму действия — **не задним числом**: по мере попадания
|
|
||||||
задачи в работу. `check` печатает их число, `task-form` предложит
|
|
||||||
формулировки пачкой (тема 20, ЕЕЕ)
|
|
||||||
|
|
||||||
**Канон 4** — сверх того (changelog, запись «Версия 4»):
|
|
||||||
|
|
||||||
- [ ] healthlog: `## Разработка` → `## Сопровождение`, поле «Секция» в целях этой
|
|
||||||
секции, `check --fix` (переставит `Готово` вниз и поправит отбивку),
|
|
||||||
`"canon": 4`
|
|
||||||
- [ ] jellybit едет сразу на 4: `Готово` заводить **последней**, секцию
|
|
||||||
сопровождения — сразу с новым именем, переставлять дважды не нужно
|
|
||||||
- [ ] типы: `check --fix` переведёт `kind:`/`[goal]`/`[idea]` в поле «Тип», снимет
|
|
||||||
тег, поставит эмодзи, переименует «Секция» → «Категория» у задач и снесёт
|
|
||||||
сырьё в конец категорий — **за один проход, вместе с порядком секций**
|
|
||||||
- [ ] разобрать `НЕОДНОЗНАЧНО` после `--fix`: записи без типа (заведены до
|
|
||||||
появления рода работы) машина не угадывает — `edit <слаг> --type …`
|
|
||||||
- [ ] имена файлов: `docs.py check` назовёт кириллицу, не-kebab-case и форму
|
|
||||||
имени ADR. Переименование ADR — **перенос ссылок одним проходом**: слаг
|
|
||||||
стоит в `adr/README.md`, в `architecture.md` и в чужих документах
|
|
||||||
- [ ] первый прогон `doc-consistency` на живом проекте — правило единственного
|
|
||||||
дома до сих пор не проверял никто, урожай ожидается крупный; разбирать
|
|
||||||
порциями
|
|
||||||
- [ ] `doc-code-drift` — на ближайшей сессии между спринтами, с разделом
|
|
||||||
запретов `CLAUDE.md` на входе
|
|
||||||
- [ ] новые обязательные разделы — **не задним числом**: `Воспроизведение` у
|
|
||||||
каждого `fix` и `Вопрос` + `Куда ляжет ответ` у каждого `research` пишутся
|
|
||||||
по мере того, как задача идёт в набор (`sprint take` без них откажет).
|
|
||||||
Сколько записей готово к взятию, печатает блок здоровья `check`
|
|
||||||
- [ ] `docs/review.md`, «Триггеры профиля» — переписать целиком: снести перечень
|
|
||||||
мест для `deep` (профиль упразднён), а оставшийся перевести на новое
|
|
||||||
правило — `wide` это крупное или незнакомое изменение, 5–10% задач, плюс
|
|
||||||
отдельный список мелкого для `quick`. Там же две честные строки в
|
|
||||||
«перестали проверять сознательно»: форма решения (снят проход независимой
|
|
||||||
реализации) и всё, что требует запуска (меряющие проходы только в `wide`)
|
|
||||||
|
|
||||||
**Канон 5** — сверх того (changelog, запись «Версия 5»):
|
|
||||||
|
|
||||||
- [ ] `docs/review.md`: «Вопросы к проходам» → **«Вопросы по темам»**, каждый
|
|
||||||
вопрос переадресовать теме вместо имени прохода (`requirements`,
|
|
||||||
`autotests`, `conventions`, `architecture`, `security`, `operations` плюс
|
|
||||||
свои). «Недоступно проверке» — тоже разнести по темам
|
|
||||||
- [ ] проверить, не просился ли в `docs/` документ, который раньше считался
|
|
||||||
лишним: теперь он законен и **становится темой ревью**. Это единственный
|
|
||||||
способ добавить проверку, которой в конвейере нет
|
|
||||||
- [ ] `"canon": 5` в `docs/.pm.json` обоих проектов; форму домов не трогать —
|
|
||||||
обе законны
|
|
||||||
|
|||||||
Reference in New Issue
Block a user