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

липень 2026

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

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

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

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

---

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

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