Стена трёх месяцев
Вы строите SaaS с помощью vibe coding. Начинается быстро. «Сделай логин» — 30 секунд. «Добавь платежи» — 2 минуты. MVP выходит за три недели.
Три месяца спустя начинаются странности. ИИ «наводит порядок» в платёжной логике и молча меняет расчёт скидок. Добавление нового эндпоинта ломает существующую аутентификацию. Запрос на рефакторинг меняет имена полей публичного API, убивая всех клиентов.
Это называется logic drift — ИИ непреднамеренно изменяет существующую бизнес-логику. Регрессионные баги существуют и в традиционной разработке. Но logic drift — другое. Изменения, которых разработчик не планировал, происходят незаметно по всей кодовой базе. Каждый промпт начинается в чистом контекстном окне.
Drift в цифрах
Это не ощущения. Есть данные.
Скорость стоит сложности. Исследовательская группа Карнеги-Меллон сравнила 807 репозиториев GitHub до и после внедрения Cursor (MSR 2026). Объём добавленного кода вырос в 3–5 раз за первый месяц. Через два месяца преимущество в скорости исчезло. Осталось: предупреждения статического анализа выросли на 30%, сложность кода — на 41%. Навсегда.
Стало не быстрее — стало медленнее. Некоммерческая исследовательская организация METR провела рандомизированное контролируемое испытание с 16 опытными open-source-разработчиками (2025). На проектах, которые они хорошо знали, группа с ИИ-инструментами выполняла задачи на 19% дольше. При этом сами разработчики ощущали ускорение на 20%. Разрыв между восприятием и реальностью — 39 процентных пунктов. На новых проектах результаты могут отличаться, но допущение «ИИ = всегда быстрее» сломано.
В масштабе стабильность рушится. Согласно Google DORA Report (2025), каждые 25% роста внедрения ИИ коррелируют со снижением стабильности доставки ПО на 7,2%.
И она действительно рухнула. Amazon в 2025 году обязал всех использовать ИИ-инструменты для кодирования и развернул 21 000 ИИ-агентов. В тот же период около 30 000 сотрудников были уволены, что резко сократило возможности ревью. Сочетание быстрой ИИ-генерации кода и уменьшенного штата ревьюеров привело к 4 инцидентам Sev-1 за 90 дней. 5 марта 2026 года шестичасовой сбой обошёлся примерно в 6,3 миллиона потерянных заказов. Внутренние документы гласили: «Быстрая генерация кода GenAI непреднамеренно обнажает уязвимости, а текущие меры защиты совершенно недостаточны.»
«Делай TDD» — не ответ
Стандартный совет при drift в vibe coding: «пиши тесты». Направление верное, но как вы предоставляете тесты — определяет результат.
Исследование TDAD (arxiv 2026) проверило это точно. Qwen3-Coder 30B получил 100 задач из SWE-bench Verified.
| Условие | Уровень регрессий |
|---|---|
| Базовый (без инструкций по тестам) | 6,08% |
| Процедурная инструкция «делай TDD» | 9,94% (хуже) |
| Затронутые тестовые файлы предоставлены в контексте | 1,82% (снижение на 70%) |
Указание агенту «делай TDD» ухудшает результат. Агент отвлекается от основной задачи, пытаясь следовать процедурным инструкциям. Но предоставление «эти тестовые файлы должны проходить» как конкретного контекста снижает регрессии на 70%.
Разница очевидна. Не инструкции «как тестировать», а контракты «что должно проходить».
Hurl: контракты в plain text
Hurl — инструмент тестирования, который объявляет HTTP-запросы и ожидаемые ответы в plain text. Поддерживается Orange (France Télécom), бинарник на Rust без рантайм-зависимостей, 18,7 тысяч звёзд на GitHub. Достаточно быстр, чтобы запускаться на каждом коммите в CI.
# Login succeeds
POST http://localhost:8080/api/auth/login
{
"email": "test@example.com",
"password": "secret123"
}
HTTP 200
[Asserts]
jsonpath "$.token" exists
jsonpath "$.user.email" == "test@example.com"
# Unauthenticated access returns 401
GET http://localhost:8080/api/pages
HTTP 401
Два контракта. Логин должен вернуть 200 с токеном. Неаутентифицированный доступ должен вернуть 401.
Когда этот файл зафиксирован в git и запускается на каждом коммите в CI — в момент, когда ИИ «наводит порядок» в логике авторизации и 401 становится 200, коммит отклоняется. Drift ловится до попадания в продакшен.
Почему Hurl
Юнит-тесты тоже могут ловить drift — если не давать ИИ права изменять тестовые файлы. Но юнит-тесты проверяют внутренние функции, что делает их структурно связанными с реализацией. Меняются имена функций — ломаются тесты. Каждый рефакторинг требует обновления тестов.
Hurl работает на границе HTTP. Он объявляет только запросы и ответы. Ему ничего не известно о внутренностях кода. Как бы ИИ ни менял код, если внешне наблюдаемое поведение сохраняется — тесты проходят; если отличается — падают. Он естественно независим от реализации.
| Юнит-тесты | Hurl | |
|---|---|---|
| Проверяет | Внутренности функций | HTTP-контракт |
| При рефакторинге ИИ | Меняются вместе | Не меняется |
| Обнаружение drift | Условное (если заблокированы) | Естественное |
| Зависимость от структуры кода | Высокая | Отсутствует |
| Читаемость для человека | Уровень кода | Plain text |
| Генерация LLM | Требует понимания структуры кода | Достаточно знать HTTP |
Hurl проверяет не код, а поведение. Код может свободно изменяться ИИ. Поведение — не должно. Это различие — ключ к обнаружению drift.
Рэтчет-фиксация
Когда Hurl-тесты проходят — зафиксируйте их. Это рэтчет.
1. Write Hurl tests for current API (or auto-extract)
2. Run on every commit in CI
3. Passing tests cannot be deleted or modified
4. New features require new Hurl tests
5. All existing + all new tests must pass to merge
Скажите агенту «отрефактори этот код» — и он свободно меняет код. Но если Hurl-тесты ломаются, коммит отклоняется. Агент должен сохранить всё существующее поведение при рефакторинге. Drift в краевых случаях, не покрытых Hurl, всё ещё возможен, но для покрытого поведения drift структурно подавлен.
Это точно совпадает с выводом исследования TDAD. Не процедурная инструкция «пиши тесты», а конкретный контракт «эти Hurl-файлы должны проходить». Агент может выбирать метод, но не может нарушить контракт.
Работает и на legacy
Уже запустили продакшен на vibe-coded ПО? Начинать заново не нужно.
Шаг 1: Зафиксируйте текущее поведение в Hurl.
Если есть API-документация — переведите её напрямую в Hurl. Если нет — попросите агента прочитать существующий код и написать Hurl-тесты. Цель — объявить «вот как это работает сейчас» в plain text для каждого эндпоинта.
Шаг 2: Подключите к CI.
Убедитесь, что все Hurl-тесты проходят, и добавьте их как условие для мержа.
Шаг 3: Теперь вы в безопасности.
Рефакторит ли ИИ или добавляет фичи — Hurl защищает существующее поведение. Если возникает drift, CI ловит его немедленно.
Не закладка фундамента — сейсмическое усиление. Укрепление здания без закрытия магазина.
Не конец vibe coding — его эволюция
Андрей Карпатый, придумавший термин «vibe coding», ровно через год, в феврале 2026, заявил: «Эра vibe coding закончилась.» Новая парадигма — agentic engineering — люди не пишут код, а оркестрируют агентов, которые автономно планируют, реализуют и тестируют.
Thoughtworks Technology Radar (2025) поместил Spec-Driven Development на уровень «Assess». Команда Мартина Фаулера опубликовала анализ инструментов SDD. Индустрия сходится в одном направлении.
Hurl-тесты — минимальная единица этого перехода. Не нужно 10 спецификаций. Не нужно учить OpenAPI. Один Hurl-файл — один контракт. И этот контракт структурно предотвращает drift, не ограничивая свободу агента.
Не меняйте модель. Добавьте контракт.
Связанное
- yongol — Киль SaaS для ИИ-кодирования — Обеспечивает консистентность full-stack с 10 SSOT. Hurl — один из них.
- Ratchet Pattern — Как заставить агентов доводить дело до конца — Теория детерминированной верификации и рэтчет-фиксации.
- IFEval-Exploiting Ratchet Code — Петли обратной связи с использованием sycophancy bias и Reins.
References
- Cursino, D. et al. (2026). “Speed at the Cost of Quality? The Impact of AI Coding on Software.” MSR 2026. arxiv.org/abs/2511.04427
- METR (2025). “Measuring the Impact of Early AI on Experienced Open-source Developer Productivity.” arxiv.org/abs/2507.09089
- Google Cloud (2025). DORA Report 2025. cloud.google.com
- Wang, Z. et al. (2026). “TDAD: Test-Driven Agentic Development.” ACM AIWare 2026. arxiv.org/abs/2603.17973
- Autonoma (2026). “Amazon Vibe Coding Failures: 4 Sev-1s in 90 Days.” getautonoma.com
- CNBC (2026). “Amazon convenes ‘deep dive’ internal meeting to address AI-related outages.” cnbc.com
- Thoughtworks (2025). “Spec-Driven Development.” Technology Radar Vol.33. thoughtworks.com
- Karpathy, A. (2026). “From Vibe Coding to Agentic Engineering.” thenewstack.io
- Fowler, M. et al. (2025). “SDD Tools.” martinfowler.com
- Hurl. hurl.dev | github.com/Orange-OpenSource/hurl