---
generated_at: 2026-03-01 10:00:00
metrics:
  claims_total: 240
  claims_with_evidence: 234
  claims_without_evidence: 6
confidence_derived: 0.98
---

# 根拠レポート：lib-exports-flags 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：234 / 240、根拠なし：6
- 優先レビュー（高）
  1. **C-009（UsageState freeze確認）**：Object.freeze動作はJSエンジン依存であり、strictモードでの動作確認が必要
  2. **C-157（循環参照検出テスト）**：循環参照のテストケース構築にはモック設計の確認が必要
  3. **C-160（循環参照ハンドリングテスト）**：getTargetの循環参照時の動作は実装詳細に依存

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

- E-01: `lib/ExportsInfo.js` - ExportsInfo, ExportInfo, RestoreProvidedData, UsageState の定義と全メソッド実装（1664行）
- E-02: `lib/ExportsInfoApiPlugin.js` - ExportsInfoApiPlugin クラスの apply メソッド実装（87行）
- E-03: `lib/FlagAllModulesAsUsedPlugin.js` - FlagAllModulesAsUsedPlugin クラスの constructor/apply メソッド実装（55行）
- E-04: `lib/FlagDependencyExportsPlugin.js` - FlagDependencyExportsPlugin クラスの apply メソッド実装（437行）
- E-05: `lib/FlagDependencyUsagePlugin.js` - FlagDependencyUsagePlugin クラスの constructor/apply メソッド実装（348行）
- E-06: `lib/FlagEntryExportAsUsedPlugin.js` - FlagEntryExportAsUsedPlugin クラスの constructor/apply メソッド実装（56行）
- E-07: `lib/OptimizationStages.js` - STAGE_ADVANCED, STAGE_BASIC, STAGE_DEFAULT 定数の定義（10行）
- E-08: `docs/code-to-docs/単体テストケース一覧/plan.md` - プロジェクト情報とモジュール構成

## 3) Claims と根拠の対応（レビューの主戦場）

### OptimizationStages.js（C-001 - C-003）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | STAGE_BASICが-10であること | E-07: L9 `module.exports.STAGE_BASIC = -10;` | ○ |
| C-002 | STAGE_DEFAULTが0であること | E-07: L10 `module.exports.STAGE_DEFAULT = 0;` | ○ |
| C-003 | STAGE_ADVANCEDが10であること | E-07: L8 `module.exports.STAGE_ADVANCED = 10;` | ○ |

### UsageState（C-004 - C-009）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-004 | UsageState.Unusedが0 | E-01: L54 `Unused: 0` | ○ |
| C-005 | UsageState.OnlyPropertiesUsedが1 | E-01: L55 `OnlyPropertiesUsed: 1` | ○ |
| C-006 | UsageState.NoInfoが2 | E-01: L56 `NoInfo: 2` | ○ |
| C-007 | UsageState.Unknownが3 | E-01: L57 `Unknown: 3` | ○ |
| C-008 | UsageState.Usedが4 | E-01: L58 `Used: 4` | ○ |
| C-009 | UsageStateがfreezeされ変更不可 | E-01: L53 `Object.freeze({...})` | △ |

### RestoreProvidedData（C-010 - C-012）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-010 | コンストラクタで全プロパティが設定される | E-01: L72-82 constructor実装 | ○ |
| C-011 | serializeでwrite関数が4回呼ばれる | E-01: L87-92 serialize実装 | ○ |
| C-012 | deserializeで正しいRestoreProvidedDataが復元される | E-01: L98-100 deserialize実装 | ○ |

