---
generated_at: 2026-02-21 22:20:00
metrics:
  claims_total: 130
  claims_with_evidence: 130
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：dict.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：130 / 130、根拠なし：0
- 優先レビュー（高）
  1. なし - 全テストケースがソースコードに基づいて生成されています

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

- E-01: `src/dict/cast.php` - cast_clear_legacy_array_mark関数定義（行17-24）
- E-02: `src/dict/order.php` - reverse関数定義（行22-30）
- E-03: `src/dict/order.php` - shuffle関数定義（行41-48）
- E-04: `src/dict/order.php` - sort関数定義（行67-78）
- E-05: `src/dict/order.php` - sort_by関数定義（行99-112）
- E-06: `src/dict/order.php` - sort_by_key関数定義（行131-142）
- E-07: `src/dict/divide.php` - partition関数定義（行20-34）
- E-08: `src/dict/divide.php` - partition_with_key関数定義（行43-57）
- E-09: `src/dict/transform.php` - chunk関数定義（行26-43）、invariant条件（行30）
- E-10: `src/dict/transform.php` - count_values関数定義（行52-60）
- E-11: `src/dict/transform.php` - flatten関数定義（行77-91）
- E-12: `src/dict/transform.php` - fill_keys関数定義（行100-109）
- E-13: `src/dict/transform.php` - flip関数定義（行122-130）
- E-14: `src/dict/transform.php` - from_keys関数定義（行143-152）
- E-15: `src/dict/transform.php` - from_entries関数定義（行170-178）
- E-16: `src/dict/transform.php` - from_values関数定義（行194-203）
- E-17: `src/dict/transform.php` - group_by関数定義（行217-231）、nullキー除外ロジック（行224-226）
- E-18: `src/dict/transform.php` - map関数定義（行242-251）
- E-19: `src/dict/transform.php` - map_keys関数定義（行261-270）
- E-20: `src/dict/transform.php` - map_with_key関数定義（行279-288）
- E-21: `src/dict/transform.php` - pull関数定義（行301-311）
- E-22: `src/dict/transform.php` - pull_with_key関数定義（行324-334）
- E-23: `src/dict/async.php` - from_async関数定義（行24-37）
- E-24: `src/dict/async.php` - from_keys_async関数定義（行48-67）、重複キー最適化（行54）
- E-25: `src/dict/async.php` - filter_async関数定義（行82-94）
- E-26: `src/dict/async.php` - filter_with_key_async関数定義（行104-116）
- E-27: `src/dict/async.php` - map_async関数定義（行131-150）
- E-28: `src/dict/async.php` - map_with_key_async関数定義（行165-184）
- E-29: `src/dict/introspect.php` - equal関数定義（行22-38）、同一性チェック最適化（行26-28）
- E-30: `src/dict/select.php` - diff_by_key関数定義（行25-40）
- E-31: `src/dict/select.php` - drop関数定義（行51-66）、invariant条件（行55）
- E-32: `src/dict/select.php` - filter関数定義（行79-91）、デフォルト述語（行83）
- E-33: `src/dict/select.php` - filter_with_key関数定義（行103-114）
- E-34: `src/dict/select.php` - filter_keys関数定義（行124-136）、デフォルト述語（行128）
- E-35: `src/dict/select.php` - filter_nulls関数定義（行145-155）
- E-36: `src/dict/select.php` - select_keys関数定義（行165-178）
- E-37: `src/dict/select.php` - take関数定義（行189-207）、invariant条件（行196）、0件最適化（行193-195）
- E-38: `src/dict/select.php` - unique関数定義（行218-222）、flip2回の実装
- E-39: `src/dict/select.php` - unique_by関数定義（行235-244）
- E-40: `src/dict/combine.php` - associate関数定義（行24-39）、invariant条件（行30-33）
- E-41: `src/dict/combine.php` - merge関数定義（行50-61）

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

