Вы провели выходные в Cursor, Lovable или Bolt и выпустили работающее MVP. Vibe был хороший, дофаминовый удар - реальный, ранние пользователи были впечатлены. Теперь вы пытаетесь добавить функции, онбордить разработчика или пройти security review - и внезапно код, который ощущался магическим, ощущается как трясина.
Vibe-coded MVP становятся техническим долгом так же, как стартап-кодовые базы делали это всегда: слишком быстро, слишком неструктурированно, никто не ревьюит вывод. Вот десять признаков того, что ваше AI-built MVP пересекло территорию долга, отсортированных от наименее срочного до наиболее срочного.
1. У вас файлы свыше 1000 строк
AI-инструменты генерируют код, но редко его рефакторят. Вывод продолжает накапливаться, пока один React-компонент не делает работу пятнадцати. Запустите wc -l на исходных файлах. Если больше пяти - свыше 800 строк, ваша кодовая база растёт без декомпозиции.
Стоимость исправления: 2-недельный cleanup-спринт для худших нарушителей. Файлы под 300 строк легче тестировать, рефакторить и понимать.
2. Покрытие тестами - ноль
Запустите тест-команду с coverage. Если число 0% (распространено) или менее 10% (очень распространено), каждое изменение имеет существенный шанс сломать что-то другое.
Стоимость исправления: сначала добавьте smoke-тесты для самых важных пользовательских флоу. Юнит-тесты для критической бизнес-логики - вторым этапом. Стремитесь к 60-80% покрытия на модулях, которые имеют значение, а не к 100% везде.
3. TypeScript в основном "any"
Включите strict mode в tsconfig.json и запустите tsc --noEmit. Посчитайте ошибки. Меньше 50: управляемо. Больше 500: AI генерировал без type safety, и каждое изменение рискует runtime-ошибками, которые TypeScript должен был поймать.
Стоимость исправления: инкрементально - включайте strict mode файл за файлом, а не всё сразу.
4. Вы не можете запустить приложение локально
Если ваша история local dev сломана, или приложение запускается только внутри Lovable / Replit / Bolt, вы не владеете своим ПО на самом деле. Попробуйте: клонируйте репо в свежий каталог и следуйте собственному README. Если не запустите за 15 минут - не запустит и следующий разработчик, которого наймёте.
Стоимость исправления: несколько дней на настройку Docker Compose или нормальных npm-скриптов.
5. Секреты закоммичены в git
Запустите git log --all -p | grep -iE "(api_key|secret|password|token).*=". Если что-то возвращается, у вас credentials в git-истории. Они не просто открыты сейчас - они открыты навсегда, даже если вы удалите их из HEAD.
Стоимость исправления: немедленная. Ротируйте каждый утекший secret. Используйте BFG или git-filter-repo для очистки истории, если ключи нельзя дёшево ротировать.
6. Ваш Supabase RLS открыт
Откройте дашборд Supabase, перейдите в Authentication → Policies и проверьте каждую таблицу с пользовательскими данными. Если видите USING (true) для anon роли на любой из этих таблиц, любой с вашим URL может прочитать эти данные. AI-инструменты генерируют эту политику по умолчанию, чтобы демо «работало».
Стоимость исправления: часы, но высокая срочность. Ужесточите политики только до владельца строки.
7. Каждое AI-изменение ломает разную функцию
Если заметили, что просьба к AI изменить одно постоянно ломает что-то несвязанное, это признак того, что ваш код имеет скрытое coupling. Функции переплетены, модули неявно делят state, и AI не видит зависимостей, пока они не сломаются.
Стоимость исправления: целевой рефакторинг наиболее изменяемых файлов. Добавьте тесты сначала, чтобы регрессии всплывали немедленно.
8. Вы заперты на платформе
Шаблоны Lovable, runtime Replit, паттерны компонентов v0, full-stack scaffolding Bolt - каждый создаёт lock-in. Вопрос: можете ли вы сегодня перенести это приложение на Cloudflare Pages или Vercel, переписав не более 20%? Если нет, у вас vendor lock-in.
Стоимость исправления: от 2-недельной миграции до полного переписывания, в зависимости от глубины интеграции с платформой.
9. Новые разработчики разгоняются неделями
Передайте репозиторий разработчику, который не строил его. Попросите добавить маленькую функцию. Если занимает больше двух часов, ваш код труднее читать, чем должен быть. Эта стоимость множится с каждым новым наймом.
Стоимость исправления: документация, декомпозиция файлов, консистентные паттерны. Несколько дней инвестиций для экономии недель на разработчика.
10. Вы боитесь деплоить
Самый ясный признак технического долга - страх. Если push в продакшен ощущается как риск - если вы откладываете деплои, если каждый релиз требует ручного тестирования, если рассматривали заморозку разработки, чтобы не ломать вещи - ваш код вам что-то говорит. Слушайте.
Стоимость исправления: CI/CD pipeline с автоматическими тестами, staging-окружение, план отката. Это единственное изменение снижает тревожность при деплое больше, чем любое другое вмешательство.
Что делать дальше
Три или меньше признаков применимы: добавьте CI/CD и базовые тесты самостоятельно. Вы в порядке. Четыре-шесть признаков: закажите аудит кода и спланируйте стабилизационный спринт. Семь или больше: остановите добавление функций, пока не разберётесь с фундаментом - каждая новая функция поверх сломанного фундамента множит будущую стоимость.
Детали на странице Спасение Vibe-кода. Или прочитайте гид-пиллар: Что такое vibe coding и когда вашему AI-приложению нужно спасение?