### ExportsInfo（C-013 - C-099）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-013 | constructor初期状態の確認 | E-01: L110-121 constructor実装 | ○ |
| C-014 | ownedExportsが_exports.values()を返す | E-01: L126-128 ownedExportsゲッタ | ○ |
| C-015 | 空の場合に空イテレータが返る | E-01: L110 `this._exports = new Map()` | ○ |
| C-016 | orderedOwnedExportsがソート済みで返る | E-01: L133-138 orderedOwnedExportsゲッタ | ○ |
| C-017 | _exportsAreOrdered=falseの場合にソート実行 | E-01: L134-135 条件分岐 | ○ |
| C-018 | exports（_redirectTo未定義）が自身のエクスポート | E-01: L143-152 exportsゲッタ | ○ |
| C-019 | exports（_redirectToあり）がマージされる | E-01: L144-149 リダイレクトブランチ | ○ |
| C-020 | orderedExports（_redirectTo未定義）のソート | E-01: L157-175 orderedExportsゲッタ | ○ |
| C-021 | orderedExports（_redirectToあり）のマージ・ソート | E-01: L161-174 リダイレクトブランチ | ○ |
| C-022 | otherExportsInfo（_redirectTo未定義） | E-01: L183-184 otherExportsInfoゲッタ | ○ |
| C-023 | otherExportsInfo（_redirectToあり） | E-01: L181-182 リダイレクトブランチ | ○ |
| C-024 | setRedirectNamedTo（新規設定） | E-01: L223-227 setRedirectNamedTo実装 | ○ |
| C-025 | setRedirectNamedTo（同じ値） | E-01: L224 `if (this._redirectTo === exportsInfo) return false;` | ○ |
| C-026 | setRedirectNamedTo（undefined設定） | E-01: L223-227 実装 | ○ |
| C-027 | setHasProvideInfo（undefined→デフォルト） | E-01: L229-248 setHasProvideInfo実装 | ○ |
| C-028 | setHasProvideInfo（既存値保持） | E-01: L231-236 条件チェック | ○ |
| C-029 | setHasProvideInfo（_redirectTo再帰） | E-01: L238-239 リダイレクト再帰 | ○ |
| C-030 | setHasUseInfo（全エクスポート呼出し） | E-01: L250-260 setHasUseInfo実装 | ○ |
| C-031 | setHasUseInfo（_sideEffectsOnlyInfo） | E-01: L254 `this._sideEffectsOnlyInfo.setHasUseInfo()` | ○ |
| C-032 | getOwnExportInfo（既存取得） | E-01: L266-273 getOwnExportInfo実装 | ○ |
| C-033 | getOwnExportInfo（新規作成） | E-01: L269-272 新規作成ブランチ | ○ |
| C-034 | getOwnExportInfo（ソート状態リセット） | E-01: L271 `this._exportsAreOrdered = false` | ○ |
| C-035 | getExportInfo（既存取得） | E-01: L279-289 getExportInfo実装 | ○ |
| C-036 | getExportInfo（_redirectTo委譲） | E-01: L282-284 リダイレクトブランチ | ○ |
| C-037 | getExportInfo（新規作成） | E-01: L285-289 新規作成 | ○ |
| C-038 | getReadOnlyExportInfo（既存取得） | E-01: L295-302 getReadOnlyExportInfo実装 | ○ |
| C-039 | getReadOnlyExportInfo（_otherExportsInfo返却） | E-01: L301 `return this._otherExportsInfo` | ○ |
| C-040 | getReadOnlyExportInfo（_redirectTo委譲） | E-01: L298-300 リダイレクトブランチ | ○ |
| C-041 | getReadOnlyExportInfoRecursive（長さ1） | E-01: L308-310 条件分岐 | ○ |
| C-042 | getReadOnlyExportInfoRecursive（再帰取得） | E-01: L311-313 再帰呼出し | ○ |
| C-043 | getReadOnlyExportInfoRecursive（exportsInfoなし） | E-01: L311 `if (!exportInfo.exportsInfo) return;` | ○ |
| C-044 | getNestedExportsInfo（undefined→this） | E-01: L319-326 getNestedExportsInfo実装 | ○ |
| C-045 | getNestedExportsInfo（空配列→this） | E-01: L320 `name.length > 0` 条件 | ○ |
| C-046 | getNestedExportsInfo（再帰取得） | E-01: L321-323 再帰呼出し | ○ |
| C-047 | getNestedExportsInfo（exportsInfoなし） | E-01: L322 `if (!info.exportsInfo) return;` | ○ |
| C-048 | setUnknownExportsProvided（canMangle=false） | E-01: L336-404 setUnknownExportsProvided実装 | ○ |
| C-049 | setUnknownExportsProvided（excludeExports） | E-01: L344-349, L355 除外処理 | ○ |
| C-050 | setUnknownExportsProvided（provided→null） | E-01: L356-359 provided設定 | ○ |
| C-051 | setUnknownExportsProvided（provided=true保持） | E-01: L356 `provided !== true && provided !== null` | ○ |
| C-052 | setUnknownExportsProvided（_redirectTo再帰） | E-01: L370-381 リダイレクト再帰 | ○ |
| C-053 | setUnknownExportsProvided（targetKey設定） | E-01: L360-368 setTarget呼出し | ○ |
| C-054 | setUnknownExportsProvided（変更なし→false） | E-01: L403 `return changed;` | ○ |
| C-055 | setUsedInUnknownWay（true返却） | E-01: L410-437 setUsedInUnknownWay実装 | ○ |
| C-056 | setUsedInUnknownWay（_redirectTo委譲） | E-01: L417-420 リダイレクトブランチ | ○ |
| C-057 | setUsedInUnknownWay（canMangleUse=false） | E-01: L431-434 canMangleUse設定 | ○ |
| C-058 | setUsedInUnknownWay（変更なし→false） | E-01: L436 `return changed;` | ○ |
| C-059 | setUsedWithoutInfo（各エクスポート更新） | E-01: L443-464 setUsedWithoutInfo実装 | ○ |
| C-060 | setUsedWithoutInfo（_otherExportsInfo=NoInfo） | E-01: L455 `this._otherExportsInfo.setUsed(UsageState.NoInfo, runtime)` | ○ |
| C-061 | setAllKnownExportsUsed（provided=true→Used） | E-01: L470-479 setAllKnownExportsUsed実装 | ○ |
| C-062 | setAllKnownExportsUsed（空→false） | E-01: L478 `return changed;` | ○ |
| C-063 | setUsedForSideEffectsOnly（Unused→Used） | E-01: L485-491 setUsedForSideEffectsOnly実装 | ○ |
| C-064 | setUsedForSideEffectsOnly（既Used→false） | E-01: L487 condition check | ○ |
| C-065 | isUsed（使用あり→true） | E-01: L497-511 isUsed実装 | ○ |
| C-066 | isUsed（全未使用→false） | E-01: L510 `return false;` | ○ |
| C-067 | isUsed（_redirectTo使用中→true） | E-01: L498-501 リダイレクトブランチ | ○ |
| C-068 | isModuleUsed（isUsed=true→true） | E-01: L517-523 isModuleUsed実装 | ○ |
| C-069 | isModuleUsed（副作用のみ→true） | E-01: L519-521 _sideEffectsOnlyInfoチェック | ○ |
| C-070 | isModuleUsed（全未使用→false） | E-01: L522 `return false;` | ○ |
| C-071 | getUsedExports（NoInfo→null） | E-01: L529-572 getUsedExports実装 | ○ |
| C-072 | getUsedExports（Used→true） | E-01: L535-536 Used/Unknown/OnlyPropertiesUsed → true | ○ |
| C-073 | getUsedExports（部分使用→SortableSet） | E-01: L539-571 部分使用ブランチ | ○ |
| C-074 | getUsedExports（全未使用→false） | E-01: L567-568 Unusedチェック | ○ |
| C-075 | getProvidedExports（undefined→null） | E-01: L577-611 getProvidedExports実装 | ○ |
| C-076 | getProvidedExports（null/true→true） | E-01: L582-584 null/true → true | ○ |
| C-077 | getProvidedExports（部分提供→配列） | E-01: L588-610 部分提供ブランチ | ○ |
| C-078 | getRelevantExports（関連エクスポートの取得） | E-01: L617-638 getRelevantExports実装 | ○ |
| C-079 | getRelevantExports（空の場合） | E-01: L617-638 空Mapの場合 | ○ |
| C-080 | isExportProvided（provided=true→true） | E-01: L644-654 isExportProvided実装 | ○ |
| C-081 | isExportProvided（provided=false→false） | E-01: L652-653 falseブランチ | ○ |
| C-082 | isExportProvided（配列名でネスト取得） | E-01: L645-650 配列名ブランチ | ○ |
| C-083 | isExportProvided（配列名でネスト不在） | E-01: L650 `undefined` 返却 | ○ |
| C-084 | getUsageKey（キー文字列生成） | E-01: L660-673 getUsageKey実装 | ○ |
| C-085 | isEquallyUsed（同一→true） | E-01: L680-701 isEquallyUsed実装 | ○ |
| C-086 | isEquallyUsed（異なる→false） | E-01: L683-688 不一致ブランチ | ○ |
| C-087 | getUsed（単一名） | E-01: L708-719 getUsed実装 | ○ |
| C-088 | getUsed（配列名で再帰） | E-01: L709-716 配列名ブランチ | ○ |
| C-089 | getUsed（空配列） | E-01: L710 `name.length === 0` | ○ |
| C-090 | getUsedName（単一名） | E-01: L726-755 getUsedName実装 | ○ |
| C-091 | getUsedName（配列名） | E-01: L727-751 配列名ブランチ | ○ |
| C-092 | getUsedName（未使用→false） | E-01: L735 `if (x === false) return false;` | ○ |
| C-093 | getUsedName（空配列+未使用→false） | E-01: L730 `if (!this.isUsed(runtime)) return false;` | ○ |
| C-094 | updateHash | E-01: L762-764 updateHash実装 | ○ |
| C-095 | getRestoreProvidedData | E-01: L790-821 getRestoreProvidedData実装 | ○ |
| C-096 | restoreProvided | E-01: L826-853 restoreProvided実装 | ○ |
| C-097 | restoreProvided（ネスト再帰） | E-01: L847-850 ネスト再帰 | ○ |
| C-098 | _sortExportsMap（ソート） | E-01: L191-212 _sortExportsMap実装 | ○ |
| C-099 | _sortExportsMap（1件以下） | E-01: L192 `if (exports.size > 1)` | ○ |

