---
generated_at: 2026-03-01 10:00:00
metrics:
  claims_total: 162
  claims_with_evidence: 155
  claims_without_evidence: 7
confidence_derived: 0.96
---

# 根拠レポート：cache.csv

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧（cache.csv）の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：155 / 162、根拠なし：7
- 優先レビュー（高）
  1. **IdleFileCachePlugin processIdleTasks内部関数のテスト**：内部クロージャの動作を外部から検証する方法が限定的
  2. **ResolverCachePlugin yield付きリクエストの同時処理テスト**：複雑な非同期フローの検証にモック設計が必要
  3. **PackFileCacheStrategy._openPack内のスナップショット検証チェーン**：複数Promiseの入れ子構造で、テスト条件の網羅が困難

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `lib/cache/mergeEtags.js` - mergeEtags関数とMergedEtagクラスの定義（L1-71）
- E-02: `lib/cache/getLazyHashedEtag.js` - LazyHashedEtagクラスとgetter関数の定義（L1-91）
- E-03: `lib/cache/MemoryCachePlugin.js` - MemoryCachePluginクラスのapplyメソッド（L1-57）
- E-04: `lib/cache/MemoryWithGcCachePlugin.js` - MemoryWithGcCachePluginクラスの定義（L1-143）
- E-05: `lib/cache/IdleFileCachePlugin.js` - IdleFileCachePluginクラスの定義（L1-243）
- E-06: `lib/cache/AddBuildDependenciesPlugin.js` - AddBuildDependenciesPluginクラスの定義（L1-33）
- E-07: `lib/cache/AddManagedPathsPlugin.js` - AddManagedPathsPluginクラスの定義（L1-41）
- E-08: `lib/cache/ResolverCachePlugin.js` - ResolverCachePluginクラス、CacheEntry、addAllToSet、objectToString（L1-451）
- E-09: `lib/cache/PackFileCacheStrategy.js` - PackFileCacheStrategy、Pack、PackContainer、PackContent、PackContentItems、PackItemInfo、allowCollectingMemory（L1-1601）
- E-10: `lib/Cache.js` - Cache基底クラスとSTAGE定数の定義（E-03,E-04,E-05で参照）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 (UT-CAC-001) | 文字列同士のetagマージで'a\|b'形式が返る | E-01 L37-38 | ○ |
| C-02 (UT-CAC-002) | オブジェクトと文字列のetagマージでMergedEtagが返る | E-01 L57-68 | ○ |
| C-03 (UT-CAC-003) | 文字列とオブジェクトの引数入替が行われる | E-01 L40-42 | ○ |
| C-04 (UT-CAC-004) | オブジェクト同士のetagマージでMergedEtagが返る | E-01 L43-55 | ○ |
| C-05 (UT-CAC-005) | 同じオブジェクトペアでキャッシュが効く | E-01 L45-55 | ○ |
| C-06 (UT-CAC-006) | objectStringMapでキャッシュが効く | E-01 L58-68 | ○ |
| C-07 (UT-CAC-007) | MergedEtag.toStringでパイプ区切り | E-01 L20-22 | ○ |
| C-08 (UT-CAC-008) | MergedEtagコンストラクタのプロパティ設定 | E-01 L15-18 | ○ |
| C-09 (UT-CAC-009) | LazyHashedEtagコンストラクタの初期化 | E-02 L25-32 | ○ |
| C-10 (UT-CAC-010) | LazyHashedEtag.toString初回でハッシュ計算 | E-02 L37-44 | ○ |
| C-11 (UT-CAC-011) | LazyHashedEtag.toString2回目はキャッシュ | E-02 L38 | ○ |
| C-12 (UT-CAC-012) | getter関数で文字列hashFunctionのキャッシュ生成 | E-02 L63-72 | ○ |
| C-13 (UT-CAC-013) | getter関数で同一オブジェクトのキャッシュ返却 | E-02 L84-85 | ○ |
| C-14 (UT-CAC-014) | getter関数でオブジェクトhashFunctionのキャッシュ生成 | E-02 L73-82 | ○ |
| C-15 (UT-CAC-015) | getter関数でオブジェクトhashFunctionのキャッシュ返却 | E-02 L84-85 | ○ |
| C-16 (UT-CAC-016) | getter関数でデフォルトハッシュ関数使用 | E-02 L60 | ○ |
| C-17 (UT-CAC-017) | MemoryCachePlugin storeフックでMap.set | E-03 L23-28 | ○ |
| C-18 (UT-CAC-018) | MemoryCachePlugin getフックでetag一致時にdata返却 | E-03 L29-36 | ○ |
| C-19 (UT-CAC-019) | MemoryCachePlugin getフックでetag不一致時にnull | E-03 L36 | ○ |
| C-20 (UT-CAC-020) | MemoryCachePlugin getフックでnullエントリ時にnull | E-03 L33-34 | ○ |
| C-21 (UT-CAC-021) | MemoryCachePlugin getフックでキャッシュミス時にgotHandler登録 | E-03 L38-45 | ○ |
| C-22 (UT-CAC-022) | gotHandlerでundefined時にnull設定 | E-03 L39-40 | ○ |
| C-23 (UT-CAC-023) | gotHandlerでresult時にデータ設定 | E-03 L41-42 | ○ |
| C-24 (UT-CAC-024) | MemoryCachePlugin shutdownでcache.clear | E-03 L48-53 | ○ |
| C-25 (UT-CAC-025) | MemoryWithGcCachePlugin constructorでmaxGenerations設定 | E-04 L25-27 | ○ |
| C-26 (UT-CAC-026) | MemoryWithGcCachePlugin storeフックでcache.set | E-04 L94-98 | ○ |
| C-27 (UT-CAC-027) | MemoryWithGcCachePlugin getフックでetag一致時にdata返却 | E-04 L100-108 | ○ |
| C-28 (UT-CAC-028) | MemoryWithGcCachePlugin getフックでetag不一致時にnull | E-04 L107 | ○ |
| C-29 (UT-CAC-029) | MemoryWithGcCachePlugin getフックでnullエントリ時にnull | E-04 L104-105 | ○ |
| C-30 (UT-CAC-030) | MemoryWithGcCachePlugin getフックでoldCacheから復元 | E-04 L109-121 | ○ |
| C-31 (UT-CAC-031) | MemoryWithGcCachePlugin oldCacheのetag不一致時にnull | E-04 L117 | ○ |
| C-32 (UT-CAC-032) | MemoryWithGcCachePlugin oldCacheのnullエントリ復元 | E-04 L112-116 | ○ |
| C-33 (UT-CAC-033) | MemoryWithGcCachePlugin キャッシュミスのgotHandler | E-04 L122-129 | ○ |
| C-34 (UT-CAC-034) | MemoryWithGcCachePlugin afterDoneで世代管理 | E-04 L43-93 | ○ |
| C-35 (UT-CAC-035) | MemoryWithGcCachePlugin afterDoneで期限切れ削除 | E-04 L50-59 | ○ |
| C-36 (UT-CAC-036) | MemoryWithGcCachePlugin shutdownでclear | E-04 L132-138 | ○ |
| C-37 (UT-CAC-037) | maxGenerations=1でのGC動作 | E-04 L43-93 | ○ |
| C-38 (UT-CAC-038) | IdleFileCachePlugin constructorのプロパティ設定 | E-05 L24-34 | ○ |
| C-39 (UT-CAC-039) | IdleFileCachePlugin storeでpendingTask登録 | E-05 L58-65 | ○ |
| C-40 (UT-CAC-040) | IdleFileCachePlugin getでstrategy.restore | E-05 L67-91 | ○ |
| C-41 (UT-CAC-041) | IdleFileCachePlugin getでキャッシュミス時のgotHandler | E-05 L72-81 | ○ |
| C-42 (UT-CAC-042) | IdleFileCachePlugin getでpendingTask先行実行 | E-05 L85-89 | ○ |
| C-43 (UT-CAC-043) | IdleFileCachePlugin storeBuildDependenciesフック | E-05 L94-103 | ○ |
| C-44 (UT-CAC-044) | IdleFileCachePlugin beginIdleでinitialStoreタイムアウト | E-05 L181-219 | ○ |
| C-45 (UT-CAC-045) | IdleFileCachePlugin beginIdleで大規模変更タイムアウト | E-05 L184, L193-206 | ○ |
| C-46 (UT-CAC-046) | IdleFileCachePlugin endIdleでタイマークリア | E-05 L222-231 | ○ |
| C-47 (UT-CAC-047) | IdleFileCachePlugin shutdownで全タスク実行 | E-05 L105-131 | ○ |
| C-48 (UT-CAC-048) | IdleFileCachePlugin doneフックでtimeSpendInBuild更新 | E-05 L232-238 | ○ |
| C-49 (UT-CAC-049) | IdleFileCachePlugin constructorでMath.min処理 | E-05 L44-47 | ○ |
| C-50 (UT-CAC-050) | AddBuildDependenciesPlugin constructorでSet変換 | E-06 L16-17 | ○ |
| C-51 (UT-CAC-051) | AddBuildDependenciesPlugin applyでbuildDependencies追加 | E-06 L25-29 | ○ |
| C-52 (UT-CAC-052) | AddBuildDependenciesPlugin 空配列の処理 | E-06 L26-28 | ○ |
| C-53 (UT-CAC-053) | AddManagedPathsPlugin constructorでSet変換 | E-07 L16-19 | ○ |
| C-54 (UT-CAC-054) | AddManagedPathsPlugin applyでmanagedPaths追加 | E-07 L28-30 | ○ |
| C-55 (UT-CAC-055) | AddManagedPathsPlugin applyでimmutablePaths追加 | E-07 L31-33 | ○ |
| C-56 (UT-CAC-056) | AddManagedPathsPlugin applyでunmanagedPaths追加 | E-07 L34-36 | ○ |
| C-57 (UT-CAC-057) | AddManagedPathsPlugin RegExpパスの処理 | E-07 L13 | ○ |
| C-58 (UT-CAC-058) | AddManagedPathsPlugin 空配列の処理 | E-07 L28-36 | ○ |
| C-59 (UT-CAC-059) | CacheEntry constructorの初期化 | E-08 L36-39 | ○ |
| C-60 (UT-CAC-060) | CacheEntry serializeの書き出し | E-08 L44-47 | ○ |
| C-61 (UT-CAC-061) | CacheEntry deserializeの読み込み | E-08 L52-55 | ○ |
| C-62 (UT-CAC-062) | addAllToSetでLazySetへの追加 | E-08 L66-68 | ○ |
| C-63 (UT-CAC-063) | addAllToSetで通常Setへの追加 | E-08 L69-73 | ○ |
| C-64 (UT-CAC-064) | objectToStringの基本文字列化 | E-08 L82-93 | ○ |
| C-65 (UT-CAC-065) | objectToStringのcontext除外 | E-08 L85 | ○ |
| C-66 (UT-CAC-066) | objectToStringのネストされたオブジェクト | E-08 L88-89 | ○ |
| C-67 (UT-CAC-067) | objectToStringの空オブジェクト | E-08 L84 | ○ |
| C-68 (UT-CAC-068) | objectToStringのnull値 | E-08 L88 | ○ |
| C-69 (UT-CAC-069) | ResolverCachePlugin applyでインターセプト設定 | E-08 L253-446 | ○ |
| C-70 (UT-CAC-070) | キャッシュヒット時の結果返却 | E-08 L385-421 | ○ |
| C-71 (UT-CAC-071) | キャッシュミス時のdoRealResolve呼び出し | E-08 L422-431 | ○ |
| C-72 (UT-CAC-072) | キャッシュ無効時のdoRealResolve呼び出し | E-08 L388-396 | ○ |
| C-73 (UT-CAC-073) | 同時リクエストの重複排除 | E-08 L293-309 | ○ |
| C-74 (UT-CAC-074) | yield付き同時リクエストの処理 | E-08 L293-302, L319-362 | ○ |
| C-75 (UT-CAC-075) | _ResolverCachePluginCacheMissフラグのスキップ | E-08 L281-287 | ○ |
| C-76 (UT-CAC-076) | cache!==trueのスキップ | E-08 L265-269 | ○ |
| C-77 (UT-CAC-077) | finishModulesフックでの統計ログ | E-08 L118-131 | ○ |
| C-78 (UT-CAC-078) | doRealResolve中のresolverエラー伝播 | E-08 L198 | ○ |
| C-79 (UT-CAC-079) | スナップショット作成中のエラー伝播 | E-08 L211-212 | ○ |
| C-80 (UT-CAC-080) | 依存関係のresolveContextへの伝播 | E-08 L195-197 | ○ |
| C-81 (UT-CAC-081) | PackItemInfo constructorの初期化 | E-09 L113-125 | ○ |
| C-82 (UT-CAC-082) | Pack constructorの初期化 | E-09 L132-149 | ○ |
| C-83 (UT-CAC-083) | Pack.getでfreshValue取得 | E-09 L177-188 | ○ |
| C-84 (UT-CAC-084) | Pack.getでPackContent取得 | E-09 L189-193 | ○ |
| C-85 (UT-CAC-085) | Pack.getでetag不一致時にnull | E-09 L183 | ○ |
| C-86 (UT-CAC-086) | Pack.getで存在しないidentifierのundefined | E-09 L180-181 | ○ |
| C-87 (UT-CAC-087) | Pack.getでcontent[loc]がundefined | E-09 L189-191 | ○ |
| C-88 (UT-CAC-088) | Pack.setで新規identifier設定 | E-09 L207-212 | ○ |
| C-89 (UT-CAC-089) | Pack.setで既存identifierのfreshValue上書き | E-09 L224-228 | ○ |
| C-90 (UT-CAC-090) | Pack.setでPackContentからの移動 | E-09 L213-223 | ○ |
| C-91 (UT-CAC-091) | Pack.setでinvalidフラグ設定 | E-09 L202-205 | ○ |
| C-92 (UT-CAC-092) | Pack.setで空PackContentの削除 | E-09 L219-221 | ○ |
| C-93 (UT-CAC-093) | Pack.getContentStatsのカウントとサイズ | E-09 L231-244 | ○ |
| C-94 (UT-CAC-094) | Pack.getContentStatsで空content | E-09 L231-244 | ○ |
| C-95 (UT-CAC-095) | Pack._findLocationで空きスロット検索 | E-09 L249-254 | ○ |
| C-96 (UT-CAC-096) | Pack._findLocationで全スロット使用時 | E-09 L252 | ○ |
| C-97 (UT-CAC-097) | Pack._gcAndUpdateLocationでmaxAge超過削除 | E-09 L262-288 | ○ |
| C-98 (UT-CAC-098) | Pack._gcAndUpdateLocationでlocation更新 | E-09 L276 | ○ |
| C-99 (UT-CAC-099) | Pack._persistFreshContentのPackContent変換 | E-09 L290-357 | ○ |
| C-100 (UT-CAC-100) | Pack._persistFreshContentで空freshContent | E-09 L293 | ○ |
| C-101 (UT-CAC-101) | Pack._optimizeSmallContentのマージ | E-09 L362-466 | ○ |
| C-102 (UT-CAC-102) | Pack._optimizeSmallContentの閾値未満スキップ | E-09 L392-404 | ○ |
| C-103 (UT-CAC-103) | Pack._optimizeUnusedContentの分離 | E-09 L472-560 | ○ |
| C-104 (UT-CAC-104) | Pack._gcOldestContentの古いアイテムGC | E-09 L566-604 | ○ |
| C-105 (UT-CAC-105) | Pack._gcOldestContentのGC不要時スキップ | E-09 L574-577 | ○ |
| C-106 (UT-CAC-106) | Pack.stopCapturingRequestsのタイムアウトクリア | E-09 L165-170 | ○ |
| C-107 (UT-CAC-107) | Pack.stopCapturingRequestsの未設定時 | E-09 L166 | ○ |
| C-108 (UT-CAC-108) | Pack.serializeの全情報書き出し | E-09 L609-637 | ○ |
| C-109 (UT-CAC-109) | Pack.deserializeのデータ復元 | E-09 L642-688 | ○ |
| C-110 (UT-CAC-110) | PackContainer constructorの全プロパティ設定 | E-09 L47-67 | ○ |
| C-111 (UT-CAC-111) | PackContainer serializeの書き出し | E-09 L72-80 | ○ |
| C-112 (UT-CAC-112) | PackContainer deserializeの復元 | E-09 L85-93 | ○ |
| C-113 (UT-CAC-113) | PackContentItems constructorのmap設定 | E-09 L699-701 | ○ |
| C-114 (UT-CAC-114) | PackContentItems serializeの一括シリアライズ | E-09 L752-757 | ○ |
| C-115 (UT-CAC-115) | PackContentItems serializeのフォールバック | E-09 L758-777 | ○ |
| C-116 (UT-CAC-116) | PackContentItems serializeのプロファイル | E-09 L707-749 | ○ |
| C-117 (UT-CAC-117) | PackContentItems serializeのNOT_SERIALIZABLEスキップ | E-09 L732, L768 | ○ |
| C-118 (UT-CAC-118) | PackContentItems deserializeの一括復元 | E-09 L784-785 | ○ |
| C-119 (UT-CAC-119) | PackContentItems deserializeの個別復元 | E-09 L812-821 | ○ |
| C-120 (UT-CAC-120) | PackContentItems deserializeのプロファイル | E-09 L786-811 | ○ |
| C-121 (UT-CAC-121) | PackContent constructorのlazy初期化 | E-09 L860-875 | ○ |
| C-122 (UT-CAC-122) | PackContent constructorの直接初期化 | E-09 L864-866 | ○ |
| C-123 (UT-CAC-123) | PackContent.getでcontentから取得 | E-09 L881-884 | ○ |
| C-124 (UT-CAC-124) | PackContent.getでlazy実行による取得 | E-09 L905-927 | ○ |
| C-125 (UT-CAC-125) | PackContent.getで非同期lazy取得 | E-09 L906-917 | ○ |
| C-126 (UT-CAC-126) | PackContent.unpackで既にunpack済み | E-09 L934 | ○ |
| C-127 (UT-CAC-127) | PackContent.unpackでlazyのunpack | E-09 L938-970 | ○ |
| C-128 (UT-CAC-128) | PackContent.unpackで非同期unpack | E-09 L958-964 | ○ |
| C-129 (UT-CAC-129) | PackContent.getSizeでサイズ取得 | E-09 L976-985 | ○ |
| C-130 (UT-CAC-130) | PackContent.getSizeでlazyなし時-1 | E-09 L977 | ○ |
| C-131 (UT-CAC-131) | PackContent.getSizeでoptionsなし時-1 | E-09 L981 | ○ |
| C-132 (UT-CAC-132) | PackContent.getSizeで不正size型時-1 | E-09 L983 | ○ |
| C-133 (UT-CAC-133) | PackContent.deleteでアイテム削除 | E-09 L990-994 | ○ |
| C-134 (UT-CAC-134) | PackContent.writeLazyのB1/C1状態 | E-09 L1000-1006 | ○ |
| C-135 (UT-CAC-135) | PackContent.writeLazyのA1状態 | E-09 L1007-1014 | ○ |
| C-136 (UT-CAC-136) | PackContent.writeLazyのA2/C2状態 | E-09 L1016-1029 | ○ |
| C-137 (UT-CAC-137) | PackContent.writeLazyのB2状態 | E-09 L1031-1085 | ○ |
| C-138 (UT-CAC-138) | PackFileCacheStrategy constructorの初期化 | E-09 L1116-1186 | ○ |
| C-139 (UT-CAC-139) | compression='brotli'で拡張子.pack.br | E-09 L1165-1166 | ○ |
| C-140 (UT-CAC-140) | compression='gzip'で拡張子.pack.gz | E-09 L1167-1168 | ○ |
| C-141 (UT-CAC-141) | compression=falseで拡張子.pack | E-09 L1169 | ○ |
| C-142 (UT-CAC-142) | PackFileCacheStrategy.storeの基本動作 | E-09 L1370-1376 | ○ |
| C-143 (UT-CAC-143) | PackFileCacheStrategy.storeでnull etag | E-09 L1374 | ○ |
| C-144 (UT-CAC-144) | PackFileCacheStrategy.storeでreadonly時スキップ | E-09 L1371 | ○ |
| C-145 (UT-CAC-145) | PackFileCacheStrategy.restoreの基本動作 | E-09 L1383-1396 | ○ |
| C-146 (UT-CAC-146) | PackFileCacheStrategy.restoreでnull etag | E-09 L1386 | ○ |
| C-147 (UT-CAC-147) | PackFileCacheStrategy.restoreのエラー回復 | E-09 L1388-1395 | ○ |
| C-148 (UT-CAC-148) | PackFileCacheStrategy.storeBuildDependencies | E-09 L1401-1403 | ○ |
| C-149 (UT-CAC-149) | PackFileCacheStrategy.storeBuildDependencies readonly | E-09 L1402 | ○ |
| C-150 (UT-CAC-150) | PackFileCacheStrategy.afterAllStored packPromise undefined | E-09 L1407-1408 | ○ |
| C-151 (UT-CAC-151) | PackFileCacheStrategy.afterAllStoredでシリアライズ実行 | E-09 L1410-1587 | ○ |
| C-152 (UT-CAC-152) | PackFileCacheStrategy.afterAllStoredでinvalid=falseスキップ | E-09 L1413 | ○ |
| C-153 (UT-CAC-153) | afterAllStoredのシリアライズエラー処理 | E-09 L1576-1580 | ○ |
| C-154 (UT-CAC-154) | PackFileCacheStrategy.clearの完全クリア | E-09 L1589-1597 | ○ |
| C-155 (UT-CAC-155) | _openPackの正常復元 | E-09 L1201-1362 | ○ |
| C-156 (UT-CAC-156) | _openPackでENOENT時の新Pack作成 | E-09 L1224-1235 | ○ |
| C-157 (UT-CAC-157) | _openPackでバージョン不一致時の処理 | E-09 L1247-1252 | ○ |
| C-158 (UT-CAC-158) | _openPackのデシリアライズエラー回復 | E-09 L1225-1229, L1355-1361 | ○ |
| C-159 (UT-CAC-159) | _getPackの既存Promise返却 | E-09 L1192-1193 | ○ |
| C-160 (UT-CAC-160) | _getPackのstorePromise経由の_openPack | E-09 L1193 | ○ |
| C-161 (UT-CAC-161) | allowCollectingMemoryの大wasteバッファ | E-09 L1092-1098 | ○ |
| C-162 (UT-CAC-162) | allowCollectingMemoryの小wasteバッファ | E-09 L1092-1098 | ○ |
| C-44 (UT-CAC-044) | processIdleTasks内部のアイドル処理フロー詳細 | E-05 L137-178 | △ |
| C-45 (UT-CAC-045) | 大規模変更の判定ロジック詳細（avgTimeSpendInStoreの計算） | E-05 L164-168 | △ |
| C-73 (UT-CAC-073) | activeRequestsの同時リクエスト管理の完全なフロー | E-08 L257-259, L303-308 | △ |
| C-74 (UT-CAC-074) | yield付きactiveRequestsWithYieldの完全なフロー | E-08 L258-259, L293-302 | △ |
| C-101 (UT-CAC-101) | _optimizeSmallContentの未使用コンテンツマージ条件分岐 | E-09 L397-401 | △ |
| C-103 (UT-CAC-103) | _optimizeUnusedContentのGC後のアイテム残存判定 | E-09 L488-490 | △ |
| C-155 (UT-CAC-155) | _openPackのビルド依存スナップショット検証チェーン | E-09 L1254-1338 | △ |

