From 9453a218d1fb8c66c9bbf1f9878fa6dd6d351ed6 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sun, 9 Aug 2026 14:18:06 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B6=D1=83=D1=80=D0=BD=D0=B0=D0=BB=20=D1=80?= =?UTF-8?q?=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D0=B9:=20=D0=B7=D0=B0=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D1=8C=2051=20=D0=BF=D1=80=D0=BE=20=D1=80=D0=B0?= =?UTF-8?q?=D1=81=D0=BA=D0=BE=D0=BB=20=D0=BF=D0=BB=D0=B0=D0=B3=D0=B8=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Три коммита раскола несут причины в теле, но дом у решения один. Записано то, чего в отдельных коммитах не видно: сцепка внутри одного владельца не выглядит сцепкой, пока владелец один, и обнаруживается не рассуждением, а попыткой поставить половину отдельно. Плюс правило разреза владения — по тому, кто инструментом пользуется, а не по тому, кто о нём подробнее написал. Co-Authored-By: Claude Opus 5 (1M context) --- DECISIONS.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/DECISIONS.md b/DECISIONS.md index 132051e..27e5f33 100644 --- a/DECISIONS.md +++ b/DECISIONS.md @@ -3207,3 +3207,43 @@ JJJ): у профиля обязан быть один правильный от одинаковых, и без помеченной копии они разъезжаются — тем вернее, что каждый по отдельности выглядит осмысленным. + +## 51. av-dev-pm расколот: владение пошло по тому, что ставится порознь (2026-08-09) + +**АЕАКЖ. Один плагин владел двумя вещами, и это мешало обеим.** `av-dev-pm` держал +документацию проекта и учёт работ. Пока владелец был один, сцепки выглядели +удобством: `docs.py` требовал `docs/tasks/` и звал внутрь `tasks.py` +подпроцессом, настройки задач лежали ключом в `docs/.pm.json`, язык проектных +текстов — внутри скилла `canon`. Каждая из трёх на расколе оказалась не +удобством, а утверждением, что половина принадлежит другой половине. Теперь +плагина два, `av-dev-docs` и `av-dev-tasks`, и каждый ставится сам по себе. + +**АЕАКЗ. Самодостаточность держится копией, а не ссылкой.** Ссылка в дерево +соседнего плагина работает ровно до того момента, когда сосед не установлен, — а +это и есть тот случай, ради которого раскол делался. Поэтому все относительные +ссылки, пересекшие границу, сняты: вместо них имя скилла через пространство имён +и оговорка, что вызов может не разрешиться. То, что нужно обоим **дословно**, +стало общим домом в `shared/`: язык проектных текстов и словарь «Сопровождение и +эксплуатация». Второй выбран не по теме, а по числу владельцев — его делят +роадмап, `architecture.md` и тема ревью `operations`, то есть три плагина, и ни +один им не владеет. Три перечня «чем держат проект» уже разъезжались молча. + +**АЕАКИ. OpenSpec отдан тому, кто им работает, а не тому, кто о нём написал.** +Версия 7 канона объявила `openspec/` своим слотом, и разрез вышел не по владению: +без каталога не запускается конвейер, а не канон. Заведение и форма файла уехали +в скилл `av-dev-pipeline:openspec`, отсутствие каталога стало для `docs.py` +неприменимостью вместо отказа. **Остаток назван, а не замолчан:** проверка формы и +сторож версии пока остались в скрипте канона, потому что своего скрипта у +конвейера нет ни одного, — то есть у файла сейчас два плагина, один заводит, +другой проверяет. Это записано и в журнале версий как временное состояние. + +### Что из этого следует + +175. **Сцепка внутри одного владельца не видна, пока владелец один.** Она + выглядит удобством ровно до раскола и обнаруживается не рассуждением, а + попыткой поставить половину отдельно. Отсюда и порядок работ: сперва + разнести, потом чинить то, что перестало сходиться. +176. **Разрез владения идёт по тому, кто инструментом пользуется, а не по тому, + кто о нём написал.** Канон описывал OpenSpec подробнее всех и потому казался + его владельцем; работает по нему конвейер, и слот принадлежит конвейеру. +