active: true
derived: false
groups:
- DB
header: |
  SQLiteTaskDB テスト
level: 2.7
links:
- REQ019: yjIpn6rpCQQ_Nic644LgFdNGSLw92Pz1v_3uVAE1L0o=
- SPEC007: es0Bc6_dvcMkrozDne3CygshVPyufN13SRNdqOivILc=
normative: true
ref: ''
references:
- path: tests/unit/test_db_robustness.py
  type: file
- path: tests/unit/test_db_timeout_hard.py
  type: file
reviewed: pPms0Z7ApTujY92rEdYjB5d8TEEzVdgZkf32lw70fcM=
text: |
  ## 目的

  `SQLiteTaskDB` はキャッシュメタデータの永続化を担う中核コンポーネントであり、DB の不整合はキャッシュの消失や重複実行を引き起こす。WALモード・専用ライタースレッドという独自アーキテクチャの信頼性を保証する。

  ## 検証観点

  - **スキーマ初期化**: 新規DBファイルに対してテーブルとインデックスが正しく作成されること。既存DBへの自動マイグレーション（content_type, version, result_data, func_identifier, expires_at カラム追加）が冪等に動作すること
  - **CRUD操作**: タスクの作成・取得・更新・削除が正しく動作し、存在しないキーへのアクセスが適切にハンドルされること
  - **読み取り接続リカバリ**: スレッドローカルな読み取り接続がクローズされた場合に自動的に再作成され、接続リークが発生しないこと
  - **ライタースレッドのタイムアウト**: 書き込みキューのタイムアウト時に適切なエラーが返り、ライタースレッドがデッドロックしないこと
  - **GC耐性**: ガベージコレクション実行後もDBファイルが存続し、有効なタスクが失われないこと