## 4) 不足情報（Unknown / Missing）
- IdleFileCachePlugin.processIdleTasksは内部クロージャとして定義されており、直接のテスト方法がソースから明確に判断できない。タイマーベースの非同期動作のため、テスト実行時のモック設計が必要。
  - 候補：Jest fake timers / sinon fake timers / manual timer mock
- ResolverCachePluginの同時リクエスト処理（activeRequests / activeRequestsWithYield）は、複数の非同期コールバックが絡む複雑なフローであり、テスト条件の完全な網羅にはインテグレーションテスト的なアプローチも検討が必要。
  - 候補：統合テスト / 複数resolver mockの並列実行テスト
- PackFileCacheStrategy._openPack内のPromiseチェーンはビルドスナップショットとリゾルバスナップショットの両方を並行検証するため、テスト条件の組み合わせが多い。
  - 候補：各検証パターンの個別テスト / マトリクステスト

## 5) リスクフラグ（レビュー観点）
- 0: mergeEtags.js, getLazyHashedEtag.js - 純粋関数に近く、テスト設計に明確な根拠あり
- 0: MemoryCachePlugin.js, AddBuildDependenciesPlugin.js, AddManagedPathsPlugin.js - シンプルなプラグインでテスト設計は直接的
- 1: MemoryWithGcCachePlugin.js - GCの世代管理ロジックに時間依存の要素があり、テスト設計にはDate.nowのモックが必要
- 1: IdleFileCachePlugin.js - タイマーベースの非同期処理があり、テスト実行環境への依存がある
- 1: PackFileCacheStrategy.js - 複雑なシリアライズ/デシリアライズ、ファイルシステム操作があり、モック設計が重要
- 1: ResolverCachePlugin.js - スナップショット検証や同時リクエスト管理の非同期フローが複雑
- 2: PackFileCacheStrategy._openPackのスナップショット検証チェーン - 複数のPromise入れ子構造で、全分岐の網羅確認が困難

## 6) レビュアーチェックリスト（最小）
- [ ] mergeEtags.jsのWeakMapキャッシュの検証テストが、ガベージコレクション後の動作まで考慮しているか確認
- [ ] MemoryWithGcCachePluginのafterDoneフックの世代管理テストが、cachePositionのローテーション動作を十分にカバーしているか確認
- [ ] IdleFileCachePluginのprocessIdleTasksのエラーハンドリング（catch節のlogger.warn）がテストされているか確認
- [ ] ResolverCachePluginの同時リクエスト重複排除テストが、実際の非同期タイミングを再現できているか確認
- [ ] PackFileCacheStrategy._openPack内のbuildSnapshot/resolveSnapshotの両方valid/片方invalid/両方invalidの全組み合わせがカバーされているか確認
- [ ] PackContentの6つの状態（A1,A2,B1,B2,C1,C2）に対するwriteLazyの動作が全て網羅されているか確認
- [ ] PackContentItems.serializeのNOT_SERIALIZABLEスキップとModuleBuildError含有時のログレベル差異が正しくテストされているか確認
