язык: счёт корпуса в прозе запрещён правилом 10

«Пять ревью», «три capability», «десять проходов» читаются как сведение, а
живут до ближайшего пополнения корпуса. Расхождение молчаливое вдвойне:
фраза остаётся грамматически исправной, диффом не ловится — правят не её, а
корпус, — и проверяется только пересчётом, которого никто не делает.

Сослаться можно двумя способами, и оба не стареют: на конкретную запись
именем, слагом или датой либо на корпус целиком. Величину называет сам
каталог в момент чтения, а абзац её только запоминает.

Две границы названы явно, иначе правило запретило бы форму, на которой
держится половина процессных текстов. Число-заголовок к перечню,
приведённому тут же, не задето: правят его в той же строке, что и список.
Замер с провенансом не задет тоже — он про прошлое и не пополняется.
Разделяет вопрос «изменится ли число само, без правки текста».

Судит вычитка, пофразно: правило уехало помеченной копией в уставы
doc-wording и task-wording, у обоих названы частое место находки и запрет
пересчитывать корпус — находка в самом числе, а не в его неверности.
Описания агентов дополнены, чтобы не отстать от механики. В карте домов
канона стоит ссылка: счёт корпуса выглядит не копией, а собственным
наблюдением документа.

Собственная проза приведена к правилу: девять правил языка (их стало
десять этим же коммитом), десять агентов-проходов и девять скиллов в
README, восемь скриптов в перечне осей, шесть тем ядра в сценарии решения
и в конвейере ревью, семь проходов в правилах нарезки.
This commit is contained in:
av
2026-08-13 19:30:01 +03:00
parent 77cb967d7b
commit dd7aa22d02
9 changed files with 119 additions and 13 deletions
+3 -3
View File
@@ -108,7 +108,7 @@
дизайна (`small` — только сверка спек; `medium` — плюс рубрика; `large` — плюс дизайна (`small` — только сверка спек; `medium` — плюс рубрика; `large` — плюс
архитектурный проход) и кода (`small` — гейт, спеки, код, триаж; `medium` архитектурный проход) и кода (`small` — гейт, спеки, код, триаж; `medium`
плюс приёмник тем; `large` — плюс доказательство: запуск, замер, построенный плюс приёмник тем; `large` — плюс доказательство: запуск, замер, построенный
путь, 5–10% задач). Десять агентов-проходов. путь, 5–10% задач). Каждый проход — свой агент, перечень держит сам скилл.
### av-dev-git ### av-dev-git
@@ -121,10 +121,10 @@
```mermaid ```mermaid
flowchart TB flowchart TB
subgraph avdev["av-dev — один плагин, девять скиллов"] subgraph avdev["av-dev — один плагин, весь процесс"]
subgraph pipe["работа по задачам; сценарий решения требует OpenSpec"] subgraph pipe["работа по задачам; сценарий решения требует OpenSpec"]
direction LR direction LR
tp["code-resolve<br/>3 сценария: разведка,<br/>решение, обслуживание"] --> rp["code-review<br/>10 агентов-проходов"] tp["code-resolve<br/>3 сценария: разведка,<br/>решение, обслуживание"] --> rp["code-review<br/>агенты-проходы"]
osp["code-openspec<br/>заводит и проверяет openspec/"] osp["code-openspec<br/>заводит и проверяет openspec/"]
end end
canon["canon<br/>форма раскладки всего проекта"] canon["canon<br/>форма раскладки всего проекта"]
+37 -1
View File
@@ -1,6 +1,6 @@
--- ---
name: doc-wording 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 tools: Read, Grep, Glob
model: sonnet model: sonnet
color: green 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`, где
пересказывают журнал.
## Чего ты не проверяешь ## Чего ты не проверяешь
Не своё бывает двух разных родов, и поступают с ними по-разному. Не своё бывает двух разных родов, и поступают с ними по-разному.
+37 -1
View File
@@ -1,6 +1,6 @@
--- ---
name: task-wording name: task-wording
description: "Вычитка языка записей каталога задач по информационному стилю — задачи, строки индекса и причины отказа. Смотрит отглагольные существительные и страдательный залог, оценку без факта, стоп-слова и канцелярит, «одна мысль — одно предложение», англицизм при живом русском слове, жаргон и метафоры вместо прямого называния, термин, которого нет в документах проекта, транслит в слаге. Отдаёт готовые формулировки на замену и ничего не правит сам. Форму записи (заголовок по типу, «зачем», границы, оракулы) смотрит отдельный агент task-form, документы проекта вычитывает doc-wording. Использовать после заведения или разбора пачки записей, до взятия в работу и на переоценке беклога. Только чтение." description: "Вычитка языка записей каталога задач по информационному стилю — задачи, строки индекса и причины отказа. Смотрит отглагольные существительные и страдательный залог, оценку без факта, стоп-слова и канцелярит, «одна мысль — одно предложение», англицизм при живом русском слове, жаргон и метафоры вместо прямого называния, термин, которого нет в документах проекта, транслит в слаге, счёт корпуса числом вместо ссылки («три эндпоинта», «четыре миграции»). Отдаёт готовые формулировки на замену и ничего не правит сам. Форму записи (заголовок по типу, «зачем», границы, оракулы) смотрит отдельный агент task-form, документы проекта вычитывает doc-wording. Использовать после заведения или разбора пачки записей, до взятия в работу и на переоценке беклога. Только чтение."
tools: Read, Grep, Glob tools: Read, Grep, Glob
model: sonnet model: sonnet
color: green 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, счёт корпуса.** Пересчитывать корпус не надо: находка — в самом
числе, а не в том, что оно разошлось. Число, верное сегодня, — та же находка. В
записях счёт заводится в «Затрагивает» («три эндпоинта», «четыре миграции») и в
критериях приёмки, и там он опаснее прочего: критерий, сверяемый по числу,
пройдёт на другом составе работ. Предложение — готовая замена: перечислить
поимённо или назвать корпус целиком. Перечень, приведённый тут же под числом, не
трогай.
## Чего ты не проверяешь ## Чего ты не проверяешь
Не своё бывает двух разных родов, и поступают с ними по-разному. Не своё бывает двух разных родов, и поступают с ними по-разному.
+2 -2
View File
@@ -28,8 +28,8 @@
| коды выхода | 0 1 2 3 4 | здесь, ниже | | коды выхода | 0 1 2 3 4 | здесь, ниже |
Две оси стоят домом **здесь**, и обе по одной причине: владельца у них нет. Две оси стоят домом **здесь**, и обе по одной причине: владельца у них нет.
Коды выхода делят восемь скриптов и три скилла, режим прогона — конвейер, сценарий Коды выхода делят все скрипты плагина и зовущие их скиллы, режим прогона —
обслуживания и два устава. конвейер, сценарий обслуживания и уставы вычитки.
## Что на что влияет ## Что на что влияет
+29 -1
View File
@@ -14,7 +14,7 @@
| Блок | Что в нём | Кто копирует | | Блок | Что в нём | Кто копирует |
| --- | --- | --- | | --- | --- | --- |
| `язык-правила` | девять правил, по которым судят текст | уставы вычитки | | `язык-правила` | правила, по которым судят текст | уставы вычитки |
| `порог-правки` | когда находка не заводится | уставы вычитки, `task-form` | | `порог-правки` | когда находка не заводится | уставы вычитки, `task-form` |
`порог-правки` вынесен из правил намеренно: он нужен и тому, кто правил языка не `порог-правки` вынесен из правил намеренно: он нужен и тому, кто правил языка не
@@ -211,6 +211,34 @@
коммитах и путях, которые набирают руками. Переименование — **перенос ссылок коммитах и путях, которые набирают руками. Переименование — **перенос ссылок
одним проходом**, а не правка одного файла. одним проходом**, а не правка одного файла.
10. **Счёт корпуса не пишется словами.** «Пять ревью», «три capability»,
«десять проходов», «четыре документа канона» — это факт о корпусе, а дом у
такого факта сам корпус. Переписанный в прозу, он расходится с ним на первом
же пополнении, и расходится **молча**: фраза остаётся грамматически исправной
и правдоподобной, а проверить её можно только пересчётом, которого никто не
делает.
Сослаться можно двумя способами, и ни один не стареет:
| Как | Пример |
| --- | --- |
| на конкретную запись — именем, слагом, датой | «ревью от 3 августа», `adr/0007-queue-as-table.md`, capability `recognition` |
| на корпус целиком | «ревью проекта», «capability, объявленные в `openspec/specs/`» |
Величина нужна читателю редко, а когда нужна — её называет сам корпус в
момент чтения: каталог, индекс, команда. Абзац её только запоминает.
**Замер с провенансом — не счёт корпуса.** «Прозаический триггер дал 6
записей ADR на 43 изменения» описывает прошлое, а прошлое не пополняется: это
факт по правилу 2, и трогать его нельзя. Разница проверяется вопросом
«изменится ли число само, без правки текста».
**Число, стоящее заголовком к перечню, приведённому тут же, правилом не
задето.** «Три исхода:» с тремя пунктами под ним — не ссылка на корпус, и
расходится оно не втихую, а вместе со списком, который правят в той же
строке. Уехал перечень в другой файл — число уезжает с ним, а на его месте
остаётся ссылка.
<!-- /дом: язык-правила --> <!-- /дом: язык-правила -->
## Порог правки ## Порог правки
+6
View File
@@ -464,6 +464,12 @@ kebab-case.** Причина не эстетическая: имя файла с
| что уже механизировано правилом | `conventions.*`, раздел «Механизировано» | | что уже механизировано правилом | `conventions.*`, раздел «Механизировано» |
<!-- /дом: карта-домов --> <!-- /дом: карта-домов -->
**Сколько чего в корпусе — тоже факт, и дом у него сам корпус.** «Пять ревью»,
«три capability», «четыре документа» в прозе — второй дом, расходящийся с первым
на ближайшем пополнении и молча. Правило и оба законных способа сослаться —
`av-dev/shared/language.md`, правило 10; здесь оно названо потому, что счёт
корпуса выглядит не копией, а собственным наблюдением документа.
## Пустое называется пустым ## Пустое называется пустым
Скелет канона заводится **целиком** с первого дня. Незаполненный документ держит Скелет канона заводится **целиком** с первого дня. Незаполненный документ держит
@@ -289,7 +289,7 @@ flowchart TD
**Сверь план прогона с исходом, прежде чем коммитить.** Отчёт начинается планом **Сверь план прогона с исходом, прежде чем коммитить.** Отчёт начинается планом
разметчика — таблицей «тема → дом → глубина → кто закрывает», — и против каждой разметчика — таблицей «тема → дом → глубина → кто закрывает», — и против каждой
темы обязан стоять исход. Тема без отчёта и тема без дома — разные вещи, и обе темы обязан стоять исход. Тема без отчёта и тема без дома — разные вещи, и обе
должны быть названы. Реестр короткий (шесть тем ядра плюс свои) — сверка стоит должны быть названы. Реестр короткий темы ядра плюс свои проекта, — и сверка стоит
одного взгляда. одного взгляда.
#### Отработка, и здесь появляется одно новое правило #### Отработка, и здесь появляется одно новое правило
+2 -2
View File
@@ -337,8 +337,8 @@ charter'а, а модель потом двигает калибровка, и
изменения нет двух разных «глубин проверки»: величина, из которой выводится изменения нет двух разных «глубин проверки»: величина, из которой выводится
состав, — одна и та же пара «размер × сложность», посчитанная один раз. состав, — одна и та же пара «размер × сложность», посчитанная один раз.
**Метка не меняет список тем — она меняет их дом и глубину.** Все шесть тем **Метка не меняет список тем — она меняет их дом и глубину.** Все темы ядра
ядра названы при любой метке; разница в том, против чего их смотрят (дом темы названы при любой метке; разница в том, против чего их смотрят (дом темы
или только инварианты) и как (чтением, рассуждением или запуском). или только инварианты) и как (чтением, рассуждением или запуском).
Ревью кода: Ревью кода:
+2 -2
View File
@@ -33,8 +33,8 @@
**Шов — там, где падает метка ревью.** Раздел «Затрагивает» перечисляет **Шов — там, где падает метка ревью.** Раздел «Затрагивает» перечисляет
границы; если одна строка перечня поднимает метку выше остальных, эта часть и границы; если одна строка перечня поднимает метку выше остальных, эта часть и
режется отдельно. Пример: задача перекладывает несколько узлов разом и заодно режется отдельно. Пример: задача перекладывает несколько узлов разом и заодно
добавляет два поля в существующий ответ. Целиком это `large`семь проходов по добавляет два поля в существующий ответ. Целиком это `large`полный состав проходов по
всему диффу, включая два, что держат машину и идут цепочкой. Разрезанная по шву, всему диффу, включая те, что держат машину и идут цепочкой. Разрезанная по шву,
она даёт `large` на маленькой переложенной части и `medium` на остатке. она даёт `large` на маленькой переложенной части и `medium` на остатке.
**Считай костяк, а не файлы.** У каждой задачи есть несокращаемые четыре прохода **Считай костяк, а не файлы.** У каждой задачи есть несокращаемые четыре прохода