---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 146
  claims_with_evidence: 142
  claims_without_evidence: 4
confidence_derived: 0.97
---

# 根拠レポート: renderer モジュール単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：142 / 146、根拠なし：4
- 優先レビュー（高）
  1. **UT-REN-104〜117 (Metal.zig)**: macOS/iOS固有のテストでプラットフォーム依存あり
  2. **UT-REN-077〜083 (shadertoy.zig)**: シェーダコンパイル関連でglslang/spirv-cross依存
  3. **UT-REN-144〜146 (Thread.zig)**: スレッド関連でxev依存

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

- E-01: `src/renderer/size.zig` - サイズ計算、座標変換ロジック、既存テスト含む
- E-02: `src/renderer/cursor.zig` - カーソルスタイル定義、既存テスト含む
- E-03: `src/renderer/cell.zig` - セル内容管理、既存テスト含む
- E-04: `src/renderer/link.zig` - リンク検出、既存テスト含む
- E-05: `src/renderer/message.zig` - メッセージ定義
- E-06: `src/renderer/image.zig` - 画像レンダリング状態管理
- E-07: `src/renderer/shadertoy.zig` - ShaderToyシェーダ変換、既存テスト含む
- E-08: `src/renderer/backend.zig` - バックエンド選択ロジック
- E-09: `src/renderer/row.zig` - 行レベル判定ロジック
- E-10: `src/renderer/Overlay.zig` - デバッグオーバーレイ描画
- E-11: `src/renderer/State.zig` - レンダラ状態定義
- E-12: `src/renderer/Metal.zig` - Metal API実装
- E-13: `src/renderer/OpenGL.zig` - OpenGL API実装
- E-14: `src/renderer/metal/buffer.zig` - Metal バッファ管理
- E-15: `src/renderer/metal/Texture.zig` - Metal テクスチャ管理
- E-16: `src/renderer/opengl/buffer.zig` - OpenGL バッファ管理
- E-17: `src/renderer/Thread.zig` - レンダラスレッド管理
- E-18: `src/renderer/generic.zig` - 汎用レンダラ実装
- E-19: `src/renderer/Options.zig` - レンダラオプション定義

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

### size.zig 関連 (UT-REN-001〜017)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Size.gridがGridSizeを正しく返す | E-01 (L24-26) | ○ |
| C-02 | Size.terminalがScreenSizeを返す | E-01 (L30-32) | ○ |
| C-03 | Size.balancePaddingがバランスする | E-01 (L37-56) | ○ |
| C-04 | Coordinate.convertがsurface→gridを変換 | E-01 (L93-129, テストL369-396) | ○ |
| C-05 | Coordinate.convertが負座標をクランプ | E-01 (テストL384) | ○ |
| C-06 | GridSize.initが正しく初期化 | E-01 (L223-227) | ○ |
| C-07 | GridSize.updateが端数切り捨て | E-01 (テストL332-346) | ○ |
| C-08 | ScreenSize.subPaddingが減算 | E-01 (L177-182) | ○ |
| C-09 | Padding.balancedがゼロで負にならない | E-01 (テストL305-314) | ○ |

### cursor.zig 関連 (UT-REN-018〜026)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-10 | Style.fromTerminalが変換する | E-02 (L18-25) | ○ |
| C-11 | style関数がフォーカスでhollowを返す | E-02 (L60, テストL84) | ○ |
| C-12 | preeditでblockを返す | E-02 (L50, テストL139-142) | ○ |
| C-13 | password_inputでlockを返す | E-02 (L53) | ○ |
| C-14 | cursor非表示でnullを返す | E-02 (L56, テストL122-126) | ○ |
| C-15 | blink非表示でnullを返す | E-02 (L64, テストL86) | ○ |

