верхняя ступень ревью задана тестом, а не списком
«Идентичность, слияние, разбор» пришли из одного проекта, и в общем виде формулировка не читалась: вопрос «как применить это к моему проекту» не имел ответа в тексте. Теперь класс задан тремя условиями, не зависящими ни от домена, ни от языка: вариантов несколько и оба защитимы; спека между ними не выбирает; неверный выбор не падает, а даёт правдоподобный результат и молча меняет смысл данных. Отрицательный тест сильнее трёх положительных: то, что красит гейт, роняет запрос или ломает тест, в класс не входит — это ловят проходы дешевле. Отсюда же и причина, по которой класс достался самому дорогому проходу: независимая реализация выберет другой вариант, и дифф между вариантами и есть находка; там, где вариант один, она совпадёт с существующей. Три слова остались как три места, где такие правила водятся — граница, где данные входят или встречаются: состав ключа и нормализация перед сравнением; победитель конфликта и тай-брейк при равенстве; границы токенов и неоднозначный вход. Проект перечисляет свои места в docs/review.md, и перечень производен от теста, а не заменяет его. Две оговорки, без которых правило вырождается: - триггер — новое или изменённое по существу правило, а не код рядом с ним; иначе проект, чей домен и состоит из таких правил, всегда в deep; - проект, где такого класса нет вовсе, deep не запускает никогда, и это законное состояние, а не недонастройка. review-reimpl получил тот же тест и право сказать первой строкой, что позвали не на его класс, — строкой в границы покрытия, а не отказом работать. DECISIONS 18, XXX и следствия 76–77. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -184,10 +184,11 @@ kebab-case.
|
||||
(<провенанс>)`;
|
||||
- **Триггеры профиля** — проектная конкретизация правила выбора профиля ревью:
|
||||
что в этом проекте считается **новым понятием или структурной единицей** (это
|
||||
поднимает прогон до `wide`) и что — правилом идентичности, слияния или разбора
|
||||
(до `deep`). Уточняет умолчания конвейера, а не отменяет их. Рабочее умолчание
|
||||
— `standard`: миграция схемы и публичный контракт ступень **не** поднимают,
|
||||
их проверяют проходы, которые в `standard` и так есть;
|
||||
поднимает прогон до `wide`) и **где живут правила идентичности, слияния и
|
||||
разбора** (до `deep`) — перечнем мест, производным от теста конвейера, а не
|
||||
вторым определением класса. Уточняет умолчания, а не отменяет их. Рабочее
|
||||
умолчание — `standard`: миграция схемы и публичный контракт ступень **не**
|
||||
поднимают, их проверяют проходы, которые в `standard` и так есть;
|
||||
- **Недоступно проверке** — два подраздела: «не проверит ни один проход»
|
||||
(принципиальная граница, по факту промаха не пересматривается) и «перестали
|
||||
проверять сознательно» (пересматривается первым).
|
||||
|
||||
@@ -284,9 +284,17 @@
|
||||
|
||||
Проектная конкретизация правила выбора профиля: что здесь считается **новым
|
||||
понятием или структурной единицей** (поднимает прогон до `wide` и запускает
|
||||
архитектурный проход) и что — правилом идентичности, слияния или разбора
|
||||
(до `deep`, запускает независимую реализацию). Уточняет умолчания конвейера, не
|
||||
отменяет их; рабочее умолчание — `standard`.
|
||||
архитектурный проход) и **где живут правила идентичности, слияния и разбора**
|
||||
(до `deep`, запускает независимую реализацию) — перечнем узлов или capability,
|
||||
поимённо. Уточняет умолчания конвейера, не отменяет их; рабочее умолчание —
|
||||
`standard`.
|
||||
|
||||
Перечень для `deep` **производен от теста конвейера**, а не заменяет его:
|
||||
правило попадает в класс, когда вариантов несколько, спека между ними не
|
||||
выбирает, а неверный выбор не падает, а молча меняет смысл данных. Перечисляй
|
||||
места, где этот класс здесь живёт, а не переписывай определение. Таких мест нет
|
||||
вовсе — так и напиши: `deep` тогда не запускается никогда, и это законное
|
||||
состояние.
|
||||
|
||||
### Недоступно проверке
|
||||
|
||||
|
||||
Reference in New Issue
Block a user