модели субагентов: двое из девяти опущены на sonnet, критерий переписан

Сквозной проход по тринадцати уставам с одним вопросом: кого из девяти
opus-агентов можно опустить без потери. Ответ — двоих, и оба не из конвейера.

По дороге выяснилось, что критерий, которым модели раздавались до сих пор,
отвечает не на тот вопрос. Деление applicative против generative смотрит, откуда
проход берёт критерий, а платит проект за разбирательство с находкой. Рабочий
признак другой: находка со ссылкой на записанный источник — строку спеки, цель в
манифесте, значение в конфиге — опровергается открытием файла, и дешёвая модель
ошибается здесь проверяемо; находка-суждение опровергается рассуждением, а
рассуждение стоит триажа или человека. Признак объясняет и прежнюю раскладку
лучше, чем она сама себя: gate, code и ops дёшевы не потому, что у них чек-лист,
а потому что каждая их находка показывает пальцем на строку.

doc-code-drift переведён на sonnet. Закрытый перечень из восьми правил, каждое —
пара «факт в документе ↔ команда, которой он проверяется». Устав прямо запрещает
суждение, требует формы «написано X, в коде Y, проверено командой Z» и правила
«нечем проверить — не находка». Ложная находка опровергается той же командой,
которая её породила.

task-form переведён на sonnet, и решило не устройство, а потребитель. Его находка
это готовая формулировка, которую человек читает и отклоняет командой edit, а не
оркестратор, который молча реализует всё прочитанное. Довод, державший triage
наверху, здесь не работает вовсе: ошибка стоит строки чтения.

review-specs рассмотрен всерьёз и оставлен на opus — по причине, обратной общей.
Он самый частый opus-проход, идёт и в design, и на коде. По устройству
applicative: SKILL.md сам называл стадию 1 «два applicative-прохода, оба
дешёвые», платя за одного sonnet, за другого opus. Расхождение закрыто текстом, а
не переводом. Наверху его держит направление code → spec, где надо заметить
отсутствие: тихий фолбэк, самодеятельный дефолт, проглоченную ошибку. Прочие
держат opus из-за цены ложных находок, этот — из-за цены пропущенных, а пропуск
не оставляет следа ни в отчёте, ни в границах покрытия.

Остальные шестеро оставлены с причиной у каждого: adversary и rubric порождают
критерий по построению, architecture — чистое суждение о структуре, triage —
сток, doc-consistency путал бы «упомянуто в двух местах» с «оба утверждают»,
basics заведён этой же сессией и половина его вопросов суждение.

Это разбор уставов, а не замер, и так и записано. calibration.md двигает модель
инъекцией дефекта; инъекции не было. Двое переведены потому, что цена их ошибки
ограничена сверху независимо от модели.

Поправлена проза, ссылавшаяся на прежние модели: «оба судьи на opus» в cadence,
canon/SKILL, canon.md и docs/SKILL — теперь дорог по-настоящему один
doc-consistency, второй читает репозиторий целиком, но идёт на sonnet. В
tasks/SKILL снято «отсюда и разные модели»: у task-form и doc-wording она теперь
одна, а разрез по глубине остался.

