Spec-driven development: воспроизведение проекта только по спецификациям

Claude Code воссоздал archlint за 20 минут, имея только спецификации

Провёл эксперимент: можно ли воспроизвести проект, если дать AI только спецификации без исходного кода?

Условия

  • Исходный проект: archlint - инструмент анализа архитектуры Go-проектов
  • Вход: 10 спецификаций (Markdown + PlantUML), суммарно 73 KB.
  • Claude Code получил пустую директорию и спеки
  • Исполнитель: Claude Code, стартовал в пустой директории и реализовывал проект “с нуля”.

Спеки покрывали всё базовое: инициализацию модуля, Makefile, модель данных, Go-analyzer, CLI на Cobra, команды collect/trace, tracer-библиотеку, tracelint и интеграционные тесты.

Время выполнения

~20 минут от пустой директории до работающего проекта.

Результат

По итоговой оценке репозитория-клона:

  • Структурная идентичность: 100%
  • Успешность клонирования: 85.5%
  • Семантическая эквивалентность: ~75%
  • Мутаций: 23 (3 критические, 8 средние, 12 минорные)

Интересная деталь: клон получился короче оригинала - 1 845 строк Go против 2 159 (−14.5%) при том же количестве .go файлов (13).

Мутации, которые реально важны

Три “критические” мутации - как раз те места, где спецификация оставляет пространство для трактовки (то есть для творчества, которое вы не заказывали):

  1. Построение sequence-диаграмм: изменён алгоритм формирования вызовов в диаграмме (логика по стеку вызовов и условиям записи).
  2. Tracerlint: клон считает допустимым deprecated-вызов Exit(), тогда как оригинал - нет.
  3. GoAnalyzer: добавлены поля baseDir и modulePath - AI “улучшил” модель, потому что в спеках явно не зафиксирована граница ответственности анализатора (что хранить внутри, что вычислять снаружи).

Вывод

  1. Spec-driven development работает как механизм воспроизведения “функционального ядра”. 73 KB спецификаций хватило, чтобы быстро восстановить структуру и основной функционал.
  2. Критические отклонения возникают там, где спецификация описывает “что должно быть”, но не фиксирует “как это проверять”. Для таких мест нужны:
    • точные правила (инварианты),
    • примеры вход/выход,
    • golden-tests (сравнение результата побайтно/по структуре),
    • запрет на “расширение модели” без явного пункта в спеках.

Если кратко: AI может клонировать проект по спекам быстро. Но если в спеках оставлена щель - он туда обязательно протиснет “инженерную оптимизацию”. Иногда полезно. В критических местах обычно нет.

Репозиторий клона: mshogin/archlint-reproduction

Создано при помощи Hugo
Тема Stack, дизайн Jimmy