---
generated_at: 2026-01-29 17:50:00
metrics:
  claims_total: 143
  claims_with_evidence: 143
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：Core-Content-Rule 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：143 / 143、根拠なし：0
- 優先レビュー（高）
  1. **なし**：全てのテストケースにソースコードからの根拠あり

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `src/Core/Content/Rule/RuleDefinition.php` - エンティティ定義、フィールド定義
- E-02: `src/Core/Content/Rule/RuleEntity.php` - エンティティクラス、Getter/Setter、リレーション
- E-03: `src/Core/Content/Rule/RuleCollection.php` - コレクションクラス、フィルタリングメソッド
- E-04: `src/Core/Content/Rule/RuleException.php` - 例外クラス
- E-05: `src/Core/Content/Rule/RuleValidator.php` - バリデーションロジック
- E-06: `src/Core/Content/Rule/RuleEvents.php` - イベント定数定義
- E-07: `src/Core/Content/Rule/Aggregate/RuleCondition/RuleConditionDefinition.php` - 条件エンティティ定義
- E-08: `src/Core/Content/Rule/Aggregate/RuleCondition/RuleConditionEntity.php` - 条件エンティティクラス
- E-09: `src/Core/Content/Rule/Aggregate/RuleCondition/RuleConditionCollection.php` - 条件コレクション
- E-10: `src/Core/Content/Rule/Aggregate/RuleTag/RuleTagDefinition.php` - タグマッピング定義
- E-11: `src/Core/Content/Rule/DataAbstractionLayer/RuleIndexer.php` - インデクサー
- E-12: `src/Core/Content/Rule/DataAbstractionLayer/RulePayloadUpdater.php` - ペイロード更新
- E-13: `src/Core/Content/Rule/DataAbstractionLayer/RuleAreaUpdater.php` - エリア更新
- E-14: `src/Core/Content/Rule/DataAbstractionLayer/RulePayloadSubscriber.php` - ペイロード購読
- E-15: `src/Core/Content/Rule/DataAbstractionLayer/RuleIndexerSubscriber.php` - インデクサー購読
- E-16: `src/Core/Content/Rule/DataAbstractionLayer/RuleIndexingMessage.php` - インデックスメッセージ
- E-17: `src/Core/Content/Rule/DataAbstractionLayer/Indexing/ConditionTypeNotFound.php` - 例外クラス
- E-18: `src/Core/Content/Rule/Event/RuleIndexerEvent.php` - インデクサーイベント

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

### RuleDefinition (UT-RUL-001〜008)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | getEntityName()が'rule'を返却 | E-01: L49, L51-54 | ○ |
| C-02 | getCollectionClass()がRuleCollection::classを返却 | E-01: L56-59 | ○ |
| C-03 | getEntityClass()がRuleEntity::classを返却 | E-01: L61-64 | ○ |
| C-04 | since()が'6.0.0.0'を返却 | E-01: L66-69 | ○ |
| C-05 | defineFields()でid, name, priorityがRequired | E-01: L74-76 | ○ |
| C-06 | name, descriptionがApiAware | E-01: L75, L77 | ○ |
| C-07 | payload, invalid, areasがWriteProtected | E-01: L78-80 | ○ |
| C-08 | リレーションフィールド定義 | E-01: L84-104 | ○ |

### RuleEntity (UT-RUL-009〜033)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-09 | getName()がname値を返却 | E-02: L79-82 | ○ |
| C-10 | setName()でname設定 | E-02: L84-87 | ○ |
| C-11 | getPayload()がペイロードを返却 | E-02: L92-97 | ○ |
| C-12 | getPayload()でnull処理 | E-02: L37 | ○ |
| C-13 | getPayload()でcheckIfPropertyAccessIsAllowed呼出 | E-02: L94 | ○ |
| C-14 | setPayload()でペイロード設定 | E-02: L104-107 | ○ |
| C-15 | getDescription()が説明を返却 | E-02: L109-112 | ○ |
| C-16 | descriptionのデフォルトがnull | E-02: L30 | ○ |
| C-17 | getPriority()が優先度を返却 | E-02: L119-122 | ○ |
| C-18 | setPriority()で優先度設定 | E-02: L124-127 | ○ |
| C-19 | isInvalid()がtrue返却 | E-02: L169-172 | ○ |
| C-20 | isInvalid()がfalse返却 | E-02: L169-172 | ○ |
| C-21 | getAreas()がエリア配列返却 | E-02: L182-186 | ○ |
| C-22 | areasのデフォルトがnull | E-02: L57 | ○ |
| C-23 | getModuleTypes()がモジュールタイプ返却 | E-02: L198-201 | ○ |
| C-24 | getConditions()がコレクション返却 | E-02: L159-162 | ○ |
| C-25〜33 | 各リレーションGetter | E-02: L129-333 | ○ |