### cast.php
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | cast_clear_legacy_array_mark: dictが渡された場合にレガシーマークをクリアして返す | E-01 | ○ |
| C-02 | cast_clear_legacy_array_mark: dict以外のKeyedTraversableが渡された場合にdictに変換する | E-01 | ○ |
| C-03 | cast_clear_legacy_array_mark: 空のKeyedTraversableのハンドリング | E-01 | ○ |

### order.php
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-04 | reverse: エントリの順序が逆になる | E-02 | ○ |
| C-05 | reverse: 空のdict処理 | E-02 | ○ |
| C-06 | reverse: 1件のみのdict処理 | E-02 | ○ |
| C-07 | shuffle: ランダムな順序で返される | E-03 | ○ |
| C-08 | shuffle: 空のdict処理 | E-03 | ○ |
| C-09 | shuffle: 1件のみのdict処理 | E-03 | ○ |
| C-10 | sort: 値で昇順ソート（デフォルト） | E-04 | ○ |
| C-11 | sort: カスタムcomparator対応 | E-04 | ○ |
| C-12 | sort: 空のdict処理 | E-04 | ○ |
| C-13 | sort: 同じ値が複数ある場合の処理 | E-04 | ○ |
| C-14 | sort_by: スカラー関数でソート | E-05 | ○ |
| C-15 | sort_by: カスタムcomparator対応 | E-05 | ○ |
| C-16 | sort_by: 空のdict処理 | E-05 | ○ |
| C-17 | sort_by_key: キーで昇順ソート（デフォルト） | E-06 | ○ |
| C-18 | sort_by_key: カスタムkey_comparator対応 | E-06 | ○ |
| C-19 | sort_by_key: 空のdict処理 | E-06 | ○ |

### divide.php
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-20 | partition: 述語でtrue/falseに分割 | E-07 | ○ |
| C-21 | partition: 全要素がtrueの場合 | E-07 | ○ |
| C-22 | partition: 全要素がfalseの場合 | E-07 | ○ |
| C-23 | partition: 空のdict処理 | E-07 | ○ |
| C-24 | partition_with_key: キー付き述語で分割 | E-08 | ○ |
| C-25 | partition_with_key: 空のdict処理 | E-08 | ○ |

### transform.php
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-26 | chunk: 指定サイズでチャンク分割 | E-09 | ○ |
| C-27 | chunk: 最後のチャンクがsizeより小さい場合 | E-09 | ○ |
| C-28 | chunk: sizeが0以下の場合にエラー（invariant） | E-09 | ○ |
| C-29 | chunk: 空のdict処理 | E-09 | ○ |
| C-30 | chunk: sizeが要素数以上の場合 | E-09 | ○ |
| C-31 | count_values: 各値の出現回数カウント | E-10 | ○ |
| C-32 | count_values: 空のTraversable処理 | E-10 | ○ |
| C-33 | count_values: 全て異なる値の場合 | E-10 | ○ |
| C-34 | flatten: ネストされたKeyedContainerのフラット化 | E-11 | ○ |
| C-35 | flatten: 重複キーは後の値で上書き | E-11 | ○ |
| C-36 | flatten: 空のTraversable処理 | E-11 | ○ |
| C-37 | fill_keys: 全キーに同じ値をマッピング | E-12 | ○ |
| C-38 | fill_keys: 空のキー配列処理 | E-12 | ○ |
| C-39 | fill_keys: 重複キーがある場合 | E-12 | ○ |
| C-40 | flip: キーと値の入れ替え | E-13 | ○ |
| C-41 | flip: 重複値は後のキーで上書き | E-13 | ○ |
| C-42 | flip: 空のdict処理 | E-13 | ○ |
| C-43 | from_keys: キーから値を生成 | E-14 | ○ |
| C-44 | from_keys: 空のキー配列処理 | E-14 | ○ |
| C-45 | from_keys: 重複キーがある場合 | E-14 | ○ |
| C-46 | from_entries: タプルからdict生成 | E-15 | ○ |
| C-47 | from_entries: 重複キーは後の値で上書き | E-15 | ○ |
| C-48 | from_entries: 空のTraversable処理 | E-15 | ○ |
| C-49 | from_values: 値からキーを生成 | E-16 | ○ |
| C-50 | from_values: 重複キーは後の値で上書き | E-16 | ○ |
| C-51 | from_values: 空のTraversable処理 | E-16 | ○ |
| C-52 | group_by: 同じキーの値をグループ化 | E-17 | ○ |
| C-53 | group_by: nullキーの値は除外 | E-17 | ○ |
| C-54 | group_by: 空のTraversable処理 | E-17 | ○ |
| C-55 | map: 各値を変換 | E-18 | ○ |
| C-56 | map: 空のdict処理 | E-18 | ○ |
| C-57 | map_keys: 各キーを変換 | E-19 | ○ |
| C-58 | map_keys: 重複キーは後の値で上書き | E-19 | ○ |
| C-59 | map_keys: 空のdict処理 | E-19 | ○ |
| C-60 | map_with_key: キーと値を使って値を変換 | E-20 | ○ |
| C-61 | map_with_key: 空のdict処理 | E-20 | ○ |
| C-62 | pull: 値とキーを同時に変換 | E-21 | ○ |
| C-63 | pull: 重複キーは後の値で上書き | E-21 | ○ |
| C-64 | pull: 空のTraversable処理 | E-21 | ○ |
| C-65 | pull_with_key: 元のキーと値を使ってキーと値を変換 | E-22 | ○ |
| C-66 | pull_with_key: 空のdict処理 | E-22 | ○ |