### cell.zig 関連 (UT-REN-027〜049)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-16 | Key.CellTypeが型を返す | E-03 (L20-30) | ○ |
| C-17 | Contents.resizeが正しく初期化 | E-03 (L82-130, テストL352-372) | ○ |
| C-18 | Contents.setCursorがblockを先頭に追加 | E-03 (L152-156, テストL397-405) | ○ |
| C-19 | Contents.clearが行をクリア | E-03 (L209-218, テストL418-456) | ○ |
| C-20 | isCoveringがFULL BLOCKを判定 | E-03 (L224-231) | ○ |
| C-21 | constraintWidthがシンボル幅を計算 | E-03 (L253-293, テストL509-680) | ○ |

### link.zig 関連 (UT-REN-050〜057)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | Set.fromConfigがリンク設定を読込 | E-04 (L33-50) | ○ |
| C-23 | Set.renderCellMapがマッチを記録 | E-04 (L58-135, テストL138-189) | ○ |
| C-24 | hoverリンクがホバー時のみマッチ | E-04 (テストL191-266) | ○ |
| C-25 | mods不一致でマッチしない | E-04 (テストL269-322) | ○ |

### message.zig 関連 (UT-REN-058〜059)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-26 | initChangeConfigがメッセージ生成 | E-05 (L81-98) | ○ |
| C-27 | deinitがリソース解放 | E-05 (L100-110) | ○ |

### image.zig 関連 (UT-REN-060〜076)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | State.uploadがpending画像をアップロード | E-06 (L64-91) | ○ |
| C-29 | State.drawがplacements描画 | E-06 (L104-179) | ○ |
| C-30 | Id.zLessThanがソート順を定義 | E-06 (L665-686) | ○ |
| C-31 | Image.markForUnloadが状態遷移 | E-06 (L784-795) | ○ |
| C-32 | Image.Pending.bppがBPP計算 | E-06 (L753-763) | ○ |

### shadertoy.zig 関連 (UT-REN-077〜083)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-33 | glslFromShaderがGLSL生成 | E-07 (L147-152) | ○ |
| C-34 | spirvFromGlslがSPIR-V生成 | E-07 (L155-208, テストL355-365) | ○ |
| C-35 | 無効GLSLでエラー | E-07 (テストL367-381) | ○ |
| C-36 | mslFromSpvがMSL生成 | E-07 (L241-256, テストL383-401) | ○ |

### backend.zig 関連 (UT-REN-084〜086)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-37 | Backend.defaultがmacOSでmetal | E-08 (L20) | ○ |
| C-38 | Backend.defaultがwasmでwebgl | E-08 (L14-18) | ○ |

### row.zig 関連 (UT-REN-087〜090)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-39 | neverExtendBgがpromptでtrue | E-09 (L18-21) | ○ |
| C-40 | neverExtendBgがPowerlineでtrue | E-09 (L40-46) | ○ |

### Overlay.zig 関連 (UT-REN-091〜098)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-41 | Overlay.initが初期化 | E-10 (L81-103) | ○ |
| C-42 | Overlay.pendingImageがPending返却 | E-10 (L110-117) | ○ |
| C-43 | Color.rgbが色定義 | E-10 (L32-38) | ○ |

### State.zig 関連 (UT-REN-099〜103)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-44 | Preedit.widthが幅計算 | E-11 (L69-76) | ○ |
| C-45 | Preedit.rangeが範囲計算 | E-11 (L81-122) | ○ |

### Metal.zig 関連 (UT-REN-104〜117)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-46 | Metal.initがデバイス初期化 | E-12 (L64-156) | ○ |
| C-47 | Metal.surfaceSizeがサイズ取得 | E-12 (L216-233) | ○ |
| C-48 | Metal.initTargetがターゲット作成 | E-12 (L236-250) | ○ |
| C-49 | queryMaxTextureSizeがデバイス能力取得 | E-12 (L442-458) | ○ |
| C-50 | Metal.drawFrameStart/EndがAutorelease管理 | E-12 (L181-193) | ○ |

