ревью: цикл задачи проверяет механику, метки сняты
Состав прогона постоянный: гейт, спеки, код, триаж; приёмник тем идёт, когда у проекта есть свои темы. Метка, разметка и проход review-scope упразднены, review-levels.md удалён, ось «метка» снята из axes.md. Ступень 4 ушла из цикла: review-proof упразднён через день после заведения, review-architecture переехал в code-deep-review вслед за adversary и ops. Темы security, operations и architecture закрывает review-code сверкой с записанными инвариантами, потолком 1 находка. Умолчание разметки действий перевёрнуто на инлайн; развилка осталась за необратимым, изменением дельта-спек и нарушенным инвариантом. Задачи из урожая заводятся по слову человека, а не шагом сценария. Чекпоинт назван единственным местом, где решается форма решения. Потеряны ось времени в цикле и суждение о форме после кода — обе потери названы в «Честном пределе» строкой границ покрытия. Журнал — тема 77.
This commit is contained in:
@@ -19,10 +19,9 @@
|
||||
|
||||
**У обслуживания нет дельта-спек по построению.** Тип `chore` определён через
|
||||
«наблюдаемое поведение не меняется», а на дельтах стоит весь цикл: `propose`
|
||||
их порождает, разметка выведена **из них**, `review-specs` сверяет **с ними**,
|
||||
объяснение чекпоинта собирается из `proposal.md` и `design.md`, `archive` вливает
|
||||
их в актуальные спеки. Change без дельт — пустой артефакт, который потом надо
|
||||
архивировать, и разметчик по нему назовёт не те темы.
|
||||
их порождает, `review-specs` сверяет **с ними**, объяснение чекпоинта собирается
|
||||
из `proposal.md` и `design.md`, `archive` вливает их в актуальные спеки. Change
|
||||
без дельт — пустой артефакт, который потом надо архивировать.
|
||||
|
||||
Шаги цикла здесь не пропущены — **им нечего обрабатывать**. Отсюда и состав
|
||||
сценария: выпали ровно те шаги, у которых нет предмета, и не выпал ни один из
|
||||
@@ -126,7 +125,7 @@
|
||||
**Третьего решения — «доделать как обслуживание» — нет.** Оно и есть то самое
|
||||
молчаливое изменение поведения, против которого стоит весь разрез: под коммитом,
|
||||
заявляющим «поменяли оснастку», уехала бы правка, не прошедшая ни чекпоинта, ни
|
||||
ревью по метке, и не оставившая следа в спеках.
|
||||
ревью цикла задачи, и не оставившая следа в спеках.
|
||||
|
||||
**Сделанное не выбрасывается ни при каком из двух решений.** Оно остаётся в
|
||||
рабочем дереве незакоммиченным: при переформулировке уезжает в change следующим
|
||||
@@ -312,38 +311,35 @@ ADR: список источников канон закрыл двумя — а
|
||||
**исход гейта с шага 3** — сводку, путь к логам шагов и отпечаток дерева. Change
|
||||
ты не передаёшь — его нет.
|
||||
|
||||
**Разметчик здесь не зовётся, и это правило, а не пропуск.** Обе оси, по которым
|
||||
он судит, у обслуживания не определены: размер он меряет по `proposal.md`,
|
||||
`design.md`, `tasks.md` и дельта-спекам, а незнакомость — по форме решения,
|
||||
которой здесь нет (незнакомое ушло в разведку шагом 1). Разметчик без своего
|
||||
корпуса вернул бы метку, выведенную из ничего.
|
||||
**План у сценария свой, и он не совпадает с перечнем тем цикла задачи.** Тема
|
||||
`requirements` там есть, а здесь её предмета нет вовсе; `operations` в цикле
|
||||
закрыта сверкой с инвариантами внутри `review-code`, а здесь её берёт `basics` —
|
||||
правка оснастки задевает выкладку, откат и соседей чаще, чем что-либо ещё, и
|
||||
инвариантов на этот счёт у проекта обычно нет.
|
||||
|
||||
Поэтому план у сценария **свой и постоянный**, и глубину он называет сам —
|
||||
проходы берут её из метки, а метки здесь нет:
|
||||
|
||||
<!-- дом: план-без-метки -->
|
||||
<!-- дом: план-обслуживания -->
|
||||
|
||||
| Тема | Дом | Кто закрывает | Глубина и вход | Когда |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `autotests` | `CLAUDE.md`, семантика гейта | `review-autotests` | как обычно: гейт запускается целиком | всегда |
|
||||
| `operations` | `architecture.*`, раздел эксплуатации | `review-basics` | **сверка**: дом темы против диффа, потолок 2 | всегда |
|
||||
| `conventions` + технический разбор | `conventions.*` | `review-code` | вход `small`: только индекс конвенций; потолки 3 технических и 2 конвенционных; **третья половина включена** — сверка с инвариантами `CLAUDE.md`, потолок 1 | дифф трогает код, а не только оснастку |
|
||||
| `conventions` + технический разбор | `conventions.*` | `review-code` | как в цикле: дом конвенций целиком, потолок 4 конвенционных, у техники потолка нет; сверка с инвариантами `CLAUDE.md` по темам `security`, `operations`, `architecture`, потолок 1 | дифф трогает код, а не только оснастку |
|
||||
|
||||
<!-- /дом: план-без-метки -->
|
||||
<!-- /дом: план-обслуживания -->
|
||||
|
||||
**Глубина названа в плане потому, что иначе её неоткуда взять.** Вход и потолки
|
||||
`review-code` заданы меткой, у `review-basics` меткой задана и сама возможность
|
||||
запуска; на прогоне без метки оба взяли бы их наугад — то есть по-разному от
|
||||
прогона к прогону, и молча.
|
||||
**Глубина названа в плане потому, что иначе её неоткуда взять.** У `review-basics`
|
||||
и тема, и глубина приходят заданием — в цикле он держит только свои темы проекта,
|
||||
а здесь ему дают чужую; без строки плана он взял бы её наугад, то есть по-разному
|
||||
от прогона к прогону и молча.
|
||||
|
||||
**Третья половина `review-code` включена намеренно.** В конвейере она живёт при
|
||||
метке `small`, где приёмник тем не запускается, и сверяет дифф с записанными
|
||||
инвариантами `CLAUDE.md` по темам `security`, `operations` и `architecture`.
|
||||
Здесь у неё та же работа: без неё `security` не смотрит вообще никто.
|
||||
**`review-code` идёт тем же составом, что в цикле, и это не совпадение.** Обе его
|
||||
половины и сверка с инвариантами постоянны — от прогона они не зависят, потому и
|
||||
переносятся сюда без оговорок. Единственное, что план решает за него, — идти ли
|
||||
вообще: правка, тронувшая только оснастку, кода не меняла.
|
||||
|
||||
Триаж обязателен, как и на всяком прогоне: он единственный сток и единственный,
|
||||
кто сверяет план с исходом. На его вход подаётся этот план — вместо плана
|
||||
разметки, которого нет.
|
||||
кто сверяет план с исходом. На его вход подаётся этот план — вместо перечня тем
|
||||
цикла задачи.
|
||||
|
||||
**Условие третьей строки проверяемое, и смотрится оно по диффу**, а не по
|
||||
намерению: обновление зависимости или правка файла CI кода не трогают, чистка и
|
||||
@@ -351,9 +347,10 @@ ADR: список источников канон закрыл двумя — а
|
||||
«здесь ошибка в логике», и чистка, прошедшая без него, проверена только на то,
|
||||
что она собирается.
|
||||
|
||||
**Сигнал о заниженной метке на этом прогоне не работает** — метки нет, и
|
||||
поднимать нечего. Его место занимает признак сценария: показалось, что глубины
|
||||
мало, потому что задача крупнее заявленного, — ищи дельту, а не метку.
|
||||
**Сигнал «просит глубокого ревью» работает и здесь**, но читается иначе: у
|
||||
обслуживания поднимать нечего — состав фиксирован сценарием. Показалось, что
|
||||
глубины мало, потому что задача крупнее заявленного, — ищи дельту, а не глубину;
|
||||
всё прочее уходит строкой «отложено в `av-dev:code-deep-review`».
|
||||
|
||||
**Границы покрытия называются полностью:**
|
||||
|
||||
@@ -465,9 +462,9 @@ ADR: список источников канон закрыл двумя — а
|
||||
- **состав гейта до и после**, если правка его трогала; не сверялся — почему;
|
||||
- по каждому критерию приёмки: **оракул и наблюдаемый исход**;
|
||||
- **`Урожай`** — отложенные находки списком;
|
||||
- **строка границ покрытия**: план сценария фиксирован, разметчик не запускался,
|
||||
`requirements` не смотрел никто, а `security` и `architecture` — только против
|
||||
записанных инвариантов, и то если шёл проход `code`.
|
||||
- **строка границ покрытия**: план сценария фиксирован; темы `requirements` в нём
|
||||
нет — её не смотрел никто, а `security` и `architecture` смотрелись только
|
||||
против записанных инвариантов, и то если шёл проход `code`.
|
||||
|
||||
## Тонкости сценария
|
||||
|
||||
|
||||
Reference in New Issue
Block a user