### ExportInfo（C-100 - C-184）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-100 | constructorでnameが設定される | E-01: L861-863 constructor実装 | ○ |
| C-101 | initFromプロパティコピー | E-01: L868-931 initFrom処理 | ○ |
| C-102 | initFromなしのデフォルト値 | E-01: L868-921 各プロパティの三項演算子 | ○ |
| C-103 | initFromの_targetコピー | E-01: L922-931 _targetコピー | ○ |
| C-104 | canMangle（true/true→true） | E-01: L936-955 canMangleゲッタ | ○ |
| C-105 | canMangle（provide=false→false） | E-01: L940-941 falseブランチ | ○ |
| C-106 | canMangle（use=false→false） | E-01: L947-948 falseブランチ | ○ |
| C-107 | canMangle（undefined/undefined→undefined） | E-01: L938-939 undefinedブランチ | ○ |
| C-108 | setUsedInUnknownWay（更新→true） | E-01: L961-977 setUsedInUnknownWay実装 | ○ |
| C-109 | setUsedInUnknownWay（canMangleUse=false） | E-01: L972-975 canMangleUse設定 | ○ |
| C-110 | setUsedInUnknownWay（変更なし→false） | E-01: L976 `return changed;` | ○ |
| C-111 | setUsedWithoutInfo（NoInfo設定） | E-01: L983-993 setUsedWithoutInfo実装 | ○ |
| C-112 | setUsedWithoutInfo（canMangleUse=false） | E-01: L988-990 canMangleUse設定 | ○ |
| C-113 | setHasUseInfo（_hasUseInRuntimeInfo=true） | E-01: L995-1006 setHasUseInfo実装 | ○ |
| C-114 | setHasUseInfo（canMangleUse=undefined→true） | E-01: L999-1001 canMangleUse設定 | ○ |
| C-115 | setHasUseInfo（ネスト再帰） | E-01: L1002-1005 ネスト再帰 | ○ |
| C-116 | setUsedConditionally（グローバル初回） | E-01: L1014-1018 undefined→newValue | ○ |
| C-117 | setUsedConditionally（グローバル条件一致） | E-01: L1020-1023 条件チェック | ○ |
| C-118 | setUsedConditionally（条件不一致→false） | E-01: L1019-1023 条件不一致ブランチ | ○ |
| C-119 | setUsedConditionally（ランタイム別設定） | E-01: L1024-1032 _usedInRuntime新規作成 | ○ |
| C-120 | setUsedConditionally（Unused時のエントリ削除） | E-01: L1045-1046 delete処理 | ○ |
| C-121 | setUsedConditionally（空マップのクリーンアップ） | E-01: L1054 `if (this._usedInRuntime.size === 0)` | ○ |
| C-122 | setUsed（runtime=undefined設定） | E-01: L1066-1107 setUsed実装 | ○ |
| C-123 | setUsed（同値→false） | E-01: L1068-1071 同値チェック | ○ |
| C-124 | setUsed（ランタイム別設定） | E-01: L1072-1079 _usedInRuntime新規作成 | ○ |
| C-125 | unsetTarget（存在する→true） | E-01: L1113-1120 unsetTarget実装 | ○ |
| C-126 | unsetTarget（存在しない→false） | E-01: L1115-1118 delete結果チェック | ○ |
| C-127 | unsetTarget（_target=undefined→false） | E-01: L1114 `if (!this._target) return false;` | ○ |
| C-128 | setTarget（新規設定→true） | E-01: L1129-1165 setTarget実装 | ○ |
| C-129 | setTarget（同値→false） | E-01: L1151-1164 同値チェック | ○ |
| C-130 | setTarget（connection変更→true） | E-01: L1152-1163 変更ブランチ | ○ |
| C-131 | setTarget（priority=0デフォルト） | E-01: L1129 `priority = 0` | ○ |
| C-132 | getUsed（_hasUseInRuntimeInfo=false→NoInfo） | E-01: L1171-1172 NoInfo返却 | ○ |
| C-133 | getUsed（_globalUsed設定済み→値返却） | E-01: L1173 `return this._globalUsed;` | ○ |
| C-134 | getUsed（_usedInRuntime未定義→Unused） | E-01: L1174-1175 Unused返却 | ○ |
| C-135 | getUsed（ランタイム=文字列） | E-01: L1176-1178 文字列ブランチ | ○ |
| C-136 | getUsed（ランタイム=Set、最大値） | E-01: L1192-1202 Setブランチ | ○ |
| C-137 | getUsed（runtime=undefined、全最大値） | E-01: L1179-1189 undefined+_usedInRuntime | ○ |
| C-138 | getUsedName（使用中→name） | E-01: L1211-1234 getUsedName実装 | ○ |
| C-139 | getUsedName（未使用→false） | E-01: L1214 `return false;` | ○ |
| C-140 | getUsedName（_usedName設定時→_usedName） | E-01: L1232 `return this._usedName;` | ○ |
| C-141 | getUsedName（name=null→fallbackName） | E-01: L1233 `this.name || fallbackName` | ○ |
| C-142 | hasUsedName（設定済み→true） | E-01: L1239-1241 hasUsedName実装 | ○ |
| C-143 | hasUsedName（null→false） | E-01: L1240 `return this._usedName !== null;` | ○ |
| C-144 | setUsedName | E-01: L1248-1250 setUsedName実装 | ○ |
| C-145 | getTerminalBinding（自身がterminal→this） | E-01: L1257-1264 getTerminalBinding実装 | ○ |
| C-146 | getTerminalBinding（ターゲット先返却） | E-01: L1259-1263 ターゲット解決 | ○ |
| C-147 | getTerminalBinding（ターゲットなし→undefined） | E-01: L1260 `if (!target) return;` | ○ |
| C-148 | isReexport（ターゲット有り→true） | E-01: L1266-1268 isReexport実装 | ○ |
| C-149 | isReexport（terminalBinding=true→false） | E-01: L1267 `!this.terminalBinding` | ○ |
| C-150 | _getMaxTarget（キャッシュ利用） | E-01: L1270-1294 _getMaxTarget実装 | ○ |
| C-151 | _getMaxTarget（1件以下→_target） | E-01: L1272-1273 sizeチェック | ○ |
| C-152 | _getMaxTarget（同一優先度→全件） | E-01: L1282 `maxPriority === minPriority` | ○ |
| C-153 | _getMaxTarget（異なる優先度→最高のみ） | E-01: L1286-1293 フィルタ処理 | ○ |
| C-154 | findTarget（発見→TargetItemWithoutConnection） | E-01: L1301-1353 findTarget/_findTarget実装 | ○ |
| C-155 | findTarget（未設定→undefined） | E-01: L1312 `if (!this._target || this._target.size === 0) return;` | ○ |
| C-156 | findTarget（無効→false） | E-01: L1340 `if (!newTarget) return false;` | ○ |
| C-157 | findTarget（循環参照→null） | E-01: L1334 `if (alreadyVisited.has(exportInfo)) return null;` | △ |
| C-158 | getTarget（解決→TargetItemWithConnection） | E-01: L1360-1463 getTarget/_getTarget実装 | ○ |
| C-159 | getTarget（未設定→undefined） | E-01: L1439 `if (!this._target || this._target.size === 0) return;` | ○ |
| C-160 | getTarget（循環参照→undefined） | E-01: L1362 `if (result === CIRCULAR) return;` | △ |
| C-161 | moveTarget（移動→TargetItemWithConnection） | E-01: L1472-1500 moveTarget実装 | ○ |
| C-162 | moveTarget（同じ→undefined） | E-01: L1483-1487 同値チェック | ○ |
| C-163 | moveTarget（updateOriginalConnection呼出し） | E-01: L1492-1493 コールバック呼出し | ○ |
| C-164 | createNestedExportsInfo（新規作成） | E-01: L1506-1518 createNestedExportsInfo実装 | ○ |
| C-165 | createNestedExportsInfo（既存返却） | E-01: L1507-1509 ownedチェック | ○ |
| C-166 | createNestedExportsInfo（リダイレクト設定） | E-01: L1514-1516 リダイレクト設定 | ○ |
| C-167 | getNestedExportsInfo（exportsInfo返却） | E-01: L1520-1522 getNestedExportsInfo実装 | ○ |
| C-168 | getNestedExportsInfo（undefined返却） | E-01: L1521 暗黙のundefined | ○ |
| C-169 | hasInfo（_usedName異なる→true） | E-01: L1529-1536 hasInfo実装 | ○ |
| C-170 | hasInfo（provided=true→true） | E-01: L1532 `this.provided` | ○ |
| C-171 | hasInfo（使用状態差異→true） | E-01: L1534 getUsed比較 | ○ |
| C-172 | updateHash | E-01: L1543-1561 updateHash/_updateHash実装 | ○ |
| C-173 | getUsedInfo（Unused→'unused'） | E-01: L1563-1603 getUsedInfo実装 | ○ |
| C-174 | getUsedInfo（Used→'used'） | E-01: L1571-1572 Usedケース | ○ |
| C-175 | getUsedInfo（ランタイム別情報文字列） | E-01: L1577-1601 _usedInRuntimeブランチ | ○ |
| C-176 | getUsedInfo（_hasUseInRuntimeInfo=false→'no usage info'） | E-01: L1602 最終return | ○ |
| C-177 | getProvidedInfo（true→'provided'） | E-01: L1605-1616 getProvidedInfo実装 | ○ |
| C-178 | getProvidedInfo（false→'not provided'） | E-01: L1614 falseケース | ○ |
| C-179 | getProvidedInfo（undefined→'no provided info'） | E-01: L1608 undefinedケース | ○ |
| C-180 | getProvidedInfo（null→'maybe provided'） | E-01: L1610 nullケース | ○ |
| C-181 | getRenameInfo（リネーム済み） | E-01: L1618-1657 getRenameInfo実装 | ○ |
| C-182 | getRenameInfo（リネーム可） | E-01: L1640 `return "could be renamed";` | ○ |
| C-183 | getRenameInfo（provision制約） | E-01: L1651 `return "provision prevents renaming";` | ○ |
| C-184 | getRenameInfo（usage制約） | E-01: L1638 `return "usage prevents renaming";` | ○ |

