---
generated_at: 2026-03-01 20:30:00
metrics:
  claims_total: 80
  claims_with_evidence: 76
  claims_without_evidence: 4
confidence_derived: 0.95
---

# 根拠レポート：lib.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：76 / 80、根拠なし：4
- 優先レビュー（高）
  1. **UT-LIB-059**：allocOpaqueのメモリ不足時の挙動は実行時依存
  2. **UT-LIB-064**：allocU8Arrayのメモリ不足時の挙動は実行時依存
  3. **UT-LIB-069**：allocU16Arrayのメモリ不足時の挙動は実行時依存
  4. **UT-LIB-073**：allocU8のメモリ不足時の挙動は実行時依存

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

- E-01: `src/lib/main.zig` - メインモジュールファイル、エクスポート定義
- E-02: `src/lib/allocator.zig` - アロケータ実装（265行）
- E-03: `src/lib/target.zig` - ターゲット定義（7行）
- E-04: `src/lib/enum.zig` - Enum生成関数（146行）
- E-05: `src/lib/types.zig` - String型定義（14行）
- E-06: `src/lib/struct.zig` - Struct生成関数（32行）
- E-07: `src/lib/union.zig` - TaggedUnion生成関数（172行）
- E-08: `src/lib/allocator/convenience.zig` - 便利関数（60行）
- E-09: `src/lib/allocator.zig:242-249` - c allocatorテスト
- E-10: `src/lib/allocator.zig:251-264` - fba allocatorテスト
- E-11: `src/lib/enum.zig:62-67` - zig enumテスト
- E-12: `src/lib/enum.zig:69-74` - c enumテスト
- E-13: `src/lib/enum.zig:76-93` - abi by removing a keyテスト
- E-14: `src/lib/union.zig:134-146` - TaggedUnion matching sizeテスト
- E-15: `src/lib/union.zig:148-159` - TaggedUnion padded sizeテスト
- E-16: `src/lib/union.zig:161-171` - TaggedUnion c conversionテスト

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

### allocator.zig関連（UT-LIB-001〜021）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | default関数がCアロケータ指定時にそれを使用 | E-02（22-24行） | ○ |
| C-02 | テスト環境でnull指定時にtest_allocator返却 | E-02（26-27行） | ○ |
| C-03 | libc環境でnull指定時にc_allocator返却 | E-02（29-32行） | ○ |
| C-04 | Wasm環境でnull指定時にwasm_allocator返却 | E-02（34-35行） | ○ |
| C-05 | その他環境でnull指定時にsmp_allocator返却 | E-02（37-39行） | ○ |
| C-06 | fromZig関数でZig→C変換 | E-02（68-73行） | ○ |
| C-07 | zig関数でC→Zig変換 | E-02（78-83行） | ○ |
| C-08 | alloc関数でメモリ割り当て | E-02（85-98行） | ○ |
| C-09 | alloc失敗時にnull返却 | E-02（90行、戻り値型?[*]u8） | ○ |
| C-10 | resize関数でメモリリサイズ | E-02（100-116行） | ○ |
| C-11 | resize失敗時にfalse返却 | E-02（106行、戻り値型bool） | ○ |
| C-12 | remap関数でメモリリマップ | E-02（118-134行） | ○ |
| C-13 | remap失敗時にnull返却 | E-02（124行、戻り値型?[*]u8） | ○ |
| C-14 | free関数でメモリ解放 | E-02（136-150行） | ○ |
| C-15 | ZigAllocator.alloc | E-02（163-176行） | ○ |
| C-16 | ZigAllocator.resize | E-02（178-194行） | ○ |
| C-17 | ZigAllocator.remap | E-02（196-212行） | ○ |
| C-18 | ZigAllocator.free | E-02（214-228行） | ○ |
| C-19 | c_allocator定数 | E-02（232行） | ○ |
| C-20 | test_allocator定数（テスト環境） | E-02（237-240行） | ○ |
| C-21 | test_allocator非テスト環境でエラー | E-02（238行@compileError） | ○ |

### enum.zig関連（UT-LIB-022〜033）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | Zigターゲットで最小タグ型enum | E-04（51-54行）、E-11 | ○ |
| C-23 | Cターゲットでc_intタグ型enum | E-04（51-54行）、E-12 | ○ |
| C-24 | nullキーがZigでスキップ | E-04（28-39行）、E-13（87-92行） | ○ |
| C-25 | nullキーがCでホール保持 | E-04（28-39行）、E-13（78-84行） | ○ |
| C-26 | 空キー配列での動作 | E-04（24-47行、ループ処理） | ○ |
| C-27 | 1キーでのenum生成 | E-04（53行IntFittingRange） | ○ |
| C-28 | 全nullキーでの動作 | E-04（28-39行） | ○ |
| C-29 | checkGhosttyHEnum成功 | E-04（98-145行） | ○ |
| C-30 | checkGhosttyHEnum不一致エラー | E-04（127-130行） | ○ |
| C-31 | checkGhosttyHEnum欠落検出 | E-04（136-144行） | ○ |
| C-32 | 非enumタイプチェック | E-04（101行） | ○ |
| C-33 | c_int以外タグ型チェック | E-04（102行） | ○ |

### types.zig関連（UT-LIB-034〜037）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-34 | []u8からString初期化 | E-05（5-12行） | ○ |
| C-35 | []const u8からString初期化 | E-05（5-12行） | ○ |
| C-36 | 空スライスからString初期化 | E-05（5-12行、スライス処理） | ○ |
| C-37 | 1文字スライスからString初期化 | E-05（5-12行） | ○ |

