- «готовность» значила и «запись можно брать», и «что считается сделанным»;
второй смысл стал «определением сделанного» — своё же правило про занятое
слово запрещало это прямо
- «пайплайн» жил в 24 местах вне журналов при том, что DECISIONS фиксирует
его уход «целиком»; рабочее имя — конвейер
- «чекпоинт» в review значил стадию и проход, в resolve — остановку человеку;
слово оставлено за остановкой
- у описания плагина было два дома, и три из четырёх уже разошлись. Сведены,
и класс закрыт машиной: frontmatter.py сверяет plugin.json с marketplace,
гейт разбужен на *.json
- README врал про односторонние зависимости и терял healthcheck на диаграмме
- перечень агентов в REMAINING отстал на два поколения
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
resolve судил готовность записи глазами — текст писался до того, как
появилась команда ready. Теперь зовёт её через av-dev-tasks:tasks, а
отказ читает исходом «не доведена». Это ровно тот случай, где машина
дешевле и точнее, а цена ошибки отложенная.
canon.md всё ещё говорил, что невзятой запись делает sprint take.
REMAINING перечислял три опоры против совпадения приёмщика с
исполнителем, включая SPRINT.md под git. Опор осталось две, и третья не
заменилась, а исчезла: у приёмки больше нет момента. Записано как есть.
frontmatter.py: устаревший путь review-pipeline/SKILL.md в комментарии.
В план добавлена дыра, которую открыло снятие сессии: двух агентов
канона на живом проекте больше не зовёт никто, кроме adopt и upgrade.
Предмет сузился до двух: что сейчас самое важное и что перестало быть
важным. Ответ записывается порядком строк в беклоге.
Из четырёх шагов сессии выжили два (вопросы, переоценка порциями), один
заменился расстановкой очереди вместо набора спринта, два выпали.
Приёмка — грумингу не по предмету, ритуала у неё больше нет, остаётся
reopen; цена названа в тексте. Разбор процесса потерял якорь, и вместе
с ним ушёл прямой вызов агентов doc-consistency и doc-code-drift — это
починка, а не потеря: агенты принадлежат av-dev-docs, и груминг звал их
мимо правила обращения к соседу.
sprint.md удалён, cadence.md стал portions.md.
Канон 12: запись в журнал велит проектам снести SPRINT.md и расставить
порядок, с точным порядком шагов — сперва удалить файл, потом check
--fix, иначе он увидит третий индекс и станет ругаться, а не чинить.
Побочно: canon.md объявлял себя версией 7 при текущей 11. Пять версий
дом канона врал о себе — машина сверяет константу скрипта, а прозу в
заголовке не читает никто.
REMAINING держал два утверждения, которые переименование сделало
неверными.
Перечень непрогнанного не знал про resolve — а это самый новый скилл
и единственный с чекпоинтами.
Риск «скиллы jellybit названы ровно как в плагине» снят: там
task-pipeline, review-pipeline, task-batch, а плагин теперь даёт
resolve, review, openspec — пересечений нет. Записано, что риск снят
переименованием, а не устранён по существу.
Заодно список проектных копий в resolve дополнен именами прошлого
поколения: сносить надо и их.
Пайплайн нескольких задач снят с повестки: работаем по одной. Каталог
скилла удалён, и с ним всё, что держалось только на нём.
Хвосты были не только ссылками. У review-specs исчез третий режим
(стык после слияния) — вместе с исключением «живого change нет, берём
актуальные спеки источником»: теперь отсутствие дельта-спеки это отказ.
У review-triage исчезло единственное исключение из правила «плана нет —
не запускаюсь». В каноне и у doc-code-drift имя основной ветки
обосновывалось тем, что «в неё вливает батч», — довод заменён на
верный.
Адрес принадлежит одному плагину, а называют его все: docs/* стоит в
сорока местах конвейера, tasks/ROADMAP.md — в четырёх местах канона.
Переименование в каноне до них не доходит, и заметить это нечем:
протухший адрес попадает в механизм честной деградации ревью и выходит
правдоподобной строкой «документа в проекте нет», а не поломкой.
Перечень берётся из константы владельца — той, по которой он и так
проверяет раскладку. Судится упразднённое, а не незнакомое: список тем
канона открытый, и «нет такого имени» опровергнуть нечем; зато карта
переездов RETIRED и есть перечень запрещённого. Рядом одна догадка —
почти совпавшее имя как опечатка, порог замерен (законные до 0.64,
опечатки от 0.91).
Первый прогон: одна настоящая находка — REMAINING иллюстрировал
смысловой дубль адресом docs/specs/, упразднённым в версии 1 канона.
В гейте без glob: перечень лежит в .py, упоминания в .md, и коммит с
переименованием трогает только первую сторону.
План описывал мир до раскола: 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>
Сабагент в роли продакт-менеджера оценил покрытие жизненного цикла личного
проекта скиллами и агентами av-dev-pm. Скоуп сужен по ходу разбора: деплой и
разбор инцидентов делаются вручную, скиллов под них не заводим — три находки
из восьми сняты этим сразу.
Шаг 2 сессии требовал чисел, которых процесс отказался собирать решением.
cadence.md делал обязанностью пересмотр «ориентира по размеру спринта, прироста
беклога на закрытую задачу, времени на задачу» и «сколько заняли задачи против
ожидания». Данных нет: у записи нет дат заведения, взятия и закрытия, close
удаляет файл, sprint close очищает SPRINT.md. Хуже, «против ожидания» и «время
на задачу» требуют оценки и тайм-бокса, а session/SKILL.md в «Почему не Scrum»
их прямо не берёт — пункт противоречил решению через файл от себя. Числа не
пересматривались ни разу, поэтому выкинуты, а не подперты учётом дат. Осталось
качественное; рядом записано, что замеров нет намеренно, иначе следующий
читатель заведёт их обратно как недостающие. Шаг 3 пункт 9 переименован из
«переоценки по измеренному» в «по пройденному».
doc-consistency переехал с каждого синка на сессию, к doc-code-drift. Агент на
opus звался шагом 9 пайплайна, то есть 5-8 opus-проходов за спринт по документам,
меняющимся на несколько абзацев. Довод сильнее денег: расхождение между двумя
документами по определению требует двух, а на большинстве задач синк правит
один. И пачка, отбираемая работой, не видит того, чего работа не касалась, —
а расхождение живёт ровно там. Это снимает открытый вопрос REMAINING про охват
парного статуса ADR. Цена — потеря привязки находки к задаче, принято сознательно.
Отмена цели получила порядок, но не флаг. close запрещал закрыть цель с живыми
задачами и не говорил, что с ними делать. Теперь: сперва задачи поштучно
(close --reason своей причиной либо edit --goal на другую), потом цель в
REJECTED.md, а не в Готово. Флаг --cascade отвергнут: поштучный разбор — не
церемония, а единственный момент, когда видно, что переживёт цель. Место
процедуры — переоценка на сессии, отмена цели и есть разбор её задач.
У брошенного спринта появился второй законный исход. --dissolve везде был
привязан к блокеру, и вернувшийся к месячному набору не имел законного хода:
двигать нельзя, распускать не по чему. Теперь роспуск объясняется блокером или
тем, что набор протух. Порога в неделях нет — тот же класс, что выкинутые
числа: счётчик простоя пришлось бы вести руками. Признак не срок, а что набор
перестал быть твоим. Плюс точка входа «вернулся, а спринт открыт» и триггер в
description скилла.
Журнал канона прогоняется как есть, схлопывать 3 и 4 не стали. Взамен появилась
проверка исхода: шагом 6 adopt и шагом 6 upgrade зовутся оба судьи документов.
Это ответ на открытый вопрос «как проверять, что канон не разошёлся с проектами
после upgrade»: check сверяет число в .pm.json с версией скрипта и про существо
записи не знает ничего, а записи применяются руками.
Износ обязательных «границ покрытия» не правится: это гипотеза, а не находка.
Записана наблюдением к первой обкатке. Предложение агента поднять обкатку выше
калибровки снято — TODO уже так устроен, агент спутал «главный риск» с «первое
в очереди»; в REMAINING добавлена оговорка против того же прочтения.
Тема 31 в DECISIONS.md, следствия 117-123.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Плагин был помечен устаревшим решением Q и жил до перевода jellybit.
Удалён раньше этого срока: условие пережило свою причину.
Заморозка выглядела бесплатной, а платила собой в каждой проверке
репозитория — exclude в pyproject.toml, SKIP_DIRS в copies.py, два абзаца
README, оговорка в описании маркетплейса, чтобы не ловить триггер
«добавь задачу в беклог». Пять исключений ради 706 строк, которые никто
не читает, и каждое надо объяснять всякий раз, когда спрашивают, почему
проверка обходит каталог.
Причина условия отпала раньше названного срока. docs/backlog/ читает не
backlog.py, а av-dev-pm:tasks — adopt.md и адаптер в tasks.py держат ту
же раскладку как вход миграции. Плагин перестал быть единственным, кто
её знает, ещё когда писался adopt, и «живёт до перевода последнего
проекта» с тех пор охраняло пустоту. Перевод jellybit на канон это не
задевает.
Порядок вышел обратный ожидаемому: плагин удалён из маркетплейса, а с
jellybit снят после. Ожидалась ручная чистка enabledPlugins и
installed_plugins.json, но claude plugin uninstall отработал штатно — он
идёт по реестру, а не по манифесту маркетплейса. Раздел «Снятие» в README
переписан с частного случая на общую процедуру, предупреждение заменено
проверенным фактом.
Записи Q и HH получили парные статусы, тема 30 в DECISIONS несёт причины
и три следствия, пункт 5 TODO отмечен, открытый вопрос из REMAINING убран.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Первый прогон агента — по репозиторию, который его же и содержит. Два
прохода, 17 находок, все подтверждены по файлам.
Пять находок — остатки прежней модели типов в файлах, до которых я не
дошёл двумя коммитами раньше. adopt.md держал имена секций роадмапа
канона 2 («порядка», «темы») и «пустой goal законен только у идеи»;
from-review.md и TODO.md — упразднённый [idea]; task-batch в другом
плагине — «задачи-идеи». Правку модели я вёл от документов, которые
менял, а не от тех, что на них ссылаются: grep по упразднённому слову
дал бы все пять за минуту.
Самая дорогая находка оказалась моей и свежей. Таблица типов в canon.md
объявляла цель у fix запрещённой, а tasks/SKILL.md и task-fix.md —
необязательной; код на стороне вторых. Копия разошлась с домом за один
день, обе половины писал один проход. Поправлено не значение, а причина:
canon.md дважды объявлял, что фиксирует только словарь типов, — значит
колонкам «разделы» и «цель» в нём не место. Осталась таблица из двух
колонок и ссылка на дом схемы.
Перечень «чем держат проект» пересказывался втроём и разъехался:
«метрики и логи» против «мониторинга», «проверки» есть в двух из трёх.
При этом tasks/SKILL.md ссылался на дом рядом с собственным пересказом —
ссылка не мешает копии разойтись, если копия всё равно стоит. Перечень
остался в canon.md, два места ссылаются.
README пересказывал раскладку канона блоком кода, и копия была уже
неполна — не хватало путей, чьё отсутствие docs.py считает нарушением.
Заменено ссылкой. Там же измеренное число из DECISIONS III заменено
ссылкой на решение.
REMAINING дублировал два отмеченных сделанными пункта TODO и держал
счётчики, которые обязан двигать человек: «двенадцати тем и 16 коммитов»
(стало 28 и 52), «три неизмеренных изменения» (стало больше). Счётчики
отменены как класс, причина записана в шапку. Открытый вопрос про парный
статус ADR переформулирован: судья появился, открыт остался охват.
Три противоречия вне av-dev-pm: --roadmap-sections перечислен среди
флагов init прозой того же файла, объявляющей, что его нет; review-ops
берёт журнал docs/review.md и тут же объявляет историю инцидентов
принципиально недоступной; «честный предел» конвейера отменял целиком
документ docs/research/. Плюс битый якорь ссылки на раздел вычитки.
Находка про Co-Authored-By снята как неверная: агент прочитал
av-dev-git/skills/commit/SKILL.md как описание практики этого
репозитория, а это продукт, уезжающий в чужие проекты. Устав агента не
различает «документ про нас» и «документ про то, что мы производим» —
остаток записан в REMAINING, в устав пока не дописан.
DECISIONS тема 29 (ЧЧШШ–ЮЮЯЯ, следствия 109–113).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
092d07c..88c5d97, клон встал на ту же ревизию и видит av-dev-pm и
av-dev-pipeline. Предусловие переезда healthlog снято: подключать теперь есть
что.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Шапка и пункт про 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>
- sprint.md прямо запрещал шаг, который пайплайн теперь делает: раздел «кто и
когда закрывает» переписан под снятую границу приёмки
- закрытие задачи стало шагом 11, после коммита: раньше упавший коммит оставил
бы задачу закрытой без следа работы
- контракт close --implemented больше не обещает состоявшуюся приёмку
- слот «куда копируются критерии приёмки» убран из session: на него отвечает
пайплайн, а канон его не заводил
- research/ в таблице ролей вернул adversary; журнал версий поднимает CLAUDE.md
целиком, а не тремя пунктами из восьми
- TODO и REMAINING перестали занижать: коммитов одиннадцать, переписок три
- README: три плагина, канон документов, явное обновление маркетплейса
- HISTORY: сжатый AGENTIC-TASKS — что отвергнуто и почему, числа первого замера
- REMAINING: главным риском названа несделанная калибровка при двух подряд
переписываниях charter'ов; закрытые разбором вопросы убраны