active: true
derived: false
groups:
- CACHE
header: |
  cached_run テスト
level: 2.2
links:
- SPEC002: zhXSv1MBui7ien0r07Hqoub6YJCAaeTioJ9DFsmJjYE=
normative: true
ref: ''
references:
- path: tests/integration/core/test_cached_run.py
  type: file
reviewed: KwPDNkUSnaYs6AH2TdWsLW63lJzPrMV-GmWna1nr9n8=
text: |
  ## 目的

  `cached_run` はデコレータを直接付与できない外部ライブラリ関数にキャッシュを適用する唯一の手段であり、このAPIの不具合はサードパーティ統合シナリオ全体に影響する。戻り値の型が関数の数で変わるスマートリターン仕様は、誤実装すると型安全性を損なうため重点的に検証する。

  ## 検証観点

  - **単一関数**: 1つの関数を渡した場合、結果がそのまま（タプルでなく）返ること
  - **複数関数**: 2つ以上の関数を渡した場合、結果がタプルで返ること
  - **バリデーション**: 関数を0個渡した場合に `ValidationError` が送出されること
  - **型推論**: mypy / pyright で戻り値の型が正しく推論されること
  - **キャッシュ動作**: コンテキスト内で同一引数の再呼び出しがキャッシュヒットすること
