---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 144
  claims_with_evidence: 144
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：datastruct.csv

## 本レポートについて

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

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

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

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

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

---

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

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

- E-01: `src/datastruct/main.zig` - モジュールのエントリポイント、公開APIの定義
- E-02: `src/datastruct/cache_table.zig` - CacheTable実装（162-181行目に既存テストあり）
- E-03: `src/datastruct/intrusive_linked_list.zig` - DoublyLinkedList実装（134-181行目に既存テストあり）
- E-04: `src/datastruct/lru.zig` - LRU HashMap実装（223-349行目に既存テストあり）
- E-05: `src/datastruct/circ_buf.zig` - CircBuf実装（313-866行目に広範な既存テストあり）
- E-06: `src/datastruct/blocking_queue.zig` - BlockingQueue実装（200-248行目に既存テストあり）
- E-07: `src/datastruct/split_tree.zig` - SplitTree実装（1382-2367行目に広範な既存テストあり）
- E-08: `src/datastruct/message_data.zig` - MessageData実装（94-124行目に既存テストあり）
- E-09: `src/datastruct/array_list_collection.zig` - ArrayListCollection実装（全44行、テストなし）
- E-10: `src/datastruct/segmented_pool.zig` - SegmentedPool実装（64-95行目に既存テストあり）
- E-11: `src/datastruct/comparison.zig` - deepEqual/expectApproxEqual実装（200-430行目に広範な既存テストあり）

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

### CacheTable (UT-DST-001 - UT-DST-007)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | put: 空のバケットに値を追加 | E-02 (line 166-169) | ○ |
| C-02 | put: 複数の値を追加 | E-02 (line 166-169) | ○ |
| C-03 | put: LRUエビクション | E-02 (line 174-177) | ○ |
| C-04 | get: 存在するキーの取得 | E-02 (line 108-121) | ○ |
| C-05 | get: 存在しないキー | E-02 (line 180) | ○ |
| C-06 | clear: 全要素クリア | E-02 (line 127-137) | ○ |
| C-07 | clear: evictedコールバック | E-02 (line 128-134) | ○ |

### DoublyLinkedList (UT-DST-008 - UT-DST-022)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-08 | append: 空リストに追加 | E-03 (line 63-70, 149) | ○ |
| C-09 | append: 既存リストに追加 | E-03 (line 63-70, 150) | ○ |
| C-10 | prepend: 空リストの先頭に追加 | E-03 (line 77-88, 151) | ○ |
| C-11 | prepend: 既存リストの先頭に追加 | E-03 (line 77-88) | ○ |
| C-12 | insertAfter: 中間ノードの後に挿入 | E-03 (line 26-38, 153) | ○ |
| C-13 | insertAfter: 末尾ノードの後に挿入 | E-03 (line 33-36) | ○ |
| C-14 | insertBefore: 中間ノードの前に挿入 | E-03 (line 45-57, 152) | ○ |
| C-15 | insertBefore: 先頭ノードの前に挿入 | E-03 (line 52-55) | ○ |
| C-16 | remove: 中間ノード削除 | E-03 (line 94-110, 177) | ○ |
| C-17 | remove: 先頭ノード削除 | E-03 (line 98-100) | ○ |
| C-18 | remove: 末尾ノード削除 | E-03 (line 106-108) | ○ |
| C-19 | pop: 末尾取得・削除 | E-03 (line 116-120, 176) | ○ |
| C-20 | pop: 空リスト | E-03 (line 117) | ○ |
| C-21 | popFirst: 先頭取得・削除 | E-03 (line 126-130, 175) | ○ |
| C-22 | popFirst: 空リスト | E-03 (line 127) | ○ |

