Разделение осей V-AC
Паттерн: если группа критериев смешивает детерминистскую ось (правило) и статистическую ось (порог по окну), разделите её на две заранее.
Обзор
Группа критериев приёмки не должна смешивать проверки по инвариантному правилу с проверками по наблюдаемой частоте. Оси отвечают на разные вопросы; смешение даёт ложную уверенность на стадии проверки.
Паттерн
Когда в группе есть и детерминистские записи («схема соответствует XSD», «HTTP-код 200»), и статистические («p99 ниже 500 мс», «ошибки ниже 1 % за час»), разделите её на две до финализации.
Почему разделять
Оси опираются на разные цепочки доказательств. Критерий по частоте в одной группе с правилами маскирует, что детерминистские проверки всегда проходят, а неопределённость на статистической.
Как применять
- Пометьте запись как детерминистскую (правило) или статистическую (порог по окну).
- Если в одной группе обе оси, разделите на детерминистскую и статистическую.
- Статистическая запись должна указывать окно измерения, размер выборки и доверительный интервал.
- Детерминистская запись должна быть привязана к утверждению spec-раннера или эквивалентной монотонной проверке.
- При разделении сохраните или переназначьте каждую привязку
Covers:,Verifies:иEvidence:, чтобы автоматический граф спецификации оставался полным.
Паттерн 2: dry-run при активации гейта
Когда задача вводит новый гейт-валидатор или переводит существующий из advisory в fail-hard, /dr-plan прогоняет гейт в dry-run по его --scope и перечисляет все падающие файлы. Каждый либо переписывается в задаче, либо исключается из scope документированным waiver — но не откладывается, иначе гейт отклонит тот самый архив, который его включил.
Паттерн 3: пороговые гейты
Пороговый гейт (abstention, confidence cutoff, rate limiter) получает две записи: детерминистскую — что он читает правильное поле и применяет правильную константу (юнит-тест), и статистическую — что итоговая частота попадает в документированный диапазон (eval- или shadow-скрипт на репрезентативной выборке).