### RuleCollection (UT-RUL-034〜050)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-34 | filterMatchingRulesでマッチフィルタ | E-03: L19-30 | ○ |
| C-35 | ペイロード型チェック | E-03: L23-25 | ○ |
| C-36 | 空コレクション処理 | E-03: L21 | ○ |
| C-37 | filterForContextでコンテキストフィルタ | E-03: L32-37 | ○ |
| C-38 | areas=null処理 | E-03: L35 | ○ |
| C-39 | filterForFlowでフローフィルタ | E-03: L39-44 | ○ |
| C-40 | areas=nullでフィルタ除外 | E-03: L42 | ○ |
| C-41 | getIdsByAreaでエリア別ID取得 | E-03: L49-60 | ○ |
| C-42 | areas=null無視 | E-03: L54 | ○ |
| C-43 | 重複ID排除 | E-03: L55 | ○ |
| C-44 | sortByPriorityで優先度ソート | E-03: L62-65 | ○ |
| C-45 | ソート安定性 | E-03: L64 (spaceship operator) | ○ |
| C-46 | equalsで同一判定 | E-03: L67-80 | ○ |
| C-47 | equalsで差異判定 | E-03: L73-76 | ○ |
| C-48 | equals件数チェック | E-03: L69-71 | ○ |
| C-49 | getApiAlias | E-03: L82-85 | ○ |
| C-50 | getExpectedClass | E-03: L87-90 | ○ |

### RuleException (UT-RUL-051)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-51 | unsupportedCommandTypeで例外生成 | E-04: L15-18 | ○ |

### RuleValidator (UT-RUL-052〜067)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | PreWriteValidationEvent購読 | E-05: L53-58 | ○ |
| C-53 | InsertCommand検証 | E-05: L78-81 | ○ |
| C-54 | UpdateCommandキュー追加 | E-05: L84-88 | ○ |
| C-55 | DeleteCommandスキップ | E-05: L74-76 | ○ |
| C-56 | 未サポートコマンドで例外 | E-05: L90 | ○ |
| C-57 | 他エンティティスキップ | E-05: L70-72 | ○ |
| C-58 | 有効タイプ検証 | E-05: L112-125 | ○ |
| C-59 | 無効タイプエラー | E-05: L115-124 | ○ |
| C-60 | 未定義プロパティエラー | E-05: L130-147 | ○ |
| C-61 | ScriptRule処理 | E-05: L152-157 | ○ |
| C-62 | フィールドバリデーション | E-05: L204-226 | ○ |
| C-63 | 未定義フィールドエラー | E-05: L215-224 | ○ |
| C-64 | payloadのtype優先 | E-05: L177-179 | ○ |
| C-65 | conditionのtypeフォールバック | E-05: L176 | ○ |
| C-66 | payloadのvalue優先 | E-05: L192-194 | ○ |
| C-67 | conditionのvalueフォールバック | E-05: L191 | ○ |

### RuleCondition関連 (UT-RUL-068〜091)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-68 | RuleConditionDefinition.getEntityName | E-07: L26, L28-31 | ○ |
| C-69 | RuleConditionDefinition.getEntityClass | E-07: L33-36 | ○ |
| C-70 | RuleConditionDefinition.getCollectionClass | E-07: L38-41 | ○ |
| C-71 | RuleConditionDefinition.getParentDefinitionClass | E-07: L48-51 | ○ |
| C-72 | RuleConditionDefinition.defineFields必須 | E-07: L56-58 | ○ |
| C-73〜86 | RuleConditionEntity Getter/Setter | E-08: L42-146 | ○ |
| C-87 | RuleConditionCollection.getApiAlias | E-09: L14-17 | ○ |
| C-88 | RuleConditionCollection.getExpectedClass | E-09: L19-22 | ○ |
| C-89 | RuleTagDefinition.getEntityName | E-10: L18, L20-23 | ○ |
| C-90 | RuleTagDefinition.isVersionAware | E-10: L25-28 | ○ |
| C-91 | RuleTagDefinition.defineFields複合PK | E-10: L35-44 | ○ |