### LRU HashMap (UT-DST-023 - UT-DST-033)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-23 | init: 容量指定初期化 | E-04 (line 84-89, 228) | ○ |
| C-24 | getOrPut: 新規挿入 | E-04 (line 233-237) | ○ |
| C-25 | getOrPut: 既存キー取得 | E-04 (line 246-247) | ○ |
| C-26 | getOrPut: エビクション | E-04 (line 251-256) | ○ |
| C-27 | getOrPut: アクセス順序更新 | E-04 (line 259-268) | ○ |
| C-28 | get: 値取得 | E-04 (line 287-288) | ○ |
| C-29 | get: 存在しないキー | E-04 (line 289) | ○ |
| C-30 | resize: 拡大 | E-04 (line 187-192) | ○ |
| C-31 | resize: 縮小・エビクト | E-04 (line 340-348) | ○ |
| C-32 | resize: 縮小不要 | E-04 (line 309-314) | ○ |
| C-33 | deinit: リソース解放 | E-04 (line 92-104) | ○ |

### CircBuf (UT-DST-034 - UT-DST-061)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-34 | init: サイズ指定初期化 | E-05 (line 67-77, 318-322) | ○ |
| C-35 | init: サイズ0初期化 | E-05 (line 75-76, 453-458) | ○ |
| C-36 | append: 値追加 | E-05 (line 86-92, 333-335) | ○ |
| C-37 | append: 満杯エラー | E-05 (line 87, 336) | ○ |
| C-38 | appendAssumeCapacity | E-05 (line 95-101) | ○ |
| C-39 | appendSliceAssumeCapacity | E-05 (line 104-114, 481-490) | ○ |
| C-40 | appendSliceAssumeCapacity: 空スライス | E-05 (line 804-807) | ○ |
| C-41 | appendSliceAssumeCapacity: ラップ | E-05 (line 493-519) | ○ |
| C-42 | clear | E-05 (line 117-121) | ○ |
| C-43 | iterator: forward | E-05 (line 342-374) | ○ |
| C-44 | iterator: reverse | E-05 (line 388-431) | ○ |
| C-45 | iterator: 空バッファ | E-05 (line 351-353, 397-399) | ○ |
| C-46 | first | E-05 (line 133-138, 446) | ○ |
| C-47 | first: 空バッファ | E-05 (line 457, 469) | ○ |
| C-48 | last | E-05 (line 141-146, 445) | ○ |
| C-49 | last: 空バッファ | E-05 (line 458, 470) | ○ |
| C-50 | resize: 拡大 | E-05 (line 731-761) | ○ |
| C-51 | resize: 縮小 | E-05 (line 764-793) | ○ |
| C-52 | resize: ゼロから拡大 | E-05 (line 706-729) | ○ |
| C-53 | deleteOldest | E-05 (line 217-236, 377-385) | ○ |
| C-54 | deleteOldest: n=0 | E-05 (line 222-225, 843-866) | ○ |
| C-55 | getPtrSlice: 連続 | E-05 (line 522-533) | ○ |
| C-56 | getPtrSlice: ラップ | E-05 (line 536-589) | ○ |
| C-57 | getPtrSlice: 長さ0 | E-05 (line 244-246, 818-840) | ○ |
| C-58 | empty: 空判定 | E-05 (line 199-201, 321) | ○ |
| C-59 | empty: 非空判定 | E-05 (line 199-201) | ○ |
| C-60 | capacity | E-05 (line 204-206) | ○ |
| C-61 | len | E-05 (line 209-213, 322) | ○ |

### BlockingQueue (UT-DST-062 - UT-DST-071)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-62 | create | E-06 (line 74-89, 205-206) | ○ |
| C-63 | push | E-06 (line 101-136, 212-215) | ○ |
| C-64 | push: 満杯instant | E-06 (line 107-109, 216) | ○ |
| C-65 | push: 満杯タイムアウト | E-06 (line 117-120, 247) | ○ |
| C-66 | pop | E-06 (line 139-157, 219-223) | ○ |
| C-67 | pop: 空キュー | E-06 (line 144, 209, 223) | ○ |
| C-68 | drain | E-06 (line 163-166, 226-228) | ○ |
| C-69 | DrainIterator.next | E-06 (line 171-181) | ○ |
| C-70 | DrainIterator.deinit | E-06 (line 183-189, 228) | ○ |
| C-71 | destroy | E-06 (line 93-96, 206) | ○ |