### ExportsInfoApiPlugin（C-185 - C-191）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-185 | dependencyTemplatesにTemplate登録 | E-02: L33-36 dependencyTemplates.set | ○ |
| C-186 | JAVASCRIPT_MODULE_TYPE_AUTOハンドラ登録 | E-02: L73-75 tap(AUTO) | ○ |
| C-187 | JAVASCRIPT_MODULE_TYPE_DYNAMICハンドラ登録 | E-02: L76-78 tap(DYNAMIC) | ○ |
| C-188 | JAVASCRIPT_MODULE_TYPE_ESMハンドラ登録 | E-02: L79-81 tap(ESM) | ○ |
| C-189 | expressionMemberChain（members>=2） | E-02: L44-56 members.length >= 2 条件 | ○ |
| C-190 | expressionMemberChain（members=1） | E-02: L52-56 else分岐 | ○ |
| C-191 | expression（ConstDependency 'true'） | E-02: L62-71 expressionフック | ○ |

### FlagAllModulesAsUsedPlugin（C-192 - C-199）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-192 | constructorでexplanation設定 | E-03: L19-21 constructor実装 | ○ |
| C-193 | optimizeDependenciesにtap | E-03: L31 tap(PLUGIN_NAME) | ○ |
| C-194 | 全モジュールにsetUsedInUnknownWay | E-03: L41-42 exportsInfo.setUsedInUnknownWay | ○ |
| C-195 | addExtraReason呼出し | E-03: L43 moduleGraph.addExtraReason | ○ |
| C-196 | factoryMeta初期化 | E-03: L44-46 undefined→{} | ○ |
| C-197 | sideEffectFree=false | E-03: L48 `sideEffectFree = false` | ○ |
| C-198 | ランタイムのマージ | E-03: L35-38 mergeRuntimeOwned/getEntryRuntime | ○ |
| C-199 | モジュール0件の場合 | E-03: L40 forループが実行されない | △ |

