ревью: скрипты гейта на python3, шаги выбираются по изменённым файлам
gate.sh и review-context.sh переписаны на python3 — в scripts/ уже жил diff-coverage.py, а разбор вывода git и сборка сводки на shell читались хуже, чем работали. Гейт больше не гоняет go-шаги впустую: build, vet, lint, gofmt, тесты, -race, покрытие и govulncheck запускаются, только если в диффе есть .go либо go.mod/go.sum; миграции — если тронуты миграции или код. Правка документации проходит гейт за секунды вместо минуты. Пропуск при этом не молчит: он в сводке с причиной и уезжает в границы покрытия, а charter гейта различает «код не трогали» (корректно) и «инструмента нет» (настоящая дыра). Изменённые файлы считаем как объединение диффа с базой, рабочего дерева и новых файлов: гейт гоняют и до коммита, и после, а лишний прогон шага дешевле пропущенного. Заодно govulncheck перестал рапортовать «уязвимостей: 0» когда он просто не смог отработать из-за несобирающегося кода — это SKIP, а не WARN. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -18,7 +18,7 @@ color: red
|
||||
|
||||
1. Определи базу диффа: `git merge-base HEAD master` (на master — `HEAD~1`) или
|
||||
возьми её из задания.
|
||||
2. Запусти `task gate BASE=<база>` (обёртка над `scripts/gate.sh`). Он гонит все
|
||||
2. Запусти `task gate BASE=<база>` (обёртка над `scripts/gate.py`). Он гонит все
|
||||
шаги до конца и печатает сводку `OK`/`FAIL`/`WARN`/`SKIP`; подробности — в
|
||||
`tmp/gate/<шаг>.log`. Краснит гейт только `FAIL`.
|
||||
3. По каждому `FAIL` открой лог и прочитай **реальную** причину. Не пересказывай
|
||||
@@ -44,7 +44,9 @@ color: red
|
||||
него будут ссылаться как на доказательство.
|
||||
- **`SKIP` любого шага** — идёт в границы покрытия дословно, с причиной. Молча
|
||||
пропущенная проверка — это ложное ощущение проверенности, ровно то, ради чего
|
||||
гейт и заводился.
|
||||
гейт и заводился. Различай две причины: «код не трогали» — корректный пропуск
|
||||
(шаги выбираются по изменённым файлам), а «инструмент не установлен» или «не
|
||||
отработал» — настоящая дыра, и её надо назвать в отчёте.
|
||||
- **`WARN` от `govulncheck`** — гейт не краснеет, но находка нужна. Открой
|
||||
`tmp/gate/govulncheck.log` и посмотри трассы вызовов: уязвимость, приехавшая с
|
||||
зависимостью **этого** change, — `major`; уязвимость в стандартной библиотеке
|
||||
|
||||
@@ -63,6 +63,10 @@ description: Конвейер ревью изменений jellybit — дет
|
||||
верификация**: изменённые строки без покрытия, конкурентность без теста с
|
||||
параллельным доступом, флаки-тест (не ниже `major`), недоступный инструмент.
|
||||
|
||||
Шаги выбираются по изменённым файлам: правка документации не гоняет тесты,
|
||||
линтеры и `-race`. Пропуск при этом не молчит — он виден в сводке с причиной и
|
||||
уезжает в границы покрытия, как и любой другой `SKIP`.
|
||||
|
||||
## Стадия 1 — Conformance (обязательна во всех профилях)
|
||||
|
||||
Два applicative-прохода: оба применяют **записанный** критерий, оба дешёвые,
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
- `jellybit-review-code` **не запускался ни в одном профиле** — charter обещал
|
||||
«проход профиля `quick`», а `quick` состоял из стадий 0, 1, 5. Проход, который
|
||||
нельзя запустить, нельзя и откалибровать. Включён стадией 1.
|
||||
- `scripts/review-context.sh` выгружал `go doc -short` по всему модулю — 264
|
||||
- `review-context` выгружал `go doc -short` по всему модулю — 264
|
||||
строки из 458. Убрано: граф зависимостей, который иначе не восстановить, — это
|
||||
21 строка, а публичную поверхность агент вытянет `go doc` сам по нужному месту.
|
||||
- Из `calibration.md` убрана секция «дополнительных метрик» (precision,
|
||||
@@ -78,7 +78,7 @@
|
||||
| матчинг ошибки по тексту сообщения | `internal/archrules` | errors.md |
|
||||
| `AUTOINCREMENT`, `DEFAULT (datetime('now'))` в новых миграциях | `internal/archrules` | database.md |
|
||||
| транспорты не знают друг о друге, ядро не знает о транспортах | `internal/archrules` | CLAUDE.md (осталась одна строка принципа) |
|
||||
| ER-схема обновлена вместе с миграцией | `scripts/gate.sh` (по диффу) | — |
|
||||
| ER-схема обновлена вместе с миграцией | `scripts/gate.py` (по диффу) | — |
|
||||
|
||||
Правки кода под новые правила: `logging.StartCall` как единая точка отсчёта
|
||||
длительности внешних вызовов, `store.Now` вместо `time.Now` в `httpapi` и
|
||||
|
||||
Reference in New Issue
Block a user