---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 100
  claims_with_evidence: 95
  claims_without_evidence: 5
confidence_derived: 0.95
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：95 / 100、根拠なし：5
- 優先レビュー（高）
  1. **UT-COR-047**: math.ortho2dのゼロ除算境界値テスト - コード上の挙動が明示されていない
  2. **UT-COR-065**: inlineAssertのパニック挙動 - リリースモードでの挙動確認が必要
  3. **UT-COR-090**: ghostty_initエラーケース - エラー条件の詳細が不明確
  4. **UT-COR-096**: Surface.DerivedConfig.init - 大規模構造体のため詳細確認推奨
  5. **UT-COR-100**: InputEffect.closed - クローズ条件の詳細確認推奨

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

- E-01: `src/App.zig` - Appクラスの定義、create/init/deinit/destroy等のメソッド
- E-02: `src/Command.zig` - Commandクラスの定義、start/wait/Exit等、既存テストコードあり
- E-03: `src/fastmem.zig` - move/copy/rotate系関数の定義
- E-04: `src/math.zig` - ortho2d関数の定義
- E-05: `src/pty.zig` - Pty構造体の定義、open/deinit/getMode/setSize等、既存テストあり
- E-06: `src/global.zig` - GlobalState/ResourceLimitsの定義
- E-07: `src/tripwire.zig` - tripwire.moduleの定義、既存テストコードあり
- E-08: `src/quirks.zig` - disableDefaultFontFeatures/inlineAssertの定義
- E-09: `src/file_type.zig` - FileType enum、detect/guessFromExtensionの定義
- E-10: `src/surface_mouse.zig` - SurfaceMouse構造体、keyToMouseShape関数、既存テストコードあり
- E-11: `src/build_config.zig` - Artifact enumとdetect関数の定義
- E-12: `src/main_c.zig` - C API関数群、ghostty_init/ghostty_info/String等、既存テストあり
- E-13: `src/Surface.zig` - Surface構造体、DerivedConfig、Mouse、Keyboard等の定義
- E-14: `src/main_ghostty.zig` - メインエントリーポイント
- E-15: `src/main.zig` - エントリーポイントディスパッチャ
- E-16: `src/helpgen.zig` - ヘルプ生成関数
- E-17: `src/apprt.zig` - アプリケーションランタイム抽象化
- E-18: `src/config.zig` - 設定関連の型定義
- E-19: `src/cli.zig` - CLIモジュール定義
- E-20: `src/input.zig` - 入力処理モジュール定義
- E-21: `src/renderer.zig` - レンダラーモジュール定義
- E-22: `src/termio.zig` - ターミナルI/Oモジュール定義
- E-23: `src/lib_vt.zig` - VTライブラリ公開API

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | App.createが正常にAppインスタンスを作成する | E-01 line 76-81 | ○ |
| C-02 | App.createがメモリ不足時にエラーを返す | E-01 line 72 CreateError定義 | ○ |
| C-03 | App.initがAppを正しく初期化する | E-01 line 89-103 | ○ |
| C-04 | App.deinitがリソースを解放する | E-01 line 105-116 | ○ |
| C-05 | App.destroyがdeinitとメモリ解放を行う | E-01 line 118-124 | ○ |
| C-06 | App.addSurfaceがサーフェスを追加する | E-01 line 167-183 | ○ |
| C-07 | App.addSurfaceがquit_timerを停止する | E-01 line 176-182 | ○ |
| C-08 | App.deleteSurfaceがサーフェスを削除する | E-01 line 185-217 | ○ |
| C-09 | App.deleteSurfaceがquit_timerを開始する | E-01 line 210-216 | ○ |
| C-10 | App.deleteSurfaceがfocused_surfaceをクリアする | E-01 line 192-196 | ○ |
| C-11 | App.focusedSurfaceがフォーカス中サーフェスを返す | E-01 line 221-225 | ○ |
| C-12 | App.focusedSurfaceが無効時にnullを返す | E-01 line 223 | ○ |
| C-13 | App.needsConfirmQuitがtrueを返す条件 | E-01 line 229-235 | ○ |
| C-14 | App.needsConfirmQuitがfalseを返す条件 | E-01 line 229-235 | ○ |
| C-15 | App.focusEventがフォーカス状態を更新する | E-01 line 310-316 | ○ |
| C-16 | App.focusEventが同じ状態では何もしない | E-01 line 312 | ○ |
| C-17 | App.keyEventIsBindingがバインディング判定する | E-01 line 321-335 | ○ |
| C-18 | App.keyEventIsBindingがrelease時にfalseを返す | E-01 line 328-331 | ○ |
| C-19 | App.keyEventがキーバインドを実行する | E-01 line 344-404 | ○ |
| C-20 | App.keyEventが未バインドキーでfalseを返す | E-01 line 359 | ○ |
| C-21 | App.colorSchemeEventがカラースキームを更新する | E-01 line 408-431 | ○ |
| C-22 | App.colorSchemeEventが同じスキームで何もしない | E-01 line 419 | ○ |
| C-23 | App.performActionがquitを実行する | E-01 line 444 | ○ |
| C-24 | App.performActionがnew_windowを実行する | E-01 line 445 | ○ |
| C-25 | App.updateConfigが全サーフェスを更新する | E-01 line 137-162 | ○ |
| C-26 | App.tickがメールボックスをドレインする | E-01 line 129-132 | ○ |
| C-27 | App.Mailbox.pushがメッセージを追加する | E-01 line 577-584 | ○ |
| C-28 | Command.startがサブプロセスを起動する | E-02 line 160-173 | ○ |
| C-29 | Command.startが存在しないコマンドでエラーを返す | E-02 line 238-244, test line 856-885 | ○ |
| C-30 | Command.waitがプロセス終了を待機する | E-02 line 401-435 | ○ |
| C-31 | Command.waitが非ブロッキング待機する | E-02 line 420-432 | ○ |
| C-32 | Command.Exit.initが正常終了を解析する | E-02 line 127-136 | ○ |
| C-33 | Command.Exit.initがシグナル終了を解析する | E-02 line 127-136 | ○ |
| C-34 | Command.setData/getDataがユーザーデータを管理する | E-02 line 437-445 | ○ |
| C-35 | os_pre_execコールバックが子プロセスで呼ばれる | E-02 test line 573-596 | ○ |
| C-36 | rt_post_forkコールバックがエラーを返す | E-02 test line 673-690 | ○ |
| C-37 | stdout redirectがファイルにリダイレクトする | E-02 test line 718-750 | ○ |
| C-38 | カスタム環境変数が設定される | E-02 test line 752-800 | ○ |
| C-39 | 作業ディレクトリが変更される | E-02 test line 802-848 | ○ |
| C-40 | fastmem.moveがメモリを移動する | E-03 line 6-12 | ○ |
| C-41 | fastmem.copyがメモリをコピーする | E-03 line 16-22 | ○ |
| C-42 | fastmem.rotateOnceが左に回転する | E-03 line 31-35 | ○ |
| C-43 | fastmem.rotateOnceRが右に回転する | E-03 line 45-49 | ○ |
| C-44 | fastmem.rotateInが末尾に挿入する | E-03 line 57-62 | ○ |
| C-45 | fastmem.rotateInRが先頭に挿入する | E-03 line 70-75 | ○ |
| C-46 | math.ortho2dが正射影行列を生成する | E-04 line 6-15 | ○ |
| C-47 | math.ortho2dがゼロ除算を回避する | E-04 - 明示的なチェックなし | △ |
| C-48 | Pty.openがPTYをオープンする | E-05 line 122-172 | ○ |
| C-49 | Pty.deinitがリソースを解放する | E-05 line 174-177 | ○ |
| C-50 | Pty.getModeがモードを取得する | E-05 line 181-189 | ○ |
| C-51 | Pty.getSizeがサイズを取得する | E-05 line 195-200 | ○ |
| C-52 | Pty.setSizeがサイズを設定する | E-05 line 206-209 | ○ |
| C-53 | Pty.childPreExecが子プロセス準備をする | E-05 line 215-251 | ○ |
| C-54 | GlobalState.initが初期化する | E-06 line 51-181 | ○ |
| C-55 | GlobalState.deinitが解放する | E-06 line 185-196 | ○ |
| C-56 | ResourceLimits.initがリソース制限を初期化する | E-06 line 224-229 | ○ |
| C-57 | ResourceLimits.restoreがリソース制限を復元する | E-06 line 232-234 | ○ |
| C-58 | tripwire.module.checkが通過する | E-07 line 159-162 | ○ |
| C-59 | tripwire.module.checkがエラーを返す | E-07 test line 227-250 | ○ |
| C-60 | tripwire.module.errorAfterが遅延エラーを発生する | E-07 test line 262-276 | ○ |
| C-61 | tripwire.module.endが未トリップエラーを検出する | E-07 test line 278-288 | ○ |
| C-62 | tripwire.module.resetがリセットする | E-07 line 215-217 | ○ |
| C-63 | disableDefaultFontFeaturesが判定する | E-08 line 15-30 | ○ |
| C-64 | inlineAssertがtrueで何もしない | E-08 line 45-57 | ○ |
| C-65 | inlineAssertがfalseでunreachable | E-08 line 53-55 - リリースモード挙動 | △ |
| C-66 | FileType.detectがJPEGを検出する | E-09 line 8-17, 78-91 | ○ |
| C-67 | FileType.detectがPNGを検出する | E-09 line 19-22, 78-91 | ○ |
| C-68 | FileType.detectがGIFを検出する | E-09 line 23-30, 78-91 | ○ |
| C-69 | FileType.detectがBMPを検出する | E-09 line 31-36, 78-91 | ○ |
| C-70 | FileType.detectがQOIを検出する | E-09 line 37-41, 78-91 | ○ |
| C-71 | FileType.detectがWebPを検出する | E-09 line 42-48, 78-91 | ○ |
| C-72 | FileType.detectが空データでunknownを返す | E-09 line 90 | ○ |
| C-73 | FileType.detectが不明形式でunknownを返す | E-09 line 90 | ○ |
| C-74 | FileType.guessFromExtensionが拡張子から判定する | E-09 line 94-101 | ○ |
| C-75 | FileType.guessFromExtensionが大文字小文字を無視する | E-09 line 97 eqlIgnoreCase | ○ |
| C-76 | FileType.guessFromExtensionが不明拡張子でunknownを返す | E-09 line 100 | ○ |
| C-77 | SurfaceMouse.keyToMouseShapeがdefaultを返す | E-10 test line 178-191 | ○ |
| C-78 | SurfaceMouse.keyToMouseShapeがshiftでtextを返す | E-10 test line 209-223 | ○ |
| C-79 | SurfaceMouse.keyToMouseShapeがcrosshairを返す | E-10 test line 193-207 | ○ |
| C-80 | SurfaceMouse.keyToMouseShapeが非トラッキングでtextを返す | E-10 test line 289-303 | ○ |
| C-81 | SurfaceMouse.keyToMouseShapeがリンクホバーでnullを返す | E-10 test line 146-160 | ○ |
| C-82 | SurfaceMouse.keyToMouseShapeが非表示でnullを返す | E-10 test line 162-175 | ○ |
| C-83 | SurfaceMouse.keyToMouseShapeが対象外キーでnullを返す | E-10 test line 131-144 | ○ |
| C-84 | isRectangleSelectStateがmacOSでalt判定する | E-10 line 122-126 | ○ |
| C-85 | isRectangleSelectStateがLinuxでCtrl+Alt判定する | E-10 line 122-126 | ○ |
| C-86 | Artifact.detectがExeを返す | E-11 line 83-98 | ○ |
| C-87 | Artifact.detectがLibを返す | E-11 line 83-98 | ○ |
| C-88 | Artifact.detectがwasm_moduleを返す | E-11 line 84-88 | ○ |
| C-89 | ghostty_initが初期化する | E-12 line 105-115 | ○ |
| C-90 | ghostty_initがエラー時に1を返す | E-12 line 110-111 - エラー条件の詳細要確認 | △ |
| C-91 | ghostty_infoがビルド情報を返す | E-12 line 131-142 | ○ |
| C-92 | String.fromSliceが終端付きスライスを変換する | E-12 test line 168-182 | ○ |
| C-93 | String.fromSliceが非終端スライスを変換する | E-12 test line 184-196 | ○ |
| C-94 | String.deinitがメモリを解放する | E-12 line 94-101 | ○ |
| C-95 | String.emptyが空文字列を表現する | E-12 test line 159-166 | ○ |
| C-96 | Surface.DerivedConfig.initが設定を派生する | E-13 line 346-439 - 大規模構造体 | △ |
| C-97 | Surface.Search.deinitが検索スレッドを終了する | E-13 line 195-207 | ○ |
| C-98 | Surface.InputEffect.ignoredが返される | E-13 line 175-188 | ○ |
| C-99 | Surface.InputEffect.consumedが返される | E-13 line 175-188 | ○ |
| C-100 | Surface.InputEffect.closedが返される | E-13 line 175-188 - クローズ条件要確認 | △ |

