sqlite-utils 4.0rc2:Claude Fable執筆、149.25ドル、データ損失バグを修正

✍️ OpenClawRadar📅 公開日: July 5, 2026🔗 Source
sqlite-utils 4.0rc2:Claude Fable執筆、149.25ドル、データ損失バグを修正
Ad

Simon Willison氏は、sqlite-utils 4.0rc2をリリースしました。これはSQLite用のPythonライブラリで、コードの大部分をClaude Fableが記述しました。総費用は、37回のプロンプトと34回のコミットによるAPI費用で約$149.25、30ファイルにわたって+1,321 -190行の変更が行われました。

変更点

このリリース候補では、Table.delete_where()における深刻なデータ損失バグを修正しています。以前はコミットが行われず、接続がトランザクション内のままとなり、その後のすべての書き込みに悪影響を及ぼしていました。以下はFableの分析による再現コードです。

db = sqlite_utils.Database("dw.db")
db["t"].insert_all([{"id": i} for i in range(3)], pk="id")
db["t"].delete_where("id = ?", [0])
# conn.in_transaction が True になる
db["t"].insert({"id": 50})
db["u"].insert({"a": 1})
db.close()
# 再オープン: 行は [0, 1, 2] — 削除、行50、テーブルuがすべて消えている。

Willison氏はこれを「本当に悪いバグ」と呼び、安定版4.0のリリース前にFableが発見したことを喜んでいます。

Ad

新しいトランザクションモデル

すべての書き込みメソッド(insert()upsert()update()delete()delete_where()transform()create_table()enable_fts()など)は、それぞれ独自のトランザクション内で実行され、戻り値の前にコミットします。手動でのcommit()は不要です。

2つの例外があります。

  • db.atomic()を使用して複数の操作をアトミックにグループ化する場合
  • db.begin()でトランザクションを開始した場合、ライブラリはそれをコミットしません。コミットはユーザーが制御します。

Python 3.12+ の autocompat サポート

Fableはさらに、Python 3.12の新しいsqlite3.connect(..., autocommit=True|False)モードとの互換性も確保しました。ライブラリの自動メソッド別トランザクションはデフォルトの接続モード向けに設計されており、Fableは新しいautocommit設定のもとでテストスイートが通過するように修正しました。

レビュープロセス

Willison氏は作業をiPhone上のClaude Code for Webで開始し、最終レビューはラップトップ上のGitHub PRで行いました。彼は、ドキュメントの編集内容を最初にレビューすることが変更点を理解する優れた方法だと述べています。最終レビューをGPT-5.5が行い、追加のエッジケースを発見しました。完全なPRトランスクリプトは公開されています。

対象ユーザー

軽量データベース操作にsqlite-utilsを使用しており、適切なトランザクション安全性を備えたプロダクション対応の4.0リリースを求めるPython開発者向けです。

📖 出典全文: HN AI Agents

Ad

👀 See Also

Agentlint: すべてのPRでCLAUDE.mdの矛盾や壊れたポインタを検出するGitHubアプリ
Tools

Agentlint: すべてのPRでCLAUDE.mdの矛盾や壊れたポインタを検出するGitHubアプリ

Agentlintは、すべてのPRでエージェントルール面(CLAUDE.md、AGENTS.md、スキル、フック)を監査し、矛盾、パス切れ、サポート外のハーネス機能に対してインラインコメントを投稿するGitHubアプリです。パブリックリポジトリでは無料で利用できます。

OpenClawRadar
ChatGPTプロジェクト移行ギャップの回避策:スクリプトとプロンプトのエクスポート
Tools

ChatGPTプロジェクト移行ギャップの回避策:スクリプトとプロンプトのエクスポート

開発者が、ChatGPTからClaudeへの移行時に特定の制限を回避する方法を公開しました。ChatGPTのデータエクスポートには、各会話がどのプロジェクトに属しているかの情報が含まれていません。プロジェクトメンバーシップのフィールドはエクスポートされたJSONから欠落しています。

OpenClawRadar
Claude Codeの目標:対抗的レビューによる持続的タスク
Tools

Claude Codeの目標:対抗的レビューによる持続的タスク

Claude Codeの/goalコマンドは、長いタスクを多くのターンにわたって継続させ、さらにオプションで別のClaudeセッションが最終結果をレビューして誤った完了を防ぐ機能です。

OpenClawRadar
私のオープンクローが物理的な身体を手に入れました:目、脚、声を持つロボット犬
Tools

私のオープンクローが物理的な身体を手に入れました:目、脚、声を持つロボット犬

なし

u/Puzzleheaded-Cat1778