f0dd8f70c14f965078f78f8eb626401904a69790
3
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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> |
||
|
|
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> |
||
|
|
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> |