gate и autotests сведены к одному имени

Тема звалась autotests, а закрывающий её проход — gate, и на всех трёх ступенях
это была одна и та же клетка таблицы. Одна сущность под двумя именами — та же
ошибка, что и два разных под одним, только тише: она не путает, а теряет. Вопрос
проекта в docs/review адресуется теме; адресованный проходу не приезжает никуда,
и ровно этот отказ уже случился однажды с ops.

Победило имя темы. Тема первична по правилу 0, а имена тем — это имена
документов: docs/autotests.md проект напишет (что покрыто, что нарочно нет, где
testdata), docs/gate.md не напишет никто, потому что гейт это команда, а не
предмет. Слово «гейт» к тому же занято дважды — команда проекта и ребро графа;
третьим значением стал бы нечитаемым отчёт, где «гейт красный» и «гейт нашёл»
про разное. И тема шире гейта ровно на «чего в гейте намеренно нет».

Цена названа честно: autotests звучит уже своего содержимого — линт, типы и
сканер уязвимостей тестами не являются. Гасится строкой в уставе: тема — это
«проверено ли машиной», а не «есть ли тесты», гейт в ней инструмент, а не
граница.

Слово «гейт» осталось ровно в одном значении — команда проекта. Все прочие
вхождения (семантика гейта, «пока гейт красный», финальный гейт в task-batch)
именно про неё и не тронуты.

Побочно: autotests — единственная тема, чей дом лежит не в docs/, а в CLAUDE.md.
Канон править не пришлось: список тем открытый, и заведённый когда-нибудь
docs/autotests.md ляжет на существующее имя.

Тема 37 в DECISIONS.md, следствия 141-142.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
av
2026-08-07 08:50:13 +03:00
co-authored by Claude Opus 5
parent a81dd1a5a7
commit 900f3f83ca
8 changed files with 75 additions and 28 deletions
+21 -15
View File
@@ -142,7 +142,7 @@ description: "Конвейер ревью изменения, устроенны
| Модель | Цвет | Проходы | Почему |
|---|---|---|---|
| `sonnet` | green | scope, gate, ops | вывод перечислим и сверяется механически |
| `sonnet` | green | scope, autotests, ops | вывод перечислим и сверяется механически |
| `opus` | yellow | specs, code, basics, adversary, rubric, architecture, triage | дорога ошибка — ложная либо пропущенная |
**Цвет charter'а кодирует модель, а не роль прохода.** Это единственное
@@ -210,7 +210,7 @@ charter'а, а модель потом двигает калибровка, и
| Тема | `quick` | `standard` | `wide` |
|---|---|---|---|
| `requirements` | `specs` | `specs` | `specs` |
| `autotests` | `gate` | `gate` | `gate` |
| `autotests` | `autotests` | `autotests` | `autotests` |
| `conventions` | `code` | `code` | `code` |
| `architecture` | `basics`, сверка | `basics`, разбор | `architecture`, доказательство |
| `security` | `basics`, сверка | `basics`, разбор | `adversary`, доказательство |
@@ -352,7 +352,7 @@ charter'а, а модель потом двигает калибровка, и
```mermaid
flowchart TD
scope["scope — разметка<br/>(стадия 0, темы и ступень)"]
gate["gate<br/>(стадия 1, держит машину)"]
autotests["autotests<br/>(стадия 1, держит машину)"]
specs["specs"]
code["code"]
basics["basics<br/>(quick, standard: темы;<br/>wide: только свои темы проекта)"]
@@ -361,13 +361,13 @@ flowchart TD
architecture["architecture<br/>(wide)"]
triage["triage — единственный сток"]
scope -->|план| gate
gate -->|зелёный| specs
gate -->|зелёный| code
gate -->|"зелёный, темы по плану"| basics
gate -->|"зелёный, wide"| adversary
gate -->|"зелёный, wide"| ops
gate -->|"зелёный, wide"| architecture
scope -->|план| autotests
autotests -->|зелёный| specs
autotests -->|зелёный| code
autotests -->|"зелёный, темы по плану"| basics
autotests -->|"зелёный, wide"| adversary
autotests -->|"зелёный, wide"| ops
autotests -->|"зелёный, wide"| architecture
adversary -. один ресурс — машина .- ops
specs --> triage
code --> triage
@@ -405,7 +405,7 @@ flowchart TD
| Проход | Держит машину | Почему |
|---|---|---|
| `gate` | да | запускает инструменты проекта — но он источник графа и один по построению |
| `autotests` | да | запускает инструменты проекта — но он источник графа и один по построению |
| `adversary` | да | находка есть **построенный путь**: он пишет падающий тест и гоняет его |
| `ops` | да | доказывает числами: время удержания блокировки, пик кучи, темп роста журнала |
| `triage` | да | проверяет оракул `critical`/`major` запуском — но он сток и тоже один |
@@ -489,10 +489,16 @@ flowchart TD
одинаково**, но обоснование обязательно в обоих случаях и всегда — строкой, какой
признак сработал и по какому факту.
## Стадия 1 — Gate (обязательна во всех профилях)
## Стадия 1 — Автотесты (обязательна во всех профилях)
Агент `review-gate`. Закрывает тему `autotests`. Запускает команду гейта из
семантики гейта в `CLAUDE.md` и интерпретирует вывод.
Агент `review-autotests`, тема `autotests`. Запускает команду гейта из семантики
гейта в `CLAUDE.md` и интерпретирует вывод.
**Тема и проход названы одинаково намеренно, а «гейт» осталось именем команды.**
Раньше тема звалась `autotests`, а проход — `gate`: одна сущность под двумя
именами, и вопрос проекта, адресованный одному имени, к другому не приезжал.
Слово «гейт» теперь значит ровно одно — барьер, который проект запускает; тема
шире него ровно на «чего в гейте намеренно нет».
**Пока гейт красный — опиниативные проходы не запускаются.** Оркестратор чинит и
перезапускает гейт. Исключение одно: отказ, унаследованный от базовой ветки
@@ -564,7 +570,7 @@ Recall темы `conventions` равен длине конвенций прое
**Он покрывает миграцию и публичный контракт на нижних ступенях.** Это не
побочный эффект, а условие, при котором миграция схемы вообще может не поднимать
ступень: её шаг гоняет `gate`, спеку сверяет `specs`, а вопросы «обратима ли» и
ступень: её шаг гоняет `autotests`, спеку сверяет `specs`, а вопросы «обратима ли» и
«что с записями новой версии после отката» задаёт здесь `basics`, темой
`operations`. Уберёшь его — и нижние ступени останутся без единственного прохода,
который смотрит на ось времени.
@@ -80,7 +80,7 @@ stateDiagram-v2
| Проход | Класс дефекта для инъекции | Заготовка пробы |
|---|---|---|
| `review-scope` | пропущенная тема | положить в `docs/` новый документ и проверить, попал ли он в план темой |
| `review-gate` | отсутствующая верификация | убрать тест на изменённую ветку, оставить код рабочим |
| `review-autotests` | отсутствующая верификация | убрать тест на изменённую ветку, оставить код рабочим |
| `review-specs` | поведение вне спеки | добавить незаказанный фолбэк-дефолт на пустом входе |
| `review-code` | нарушение прозаической конвенции | увести штатный отказ мимо единой точки трансляции ошибки |
| `review-code` | технический дефект | не проверить возвращённую ошибку в ветке раннего возврата |