стоимость ревью: снят проход независимой реализации и самая дорогая модель
Прогоны стали долгими, а счёт в токенах заметным. Разбор шёл не по находкам, а по статьям расхода. Две названы прямо: убрать reimpl и убрать fable. reimpl писал свою реализацию узла, не открывая существующую, и диффил по решениям. Его счёт определялся объёмом вывода — он один писал код, а не читал его, — и на прогоне это была самая большая строка. Снят по цене. Профиль deep от этого не похудел, а исчез: reimpl был единственным, чем он отличался от wide, и без него у двух имён оказался бы один состав. Ровно от этой болезни лечилась ступень wide решением JJJ — у профиля обязан быть один правильный ответ, иначе реестр состава нечем проверять. Ступеней три: quick, standard, wide. Вместе с профилем снято всё, что обслуживало только его. Барьер стоимости — он держал дорогой проход, чтобы тот не писал реализацию против кода, который через час перепишут; дорогого прохода нет, граф стал плоским во всех профилях, рёбер осталось два вида вместо трёх. Тест «идентичность, слияние, разбор» — полторы страницы, служившие единственной цели: выбрать deep не по ощущению; вместе с ним ушёл проектный перечень мест в docs/review.md и его скелет в каноне. Стадии перенумерованы: 0 гейт, 1 сверка, 2 враждебный и эксплуатационный, 3 архитектурный, 4 триаж — дыра на месте третьей читалась бы как пропущенная стадия. Снятие записано как сознательное сужение, а не как «класс оказался пустым». calibration.md требует замера на двух проектах перед удалением прохода; замера не было, было решение о цене. Поэтому в «Честном пределе» стоит строка: «не знаю, чего не знаю» больше не достаёт никто. Остаток независимого взгляда дают профиль design и architecture, но альтернативной реализации, с которой можно сдиффить решения, у конвейера нет. Класс уходит в границы покрытия каждого прогона, у проекта — в подраздел «перестали проверять сознательно». Без этой записи снятие через месяц читается как «проверено и признано лишним». fable снят с троих: review-triage, review-architecture, doc-code-drift — все на opus. Основание верхней модели «ошибка распространяется дальше самой находки» осталось, но оно объясняет, почему двое не опускаются до sonnet, а не почему им нужна ступень выше opus: разницы в пользу более дорогой модели не показал ни один прогон, а время и счёт она множила. Палитра схлопнулась до двух цветов, красного в репозитории больше нет, frontmatter.py теперь отвергнет модель вне sonnet и opus. Версия канона не поднята сознательно. Проектам всё равно надо снести перечень мест для deep из docs/review.md, поэтому пункт вписан в «Что сделать проекту» записи «Версия 4» — её ещё не гонял ни один проект, оба ждут в TODO. Тема 33 в DECISIONS.md, следствия 127-129. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -106,12 +106,12 @@ kebab-case.** Причина не эстетическая: имя файла с
|
||||
| Документ | Вопрос | Кто читает, кроме человека |
|
||||
| --- | --- | --- |
|
||||
| `CLAUDE.md` | что нельзя нарушать, чем краснеет гейт | все агенты, всегда |
|
||||
| `passport.md` | зачем и для кого, чем это **не** является | `architecture`, `rubric`, `reimpl`, `specs` |
|
||||
| `passport.md` | зачем и для кого, чем это **не** является | `architecture`, `rubric`, `specs` |
|
||||
| `architecture.md` | как сложено и где что работает | все проходы ревью |
|
||||
| `database.md` | что лежит в хранилище и какими настройками | `ops`, `adversary`, `reimpl` |
|
||||
| `database.md` | что лежит в хранилище и какими настройками | `ops`, `adversary` |
|
||||
| `security.md` | против кого защищаемся и что вне модели | `adversary` |
|
||||
| `conventions/` | как мы пишем код | `code` |
|
||||
| `research/` | что показала реальность, а не документация | `specs`, `reimpl`, `ops`, `adversary` |
|
||||
| `research/` | что показала реальность, а не документация | `specs`, `ops`, `adversary` |
|
||||
| `adr/` | почему решено именно так | `architecture` |
|
||||
| `review.md` | как настроен конвейер и что уже проскакивало | `triage`, каждый проход — свою часть |
|
||||
| `openspec/specs/` | что система делает — нормативно | `specs` |
|
||||
@@ -232,12 +232,11 @@ kebab-case.** Причина не эстетическая: имя файла с
|
||||
- **Вопросы к проходам** — поимённо, в форме `<имя прохода>: <вопрос>
|
||||
(<провенанс>)`;
|
||||
- **Триггеры профиля** — проектная конкретизация правила выбора профиля ревью:
|
||||
что в этом проекте считается **новым понятием или структурной единицей** (это
|
||||
поднимает прогон до `wide`) и **где живут правила идентичности, слияния и
|
||||
разбора** (до `deep`) — перечнем мест, производным от теста конвейера, а не
|
||||
вторым определением класса. Уточняет умолчания, а не отменяет их. Рабочее
|
||||
умолчание — `standard`: миграция схемы и публичный контракт ступень **не**
|
||||
поднимают, их проверяют проходы, которые в `standard` и так есть;
|
||||
что в этом проекте считается **новым понятием или структурной единицей** — это
|
||||
поднимает прогон до `wide`, верхней ступени. Перечнем мест, а не вторым
|
||||
определением класса. Уточняет умолчания, а не отменяет их. Рабочее умолчание —
|
||||
`standard`: миграция схемы и публичный контракт ступень **не** поднимают, их
|
||||
проверяют проходы, которые в `standard` и так есть;
|
||||
- **Недоступно проверке** — два подраздела: «не проверит ни один проход»
|
||||
(принципиальная граница, по факту промаха не пересматривается) и «перестали
|
||||
проверять сознательно» (пересматривается первым).
|
||||
|
||||
@@ -127,13 +127,20 @@ upgrade` идёт по записям снизу вверх от версии п
|
||||
человека. **Переименование ADR это перенос ссылок**: слаг стоит в
|
||||
`adr/README.md`, в `architecture.md` и в чужих документах, и делается одним
|
||||
проходом, иначе останутся битые ссылки (их `docs.py` потом и покажет).
|
||||
8. `docs/.pm.json`: `"canon": 4`.
|
||||
9. Позвать **обоих судей** — `doc-consistency` и `doc-code-drift`, шагом 6
|
||||
`upgrade`. Пунктов выше девять, половина из них ручная, и именно здесь видно,
|
||||
какие сделаны только наполовину: переименования секций и полей разводят
|
||||
документы, а `check` сверяет число версии, а не существо. Первый прогон на
|
||||
живом проекте вдобавок самый урожайный — правило единственного дома до сих пор
|
||||
никто не проверял. Разбирать порциями, а не одним заходом.
|
||||
8. `docs/review.md`, подраздел «Триггеры профиля»: снести перечень мест для
|
||||
`deep` — профиль упразднён вместе с проходом независимой реализации, и
|
||||
перечень стал указателем в пустоту. Перечень для `wide` (новое понятие или
|
||||
структурная единица) остаётся: он и поднимает прогон до верхней ступени. Там
|
||||
же проверить журнал дефектов и «Недоступно проверке» на упоминания
|
||||
независимой реализации: класс «форма решения, где спека выбора не сделала»
|
||||
переезжает в подраздел «перестали проверять сознательно».
|
||||
9. `docs/.pm.json`: `"canon": 4`.
|
||||
10. Позвать **обоих судей** — `doc-consistency` и `doc-code-drift`, шагом 6
|
||||
`upgrade`. Пунктов выше десять, половина из них ручная, и именно здесь видно,
|
||||
какие сделаны только наполовину: переименования секций и полей разводят
|
||||
документы, а `check` сверяет число версии, а не существо. Первый прогон на
|
||||
живом проекте вдобавок самый урожайный — правило единственного дома до сих пор
|
||||
никто не проверял. Разбирать порциями, а не одним заходом.
|
||||
|
||||
## Версия 3 — 2026-08-04
|
||||
|
||||
|
||||
@@ -284,19 +284,11 @@
|
||||
### Триггеры профиля
|
||||
|
||||
Проектная конкретизация правила выбора профиля: что здесь считается **новым
|
||||
понятием или структурной единицей** (поднимает прогон до `wide` и запускает
|
||||
архитектурный проход) и **где живут правила идентичности, слияния и разбора**
|
||||
(до `deep`, запускает независимую реализацию) — перечнем узлов или capability,
|
||||
понятием или структурной единицей** — это поднимает прогон до `wide`, верхней
|
||||
ступени, и запускает архитектурный проход. Перечнем узлов или capability,
|
||||
поимённо. Уточняет умолчания конвейера, не отменяет их; рабочее умолчание —
|
||||
`standard`.
|
||||
|
||||
Перечень для `deep` **производен от теста конвейера**, а не заменяет его:
|
||||
правило попадает в класс, когда вариантов несколько, спека между ними не
|
||||
выбирает, а неверный выбор не падает, а молча меняет смысл данных. Перечисляй
|
||||
места, где этот класс здесь живёт, а не переписывай определение. Таких мест нет
|
||||
вовсе — так и напиши: `deep` тогда не запускается никогда, и это законное
|
||||
состояние.
|
||||
|
||||
### Недоступно проверке
|
||||
|
||||
**Не проверит ни один проход** — принципиальная граница; по факту промаха не
|
||||
|
||||
Reference in New Issue
Block a user