### FlagDependencyExportsPlugin（C-200 - C-214）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-200 | finishModulesにtapAsync | E-04: L35-36 tapAsync | ○ |
| C-201 | exportsTypeなし→setUnknownExportsProvided | E-04: L61-69 exportsType条件チェック | ○ |
| C-202 | ハッシュなし→キュー追加 | E-04: L72-80 hash条件チェック | ○ |
| C-203 | メモリキャッシュヒット→restoreProvided | E-04: L82-88 memCache処理 | ○ |
| C-204 | ディスクキャッシュヒット→restoreProvided | E-04: L96-98 cache.get結果処理 | ○ |
| C-205 | キャッシュミス→キュー追加 | E-04: L100-103 undefined→enqueue | ○ |
| C-206 | エクスポート情報の決定 | E-04: L148-327 processDependency/processExportsSpec | ○ |
| C-207 | exports=true→setUnknownExportsProvided | E-04: L173-185 trueブランチ | ○ |
| C-208 | exports=配列→mergeExports | E-04: L186-313 配列ブランチ | ○ |
| C-209 | キャッシュ保存 | E-04: L381-413 cache.store | ○ |
| C-210 | rebuildModule→キャッシュ保存 | E-04: L421-426 rebuildModule.tap | ○ |
| C-211 | finishRebuildingModule→復元 | E-04: L427-432 finishRebuildingModule.tap | ○ |
| C-212 | キャッシュエラー→callback(err) | E-04: L94 `if (err) return callback(err);` | ○ |
| C-213 | hideExports→unsetTarget | E-04: L167-172 hideExports処理 | ○ |
| C-214 | notifyDependencies→再キュー | E-04: L329-336 notifyDependencies実装 | ○ |

