Skip to content

v9.0.0 — три модели по стадиям и сторожа, которые не врут

Latest

Choose a tag to compare

@andrewcigan andrewcigan released this 07 Sep 06:37
· 9 commits to main since this release

Три модели по стадиям и сторожа, которые не врут.

Главное в числах

было стало
Сторожей, молча пропускавших действие при сломанной служебной утилите 26 из 26 0
Журнал фич живого проекта (ротация не срабатывала ни разу с v8) 1,16 МБ 707 КБ
Ложные блокировки датчика активации : пойманные случаи мёртвых сторожей 111 : 0 механизм снесён
Механизмов с тремя атрибутами 71 87

Три модели по стадиям

Верхний уровень — архитектура, план, критика, аудит — идёт на Fable 5.1 и кода не пишет: запрет висит на роли и покрывает запись через оболочку (раньше шесть «только читающих» ролей могли писать в обход). Написание кода — Opus 5, и только когда есть команда проверки: фича, трогающая код, не входит в работу с пустым «чем докажем». Сбор сырья и рутина — Sonnet 5 со ступенью ниже по усилию.

Модель, на которой субагент реально стартовал, сверяется с реестром ролей. Если движок не сообщает модель — сторож пишет об этом в журнал, и пин честно остаётся дисциплиной, а не выдаётся за замок.

Основание — измеренная Anthropic связка «исполнитель Opus 5 с советником Fable 5.1»; цитаты и ссылки в _internal/plans/v9-research-digest.md.

Сторожа перестали врать

Замер показал: все 26 сторожей при подменённых jq/python3 отвечали «возражений нет». Прицельно — защита от боевого ключа в исходниках при сломанном jq молчала, и ключ проходил.

Очевидное решение (строгий режим оболочки) сознательно не применено: он ломает трёх сторожей на нормальном входе и, хуже того, превращает запрет в предупреждение — сторож, умерший до своей строки «блокирую», отдаёт пустой ответ. Вместо этого — проверка утилит на входе и маркер завершения.

Появился журнал срабатываний: впервые можно ответить, сколько раз каждый механизм предотвратил беду и сколько раз помешал работе. Эталонный корпус задаёт ожидание заранее, а не снимком поведения — иначе болезнь стала бы эталоном. Сквозной зонд поднимает настоящую сессию и проверяет, что движок вообще вызывает сторожей.

Против «готово на бумаге»

Доказательство теперь порождается запуском: квитанция с кодом возврата, отпечатком вывода и состоянием рабочего дерева — прозой не напишешь. Рождение записи сразу в готовом состоянии стало событием (так прошёл прошлый инцидент с дублями в CRM). Фича с внешней связью требует живого прогона, а не подменённой в тестах границы. Починка начинается с команды, которая краснеет на симптоме.

Снос по правилу двух починок

Блокировка коммита по свежести датчика активации: 395 упоминаний в журналах живых проектов, 111 ложных блокировок и обходов, ни одного пойманного случая мёртвых сторожей. Каждый обход снимал разом все проверки хука. Механизм снесён, защита неподтверждённого профиля сохранена.

Контекст и эстафета

Ротация журналов заработала впервые с v8: она отбирала записи по состоянию done, которого в графе переходов нет вовсе. Сторож размера журналов называет счёт в токенах при старте сессии. Шесть команд, которые запускает только человек, убраны из постоянного контекста.

Волна режется на направления по слоям (задачи с общим файлом остаются вместе), очередь лежит в файле — закрытие одного направления открывает следующее.

Честность

Заведён реестр осознанных отказов _internal/out-of-scope/: что решено не делать и почему. Появился сторож согласованности витрины — версия сверяется в манифесте, файле маркетплейса и описаниях, потому что раньше витрина отставала на два мажора.

Самопроверка — 52 раздела, тестов — 52, все зелёные.