### DataAbstractionLayer (UT-RUL-092〜134)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-92 | RuleIndexer.getName | E-11: L41-44 | ○ |
| C-93 | RuleIndexer.iterate | E-11: L46-57 | ○ |
| C-94 | RuleIndexer.iterate空 | E-11: L52-54 | ○ |
| C-95 | RuleIndexer.update | E-11: L59-70 | ○ |
| C-96 | RuleIndexer.update空 | E-11: L61-65 | ○ |
| C-97 | RuleIndexer.handle PAYLOAD_UPDATER | E-11: L84-86 | ○ |
| C-98 | RuleIndexer.handle AREA_UPDATER | E-11: L88-90 | ○ |
| C-99 | RuleIndexer.handleイベント発行 | E-11: L92 | ○ |
| C-100 | RuleIndexer.handle空ID | E-11: L79-82 | ○ |
| C-101 | RuleIndexer.handle非配列 | E-11: L75-77 | ○ |
| C-102 | RuleIndexer.getTotal | E-11: L95-98 | ○ |
| C-103 | RuleIndexer.getDecorated例外 | E-11: L100-103 | ○ |
| C-104 | RulePayloadUpdater.getSubscribedEvents | E-12: L39-44 | ○ |
| C-105 | RulePayloadUpdater.update | E-12: L51-98 | ○ |
| C-106 | RulePayloadUpdater.update AndRule | E-12: L81 | ○ |
| C-107 | RulePayloadUpdater.update invalid | E-12: L84-93 | ○ |
| C-108 | RulePayloadUpdater.update戻り値 | E-12: L95 | ○ |
| C-109 | RulePayloadUpdater.updatePayloads | E-12: L101-118 | ○ |
| C-110 | RulePayloadUpdater.updatePayloads空 | E-12: L113-115 | ○ |
| C-111 | RulePayloadUpdater.buildNested | E-12: L125-168 | ○ |
| C-112 | RulePayloadUpdater.buildNested ScriptRule | E-12: L140-151 | ○ |
| C-113 | RulePayloadUpdater.buildNested Container | E-12: L157-162 | ○ |
| C-114 | RulePayloadUpdater.buildNested例外 | E-12: L133-135 | ○ |
| C-115 | RuleAreaUpdater.getSubscribedEvents | E-13: L53-59 | ○ |
| C-116 | RuleAreaUpdater.triggerChangeSet Delete | E-13: L73-77 | ○ |
| C-117 | RuleAreaUpdater.triggerChangeSet FK | E-13: L79-83 | ○ |
| C-118 | RuleAreaUpdater.triggerChangeSetスキップ | E-13: L69-70 | ○ |
| C-119 | RuleAreaUpdater.onEntityWritten | E-13: L87-117 | ○ |
| C-120 | RuleAreaUpdater.onEntityWrittenキャッシュ | E-13: L116 | ○ |
| C-121 | RuleAreaUpdater.onEntityWrittenスキップ | E-13: L110-112 | ○ |
| C-122 | RuleAreaUpdater.update | E-13: L122-163 | ○ |
| C-123 | RuleAreaUpdater.update flowCondition | E-13: L142-145 | ○ |
| C-124 | RuleAreaUpdater.update RuleAreas | E-13: L150-154 | ○ |
| C-125 | RulePayloadSubscriber.getSubscribedEvents | E-14: L33-38 | ○ |
| C-126 | RulePayloadSubscriber.unserialize | E-14: L43-59 | ○ |
| C-127 | RulePayloadSubscriber.unserializeスキップ | E-14: L48-51 | ○ |
| C-128 | RulePayloadSubscriber.indexIfNeeded | E-14: L64-83 | ○ |
| C-129 | RulePayloadSubscriber.enrichConditions ScriptRule | E-14: L91-98 | ○ |
| C-130 | RulePayloadSubscriber.enrichConditions再帰 | E-14: L100-103 | ○ |
| C-131 | RuleIndexerSubscriber.getSubscribedEvents | E-15: L35-45 | ○ |
| C-132 | RuleIndexerSubscriber.refreshPlugin | E-15: L47-58 | ○ |
| C-133 | RuleIndexerSubscriber.onRuleWritten | E-15: L60-63 | ○ |
| C-134 | ConditionTypeNotFound継承 | E-17: L8-10 | ○ |

### Event関連 (UT-RUL-135〜143)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-135 | RuleIndexerEvent.__construct | E-18: L12-16 | ○ |
| C-136 | RuleIndexerEvent.getContext | E-18: L18-21 | ○ |
| C-137 | RuleIndexerEvent.getIds | E-18: L23-26 | ○ |
| C-138 | RuleIndexerEvent.getSkip | E-18: L28-31 | ○ |
| C-139 | RuleIndexerEvent.skipデフォルト | E-18: L15 | ○ |
| C-140 | RuleEvents.RULE_WRITTEN_EVENT | E-06: L11 | ○ |
| C-141 | RuleEvents.RULE_DELETED_EVENT | E-06: L13 | ○ |
| C-142 | RuleEvents.RULE_LOADED_EVENT | E-06: L15 | ○ |
| C-143 | RuleEvents.RULE_INDEXER_EVENT | E-06: L23 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - 全てのテストケースはソースコードから直接根拠を抽出しました。

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースにソースコードからの明確な根拠あり

## 6) レビュアーチェックリスト（最小）
- [ ] RuleCollectionのfilterMatchingRulesがCartRuleScopeを正しく使用しているか確認
- [ ] RuleValidatorのバリデーションロジックが全条件タイプをカバーしているか確認
- [ ] RulePayloadUpdaterのbuildNestedが再帰的構造を正しく処理するか確認
- [ ] RuleAreaUpdaterのエリア計算ロジックが全関連エンティティをカバーしているか確認
- [ ] テストケースの優先度設定が適切か確認（高優先度：金額計算、データ整合性関連）