### FlagDependencyUsagePlugin（C-215 - C-232）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-215 | constructorでglobal=true設定 | E-05: L33-35 constructor実装 | ○ |
| C-216 | constructorでglobal=false設定 | E-05: L33-35 constructor実装 | ○ |
| C-217 | optimizeDependenciesにSTAGE_DEFAULT登録 | E-05: L46-47 tap with stage: STAGE_DEFAULT | ○ |
| C-218 | moduleMemCaches存在時にError | E-05: L49-53 Errorスロー | ○ |
| C-219 | 全モジュールにsetHasUseInfo | E-05: L287-291 初期化ループ | ○ |
| C-220 | エントリ依存関係の処理 | E-05: L300-327 processEntryDependency | ○ |
| C-221 | global=true→runtime=undefined | E-05: L317-318 三項演算子 | ○ |
| C-222 | global=false→ランタイム別 | E-05: L317-319 getEntryRuntime | ○ |
| C-223 | sideEffectFreeスキップ | E-05: L152-158 sideEffectFreeチェック | ○ |
| C-224 | forceSideEffects=true→setUsedForSideEffectsOnly | E-05: L159-161 setUsedForSideEffectsOnly | ○ |
| C-225 | exportsTypeなし→setUsedWithoutInfo | E-05: L77-82 exportsType条件 | ○ |
| C-226 | 空配列エントリ→setUsedInUnknownWay | E-05: L93-96 usedExport.length === 0 | ○ |
| C-227 | 名前付きエクスポート→setUsedConditionally(Used) | E-05: L129-134 setUsedConditionally(Used) | ○ |
| C-228 | ネストエクスポート→OnlyPropertiesUsed | E-05: L110-115 setUsedConditionally(OnlyPropertiesUsed) | ○ |
| C-229 | ブロック内依存関係走査 | E-05: L171-284 processModule実装 | ○ |
| C-230 | activeState=false→スキップ | E-05: L201 `if (activeState === false) continue;` | ○ |
| C-231 | TRANSITIVE_ONLY→再帰呼出し | E-05: L203-206 TRANSITIVE_ONLYブランチ | ○ |
| C-232 | globalEntry.dependencies処理 | E-05: L328-333 globalEntry処理 | ○ |