### async.php
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-67 | from_async: 各Awaitableを並列でawait | E-23 | ○ |
| C-68 | from_async: 空のdict処理 | E-23 | ○ |
| C-69 | from_keys_async: 非同期関数でキーから値を生成 | E-24 | ○ |
| C-70 | from_keys_async: 重複キーは1回のみ関数を呼ぶ（??=演算子による最適化） | E-24 | ○ |
| C-71 | from_keys_async: 空のキー配列処理 | E-24 | ○ |
| C-72 | filter_async: 非同期述語でフィルタリング | E-25 | ○ |
| C-73 | filter_async: 空のdict処理 | E-25 | ○ |
| C-74 | filter_with_key_async: 非同期キー付き述語でフィルタリング | E-26 | ○ |
| C-75 | filter_with_key_async: 空のdict処理 | E-26 | ○ |
| C-76 | map_async: 非同期関数で各値を変換 | E-27 | ○ |
| C-77 | map_async: 空のdict処理 | E-27 | ○ |
| C-78 | map_with_key_async: 非同期関数でキーと値を使って変換 | E-28 | ○ |
| C-79 | map_with_key_async: 空のdict処理 | E-28 | ○ |

### introspect.php
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-80 | equal: 同じエントリを持つ2つのdictでtrue | E-29 | ○ |
| C-81 | equal: 順序が異なっても同じエントリならtrue | E-29 | ○ |
| C-82 | equal: 異なるエントリでfalse | E-29 | ○ |
| C-83 | equal: キー数が異なる場合にfalse | E-29 | ○ |
| C-84 | equal: 同一のdictが渡された場合にtrue（最適化） | E-29 | ○ |
| C-85 | equal: 両方とも空のdictでtrue | E-29 | ○ |