### SplitTree (UT-DST-072 - UT-DST-099)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-72 | init | E-07 (line 112-126, 1428-1430) | ○ |
| C-73 | empty | E-07 (line 65-72, 1415-1416) | ○ |
| C-74 | isEmpty: 空 | E-07 (line 168-171, 1389) | ○ |
| C-75 | isEmpty: 非空 | E-07 (line 168-171) | ○ |
| C-76 | isSplit: 分割 | E-07 (line 176-184, 1408-1409) | ○ |
| C-77 | isSplit: 単一 | E-07 (line 176-184, 1395) | ○ |
| C-78 | split: 水平 | E-07 (line 505-569, 1452-1459) | ○ |
| C-79 | split: 垂直 | E-07 (line 505-569, 1617-1624) | ○ |
| C-80 | split: ratio=0 | E-07 (line 1639-1671) | ○ |
| C-81 | split: ratio=1 | E-07 (line 1707-1739) | ○ |
| C-82 | remove: リーフ | E-07 (line 572-613, 1796-1804) | ○ |
| C-83 | remove: ルート | E-07 (line 580) | ○ |
| C-84 | remove: 中間 | E-07 (line 1866-1888) | ○ |
| C-85 | clone | E-07 (line 145-165, 2234) | ○ |
| C-86 | clone: 空 | E-07 (line 147, 2181-2183) | ○ |
| C-87 | iterator | E-07 (line 187-216, 1479-1480) | ○ |
| C-88 | zoom: 設定 | E-07 (line 220-226, 2213-2220) | ○ |
| C-89 | zoom: 解除 | E-07 (line 220-226) | ○ |
| C-90 | goto: previous | E-07 (line 253-271, 1548-1572) | ○ |
| C-91 | goto: next | E-07 (line 253-271, 1577-1602) | ○ |
| C-92 | goto: previous_wrapped | E-07 (line 262) | ○ |
| C-93 | goto: next_wrapped | E-07 (line 263) | ○ |
| C-94 | goto: spatial | E-07 (line 264-269, 1983-2070) | ○ |
| C-95 | resizeInPlace | E-07 (line 483-495) | ○ |
| C-96 | resize | E-07 (line 830-884, 2123-2172) | ○ |
| C-97 | equalize | E-07 (line 759-795, 2072-2087) | ○ |
| C-98 | spatial | E-07 (line 968-998) | ○ |
| C-99 | deinit | E-07 (line 128-142) | ○ |

### MessageData (UT-DST-100 - UT-DST-108)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-100 | init: small | E-08 (line 43-59, 94-102) | ○ |
| C-101 | init: alloc | E-08 (line 61-69, 104-113) | ○ |
| C-102 | init: 境界 | E-08 (line 50, 115-124) | ○ |
| C-103 | slice: small | E-08 (line 84-90) | ○ |
| C-104 | slice: stable | E-08 (line 84-90) | ○ |
| C-105 | slice: alloc | E-08 (line 84-90) | ○ |
| C-106 | deinit: alloc | E-08 (line 76-81) | ○ |
| C-107 | deinit: small | E-08 (line 78) | ○ |
| C-108 | deinit: stable | E-08 (line 78) | ○ |

### ArrayListCollection (UT-DST-109 - UT-DST-111)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-109 | init | E-09 (line 14-28) | ○ |
| C-110 | deinit | E-09 (line 30-35) | ○ |
| C-111 | reset | E-09 (line 37-43) | ○ |

