# Виявила, що хуки коміту та ворота якості виконують різні перевірки, поки документ обіцяв, що вони однакові, порівнявши два переліки в тесті, — п'ять, які виконувалися лише вручну, були тими, що читали прозу CV.

липень 2026

**Ситуація.** Проєкт мав хук на коміт, що виконує перевірки до прийняття коміту, і повну перевірку якості, яку запускають на вимогу. Документ стверджував, що хук виконує ту перевірку, тож ніщо не могло потрапити до історії, не пройшовши всього. Обидва переліки підтримувалися вручну, у двох різних файлах, і ніщо їх не порівнювало.

**Завдання.** Заяву треба було перетворити на твердження, а це означало перелічити обидві множини програмно й валитися, коли вони розходяться.

**Дія.** Тест читає налаштування хука та визначення завдань перевірки, розв'язує кожне з них у множину перевірок, які воно насправді викликає, і порівнює. Вони не збіглися. П'ять перевірок існували лише в повній перевірці й ніколи не виконувалися на коміті, і ці п'ять не були випадковими — це були ті, що читають саму прозу CV: перевірка голосу, яка тримає відгуки безособовими, перевірка модних слів, перевірка узгодженості чисел між мовами, перевірка нотації та перевірка орфографії вмісту. Інакше кажучи, кожна перевірка, що захищає код, виконувалася автоматично, а кожна перевірка, що захищає письмо, виконувалася лише тоді, коли хтось згадував. Оскільки письмо є всім продуктом, вразливість була оберненою щодо того, де її хтось припустив би. Виправленням було внести ці п'ять до хука, що вимагало зробити дві з них досить швидкими, аби пережити бюджет часу до коміту, а потім лишити тест порівняння на місці, щоб два переліки більше не могли розійтися. Документ, що описував намір, тепер описує щось примусово застосоване.

**Результат.** Хук і повна перевірка доведено виконують ті самі перевірки, а перевірки прози тепер виконуються за кожного коміту. Компромісом є час виконання хука на коміт, який зріс і зростатиме далі, поки зростає вміст, і існує точка, у якій повільний хук починають обходити, — тож у цього виправлення є термін придатності, вимірюваний тим, як довго перевірки лишатимуться швидкими.

---

- Роль: Інженер з тестування та якості
- Категорії: [DevOps](https://engineer.company/uk/categories/devops/), [Автоматизація та CI/CD](https://engineer.company/uk/categories/automation/), [Тестування та QA](https://engineer.company/uk/categories/testing/), [Python](https://engineer.company/uk/categories/python/), [Документація](https://engineer.company/uk/categories/documentation/)
- Послуги: [DevOps та автоматизація CI/CD](https://engineer.company/uk/services/devops-cicd/), [Технічне лідерство та консалтинг](https://engineer.company/uk/services/technical-leadership/), [Технічна документація](https://engineer.company/uk/services/technical-documentation/)

<https://engineer.company/uk/portfolio/found-the-commit-hooks-and-the-gate-disagreeing-150/>