### struct.zig関連（UT-LIB-038〜043）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-38 | Zigターゲットでstruct透過 | E-06（8-9行） | ○ |
| C-39 | Cターゲットでextern struct | E-06（10-29行） | ○ |
| C-40 | フィールド名保持 | E-06（14-15行） | ○ |
| C-41 | フィールド型保持 | E-06（16行） | ○ |
| C-42 | デフォルト値保持 | E-06（17行） | ○ |
| C-43 | 空構造体処理 | E-06（11行、fields.len=0のケース） | ○ |

### union.zig関連（UT-LIB-044〜055）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-44 | ZigターゲットTaggedUnion生成 | E-07（27-131行） | ○ |
| C-45 | CターゲットC ABI TaggedUnion | E-07（47-53行）、E-14 | ○ |
| C-46 | CValueサイズがPaddingと一致 | E-07（33-36行）、E-14、E-15 | ○ |
| C-47 | サイズ不一致コンパイルエラー | E-07（33-36行@compileError） | ○ |
| C-48 | cval変換 | E-07（99-119行）、E-16 | ○ |
| C-49 | ネスト型cval呼び出し | E-07（105-108行） | ○ |
| C-50 | Value関数でタグ対応型取得 | E-07（122-130行） | ○ |
| C-51 | 別タグ値型取得 | E-07（122-130行） | ○ |
| C-52 | Zigターゲット時C空構造体 | E-07（47-48行） | ○ |
| C-53 | Cターゲット時Cがextern struct | E-07（49-53行） | ○ |
| C-54 | _paddingフィールド追加 | E-07（84-88行） | ○ |
| C-55 | カスタムC型変換 | E-07（69-75行） | ○ |

### target.zig関連（UT-LIB-056〜057）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-56 | Target.c設定 | E-03（3-6行） | ○ |
| C-57 | Target.zig設定 | E-03（3-6行） | ○ |

### convenience.zig関連（UT-LIB-058〜079）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-58 | allocOpaqueでopaque割り当て | E-08（19-21行） | ○ |
| C-59 | allocOpaqueメモリ不足時null | E-08（20行catch return null） | △ |
| C-60 | freeOpaqueでopaque解放 | E-08（23-25行） | ○ |
| C-61 | freeOpaqueでnull安全 | E-08（24行if条件） | ○ |
| C-62 | allocU8Arrayでu8配列割り当て | E-08（27-30行） | ○ |
| C-63 | allocU8Arrayで空配列 | E-08（27-30行） | ○ |
| C-64 | allocU8Arrayメモリ不足時null | E-08（28行catch return null） | △ |
| C-65 | freeU8Arrayでu8配列解放 | E-08（32-34行） | ○ |
| C-66 | freeU8Arrayでnull安全 | E-08（33行if条件） | ○ |
| C-67 | allocU16Arrayでu16配列割り当て | E-08（36-39行） | ○ |
| C-68 | allocU16Arrayで空配列 | E-08（36-39行） | ○ |
| C-69 | allocU16Arrayメモリ不足時null | E-08（37行catch return null） | △ |
| C-70 | freeU16Arrayでu16配列解放 | E-08（41-43行） | ○ |
| C-71 | freeU16Arrayでnull安全 | E-08（42行if条件） | ○ |
| C-72 | allocU8でu8割り当て | E-08（45-47行） | ○ |
| C-73 | allocU8メモリ不足時null | E-08（46行catch return null） | △ |
| C-74 | freeU8でu8解放 | E-08（49-51行） | ○ |
| C-75 | freeU8でnull安全 | E-08（50行if条件） | ○ |
| C-76 | allocUsizeでusize割り当て | E-08（53-55行） | ○ |
| C-77 | allocUsizeメモリ不足時null | E-08（54行catch return null） | ○ |
| C-78 | freeUsizeでusize解放 | E-08（57-59行） | ○ |
| C-79 | freeUsizeでnull安全 | E-08（58行if条件） | ○ |

### main.zig関連（UT-LIB-080）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-80 | refAllDeclsテスト | E-01（14-16行） | ○ |

## 4) 不足情報（Unknown / Missing）
- **メモリ不足時の挙動テスト（C-59, C-64, C-69, C-73）**
  - コード上は `catch return null` でエラーハンドリングされているが、実際のメモリ不足状態を再現するテストは実行時依存
  - 候補：モックアロケータの導入 / メモリ制限テスト環境の構築 / ファジングテスト

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: Target, String - 単純なデータ構造のため
- **1（中リスク）**: Enum, Struct, TaggedUnion - C ABI互換性に関わるため手動レビュー推奨
- **2（高リスク）**: Allocator関連 - メモリ管理に直結するため重点レビュー必須

## 6) レビュアーチェックリスト（最小）
- [ ] Allocatorのalloc/resize/remap/free関数が正しくvtableを呼び出しているか
- [ ] ZigAllocatorのC ABI callconvが正しく設定されているか
- [ ] Enum関数のホール処理がCターゲットでABI互換性を保っているか
- [ ] TaggedUnionのCValueサイズがPaddingと一致する制約が正しく機能しているか
- [ ] convenience.zigの各関数がnullポインタを安全に処理しているか
- [ ] 既存のZigテスト（allocator.zig:242-264, enum.zig:62-93, union.zig:134-171）がパスしているか
