Commit Graph
4 Commits
Author SHA1 Message Date
av c6be879831 правило обращения к соседнему плагину получило дом
Стояло в пяти местах в пяти редакциях: два разных довода, ни в одном
месте оба, и три места из пяти молчали о том, что делать при
неразрешившемся вызове. Плюс невысказанный инвариант: $CLAUDE_PLUGIN_ROOT
ведёт только в свой плагин.

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

Оглавление адресов в CLAUDE.md проекта отклонено — второй дом раскладки,
и протухший адрес в нём выходит правдоподобной строкой честной
деградации. Сверка адресов уходит машине, записана в TODO разделом 5.
2026-08-09 15:02:46 +03:00
avandClaude Opus 5 00ddfb0dde av-dev-pm расколот на av-dev-docs и av-dev-tasks
Плагин владел двумя разными вещами сразу — документацией проекта и учётом работ,
— и это мешало обеим. Канон нельзя было поставить без задач, задачи без канона, а
язык проектных текстов лежал внутри скилла canon и потому принадлежал половине.
Теперь плагина два, каждый ставится сам по себе.

av-dev-docs: скиллы canon, docs, init; агенты doc-consistency, doc-code-drift,
doc-wording; скрипт docs.py. av-dev-tasks: скиллы tasks, session; агенты
task-form, task-wording; скрипт tasks.py.

Между собой они зовутся через пространство имён, а не по пути в чужое дерево.
Все относительные ссылки, пересекшие границу плагина, сняты: tasks больше не
указывает в canon, canon не указывает в tasks. Вместо ссылки — имя скилла и
оговорка, что вызов может не разрешиться, и это исход, а не поломка.

То, что нужно обоим дословно, стало вторым общим домом. Словарь «Сопровождение и
эксплуатация» назван в трёх местах трёх плагинов — секция роадмапа, раздел
«Эксплуатация» в architecture.md, тема ревью operations — и ни один из трёх им не
владеет; он уехал в shared/operations.md, а canon.md и скилл задач везут копии.
Три перечня «чем держат проект» уже разъезжались на «метриках и логах» против
«мониторинга», так что ссылка тут не годится: плагин, поставленный в одиночку,
получил бы указатель в никуда. Тем же способом язык: у av-dev-tasks появилась
своя копия language.md.

Копий стало 18 при 8 домах.

Переименования разведены по смыслу, а не заменой строки: где речь о каноне —
av-dev-docs, где об учёте задач — av-dev-tasks. В пайплайне таких мест
одиннадцать, и оба адресата там встречаются вперемешку.

Журналы (DECISIONS, TODO, HISTORY) намеренно не тронуты: они описывают состояние
на момент записи. По той же причине оставлена наблюдённая строка в комментарии
docs.py — она цитирует конфиг живого проекта, а не называет плагин.

Не входит в этот заход и названо отдельно: слияние canon и docs в один скилл,
разделение docs/.pm.json на два конфига и переезд openspec в пайплайн.

Гейт зелёный: копии, фронтматтеры, диаграммы, json. Оба скрипта прогнаны после
переезда — docs.py version и tasks.py check на фикстуре.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 14:06:26 +03:00
avandClaude Opus 5 86e22d932c вычитка раздвоилась: doc-wording для документов, task-wording для записей
Решение ППП говорило: агент называется doc-wording, а не task-wording, потому что
правила языка относятся ко всем проектным текстам, а не к одним задачам.
Утверждение верно и сегодня — оно и есть причина, по которой правила уехали в
shared/. Но из общности правила не следует общность прохода: docs и tasks
расходятся самодостаточными плагинами, а самодостаточный плагин не может
зависеть от агента соседа. ППП отменено, и отменено не по своей оси.

Проходов теперь два, и разведены они по охвату — впервые в этом репозитории. И
task-form против вычитки, и doc-consistency против doc-code-drift разведены по
глубине; здесь глубина одна, а входы разные. doc-wording читает документы канона,
конвенции, ADR, записки разведки и CLAUDE.md; task-wording — items/ и строки
индексов, а документы проекта открывает только как словарь, чтобы отличить
неизвестный термин от известного.

Разрез по охвату дублирует устав, и потому весь общий текст стал домом. Оба
судят по одним и тем же девяти правилам; отличаются входом, соседями по границе,
машинной проверкой, о которой молчат (docs.py против tasks.py), и способом
подстановки — команда edit у задач, редактор у документов. Копий в каждом уставе
151 строка, своего непустого текста 61 и 75.

Домом стал и формат доклада — блок вычитка-доклад: форма находки, границы
покрытия, пустой доклад. Это контракт прохода, а не правило языка, но лежит он в
shared/language.md отдельным разделом: заводить под пятнадцать строк отдельный
файл дороже, чем назвать раздел честно. Признак дома здесь не тема, а число
потребителей больше одного при обязательной дословности — разойдись два прохода
формой доклада, зовущий скилл разбирал бы два формата вместо одного.

Ссылки разведены в семи местах: tasks/SKILL.md (таблица двух проходов),
task-form (описание и обе границы), doc-code-drift, canon.md (сравнение разрезов),
canon/SKILL.md, README дважды. doc-consistency и таблицы канона оставлены на
doc-wording — они про документы.

Гейт зелёный: копии 13 при 7 домах, фронтматтеров 24, диаграммы. Решение — 50.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 13:54:46 +03:00
avandClaude Opus 5 c669215fc8 язык уехал в shared: дом вне плагинов, устав вычитки — копия целиком
Дом языка лежал в av-dev-pm/skills/canon/references/language.md — внутри одного
скилла одного плагина. Пока плагин был один, это читалось как «дом рядом с
главным потребителем». Разделение на самодостаточные docs и tasks превращает то
же место в утверждение, что язык принадлежит канону: плагин задач, поставленный
без канона, потерял бы правила письма вместе с ним. Дом переехал в shared/ и не
принадлежит ни одному плагину, плагины везут дословные копии. Самодостаточность
держится копией, а не ссылкой: shared/ нужен этому репозиторию, а не
установленному плагину.

Устав вычитки стал копией целиком. doc-wording копировал из дома англицизмы,
словарь, жаргон и порог правки — четыре блока; девять правил он излагал своими
словами, и эти слова с домом никто не сверял. Там дрейф и копился молча: в доме
правило «одна мысль — одно предложение» требовало выносить придаточное, в уставе
— не резать причинную связь, и каждая версия выглядела полной. Из десяти правил
машина сверяла четыре, теперь сверяет все.

Условие переезда: текст правил написан безлично, а всё, обращённое к проходу
(«пиши так-то», «про это молчи»), вынесено из блока в раздел «Что из этих правил
докладывается особым образом». Правило принадлежит дому, способ доложить о нём —
уставу.

Блоков три, и делятся они по потребителю, а не по теме: язык-доктрина (зачем
стиль, полезное действие, параллельность, заголовок, что отброшено),
язык-правила (девять правил с тремя таблицами), порог-правки. Порог оставлен
отдельным потому, что его берёт task-form, который правил языка не проверяет
вовсе; вложенных блоков copies.py не знает, и внутри язык-правила забрать порог
было бы нечем.

Потребители собраны из дома скриптом, а не руками. Домов 6 вместо 7 — три
таблицы слились в язык-правила; копий 9 вместо 8.

Гейт зелёный: копии, фронтматтеры, диаграммы. Решение — 49.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 13:49:21 +03:00