корректор метки переехал в code; размер считается по пяти источникам
Сигнал «метка, вероятно, занижена» жил в review-basics — в единственном месте. А basics с меткой small не запускается, если у проекта нет своих тем: значит на типичном проекте задача с меткой small шла без рантайм-проверки того, что метка выбрана верно. Дыра появилась вместе с удешевлением small и попала в самую вероятную точку ошибки: занижают туда, где дешевле, а цена занижения там же и выросла — три темы ядра смотрятся только против записанных инвариантов. Сигнал перешёл в review-code, и он подходит по построению: идёт при любой метке, видит дифф целиком, а на small уже читает инварианты, то есть держит весь материал, из которого сигнал выводится. Признаков четыре, и один весит больше прочих — изменение, которое не откатывается обратной правкой, при метке small это прямой промах отрицательного теста. У basics сигнал остался вторым, подтверждающим: он смотрит оптикой тем и видит то, чего не видно из кода как кода, — что вопросов, отложенных до large, накопилось слишком много. Триаж теперь обязан сказать и когда сигнала нет: «корректор отработал, возражений нет» и «корректор не запускался» по молчанию неразличимы. У small появилась доля, и она сформулирована сравнением, а не порогом: small не должен обгонять medium, ориентир — до трети задач. Проверка нужна именно теперь. Пока quick и standard совпадали составом, дрейф между ними не стоил ничего, и её не было; сейчас он стоит трёх тем ядра. У дрейфа вниз есть стимул, и он назван прямо: метку выбирает не автор, но по описанию, написанному автором — занижённое описание даёт занижённую метку без чьего-либо умысла. Размер теперь считается по корпусу из пяти источников. Разметчик читал proposal.md и tasks.md, но design.md не открывал вовсе, а метод был описан одной фразой «размер считается по дельта-спекам». Дельты описывают заказанное поведение и молчат об объёме работы: шесть шагов в двух узлах видны в tasks.md, а факт, что форму решения выбирали из нескольких, — только в design.md. Каждый источник получил свою строку по каждой оси, и каждая цифра обоснования обязана быть привязана к источнику поимённо; «изменение выглядит средним» обоснованием больше не считается. Отсюда два правила, которых не было. Расхождение источников по объёму разрешается в пользу большего — и это не «спорное решается вниз»: то правило разрешает ничью при равных данных, а здесь один источник просто видел больше. Само расхождение при этом идёт доводом за незнакомое: если о задаче написано так, что источники не сходятся в объёме, форму решения по ней не знают. Отсутствие design.md у нетривиальной задачи читается так же — «форму знали заранее» ничем не подтверждено. Заодно две грамматические опечатки от вчерашнего переименования в SKILL.md. Решение — 45. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: review-code
|
||||
description: "Технический разбор кода изменения плюс сверка с конвенциями проекта — две половины одного прохода, обе при любой метке. Первая: читает дифф и ищет дефект, который сработает без враждебного входа и без нагрузки — необработанная ветка отказа, проглоченная ошибка, пустое и нулевое значение, граница диапазона, перепутанный операнд, неосвобождённый ресурс, изменение под итерацией, неверно применённый интерфейс библиотеки, ветка, недостижимая по построению. Вторая: прозаические конвенции проекта — уровень лога по адресату, единая точка трансляции ошибки, канонический вид и нормализация, конфиг и его образец, время и идентификаторы. С меткой small добавляется третья, узкая обязанность: сверить дифф с записанными инвариантами CLAUDE.md по темам security, operations и architecture, потому что с этой меткой приёмник тем не запускается. Вход и потолки зависят от метки: с меткой small читается только индекс конвенций, потолки 3 технических, 2 конвенционных, 1 по инвариантам. Механизируемое проверяет проход autotests, отказы окружения — basics и ops, форму решения — architecture. Только чтение."
|
||||
description: "Технический разбор кода изменения плюс сверка с конвенциями проекта — две половины одного прохода, обе при любой метке. Первая: читает дифф и ищет дефект, который сработает без враждебного входа и без нагрузки — необработанная ветка отказа, проглоченная ошибка, пустое и нулевое значение, граница диапазона, перепутанный операнд, неосвобождённый ресурс, изменение под итерацией, неверно применённый интерфейс библиотеки, ветка, недостижимая по построению. Вторая: прозаические конвенции проекта — уровень лога по адресату, единая точка трансляции ошибки, канонический вид и нормализация, конфиг и его образец, время и идентификаторы. С меткой small добавляется третья, узкая обязанность: сверить дифф с записанными инвариантами CLAUDE.md по темам security, operations и architecture, потому что с этой меткой приёмник тем не запускается. Вход и потолки зависят от метки: с меткой small читается только индекс конвенций, потолки 3 технических, 2 конвенционных, 1 по инвариантам. Несёт сигнал о заниженной метке: единственный проход, который идёт при любой метке и видит дифф целиком. Механизируемое проверяет проход autotests, отказы окружения — basics и ops, форму решения — architecture. Только чтение."
|
||||
tools: Read, Grep, Glob, Bash
|
||||
model: opus
|
||||
color: yellow
|
||||
@@ -235,6 +235,35 @@ color: yellow
|
||||
повод судить по общим представлениям: «инвариантов в `CLAUDE.md` нет: три темы
|
||||
ядра с этой меткой не проверил никто».
|
||||
|
||||
## Сигнал о заниженной метке — твой, и он обязателен
|
||||
|
||||
**Ты единственный проход, который идёт при любой метке и видит дифф целиком.**
|
||||
Значит корректор метки — ты: приёмник тем на `small` не запускается, а больше
|
||||
смотреть на изменение в целом некому. Раньше сигнал жил только у него, и на
|
||||
`small` его не подавал никто — то есть ровно там, где метку занижают чаще всего и
|
||||
где цена этого выше всего.
|
||||
|
||||
Скажи **отдельной строкой в начале вывода**, если видишь хоть одно:
|
||||
|
||||
- дифф трогает несколько узлов или слоёв разом, а метка ниже `large`;
|
||||
- решение выглядит нащупанным по ходу: две попытки одного, брошенный подход,
|
||||
переписанный кусок рядом с новым;
|
||||
- изменение вводит новое понятие: новый пакет, точка входа, сущность;
|
||||
- изменение **не откатывается обратной правкой** — миграция схемы или данных,
|
||||
формат на диске, публичный контракт, имя, которое разойдётся по базе, — а
|
||||
метка `small`. Это прямой промах отрицательного теста, и он весит больше
|
||||
остальных признаков.
|
||||
|
||||
Формулировка: «метка, вероятно, занижена: <признак> — прогон меткой `<какой>`
|
||||
дал бы <что именно>». Решение о перезапуске принимает оркестратор, не ты.
|
||||
|
||||
**Сигнал идёт не к тому, кто выбирал метку**: план размечал `review-scope`,
|
||||
читают сигнал триаж и человек. Это сделано нарочно — иначе корректор оказался бы
|
||||
у автора решения.
|
||||
|
||||
**Это не находка и в потолки не входит.** Он про сам прогон, а не про код, и
|
||||
срезать его нельзя ничем.
|
||||
|
||||
## Чем ты НЕ занимаешься
|
||||
|
||||
- механизируемое (форматирование, запрещённые вызовы, импорты) — `review-autotests`;
|
||||
|
||||
Reference in New Issue
Block a user