### FlagEntryExportAsUsedPlugin（C-233 - C-240）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-233 | constructorでnsObjectUsedとexplanation設定 | E-06: L19-22 constructor実装 | ○ |
| C-234 | nsObjectUsed=false設定 | E-06: L19-22 constructor実装 | ○ |
| C-235 | sealにtap | E-06: L32 tap(PLUGIN_NAME) | ○ |
| C-236 | nsObjectUsed=true→setUsedInUnknownWay | E-06: L42-43 nsObjectUsedブランチ | ○ |
| C-237 | nsObjectUsed=false→setAllKnownExportsUsed | E-06: L44-45 elseブランチ | ○ |
| C-238 | addExtraReason呼出し | E-06: L47 addExtraReason | ○ |
| C-239 | module=null時のスキップ | E-06: L40 `if (module)` | ○ |
| C-240 | エントリ空の場合 | E-06: L33-36 forループ | △ |

## 4) 不足情報（Unknown / Missing）
- C-009: Object.freezeはstrictモードでのみTypeErrorをスローする。テスト環境がstrictモードであるか確認が必要
  - 候補：Node.jsのデフォルト動作確認 / 'use strict'宣言の有無確認
- C-157, C-160: 循環参照テストケースの構築には、ExportInfoの_targetを循環的に設定するモック構築が必要。実際の循環参照パターンの確認が推奨される
  - 候補：既存テストスイート / webpack内部の循環参照テストパターン
