From 142659bfd1aa4d3ea223433195b5f159539f2f51 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Thu, 13 Aug 2026 09:48:00 +0300 Subject: [PATCH] =?UTF-8?q?=D1=8F=D0=B7=D1=8B=D0=BA:=20=D1=87=D0=B5=D0=BA?= =?UTF-8?q?=D0=BF=D0=BE=D0=B8=D0=BD=D1=82=20=D0=B8=20=D1=81=D0=B8=D0=BD?= =?UTF-8?q?=D0=BA=20=D0=B2=D0=BE=D1=88=D0=BB=D0=B8=20=D0=B2=20=D1=81=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=80=D1=8C,=20=D0=BE=D0=BF=D0=B8=D0=BD?= =?UTF-8?q?=D0=B8=D0=B0=D1=82=D0=B8=D0=B2=D0=BD=D1=8B=D0=B9=20=D1=81=D0=BD?= =?UTF-8?q?=D1=8F=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Три слова жили в текстах, не входя в закрытый словарь правила 6, — то есть выглядели словарём, не будучи им. Решение по каждому своё. Чекпоинт и синк внесены с определением: первый называет плановый стоп, на котором ждут ответа, второй — сверку каждого документа канона с работой, с обязательным отрицанием по нетронутым. Русские замены обоих называют либо исход, либо обряд, но не саму работу. Опиниативный заменён на «проход с мнением» в 13 местах и добавлен к снятому рядом с конфляцией и гайдом. Копии правил пересобраны resync.py; версию канона это не двигает — в репозиторий проекта отсюда ничего не уезжает. --- DECISIONS.md | 10 +++++----- av-dev-code/agents/review-autotests.md | 2 +- .../skills/resolve/references/maintain.md | 2 +- av-dev-code/skills/resolve/references/solve.md | 4 ++-- av-dev-code/skills/review/SKILL.md | 18 +++++++++--------- av-dev-docs/agents/doc-wording.md | 8 +++++--- .../skills/canon/references/language.md | 8 +++++--- av-dev-tasks/agents/task-wording.md | 8 +++++--- .../skills/tasks/references/language.md | 8 +++++--- shared/language.md | 8 +++++--- 10 files changed, 43 insertions(+), 33 deletions(-) diff --git a/DECISIONS.md b/DECISIONS.md index 1eca2c2..b512ee2 100644 --- a/DECISIONS.md +++ b/DECISIONS.md @@ -1014,7 +1014,7 @@ HTML-комментарии, невидимые в отрендеренном ma **XX. Порядок задаёт граф; стадии остаются единицей состава.** Профиль по-прежнему набирается стадиями, но запускается всё, у чего закрыты входящие рёбра. Рёбер три вида, и смешивать их нельзя: **зависимость** (гейт → все -опиниативные, все проходы → триаж), **конфликт за ресурс** (ненаправленный, между +проходы с мнением, все проходы → триаж), **конфликт за ресурс** (ненаправленный, между теми, кто держит машину), **барьер стоимости** (только `deep`). **YY. Сериализует ресурс, а не имена.** Пометка «держит машину» — таблицей в @@ -2358,8 +2358,8 @@ JJJ): у профиля обязан быть один правильный от `standard` остался хоть один взгляд на ось времени. Модель у него верхняя, `opus`, и это не противоречит слову «средний»: усилие -режется **входом и потолком**, а не моделью. Дешёвая модель на опиниативном -проходе платит триажем — это записанный замер, и отменять его без нового замера +режется **входом и потолком**, а не моделью. Дешёвая модель на проходе +с мнением платит триажем — это записанный замер, и отменять его без нового замера нельзя. **ААББУУ. Объём и незнакомость изменения вошли в правило выбора ступени.** Раньше @@ -2607,7 +2607,7 @@ JJJ): у профиля обязан быть один правильный от `docs/autotests.md` проект напишет: что покрыто, что нарочно нет, где `testdata`. `docs/gate.md` не напишет никто — гейт это команда, а не предмет. 2. **Слово «гейт» уже занято дважды** — команда проекта и ребро графа («пока гейт - красный, опиниативные не идут»). Третье значение сделало бы отчёт нечитаемым: + красный, проходы с мнением не идут»). Третье значение сделало бы отчёт нечитаемым: «гейт красный» и «гейт нашёл» — про разное. 3. **Тема шире гейта.** «Хватает ли проверок» и «чего в гейте намеренно нет» за пределы красного/зелёного выходят. Назвать целое именем инструмента — тихо его @@ -2828,7 +2828,7 @@ JJJ): у профиля обязан быть один правильный от держит ровно на одной ступени из трёх, а приёмником проектных тем работает на всех. -**АЕАГВ. Вход и потолок применены к каждому опиниативному проходу.** На `quick` +**АЕАГВ. Вход и потолок применены к каждому проходу с мнением.** На `quick` `specs` читает только дельта-спеку, `code` — только индекс конвенций. Потолки напечатаны и раздельны по половинам `code`: 3 технических, 2 конвенционных, 1 по инвариантам. Раздельность обязательна — конвенционных находок больше по diff --git a/av-dev-code/agents/review-autotests.md b/av-dev-code/agents/review-autotests.md index 6daf3eb..68ab662 100644 --- a/av-dev-code/agents/review-autotests.md +++ b/av-dev-code/agents/review-autotests.md @@ -1,6 +1,6 @@ --- name: review-autotests -description: "Тема `autotests` — проверено ли машиной и хватает ли проверок. Запускает команду гейта проекта (сборка/vet/линт/формат/тесты/флаки/гонки/покрытие изменённых строк/миграции/секреты/уязвимости) и интерпретирует вывод. Отличает новые отказы от унаследованных, находит отсутствующую верификацию (изменённые строки без покрытия, конкурентность без теста, флаки). Пока гейт красный, опиниативные проходы не запускаются. Первый проход ревью кода и источник его графа, обязателен при любой метке." +description: "Тема `autotests` — проверено ли машиной и хватает ли проверок. Запускает команду гейта проекта (сборка/vet/линт/формат/тесты/флаки/гонки/покрытие изменённых строк/миграции/секреты/уязвимости) и интерпретирует вывод. Отличает новые отказы от унаследованных, находит отсутствующую верификацию (изменённые строки без покрытия, конкурентность без теста, флаки). Пока гейт красный, проходы с мнением не запускаются. Первый проход ревью кода и источник его графа, обязателен при любой метке." tools: Bash, Read, Grep, Glob model: sonnet color: green diff --git a/av-dev-code/skills/resolve/references/maintain.md b/av-dev-code/skills/resolve/references/maintain.md index 1c4377a..73639f6 100644 --- a/av-dev-code/skills/resolve/references/maintain.md +++ b/av-dev-code/skills/resolve/references/maintain.md @@ -238,7 +238,7 @@ ADR: список источников канон закрыл двумя — а ### 3. Гейт до зелёного Прогони гейт и добейся зелёного — он же условие следующего шага: пока гейт -красный, опиниативные проходы не запускаются. +красный, проходы с мнением не запускаются. **Поведенческая верификация здесь другая, чем в решении.** Проверяется не новое поведение, а то, что прежнее не поехало: команда из `CLAUDE.md` поднимается, шаг diff --git a/av-dev-code/skills/resolve/references/solve.md b/av-dev-code/skills/resolve/references/solve.md index 034d5b9..0fefa64 100644 --- a/av-dev-code/skills/resolve/references/solve.md +++ b/av-dev-code/skills/resolve/references/solve.md @@ -257,7 +257,7 @@ flowchart TD сессия, ушёл контекст) — повтори шаг 3, а не гони прогон без него. **Режим по умолчанию — `по графу`, и обосновывать его не надо.** Конвейер сам -знает свои рёбра: гейт открывает опиниативные проходы, проходы с пометкой «держит +знает свои рёбра: гейт открывает проходы с мнением, проходы с пометкой «держит машину» идут цепочкой (иначе замеры портят друг друга и находка выглядит доказанной), триаж — сток. Просить **`линейно`** нужно только по причине, и она называется строкой: так сказал оператор; машина занята чем-то ещё; идёт разбор @@ -394,7 +394,7 @@ flowchart TD ## Тонкости сценария -- Гейт блокирует: пока он красный, опиниативные проходы не запускаются. Чинить и +- Гейт блокирует: пока он красный, проходы с мнением не запускаются. Чинить и перезапускать, а не «посмотреть заодно». - Стиль правок — заточка под проект и конвенции, по размеру задачи, без улучшений заодно. diff --git a/av-dev-code/skills/review/SKILL.md b/av-dev-code/skills/review/SKILL.md index 43b393c..809b1b0 100644 --- a/av-dev-code/skills/review/SKILL.md +++ b/av-dev-code/skills/review/SKILL.md @@ -1,6 +1,6 @@ --- name: review -description: "Конвейер ревью изменения, устроенный по темам: документ проекта либо заводит тему ревью, либо питает чужую тему источником, либо процессный и в ревью не читается вовсе. Ядро тем — requirements, autotests, conventions, architecture, security, operations; список тем открытый, свои темы проект заводит документом. Разметка задачи идёт один раз, после propose: агент review-scope выводит размер и сложность, из их максимума — метка, и раздаёт темы проходам обеих стадий. Метка правит и ревью дизайна (small — только specs; medium — плюс rubric; large — плюс architecture), и ревью кода (small — гейт, спеки, код, триаж; medium — плюс приёмник тем; large — плюс доказательство: враждебные постановки, эксплуатационный постмортем, архитектурный проход на широком входе). Триаж обязателен всегда. Порядок прогона — граф зависимостей: гейт открывает опиниативные проходы, проходы с пометкой «держит машину» идут цепочкой, триаж — единственный сток. Проектная специфика приходит из документов канона av-dev-docs. Вызывается из скилла resolve — двумя стадиями: ревью дизайна до кода и ревью кода после apply. Третий вызов идёт от сценария обслуживания: без change и без метки, фиксированным планом (autotests, operations, плюс conventions, если тронут код), разметчик при этом не запускается." +description: "Конвейер ревью изменения, устроенный по темам: документ проекта либо заводит тему ревью, либо питает чужую тему источником, либо процессный и в ревью не читается вовсе. Ядро тем — requirements, autotests, conventions, architecture, security, operations; список тем открытый, свои темы проект заводит документом. Разметка задачи идёт один раз, после propose: агент review-scope выводит размер и сложность, из их максимума — метка, и раздаёт темы проходам обеих стадий. Метка правит и ревью дизайна (small — только specs; medium — плюс rubric; large — плюс architecture), и ревью кода (small — гейт, спеки, код, триаж; medium — плюс приёмник тем; large — плюс доказательство: враждебные постановки, эксплуатационный постмортем, архитектурный проход на широком входе). Триаж обязателен всегда. Порядок прогона — граф зависимостей: гейт открывает проходы с мнением, проходы с пометкой «держит машину» идут цепочкой, триаж — единственный сток. Проектная специфика приходит из документов канона av-dev-docs. Вызывается из скилла resolve — двумя стадиями: ревью дизайна до кода и ревью кода после apply. Третий вызов идёт от сценария обслуживания: без change и без метки, фиксированным планом (autotests, operations, плюс conventions, если тронут код), разметчик при этом не запускается." --- # Конвейер ревью @@ -274,14 +274,14 @@ charter'а, а модель потом двигает калибровка, и а не как мнение. **Самая дешёвая модель не используется ни на одном проходе, и это не экономия -наоборот.** Дешёвая модель на опиниативном проходе даёт правдоподобные находки, +наоборот.** Дешёвая модель на проходе с мнением даёт правдоподобные находки, которые триаж обязан опровергать оракулом, — а это самая дорогая операция конвейера. Механизируемая же работа здесь вынесена **ниже** модели: гейт, покрытие диффа, карта проекта — это скрипты проекта, они стоят ноль токенов. Дешёвому проходу просто не осталось работы. Экономия достигается **не понижением модели, а тремя другими рычагами**, и все -три применяются к каждому опиниативному проходу, а не к одному избранному. +три применяются к каждому проходу с мнением, а не к одному избранному. 1. **Непуск.** `large` добавляет доказательство — запуск, замер, построенный путь — и стоит часов; `small` снимает приёмник тем. Что при этом перестаёт @@ -289,7 +289,7 @@ charter'а, а модель потом двигает калибровка, и 2. **Вход.** `basics` идёт на верхней модели, но с узким входом: дифф и его окрестности, без карты проекта. На `small` сужаются и остальные: `specs` читает только дельта-спеку, `code` — только индекс конвенций. -3. **Потолок.** Он есть у каждого опиниативного прохода и напечатан: `basics` — 2 +3. **Потолок.** Он есть у каждого прохода с мнением и напечатан: `basics` — 2 находки на сверке и 4 на разборе; `code` — 3 технических и 2 конвенционных на `small`, 4 конвенционных выше; `specs` — 3 на `small`; `architecture` — 3; триаж — 7 в основном списке. @@ -441,12 +441,12 @@ flowchart TD — и очередь между ними была бы платой ни за что. Рёбер два вида, и они разной природы. Путать их нельзя: первое про -**осмысленность** (без плана задание не определено, на красном гейте опиниативный +**осмысленность** (без плана задание не определено, на красном гейте проход с мнением проход не о чем), второе про **железо**. | Ребро | Смысл | Между кем | |---|---|---| -| **зависимость** | B не стартует, пока A не закончил, потому что без A задание B не определено | гейт → все опиниативные; все проходы → триаж | +| **зависимость** | B не стартует, пока A не закончил, потому что без A задание B не определено | гейт → все проходы с мнением; все проходы → триаж | | **конфликт за ресурс** | A и B не держат машину одновременно; кто из них первый — неважно, направления у ребра нет | проходы, помеченные «держит машину» | **План разметки — вход графа, а не его узел.** Он готов до того, как ревью кода @@ -692,7 +692,7 @@ change**: у работы, не меняющей поведения, дельт Слово «гейт» теперь значит ровно одно — барьер, который проект запускает; тема шире него ровно на «чего в гейте намеренно нет». -**Пока гейт красный — опиниативные проходы не запускаются.** Оркестратор чинит и +**Пока гейт красный — проходы с мнением не запускаются.** Оркестратор чинит и перезапускает гейт. Исключение одно: отказ, унаследованный от базовой ветки (гейт проверяет это прогоном на базе) — тогда он фиксируется находкой и не блокирует. @@ -756,7 +756,7 @@ Recall темы `conventions` равен длине конвенций прое это направление `code → spec`: надо заметить **отсутствие** — тихий фолбэк, самодеятельный дефолт, проглоченную ошибку. У `code` это пропущенный дефект, который поедет в прод. Ни то ни другое не оставляет следа ни в отчёте, ни в -границах покрытия; прочие опиниативные проходы держат `opus` из-за цены **ложных** +границах покрытия; прочие проходы с мнением держат `opus` из-за цены **ложных** находок, эти двое — из-за цены пропущенных. ## Стадия 3 — Темы (`medium` целиком; `small` и `large` — только свои темы проекта) @@ -1051,7 +1051,7 @@ flowchart TD прогоне — поимённо, а не общим «метка ниже». Формулировка «не запускается ничего» была бы короче и была бы ложью: гейт запускает инструменты проекта, а триаж проверяет оракул `critical`/`major` запуском — оба идут при любой метке. -Не проверяется **опиниативным** проходом: построенный путь атаки (его надо +Не проверяется **проходом с мнением**: построенный путь атаки (его надо прогнать), поведение библиотеки и драйвера в вырожденном случае (достаётся только экспериментом), любое число — время удержания блокировки, пик кучи, темп роста журнала, стоимость на годовой истории. `basics` задаёт часть тех же вопросов diff --git a/av-dev-docs/agents/doc-wording.md b/av-dev-docs/agents/doc-wording.md index 25c121a..f5dce7e 100644 --- a/av-dev-docs/agents/doc-wording.md +++ b/av-dev-docs/agents/doc-wording.md @@ -109,6 +109,8 @@ color: green | промпт | текст, которым зовут модель | | change, capability, spec | сущности OpenSpec, имена вещей чужого инструмента | | generative, applicative | роды проходов ревью, вводятся определением по месту | + | чекпоинт | плановый стоп работы, на котором ждут ответа человека. «Остановка» называет любой перерыв, «согласование» — обряд одобрения, а здесь место в процессе, назначенное заранее | + | синк | сверка каждого документа канона с только что сделанной работой, с обязательным отрицанием по нетронутым. «Обновление документации» называет исход, а не работу, и молчит о принуждённом отрицании | **Список закрыт.** Слово не отсюда и не из таблицы имён вещей выше — находка, а не «принятый стиль»: у него либо есть живой русский аналог, либо оно @@ -117,9 +119,9 @@ color: green Отсюда же читается снятое. Эти слова из текстов убраны, и возвращать их не надо: **конфляция** (смешение), **декорреляция** (разведённость, разведён с кем-то), **непоймание** (почему не поймали), **эвал-сет** (проверочный - набор), **гайд** (руководство). Каждое было латинизмом или калькой при живом - русском слове, и каждое к моменту снятия жило в трёх-шести файлах разом — то - есть выглядело словарём, не будучи им. + набор), **гайд** (руководство), **опиниативный** (проход с мнением). Каждое + было латинизмом или калькой при живом русском слове, и каждое к моменту снятия + жило в трёх-шести файлах разом — то есть выглядело словарём, не будучи им. 7. **Жаргон и метафоры заменяются прямым называнием.** Автору образ понятен, читателю — нет. diff --git a/av-dev-docs/skills/canon/references/language.md b/av-dev-docs/skills/canon/references/language.md index 71f0ea3..680d27b 100644 --- a/av-dev-docs/skills/canon/references/language.md +++ b/av-dev-docs/skills/canon/references/language.md @@ -145,6 +145,8 @@ | промпт | текст, которым зовут модель | | change, capability, spec | сущности OpenSpec, имена вещей чужого инструмента | | generative, applicative | роды проходов ревью, вводятся определением по месту | + | чекпоинт | плановый стоп работы, на котором ждут ответа человека. «Остановка» называет любой перерыв, «согласование» — обряд одобрения, а здесь место в процессе, назначенное заранее | + | синк | сверка каждого документа канона с только что сделанной работой, с обязательным отрицанием по нетронутым. «Обновление документации» называет исход, а не работу, и молчит о принуждённом отрицании | **Список закрыт.** Слово не отсюда и не из таблицы имён вещей выше — находка, а не «принятый стиль»: у него либо есть живой русский аналог, либо оно @@ -153,9 +155,9 @@ Отсюда же читается снятое. Эти слова из текстов убраны, и возвращать их не надо: **конфляция** (смешение), **декорреляция** (разведённость, разведён с кем-то), **непоймание** (почему не поймали), **эвал-сет** (проверочный - набор), **гайд** (руководство). Каждое было латинизмом или калькой при живом - русском слове, и каждое к моменту снятия жило в трёх-шести файлах разом — то - есть выглядело словарём, не будучи им. + набор), **гайд** (руководство), **опиниативный** (проход с мнением). Каждое + было латинизмом или калькой при живом русском слове, и каждое к моменту снятия + жило в трёх-шести файлах разом — то есть выглядело словарём, не будучи им. 7. **Жаргон и метафоры заменяются прямым называнием.** Автору образ понятен, читателю — нет. diff --git a/av-dev-tasks/agents/task-wording.md b/av-dev-tasks/agents/task-wording.md index 3a2aa4e..0dcc906 100644 --- a/av-dev-tasks/agents/task-wording.md +++ b/av-dev-tasks/agents/task-wording.md @@ -117,6 +117,8 @@ color: green | промпт | текст, которым зовут модель | | change, capability, spec | сущности OpenSpec, имена вещей чужого инструмента | | generative, applicative | роды проходов ревью, вводятся определением по месту | + | чекпоинт | плановый стоп работы, на котором ждут ответа человека. «Остановка» называет любой перерыв, «согласование» — обряд одобрения, а здесь место в процессе, назначенное заранее | + | синк | сверка каждого документа канона с только что сделанной работой, с обязательным отрицанием по нетронутым. «Обновление документации» называет исход, а не работу, и молчит о принуждённом отрицании | **Список закрыт.** Слово не отсюда и не из таблицы имён вещей выше — находка, а не «принятый стиль»: у него либо есть живой русский аналог, либо оно @@ -125,9 +127,9 @@ color: green Отсюда же читается снятое. Эти слова из текстов убраны, и возвращать их не надо: **конфляция** (смешение), **декорреляция** (разведённость, разведён с кем-то), **непоймание** (почему не поймали), **эвал-сет** (проверочный - набор), **гайд** (руководство). Каждое было латинизмом или калькой при живом - русском слове, и каждое к моменту снятия жило в трёх-шести файлах разом — то - есть выглядело словарём, не будучи им. + набор), **гайд** (руководство), **опиниативный** (проход с мнением). Каждое + было латинизмом или калькой при живом русском слове, и каждое к моменту снятия + жило в трёх-шести файлах разом — то есть выглядело словарём, не будучи им. 7. **Жаргон и метафоры заменяются прямым называнием.** Автору образ понятен, читателю — нет. diff --git a/av-dev-tasks/skills/tasks/references/language.md b/av-dev-tasks/skills/tasks/references/language.md index 71f0ea3..680d27b 100644 --- a/av-dev-tasks/skills/tasks/references/language.md +++ b/av-dev-tasks/skills/tasks/references/language.md @@ -145,6 +145,8 @@ | промпт | текст, которым зовут модель | | change, capability, spec | сущности OpenSpec, имена вещей чужого инструмента | | generative, applicative | роды проходов ревью, вводятся определением по месту | + | чекпоинт | плановый стоп работы, на котором ждут ответа человека. «Остановка» называет любой перерыв, «согласование» — обряд одобрения, а здесь место в процессе, назначенное заранее | + | синк | сверка каждого документа канона с только что сделанной работой, с обязательным отрицанием по нетронутым. «Обновление документации» называет исход, а не работу, и молчит о принуждённом отрицании | **Список закрыт.** Слово не отсюда и не из таблицы имён вещей выше — находка, а не «принятый стиль»: у него либо есть живой русский аналог, либо оно @@ -153,9 +155,9 @@ Отсюда же читается снятое. Эти слова из текстов убраны, и возвращать их не надо: **конфляция** (смешение), **декорреляция** (разведённость, разведён с кем-то), **непоймание** (почему не поймали), **эвал-сет** (проверочный - набор), **гайд** (руководство). Каждое было латинизмом или калькой при живом - русском слове, и каждое к моменту снятия жило в трёх-шести файлах разом — то - есть выглядело словарём, не будучи им. + набор), **гайд** (руководство), **опиниативный** (проход с мнением). Каждое + было латинизмом или калькой при живом русском слове, и каждое к моменту снятия + жило в трёх-шести файлах разом — то есть выглядело словарём, не будучи им. 7. **Жаргон и метафоры заменяются прямым называнием.** Автору образ понятен, читателю — нет. diff --git a/shared/language.md b/shared/language.md index cb75f63..3f95e6a 100644 --- a/shared/language.md +++ b/shared/language.md @@ -160,6 +160,8 @@ | промпт | текст, которым зовут модель | | change, capability, spec | сущности OpenSpec, имена вещей чужого инструмента | | generative, applicative | роды проходов ревью, вводятся определением по месту | + | чекпоинт | плановый стоп работы, на котором ждут ответа человека. «Остановка» называет любой перерыв, «согласование» — обряд одобрения, а здесь место в процессе, назначенное заранее | + | синк | сверка каждого документа канона с только что сделанной работой, с обязательным отрицанием по нетронутым. «Обновление документации» называет исход, а не работу, и молчит о принуждённом отрицании | **Список закрыт.** Слово не отсюда и не из таблицы имён вещей выше — находка, а не «принятый стиль»: у него либо есть живой русский аналог, либо оно @@ -168,9 +170,9 @@ Отсюда же читается снятое. Эти слова из текстов убраны, и возвращать их не надо: **конфляция** (смешение), **декорреляция** (разведённость, разведён с кем-то), **непоймание** (почему не поймали), **эвал-сет** (проверочный - набор), **гайд** (руководство). Каждое было латинизмом или калькой при живом - русском слове, и каждое к моменту снятия жило в трёх-шести файлах разом — то - есть выглядело словарём, не будучи им. + набор), **гайд** (руководство), **опиниативный** (проход с мнением). Каждое + было латинизмом или калькой при живом русском слове, и каждое к моменту снятия + жило в трёх-шести файлах разом — то есть выглядело словарём, не будучи им. 7. **Жаргон и метафоры заменяются прямым называнием.** Автору образ понятен, читателю — нет.