diff --git a/README.md b/README.md index 2325b35..52e54e3 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,7 @@ дизайна (`small` — только сверка спек; `medium` — плюс рубрика; `large` — плюс архитектурный проход) и кода (`small` — гейт, спеки, код, триаж; `medium` — плюс приёмник тем; `large` — плюс доказательство: запуск, замер, построенный - путь, 5–10% задач). Десять агентов-проходов. + путь, 5–10% задач). Каждый проход — свой агент, перечень держит сам скилл. ### av-dev-git @@ -121,10 +121,10 @@ ```mermaid flowchart TB - subgraph avdev["av-dev — один плагин, девять скиллов"] + subgraph avdev["av-dev — один плагин, весь процесс"] subgraph pipe["работа по задачам; сценарий решения требует OpenSpec"] direction LR - tp["code-resolve
3 сценария: разведка,
решение, обслуживание"] --> rp["code-review
10 агентов-проходов"] + tp["code-resolve
3 сценария: разведка,
решение, обслуживание"] --> rp["code-review
агенты-проходы"] osp["code-openspec
заводит и проверяет openspec/"] end canon["canon
форма раскладки всего проекта"] diff --git a/av-dev/agents/doc-wording.md b/av-dev/agents/doc-wording.md index b9d4912..281c63c 100644 --- a/av-dev/agents/doc-wording.md +++ b/av-dev/agents/doc-wording.md @@ -1,6 +1,6 @@ --- name: doc-wording -description: "Вычитка языка документов проекта по информационному стилю — паспорт, архитектура, конвенции, безопасность, решения ADR, записки разведки, CLAUDE.md. Смотрит отглагольные существительные и страдательный залог, оценку без факта, стоп-слова и канцелярит, «одна мысль — одно предложение», англицизм при живом русском слове, жаргон и метафоры вместо прямого называния, термин, которого нет в документах проекта, транслит в имени файла. Отдаёт готовые формулировки на замену и ничего не правит сам. Записи каталога задач вычитывает отдельный агент task-wording, их форму — task-form. Зовётся по названной пачке правленных документов, а не на весь канон: последним шагом синка документации (av-dev:doc-sync), шагом заведения проекта (av-dev:doc-init), сценарием разведки (av-dev:code-resolve), шагами adopt и upgrade скилла av-dev:canon. Скилл healthcheck его не зовёт — там сверка утверждений, а не языка. Только чтение." +description: "Вычитка языка документов проекта по информационному стилю — паспорт, архитектура, конвенции, безопасность, решения ADR, записки разведки, CLAUDE.md. Смотрит отглагольные существительные и страдательный залог, оценку без факта, стоп-слова и канцелярит, «одна мысль — одно предложение», англицизм при живом русском слове, жаргон и метафоры вместо прямого называния, термин, которого нет в документах проекта, транслит в имени файла, счёт корпуса числом вместо ссылки («пять ревью», «три capability»). Отдаёт готовые формулировки на замену и ничего не правит сам. Записи каталога задач вычитывает отдельный агент task-wording, их форму — task-form. Зовётся по названной пачке правленных документов, а не на весь канон: последним шагом синка документации (av-dev:doc-sync), шагом заведения проекта (av-dev:doc-init), сценарием разведки (av-dev:code-resolve), шагами adopt и upgrade скилла av-dev:canon. Скилл healthcheck его не зовёт — там сверка утверждений, а не языка. Только чтение." tools: Read, Grep, Glob model: sonnet color: green @@ -153,6 +153,34 @@ color: green коммитах и путях, которые набирают руками. Переименование — **перенос ссылок одним проходом**, а не правка одного файла. +10. **Счёт корпуса не пишется словами.** «Пять ревью», «три capability», + «десять проходов», «четыре документа канона» — это факт о корпусе, а дом у + такого факта сам корпус. Переписанный в прозу, он расходится с ним на первом + же пополнении, и расходится **молча**: фраза остаётся грамматически исправной + и правдоподобной, а проверить её можно только пересчётом, которого никто не + делает. + + Сослаться можно двумя способами, и ни один не стареет: + + | Как | Пример | + | --- | --- | + | на конкретную запись — именем, слагом, датой | «ревью от 3 августа», `adr/0007-queue-as-table.md`, capability `recognition` | + | на корпус целиком | «ревью проекта», «capability, объявленные в `openspec/specs/`» | + + Величина нужна читателю редко, а когда нужна — её называет сам корпус в + момент чтения: каталог, индекс, команда. Абзац её только запоминает. + + **Замер с провенансом — не счёт корпуса.** «Прозаический триггер дал 6 + записей ADR на 43 изменения» описывает прошлое, а прошлое не пополняется: это + факт по правилу 2, и трогать его нельзя. Разница проверяется вопросом + «изменится ли число само, без правки текста». + + **Число, стоящее заголовком к перечню, приведённому тут же, правилом не + задето.** «Три исхода:» с тремя пунктами под ним — не ссылка на корпус, и + расходится оно не втихую, а вместе со списком, который правят в той же + строке. Уехал перечень в другой файл — число уезжает с ним, а на его месте + остаётся ссылка. + ### Что из этих правил докладывается особым образом @@ -170,6 +198,14 @@ color: green ходу. Находка — готовое английское имя на замену плюс напоминание про перенос ссылок одним проходом. +**Правило 10, счёт корпуса.** Пересчитывать корпус не надо: находка — в самом +числе, а не в том, что оно разошлось. Число, совпадающее с действительностью +сегодня, — та же находка: завтра оно разойдётся, и молча. Предложение — готовая +замена: ссылка на конкретную запись или называние корпуса целиком. Перечень, +приведённый тут же под числом, не трогай. Чаще всего счёт заводится в +`architecture.md` («три источника», «пять единых точек») и в `review.md`, где +пересказывают журнал. + ## Чего ты не проверяешь Не своё бывает двух разных родов, и поступают с ними по-разному. diff --git a/av-dev/agents/task-wording.md b/av-dev/agents/task-wording.md index 61ca8d4..9d55e57 100644 --- a/av-dev/agents/task-wording.md +++ b/av-dev/agents/task-wording.md @@ -1,6 +1,6 @@ --- name: task-wording -description: "Вычитка языка записей каталога задач по информационному стилю — задачи, строки индекса и причины отказа. Смотрит отглагольные существительные и страдательный залог, оценку без факта, стоп-слова и канцелярит, «одна мысль — одно предложение», англицизм при живом русском слове, жаргон и метафоры вместо прямого называния, термин, которого нет в документах проекта, транслит в слаге. Отдаёт готовые формулировки на замену и ничего не правит сам. Форму записи (заголовок по типу, «зачем», границы, оракулы) смотрит отдельный агент task-form, документы проекта вычитывает doc-wording. Использовать после заведения или разбора пачки записей, до взятия в работу и на переоценке беклога. Только чтение." +description: "Вычитка языка записей каталога задач по информационному стилю — задачи, строки индекса и причины отказа. Смотрит отглагольные существительные и страдательный залог, оценку без факта, стоп-слова и канцелярит, «одна мысль — одно предложение», англицизм при живом русском слове, жаргон и метафоры вместо прямого называния, термин, которого нет в документах проекта, транслит в слаге, счёт корпуса числом вместо ссылки («три эндпоинта», «четыре миграции»). Отдаёт готовые формулировки на замену и ничего не правит сам. Форму записи (заголовок по типу, «зачем», границы, оракулы) смотрит отдельный агент task-form, документы проекта вычитывает doc-wording. Использовать после заведения или разбора пачки записей, до взятия в работу и на переоценке беклога. Только чтение." tools: Read, Grep, Glob model: sonnet color: green @@ -160,6 +160,34 @@ color: green коммитах и путях, которые набирают руками. Переименование — **перенос ссылок одним проходом**, а не правка одного файла. +10. **Счёт корпуса не пишется словами.** «Пять ревью», «три capability», + «десять проходов», «четыре документа канона» — это факт о корпусе, а дом у + такого факта сам корпус. Переписанный в прозу, он расходится с ним на первом + же пополнении, и расходится **молча**: фраза остаётся грамматически исправной + и правдоподобной, а проверить её можно только пересчётом, которого никто не + делает. + + Сослаться можно двумя способами, и ни один не стареет: + + | Как | Пример | + | --- | --- | + | на конкретную запись — именем, слагом, датой | «ревью от 3 августа», `adr/0007-queue-as-table.md`, capability `recognition` | + | на корпус целиком | «ревью проекта», «capability, объявленные в `openspec/specs/`» | + + Величина нужна читателю редко, а когда нужна — её называет сам корпус в + момент чтения: каталог, индекс, команда. Абзац её только запоминает. + + **Замер с провенансом — не счёт корпуса.** «Прозаический триггер дал 6 + записей ADR на 43 изменения» описывает прошлое, а прошлое не пополняется: это + факт по правилу 2, и трогать его нельзя. Разница проверяется вопросом + «изменится ли число само, без правки текста». + + **Число, стоящее заголовком к перечню, приведённому тут же, правилом не + задето.** «Три исхода:» с тремя пунктами под ним — не ссылка на корпус, и + расходится оно не втихую, а вместе со списком, который правят в той же + строке. Уехал перечень в другой файл — число уезжает с ним, а на его месте + остаётся ссылка. + ### Что из этих правил докладывается особым образом @@ -180,6 +208,14 @@ color: green английский слаг на замену плюс напоминание, что переименование это перенос ссылок одним проходом, а не правка одного файла. +**Правило 10, счёт корпуса.** Пересчитывать корпус не надо: находка — в самом +числе, а не в том, что оно разошлось. Число, верное сегодня, — та же находка. В +записях счёт заводится в «Затрагивает» («три эндпоинта», «четыре миграции») и в +критериях приёмки, и там он опаснее прочего: критерий, сверяемый по числу, +пройдёт на другом составе работ. Предложение — готовая замена: перечислить +поимённо или назвать корпус целиком. Перечень, приведённый тут же под числом, не +трогай. + ## Чего ты не проверяешь Не своё бывает двух разных родов, и поступают с ними по-разному. diff --git a/av-dev/shared/axes.md b/av-dev/shared/axes.md index a7d483d..fa1ab97 100644 --- a/av-dev/shared/axes.md +++ b/av-dev/shared/axes.md @@ -28,8 +28,8 @@ | коды выхода | 0 1 2 3 4 | здесь, ниже | Две оси стоят домом **здесь**, и обе по одной причине: владельца у них нет. -Коды выхода делят восемь скриптов и три скилла, режим прогона — конвейер, сценарий -обслуживания и два устава. +Коды выхода делят все скрипты плагина и зовущие их скиллы, режим прогона — +конвейер, сценарий обслуживания и уставы вычитки. ## Что на что влияет diff --git a/av-dev/shared/language.md b/av-dev/shared/language.md index fa6b379..3259054 100644 --- a/av-dev/shared/language.md +++ b/av-dev/shared/language.md @@ -14,7 +14,7 @@ | Блок | Что в нём | Кто копирует | | --- | --- | --- | -| `язык-правила` | девять правил, по которым судят текст | уставы вычитки | +| `язык-правила` | правила, по которым судят текст | уставы вычитки | | `порог-правки` | когда находка не заводится | уставы вычитки, `task-form` | `порог-правки` вынесен из правил намеренно: он нужен и тому, кто правил языка не @@ -211,6 +211,34 @@ коммитах и путях, которые набирают руками. Переименование — **перенос ссылок одним проходом**, а не правка одного файла. +10. **Счёт корпуса не пишется словами.** «Пять ревью», «три capability», + «десять проходов», «четыре документа канона» — это факт о корпусе, а дом у + такого факта сам корпус. Переписанный в прозу, он расходится с ним на первом + же пополнении, и расходится **молча**: фраза остаётся грамматически исправной + и правдоподобной, а проверить её можно только пересчётом, которого никто не + делает. + + Сослаться можно двумя способами, и ни один не стареет: + + | Как | Пример | + | --- | --- | + | на конкретную запись — именем, слагом, датой | «ревью от 3 августа», `adr/0007-queue-as-table.md`, capability `recognition` | + | на корпус целиком | «ревью проекта», «capability, объявленные в `openspec/specs/`» | + + Величина нужна читателю редко, а когда нужна — её называет сам корпус в + момент чтения: каталог, индекс, команда. Абзац её только запоминает. + + **Замер с провенансом — не счёт корпуса.** «Прозаический триггер дал 6 + записей ADR на 43 изменения» описывает прошлое, а прошлое не пополняется: это + факт по правилу 2, и трогать его нельзя. Разница проверяется вопросом + «изменится ли число само, без правки текста». + + **Число, стоящее заголовком к перечню, приведённому тут же, правилом не + задето.** «Три исхода:» с тремя пунктами под ним — не ссылка на корпус, и + расходится оно не втихую, а вместе со списком, который правят в той же + строке. Уехал перечень в другой файл — число уезжает с ним, а на его месте + остаётся ссылка. + ## Порог правки diff --git a/av-dev/skills/canon/references/canon.md b/av-dev/skills/canon/references/canon.md index d2a961d..03dc6b8 100644 --- a/av-dev/skills/canon/references/canon.md +++ b/av-dev/skills/canon/references/canon.md @@ -464,6 +464,12 @@ kebab-case.** Причина не эстетическая: имя файла с | что уже механизировано правилом | `conventions.*`, раздел «Механизировано» | +**Сколько чего в корпусе — тоже факт, и дом у него сам корпус.** «Пять ревью», +«три capability», «четыре документа» в прозе — второй дом, расходящийся с первым +на ближайшем пополнении и молча. Правило и оба законных способа сослаться — +`av-dev/shared/language.md`, правило 10; здесь оно названо потому, что счёт +корпуса выглядит не копией, а собственным наблюдением документа. + ## Пустое называется пустым Скелет канона заводится **целиком** с первого дня. Незаполненный документ держит diff --git a/av-dev/skills/code-resolve/references/solve.md b/av-dev/skills/code-resolve/references/solve.md index 44bf3a3..18d3ffc 100644 --- a/av-dev/skills/code-resolve/references/solve.md +++ b/av-dev/skills/code-resolve/references/solve.md @@ -289,7 +289,7 @@ flowchart TD **Сверь план прогона с исходом, прежде чем коммитить.** Отчёт начинается планом разметчика — таблицей «тема → дом → глубина → кто закрывает», — и против каждой темы обязан стоять исход. Тема без отчёта и тема без дома — разные вещи, и обе -должны быть названы. Реестр короткий (шесть тем ядра плюс свои) — сверка стоит +должны быть названы. Реестр короткий — темы ядра плюс свои проекта, — и сверка стоит одного взгляда. #### Отработка, и здесь появляется одно новое правило diff --git a/av-dev/skills/code-review/SKILL.md b/av-dev/skills/code-review/SKILL.md index b24831c..362372d 100644 --- a/av-dev/skills/code-review/SKILL.md +++ b/av-dev/skills/code-review/SKILL.md @@ -337,8 +337,8 @@ charter'а, а модель потом двигает калибровка, и изменения нет двух разных «глубин проверки»: величина, из которой выводится состав, — одна и та же пара «размер × сложность», посчитанная один раз. -**Метка не меняет список тем — она меняет их дом и глубину.** Все шесть тем -ядра названы при любой метке; разница в том, против чего их смотрят (дом темы +**Метка не меняет список тем — она меняет их дом и глубину.** Все темы ядра +названы при любой метке; разница в том, против чего их смотрят (дом темы или только инварианты) и как (чтением, рассуждением или запуском). Ревью кода: diff --git a/av-dev/skills/task-track/references/split.md b/av-dev/skills/task-track/references/split.md index c28065d..37591ee 100644 --- a/av-dev/skills/task-track/references/split.md +++ b/av-dev/skills/task-track/references/split.md @@ -33,8 +33,8 @@ **Шов — там, где падает метка ревью.** Раздел «Затрагивает» перечисляет границы; если одна строка перечня поднимает метку выше остальных, эта часть и режется отдельно. Пример: задача перекладывает несколько узлов разом и заодно -добавляет два поля в существующий ответ. Целиком это `large` — семь проходов по -всему диффу, включая два, что держат машину и идут цепочкой. Разрезанная по шву, +добавляет два поля в существующий ответ. Целиком это `large` — полный состав проходов по +всему диффу, включая те, что держат машину и идут цепочкой. Разрезанная по шву, она даёт `large` на маленькой переложенной части и `medium` на остатке. **Считай костяк, а не файлы.** У каждой задачи есть несокращаемые четыре прохода