### SegmentedPool (UT-DST-112 - UT-DST-117)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-112 | get | E-10 (line 30-39, 70-71) | ○ |
| C-113 | get: 枯渇エラー | E-10 (line 32, 73) | ○ |
| C-114 | getGrow | E-10 (line 43-46, 86-87) | ○ |
| C-115 | put | E-10 (line 57-60, 79-82) | ○ |
| C-116 | put: 再利用 | E-10 (line 79-82, 93) | ○ |
| C-117 | deinit | E-10 (line 23-26) | ○ |

### comparison (UT-DST-118 - UT-DST-144)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-118 | deepEqual: void | E-11 (line 31, 240-241) | ○ |
| C-119 | deepEqual: bool等しい | E-11 (line 33-37, 244-245) | ○ |
| C-120 | deepEqual: bool異なる | E-11 (line 33-37, 247-248) | ○ |
| C-121 | deepEqual: int等しい | E-11 (line 33-37, 251-252) | ○ |
| C-122 | deepEqual: int異なる | E-11 (line 33-37, 254) | ○ |
| C-123 | deepEqual: float等しい | E-11 (line 33-37, 259-260) | ○ |
| C-124 | deepEqual: float異なる | E-11 (line 33-37, 261) | ○ |
| C-125 | deepEqual: enum等しい | E-11 (line 33-37, 268-269) | ○ |
| C-126 | deepEqual: enum異なる | E-11 (line 33-37, 270-271) | ○ |
| C-127 | deepEqual: 文字列等しい | E-11 (line 12-14, 275-276) | ○ |
| C-128 | deepEqual: 文字列異なる | E-11 (line 12-14, 277-279) | ○ |
| C-129 | deepEqual: optional null | E-11 (line 39-43, 303) | ○ |
| C-130 | deepEqual: optional値 | E-11 (line 39-43, 304) | ○ |
| C-131 | deepEqual: optional異なる | E-11 (line 39-43, 305-307) | ○ |
| C-132 | deepEqual: array等しい | E-11 (line 45-51, 319) | ○ |
| C-133 | deepEqual: array異なる | E-11 (line 45-51, 320-321) | ○ |
| C-134 | deepEqual: struct等しい | E-11 (line 53-66, 336) | ○ |
| C-135 | deepEqual: struct異なる | E-11 (line 53-66, 337-338) | ○ |
| C-136 | deepEqual: struct equal decl | E-11 (line 54, 353-365) | ○ |
| C-137 | deepEqual: union等しい | E-11 (line 68-87, 374-375) | ○ |
| C-138 | deepEqual: unionタグ異なる | E-11 (line 68-87, 376-378) | ○ |
| C-139 | deepEqual: ネスト | E-11 (line 341-350, 406-413) | ○ |
| C-140 | expectApproxEqual: float | E-11 (line 109-116, 206-210) | ○ |
| C-141 | expectApproxEqual: struct | E-11 (line 142-146, 233-238) | ○ |
| C-142 | expectApproxEqual: array | E-11 (line 119-129, 212-224) | ○ |
| C-143 | expectApproxEqual: vector | E-11 (line 131-141, 226-231) | ○ |
| C-144 | expectApproxEqual: union | E-11 (line 149-171, 200-210) | ○ |

## 4) 不足情報（Unknown / Missing）
- 該当なし
  - 全てのテストケースは既存のソースコード実装に基づいて定義されている
  - 多くのテストケースは既存のZig testコードを参照している

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースにソースコード根拠あり
- 0: ArrayListCollectionには既存のユニットテストが存在しないが、実装は単純であり、テストケース定義は実装コードから直接導出されている

## 6) レビュアーチェックリスト（最小）
- [ ] CacheTableのエビクションロジックが正しく網羅されているか確認
- [ ] CircBufのラップアラウンド動作が全ケースでカバーされているか確認
- [ ] SplitTreeの複雑な分割・削除シナリオが十分にテストされているか確認
- [ ] BlockingQueueのスレッドセーフ性に関するテストが考慮されているか確認（現在は単一スレッドテストのみ）
- [ ] 境界値テストが各データ構造で適切に定義されているか確認