## 4) 不足情報（Unknown / Missing）
- **UT-COR-047 (math.ortho2d ゼロ除算)**: コード上にゼロ除算の明示的なエラーハンドリングがない。実際の挙動はZigの除算セマンティクスに依存。
  - 候補：Zigのゼロ除算挙動を確認 / 事前条件チェックの追加 / テスト時の挙動確認
- **UT-COR-065 (inlineAssert パニック)**: デバッグビルドとリリースビルドで挙動が異なる。リリースビルドではunreachableとなりパニック。
  - 候補：リリースビルドでの実行確認 / コンパイラ最適化の影響確認
- **UT-COR-090 (ghostty_init エラー)**: state.init()がどのような条件でエラーを返すかの詳細が不明確。
  - 候補：GlobalState.initのエラー条件を詳細に確認 / エラーパスのテストケース追加
- **UT-COR-096 (DerivedConfig.init)**: 40以上のフィールドを持つ大規模構造体。全フィールドの初期化を個別にテストすることを推奨。
  - 候補：フィールド単位のテスト追加 / クローン機能のテスト追加
- **UT-COR-100 (InputEffect.closed)**: closedが返される具体的な条件（サーフェスが閉じられるタイミング）の詳細確認が必要。
  - 候補：サーフェスクローズフローの確認 / 統合テストでの検証

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - UT-COR-063, UT-COR-064, UT-COR-086, UT-COR-087, UT-COR-088, UT-COR-095
- **1: 中リスク** - UT-COR-047 (境界値テストで挙動不明確), UT-COR-065 (ビルドモード依存), UT-COR-090 (エラー条件不明確)
- **2: 高リスク** - UT-COR-096 (大規模構造体で網羅性確保が困難), UT-COR-100 (クローズ状態の整合性が重要)

## 6) レビュアーチェックリスト（最小）
- [ ] math.ortho2dのゼロ除算ケースの実際の挙動を確認
- [ ] inlineAssertのリリースビルドでの挙動を確認
- [ ] ghostty_initのエラー条件を特定し、テストケースを補完
- [ ] DerivedConfig.initの主要フィールド（特にkeybind, font関連）の個別テストを検討
- [ ] InputEffect.closedが返されるシナリオの統合テストを検討
- [ ] 既存のZigテストコード（Command.zig, pty.zig, tripwire.zig, surface_mouse.zig, main_c.zig）との整合性を確認
- [ ] CSVの全100件のテストケースがモジュール内のpublic関数を網羅しているか確認