Тема 35 в DECISIONS.md, следствия 134-136.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
av
2026-08-06 19:36:02 +03:00
co-authored by Claude Opus 5
parent 21b840a8e4
commit c93a9d1269
9 changed files with 109 additions and 14 deletions
+75
View File
@@ -2412,3 +2412,78 @@ JJJ): у профиля обязан быть один правильный от
заодно отправляло трёхстрочную правку и переборку пяти узлов в один профиль.
Признаков нужно два: класс отвечает за обратимость, объём — за цену
разбирательства.
## 35. Ревизия моделей: переведены двое из девяти, и критерий оказался не тот (2026-08-06)
Сквозной проход по тринадцати уставам с одним вопросом: кого из девяти
`opus`-агентов можно опустить на `sonnet` без потери. Ответ — двоих, и по дороге
выяснилось, что критерий, которым конвейер до сих пор раздавал модели, отвечает
не на тот вопрос.
**ААББЦЦ. Модель выбирается по цене ошибки, а не по роду прохода.** Прежнее
деление — applicative против generative — раздаёт модели по тому, **откуда**
проход берёт критерий. Но платит проект не за происхождение критерия, а за
разбирательство с находкой. Рабочий признак:
- находка приходит **со ссылкой на записанный источник** (строка спеки, цель в
манифесте, значение в конфиге, номер правила) — её опровержение стоит одного
открытия файла. Дешёвая модель ошибается здесь **проверяемо**;
- находка есть **суждение** («это второй способ», «этот оракул негоден», «эти два
документа противоречат») — опровержение стоит рассуждения, а рассуждение стоит
триажа или человека.
Признак объясняет прежнюю раскладку лучше, чем она сама себя: `gate`, `code` и
`ops` не потому дёшевы, что применяют чек-лист, а потому, что каждая их находка
показывает пальцем на строку.
**ААББЧЧ. `doc-code-drift` → `sonnet`.** У него закрытый перечень из восьми
правил, и каждое — пара «факт в документе ↔ команда, которой он проверяется».
Устав прямо запрещает суждение («верность и полноту не проверяешь»), требует
формы «написано X, в коде Y, проверено командой Z» и правила «нечем проверить —
не находка». Ложная находка опровергается **той же командой, которая её
породила**. Это самый чистый случай признака за весь разбор.
**ААББШШ. `task-form` → `sonnet`.** Семь пронумерованных правил с таблицами форм
и поимённым перечнем подмен. Но решило не это, а потребитель: его находка —
готовая формулировка, которую человек читает и отклоняет командой, а не
оркестратор, который **молча реализует**. Довод, державший `triage` на верхней
модели, здесь не работает вовсе: ошибка стоит строки чтения.
**ААББЩЩ. `review-specs` рассмотрен и оставлен на `opus` — по причине, обратной
общей.** Он самый частый `opus`-проход конвейера (идёт и в `design`, и на коде,
то есть дважды за задачу), и по устройству он applicative: SKILL.md сам называет
стадию 1 «два applicative-прохода, оба дешёвые», хотя платит за одного `sonnet`, а
за другого `opus`. Расхождение разобрано и закрыто текстом: держит его наверху
направление `code → spec`, где надо заметить **отсутствие** — тихий фолбэк,
самодеятельный дефолт, проглоченную ошибку. Прочие держат `opus` из-за цены
ложных находок, этот — из-за цены пропущенных, а пропуск не оставляет следа
нигде: ни в отчёте, ни в границах покрытия.
**ААББЭЭ. Остальные шестеро оставлены, и у каждого своя причина.**
`adversary` и `rubric` порождают критерий по построению (второй — с запретом
открывать код в первой фазе). `architecture` — чистое суждение о структуре.
`triage` — сток, его ошибка становится кодом. `doc-consistency` ошибается ровно в
ту сторону, которую дороже всего опровергать: путает «упомянуто в двух местах» с
«оба утверждают». `basics` заведён час назад, половина его вопросов — суждение, и
модель у него выбрана решением оператора в этой же сессии.
**ААББЮЮ. Это разбор уставов, а не замер, и так и записано.** `calibration.md`
двигает модель инъекцией дефекта; здесь инъекции не было. Двое переведены потому,
что их ошибка **обнаруживается той же проверкой, что породила находку**, — то
есть цена ошибки ограничена сверху независимо от модели. Для остальных такой
границы нет, и трогать их без замера нельзя.
### Что из этого следует
134. **Дешёвая модель безопасна там, где её ошибку опровергает та же команда,
что породила находку.** Не «где критерий записан» — записанный критерий
бывает и у суждения, и у сверки, а разница между ними в том, чем кончается
спор.
135. **Ошибка бывает двух родов, и модель защищает от разных.** Ложная находка
стоит триажа и видна; пропущенная не стоит ничего сегодня и не видна вовсе.
Проход, у которого дороже второе, держится на верхней модели даже будучи
applicative.
136. **Потребитель находки — часть её цены.** Одна и та же ошибка стоит строки
чтения, если её читает человек, и разросшегося кода, если её молча реализует
оркестратор. Модель раздаётся с оглядкой на это, а не только на устройство
прохода.