diff --git a/REMAINING.md b/REMAINING.md new file mode 100644 index 0000000..8a7a116 --- /dev/null +++ b/REMAINING.md @@ -0,0 +1,137 @@ +# Остатки и открытые вопросы + +Состояние на 2026-08-03, после ввода `av-dev-tasks` и `av-dev-pipeline` +(коммиты `9219f4a` → `20dca29` → `0eca206`). + +Плагины написаны, проверены тремя проходами ревью и починены по находкам. Но +**ни один из них ещё не подключён ни к одному проекту**, а часть работы +осознанно отложена. Здесь то, что осталось, — с причинами, потому что через +месяц причина забывается раньше факта. + +## Что осталось сделать + +Порядок примерно соответствует зависимостям: верхнее мешает нижнему. + +### 1. Калибровка переписанных проходов + +Все девять charter'ов ревью переписаны при выносе в плагин: предмет проверки +заменён ссылкой на раздел брифа. `references/calibration.md` самого плагина +требует при такой правке замерить, помогла ли она, — **замера нет ни одного**. + +Оценка «проход всё ещё нашёл бы находку» получена рассуждением по текстам, и +ревьюер честно пометил её `Confidence: medium`. По правилам плагина такая +оценка не поднимается выше `major`. + +Пробы готовые, синтетических не нужно — четыре реальные находки прошедшей +сессии healthlog: + +- скелет из `null` затирает маршрут тренировки молча и необратимо; +- откат бинаря поверх новой схемы стартует без единого слова; +- канонизация внутри транзакции — 768 МиБ пика, 5.019 с удержания блокировки; +- `-1 >= -1` читается как «журнал разобран целиком». + +Ожидаемый результат замера известен и его стоит проверить в первую очередь: +метод переносится, а **severity деградирует** — третья находка без слота под +представление данных и настройки хранилища превращается из `critical` с +прогнанным оракулом в условное наблюдение. Оркестратор реагирует на severity, +поэтому цена обобщения — не «не найдём», а «найдём и не почините». + +### 2. Завести брифы + +Скилл `av-dev-pipeline:project-brief` написан и собирает бриф из `CLAUDE.md`, +архитектуры, Taskfile и конвенций. Но брифов нет ни у healthlog, ни у jellybit, +а без них конвейер идёт в деградированном режиме: `critical` по основанию +«нарушен инвариант проекта» не присваивается. + +При починке бриф заполнялся на обоих проектах для проверки контракта (841 и +734 строки) — эти заполнения были **черновыми, в скретчпаде**, и в проекты не +попали. Повторить и положить в репозитории. + +### 3. Переезд healthlog на новый формат + +`docs/backlog/` → `docs/tasks/` с `items/`, `PLAN.md`, `BACKLOG.md`, +`SPRINT.md`, `REJECTED.md`. Скилл `av-dev-tasks:adopt` для этого написан и +прогнан на **копии** живого беклога: 12 целей, 38 задач, 36 переименований +слагов из транслита в английские, 86 ссылок поправлено в 36 файлах, `check` +зелёный. + +Переходное состояние после переезда известно числом: задач без цели — 0, без +двух критериев приёмки — 29. `check` при этом зелёный, но `sprint take` такие +задачи не возьмёт; закрывается порциями переоценки на сессиях. + +Вместе с переездом придётся переписать то, что противоречит новой семантике: +раздел «Процесс» в `CLAUDE.md`, преамбулу `docs/plan.md` («свой приоритет», +«беклог — что брать следующим») и строку «блокеры разбираются пачками» — по +новому определению блокер эскалируется немедленно, пачками разбираются вопросы. + +### 4. Удалить проектные копии + +После подключения плагинов в healthlog остаются два источника правды: +`.claude/skills/healthlog-task-pipeline/`, `healthlog-review-pipeline/` и девять +`.claude/agents/healthlog-review-*.md`. Проектные факты из них уезжают в бриф, +сами файлы удаляются. + +У jellybit хуже: его скиллы называются `task-pipeline`, `review-pipeline`, +`task-batch` — **ровно как в плагине**. Claude Code не переопределяет их, а +держит обе пары, так что короткое имя может увести в устаревшую проектную +копию, и молча. Тексты плагина зовут своё через пространство имён +(`av-dev-pipeline:review-pipeline`), но проектные копии всё равно надо удалять +при установке. + +### 5. Перевод jellybit + +Отложен сознательно: сперва обкатать на healthlog один-два спринта, потом +переносить. Иначе мы одновременно вводим непроверенный процесс и ломаем +работающий проект. + +Объём: беклог с приоритетами `высокий/средний/низкий` без целей и спринтов, +одиннадцать ревью-агентов старого поколения (включая `idiom` и `negative`, +упразднённые в healthlog), три скилла с коллизией имён. Часть `capability-map` +живёт в памяти агента, а не в файле, — при переводе это надо материализовать. + +## Открытые вопросы + +**Что делать с `av-dev-backlog`.** В маркетплейсе сейчас оба плагина, и их +описания ловят один и тот же триггер («добавь задачу в беклог») — агент выберет +случайный. Пометить устаревшим, удалить из маркетплейса или оставить до +перевода jellybit, который пока на нём и живёт. + +**Оставлять ли раздел `## Триггеры` в контракте брифа.** Он задумывался как +проектная конкретизация правила выбора профиля ревью, но при заполнении на +обоих проектах выродился в пересказ таблицы профилей самого скилла. Контракт не +запрещает скопировать общее правило, а слот, который заполняется копированием, +пользы не несёт. + +**Название процесса.** Плагины названы, процесс — нет. Обсуждались кодовое имя +из Средиземья (`fellowship` / `council`, под стать `rivendell` и `umbar`), +нейтральная «каденция» и описательные варианты. Для плагинов выбрана функция +(`av-dev-tasks`, `av-dev-pipeline`), но у процесса как целого имени нет. + +**Судьба `AGENTIC-TASKS.md`.** Черновик дизайна лежит в корне healthlog и не +закоммичен. Содержимое переехало в плагины, значит документ стал вторым домом +для тех же правил — а расхождение двух домов ровно то, против чего он сам и +написан. Либо удалить, либо сжать до истории решений («почему не Scrum», числа +первого замера, что и почему отвергнуто). + +## Известные пределы — приняты, чинить не планируется + +**Транзакции на несколько файлов нет.** POSIX её не даёт без журнала. Окно +сжато до цепочки `rename` без ввода-вывода, а всё, что в окне может разъехаться, +сделано производным и восстанавливается `check --fix` без потерь. + +**Оракул в критериях приёмки проверяется эвристикой.** Число пунктов +проверяется жёстко, наличие оракула — по слову, и это **только замечание**. +В тексте прямо сказано, что проверено меньше, чем требуется, — притворяться тут +дороже, чем признаться. + +**Recall прохода по конвенциям равен качеству конвенций проекта.** Своего +списка у него больше нет: критерий берётся из файла проекта. На проекте с +тонкими конвенциями проход почти пуст, и charter это признаёт вслух. + +**Доменного словаря в брифе нет.** Charter'ы получают факты, но не термины; +словарь проход строит каждый раз заново из спек и архитектуры. Цена не +измерена. + +**`adopt` не удаляет источники и не правит подписи ссылок.** Удалять чужое +молча нельзя, а подпись вида `[docs/backlog](docs/tasks/BACKLOG.md)` правится +глазами. И то и другое печатается в отчёте, а не проглатывается.