Перейти к содержанию

Review и статические проверки изменений

Требования применяются к merge изменений запускаемых и публикуемых компонентов. Уровни обязательности определены в корневом README.md.

DEV-REV-001. Изменение через защищённую ветку

Уровень: MUST

Применяется к: основной и release-веткам проекта

Ветка должна быть защищена от прямого push обычного разработчика и принимать изменения через merge request с обязательным pipeline того же commit. Владелец проекта должен определить роли, которым разрешены merge, изменение правил защиты и экстренный обход.

Обоснование

Защита ветки связывает review и проверки с фактически принятым состоянием.

Проверка

  • контролируемый прямой push обычной identity;
  • review protected-branch rules;
  • сопоставление merge commit с обязательным pipeline.

Исключения

Экстренный обход регулируется OPS-INC-003.

DEV-REV-002. Независимое одобрение существенного риска

Уровень: MUST

Применяется к: изменению security-границы, публичного контракта, миграции, целостности данных, восстановления или production-полномочий

Изменение должен одобрить уполномоченный человек, который не является единственным автором проверяемого diff. Требуемая роль reviewer должна определяться CODEOWNERS или эквивалентным проверяемым правилом. Существенное изменение diff после одобрения должно сбрасывать approval.

Обоснование

Автоматические tests подтверждают известные инварианты, но не принимают новое архитектурное или организационное решение о риске.

Проверка

  • тест обязательного approver и сброса approval;
  • сопоставление роли reviewer с затронутой областью;
  • проверка SHA одобренного diff.

Исключения

Не допускаются для перечисленных рисков вне OPS-INC-003.

DEV-REV-003. Проверяемый предмет review

Уровень: MUST

Применяется к: merge request, изменяющему поведение или контракт

Review должен подтвердить область задачи, применимые требования, совместимость, отказные сценарии, достаточность tests и отсутствие необоснованных зависимостей или полномочий. Merge request должен различать нормативное, поведенческое и редакционное изменение и ссылаться на применимые ADR.

Свободный комментарий approved без доступного diff и результатов обязательных checks не должен считаться выполненным review.

Обоснование

Явный предмет review предотвращает проверку только happy path или оформления кода.

Проверка

  • checklist либо структурированные поля merge request;
  • сопоставление комментариев с diff и результатами CI;
  • выборочная проверка отказного сценария.

Исключения

Редакционное изменение MAY использовать сокращённый review, если оно не меняет смысл контракта.

DEV-REV-004. Автоматизированные lint и format

Уровень: MUST

Применяется к: исходному и сгенерированному тексту, для которого проект объявил правила lint или format

Для каждого основного формата исходного кода проект должен объявить применимые lint и format rules. Правила и версии инструментов должны быть зафиксированы. Обязательный CI job должен проверять их без изменения исходной рабочей копии и завершаться ошибкой при нарушении. Локальная команда должна применять тот же набор правил.

Изменение правила форматирования должно выполняться отдельно от смыслового изменения либо иметь машинно-проверяемое разделение diff.

Обоснование

Детерминированная автоматика устраняет субъективный style-review, а отделение массового форматирования сохраняет читаемость смыслового diff.

Проверка

  • запуск на контролируемом нарушении;
  • сравнение локальной и CI-команды;
  • git diff --exit-code после проверочного job.

Исключения

Формат, для которого нет принятого автоматического инструмента, MAY проверяться ограниченным review с закрытым перечнем правил и зафиксированным основанием отсутствия автоматики.