Волна ИИПодписаться
← Назад
Инструменты

Claude Fable помог найти смертельный баг в sqlite-utils 4.0rc2 — потеря данных исправлена

05.07.2026 · simonwillison.net ↗

За пару дней до выхода стабильной версии sqlite-utils 4.0 автор проекта Simon Willison решил прогнать код через Claude Fable (модель Anthropic) для финальной проверки. Результат оказался неожиданным: Fable нашёл 5 проблем, которые классифицировал как «блокирующие релиз». Самая опасная — в методе delete_where(): он выполнял DELETE через сырой db.execute() без обёртки atomic(), из-за чего соединение оставалось в транзакции, и все последующие записи висели в памяти, не записываясь на диск. При повторном открытии базы данные просто пропадали.

В процессе исправления Willison провёл 37 раундов с Fable (34 коммита, +1321/−190 строк кода в 30 файлах). Интересно, что значительную часть работы он делал с телефона, пока гулял на параде 4 июля — агент иногда по 10–15 минут «думал», и можно было переключаться на другие дела.

Главное изменение в новой RC2 — полная переработка обработки транзакций. Все методы записи (insert, upsert, update, delete, transform и т.д.) теперь работают в собственной транзакции и коммитят сразу после выполнения. Пользователям больше не нужно вручную вызывать commit() или закрывать соединение. Документация содержит чёткие правила: используйте db.atomic() для групповых операций и db.begin() для ручного управления — библиотека никогда не закроет вашу транзакцию сама.

Источник: simonwillison.net
← Все новости AI Wave