- C-199, C-240: 空モジュール/空エントリの境界値テストは、ソースコード上forループが空配列で正常終了することから推測されるが、明示的なテストは存在しない
  - 候補：既存テストスイートでの空入力テスト / 統合テストでの確認

## 5) リスクフラグ（レビュー観点）
- 0: ExportsInfo/ExportInfoの基本的なゲッタ・セッタ（低リスク）- ソースコードから直接読み取れる明確な動作
- 0: OptimizationStagesの定数確認（低リスク）- 定数値のみ
- 1: 循環参照関連テスト（中リスク）- テストモック構築の複雑さ、実際の循環パターンの確認が必要
- 1: プラグインの統合的動作テスト（中リスク）- コンパイラ/コンパイレーションのモック設計に依存
- 0: UsageState列挙値の確認（低リスク）- 明確な定数定義

## 6) レビュアーチェックリスト（最小）
- [ ] ExportsInfo/ExportInfoの各メソッドのテストケースが、ソースコードの全分岐をカバーしているか確認
- [ ] 循環参照テスト（C-157, C-160）のモック設計が実際のwebpack内部パターンと整合するか確認
- [ ] プラグインテスト（C-185〜C-240）のコンパイラ/コンパイレーションモック設計が適切か確認
- [ ] ランタイム指定（string / Set / undefined）の3パターンが各メソッドで網羅されているか確認
- [ ] _redirectTo有無の分岐がExportsInfoの各メソッドで網羅されているか確認
- [ ] Object.freezeのstrictモード動作テスト（C-009）がテスト環境で正しく動作するか確認