### select.php
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-86 | diff_by_key: 最初のdictにのみ存在するキーのエントリを返す | E-30 | ○ |
| C-87 | diff_by_key: 複数のdictとの差分 | E-30 | ○ |
| C-88 | diff_by_key: 最初のdictが空の場合 | E-30 | ○ |
| C-89 | diff_by_key: 差分対象のdictが空の場合 | E-30 | ○ |
| C-90 | drop: 先頭n件を除外 | E-31 | ○ |
| C-91 | drop: nが負の値の場合にエラー（invariant） | E-31 | ○ |
| C-92 | drop: nが0の場合に全件返す | E-31 | ○ |
| C-93 | drop: nが要素数以上の場合に空dictを返す | E-31 | ○ |
| C-94 | filter: 述語でフィルタリング | E-32 | ○ |
| C-95 | filter: 述語なしの場合に真値のみ残る（デフォルト述語） | E-32 | ○ |
| C-96 | filter: 空のdict処理 | E-32 | ○ |
| C-97 | filter_with_key: キーと値を使ってフィルタリング | E-33 | ○ |
| C-98 | filter_with_key: 空のdict処理 | E-33 | ○ |
| C-99 | filter_keys: キー述語でフィルタリング | E-34 | ○ |
| C-100 | filter_keys: 述語なしの場合に真キーのみ残る（デフォルト述語） | E-34 | ○ |
| C-101 | filter_keys: 空のdict処理 | E-34 | ○ |
| C-102 | filter_nulls: null値を除去 | E-35 | ○ |
| C-103 | filter_nulls: 全てnullの場合 | E-35 | ○ |
| C-104 | filter_nulls: nullが含まれない場合 | E-35 | ○ |
| C-105 | filter_nulls: 空のdict処理 | E-35 | ○ |
| C-106 | select_keys: 指定キーのエントリのみ返す | E-36 | ○ |
| C-107 | select_keys: 存在しないキーは無視 | E-36 | ○ |
| C-108 | select_keys: keysの順序でdictを返す | E-36 | ○ |
| C-109 | select_keys: 空のコンテナ処理 | E-36 | ○ |
| C-110 | select_keys: 空のキー配列処理 | E-36 | ○ |
| C-111 | take: 先頭n件を取得 | E-37 | ○ |
| C-112 | take: nが負の値の場合にエラー（invariant） | E-37 | ○ |
| C-113 | take: nが0の場合に空dictを返す（最適化） | E-37 | ○ |
| C-114 | take: nが要素数以上の場合に全件返す | E-37 | ○ |
| C-115 | take: 空のdict処理 | E-37 | ○ |
| C-116 | unique: 重複値を除去（後のキーが残る） | E-38 | ○ |
| C-117 | unique: 全てユニークな値の場合 | E-38 | ○ |
| C-118 | unique: 空のdict処理 | E-38 | ○ |
| C-119 | unique_by: スカラー関数による重複を除去 | E-39 | ○ |
| C-120 | unique_by: 全てユニークなスカラー値の場合 | E-39 | ○ |
| C-121 | unique_by: 空のdict処理 | E-39 | ○ |

### combine.php
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-122 | associate: キー配列と値配列を正しく結合 | E-40 | ○ |
| C-123 | associate: キーと値の配列長が異なる場合にエラー（invariant） | E-40 | ○ |
| C-124 | associate: 空の配列処理 | E-40 | ○ |
| C-125 | associate: 重複キーは後の値で上書き | E-40 | ○ |
| C-126 | merge: 複数のdictをマージ | E-41 | ○ |
| C-127 | merge: 重複キーは後の値で上書き | E-41 | ○ |
| C-128 | merge: 1つのdictのみの場合 | E-41 | ○ |
| C-129 | merge: 空のdict処理 | E-41 | ○ |
| C-130 | merge: マージ対象に空のdictが含まれる場合 | E-41 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - 全テストケースがソースコードに基づいて生成されています

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースがソースコードから直接抽出された関数定義に基づいており、根拠が明確です
- 非同期関数（async.php）のテストケースは、実際のテスト実行時に並列処理の動作確認が必要

## 6) レビュアーチェックリスト（最小）
- [ ] 各関数の境界値テストケースが適切に定義されているか確認
- [ ] invariant違反のテストケースが全てのinvariant条件をカバーしているか確認
- [ ] 重複キー処理のテストケースが仕様通りか確認（「後の値で上書き」の動作）
- [ ] 非同期関数のテストケースが並列実行を適切にテストしているか確認
- [ ] デフォルト述語（boolval）を使用する関数のテストケースが正しいか確認