### OpenGL.zig 関連 (UT-REN-118〜127)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-51 | OpenGL.initが初期化 | E-13 (L51-56) | ○ |
| C-52 | OpenGL.surfaceSizeがビューポート取得 | E-13 (L279-287) | ○ |
| C-53 | OpenGL.presentがブリット | E-13 (L299-331) | ○ |
| C-54 | OpenGL.presentLastTargetが再表示 | E-13 (L334-336) | ○ |

### metal/buffer.zig 関連 (UT-REN-128〜133)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-55 | Buffer.initがバッファ作成 | E-14 (L37-48) | ○ |
| C-56 | Buffer.syncがデータ同期 | E-14 (L75-123) | ○ |
| C-57 | Buffer.syncFromArrayListsが複数同期 | E-14 (L127-183) | ○ |

### metal/Texture.zig 関連 (UT-REN-134〜138)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-58 | Texture.initがテクスチャ作成 | E-15 (L40-83) | ○ |
| C-59 | Texture.replaceRegionが領域更新 | E-15 (L92-117) | ○ |
| C-60 | bppOfがBPP計算 | E-15 (L120-202) | ○ |

### opengl/buffer.zig 関連 (UT-REN-139〜143)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-61 | Buffer.initがバッファ作成 | E-16 (L33-47) | ○ |
| C-62 | Buffer.syncがデータ同期 | E-16 (L76-92) | ○ |
| C-63 | Buffer.syncFromArrayListsが複数同期 | E-16 (L96-124) | ○ |

### Thread.zig 関連 (UT-REN-144〜146)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-64 | Thread.initがスレッド初期化 | E-17 (L125-181) | ○ |
| C-65 | Thread.deinitがリソース解放 | E-17 (L185-196) | ○ |
| C-66 | DerivedConfig.initが設定導出 | E-17 (L115-119) | ○ |

### 根拠不足の項目
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-67 | generic.zig Rendererの全メソッド動作 | E-18 (部分読込のみ) | △ |
| C-68 | WebGL.zig実装の動作 | ソース空 | △ |
| C-69 | metal/shaders.zig動作 | 未読込 | △ |
| C-70 | opengl/shaders.zig動作 | 未読込 | △ |

## 4) 不足情報（Unknown / Missing）
- **generic.zig**: ファイルサイズが大きく部分的にしか読み込めていない。Rendererの主要メソッド（drawFrame, rebuildCells等）の詳細な動作検証が必要
  - 候補：generic.zigの残り部分 / 既存テストファイル
- **WebGL.zig**: ほぼ空のファイルで実装が存在しない（スタブのみ）
  - 候補：将来的な実装待ち / 他のブラウザ向けコード
- **shaders関連**: metal/shaders.zig, opengl/shaders.zigは未読込
  - 候補：シェーダ定義ファイル / シェーダテスト

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: size.zig, cursor.zig, cell.zig, link.zig - 既存テストあり
- **1 (中リスク)**: image.zig, shadertoy.zig, Overlay.zig - 一部ロジック複雑
- **2 (高リスク)**: Metal.zig, OpenGL.zig - プラットフォーム依存、実機テスト必要

## 6) レビュアーチェックリスト（最小）
- [ ] size.zig: 座標変換テスト（UT-REN-004〜007）が既存テストとの整合性確認
- [ ] cursor.zig: パスワードモード（UT-REN-023）の実機動作確認
- [ ] cell.zig: constraintWidth（UT-REN-044〜048）のシンボル判定ロジック確認
- [ ] image.zig: GPU転送（UT-REN-061〜062）の実機テスト
- [ ] shadertoy.zig: シェーダコンパイル（UT-REN-077〜082）の各プラットフォーム動作確認
- [ ] Metal.zig: macOS/iOS固有テスト（UT-REN-104〜117）の実機確認
- [ ] OpenGL.zig: Linux/Windows環境でのGL動作確認（UT-REN-118〜127）
- [ ] generic.zig: 主要レンダリングループの完全なコードレビュー
