active: true
derived: false
groups:
- STORE
header: |
  LocalStorage テスト
level: 2.9
links:
- SPEC009: GEsLrkKnEbxR9Z3uZlN71ndIP-FE5IZveDM-SC3OW2A=
normative: true
ref: ''
references:
- path: tests/integration/storage/test_local.py
  type: file
reviewed: K7Msyu5C0otfO474-EW_suuYv-cmwHsoP8Yk8YyCBw0=
text: |
  ## 目的

  `LocalStorage` はBlobデータのファイルシステム永続化を担い、並行書き込み時のデータ破損やパストラバーサルによるセキュリティ脆弱性が発生しうる。アトミック書き込みとセキュリティバリデーションの正確性を保証する。

  ## 検証観点

  - **ワークスペース初期化**: `base_dir` が存在しない場合に自動作成され、`.gitignore` が配置されること
  - **アトミック書き込み**: `tempfile.mkstemp` → `fsync` → `os.replace` のフローで、書き込み中のクラッシュや並行アクセスでファイルが破損しないこと
  - **並行書き込み一貫性**: 複数スレッドから同一キーへの同時書き込みで、最終状態が正しい完全なデータであること
  - **パストラバーサル防止**: キーに `..` や `/` を含む場合に `ValidationError` が送出され、`base_dir` 外へのアクセスが不可能であること。`load()` でも `is_relative_to` 検証が機能すること
  - **一時ファイルクリーンアップ**: `clean_temp_files()` が猶予期間超過の `.spot_tmp` ファイルを削除し、猶予期間内のファイルは保持すること
  - **冪等削除**: `delete()` が存在しないキーに対してもエラーを送出しないこと
