Files
dev-skills/REMAINING.md
T
avandClaude Opus 5 88c5d974fe учёт: шапка REMAINING врала про восемь тем, добавлен снос проектных копий
Шапка и пункт про push стояли на 11 коммитах и восьми темах — стало 17 и
двенадцать. Предел «копия правила в шаблонах» теперь говорит, что расхождение
ловит copies.py, а на человеке осталось пометить копию и завести запись в
журнал версий.

В план healthlog дописан снос девяти проектных агентов и двух скиллов: они
прошлого поколения и ссылаются на docs/conventions.md, docs/local-research.md
и docs/review-journal.md — на файлы, которых после переезда не будет.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 16:41:20 +03:00

105 lines
8.9 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.
# Остатки, открытые вопросы и принятые пределы
Состояние на 2026-08-03, после разбора двенадцати тем и 16 коммитов реализации
(`ad1779b``885981c`).
План работ — [TODO.md](TODO.md). Решения с причинами — [DECISIONS.md](DECISIONS.md).
Здесь то, что **не** является работой из плана: незакрытые риски, честно принятые
пределы и вопросы, у которых пока нет ответа.
## Главный незакрытый риск
**Калибровка не сделана, а charter'ы переписаны трижды.**
Первый раз девять charter'ов правили при выносе в плагин: предмет проверки
заменили ссылкой на раздел брифа. `references/calibration.md` требует при такой
правке замерить, помогла ли она, — **замера не было**. Второй раз их переписали
коммитом `9cef452`: ссылка на раздел брифа заменена путём документа канона.
Третий — коммитами `0eab075` и следующим, по находкам ревью: `adversary`, `ops`,
`reimpl`, `rubric` и `triage` правились ещё раз.
**Три неизмеренных изменения подряд** в том самом месте, где присваивается
severity. Пробы готовы и синтетических не нужно — четыре реальные находки
прошедшей сессии healthlog:
- скелет из `null` затирает маршрут тренировки молча и необратимо;
- откат бинаря поверх новой схемы стартует без единого слова;
- канонизация внутри транзакции — 768 МиБ пика, 5.019 с удержания блокировки;
- `-1 >= -1` читается как «журнал разобран целиком».
Ожидаемый исход известен и его стоит проверить первым: метод переносится, а
**severity деградирует**. Третья находка без слота под представление данных и
настройки хранилища превращалась из `critical` с прогнанным оракулом в условное
наблюдение. Ровно ради этого случая канон развёл числа (`docs/research/`) и
настройки (`docs/database.md`) по разным домам и **обязал проход их сшивать**
но работает ли обязанность, не проверено. Оркестратор реагирует на severity,
поэтому цена — не «не найдём», а **«найдём и не починим»**.
Замер стоит перед переездом jellybit и блокирует его (решение 39).
## Что ещё не сделано
Список работ — в [TODO.md](TODO.md). Здесь только то, что стоит держать в голове
отдельно:
- **`git push`.** 17 коммитов не отправлены на origin, поэтому установленный
маркетплейс их не видит и до сих пор стоит на `092d07c`. Это буквальное объяснение фразы «плагины ни к одному проекту не
подключены»: подключать пока нечего.
- **Ни один скилл не прогонялся на живом проекте.** `docs.py` прогнан на
healthlog и jellybit в режиме `check` и находит осмысленный дрейф; `init`,
`canon adopt`, `canon upgrade` и скилл `docs` не исполнялись ни разу.
- **Проектные копии в healthlog и jellybit.** Два `.claude/skills/` и одиннадцать
`.claude/agents/` старого поколения. У jellybit хуже: его скиллы названы
`task-pipeline`, `review-pipeline`, `task-batch`**ровно как в плагине**.
Claude Code не переопределяет их, а держит обе пары, так что короткое имя может
увести в устаревшую копию, и молча.
## Открытые вопросы
**Как проверять, что канон не разошёлся с проектами после `upgrade`.** `canon
check` сверяет версию, но не то, что миграционные записи journal'а применены
верно. Проект может нести `"canon": 2` и не иметь того, что версия 2 требовала.
**Форма ADR при пересмотре решения.** Правило «старая запись получает статус
`заменено на`» требует, чтобы кто-то заметил, что новое решение отменяет старое.
Механической проверки нет, а принуждённое отрицание на шаге синка спрашивает про
`adr/` вообще, а не «не отменяет ли это что-то из существующего».
**Что делать с `av-dev-backlog` после перевода jellybit.** Помечен устаревшим и
переписан так, чтобы не ловить триггер. Удалять его из маркетплейса или оставить
как есть — решится, когда jellybit переедет.
## Известные пределы — приняты, чинить не планируется
**Транзакций на несколько файлов нет.** POSIX её не даёт без журнала. Окно сжато
до цепочки `rename` без ввода-вывода, а всё, что в окне может разъехаться,
сделано производным и восстанавливается `check --fix` без потерь.
**Оракул в критериях приёмки проверяется эвристикой.** Число пунктов проверяется
жёстко, наличие оракула — по слову, и это **только замечание**. В тексте прямо
сказано, что проверено меньше, чем требуется.
**Recall прохода по конвенциям равен качеству конвенций проекта.** Своего списка
у него нет: критерий берётся из `docs/conventions/`. На проекте с тонкими
конвенциями проход почти пуст, и charter это признаёт вслух.
**Доменного словаря в каноне нет.** Проходы получают факты, но не термины;
словарь строится каждый раз заново из спек и архитектуры. Цена не измерена.
**Смысловые дубли ловит только агент.** `docs.py` видит раскладку, но не то, что
`docs/specs/recognition.md` описывает то же, что capability `recognition`.
Граница объявляется вслух в каждом отчёте — это единственная защита от
«соблюдено» на проекте с тремя лишними файлами.
**Приёмщик и исполнитель совпали.** Граница «пайплайн не закрывает задачу» снята
сознательно (решение P); три защиты из раздела «Стимулы» держатся теперь текстом,
а не механикой. Реальные опоры — сохранённый отчёт триажа, `SPRINT.md` под git и
`reopen`. Это записано в самом скилле, а не спрятано.
**Копия правила в шаблонах проекта.** `adr/README.md` и `review.md` уезжают в
репозиторий и обязаны там что-то говорить, поэтому правило канона в них
копируется намеренно. Расхождение копии с домом ловит `scripts/copies.py`
но только у **помеченной** копии, и только внутри маркетплейса. Остаётся на
человеке двое: пометить копию и завести запись в журнал версий, когда правка
уже уехала в проект.