---
generated_at: 2026-03-01 16:00:00
metrics:
  claims_total: 286
  claims_with_evidence: 280
  claims_without_evidence: 6
confidence_derived: 0.98
---

# 根拠レポート：crates_ignore 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：280 / 286、根拠なし：6
- 優先レビュー（高）
  1. **C-119（gitconfig_excludes_path）**：環境依存のため実行時テストの検証が困難
  2. **C-271/C-272（Ignore::add_parents）**：ファイルシステム依存の統合テスト的要素
  3. **C-248/C-249（WalkParallel::threads）**：並列実行のためスレッド自動検出は環境依存
  4. **C-253/C-254（should_skip_entry）**：内部ヘルパー関数で直接テストにはモジュール構造の理解が必要
  5. **C-256/C-257（check_symlink_loop）**：シンボリックリンクのテスト環境が必要

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `crates/ignore/src/lib.rs` - Error enum定義、Match<T> enum定義、PartialErrorBuilder
- E-02: `crates/ignore/src/gitignore.rs` - Glob構造体、Gitignore構造体、GitignoreBuilder、parse_excludes_file、expand_tilde等
- E-03: `crates/ignore/src/walk.rs` - DirEntry、DirEntryInner、DirEntryRaw、WalkBuilder、Walk、WalkParallel、WalkState、skip_filesize、should_skip_entry、check_symlink_loop等
- E-04: `crates/ignore/src/dir.rs` - Ignore、IgnoreBuilder、IgnoreMatch、IgnoreOptions、Parents、create_gitignore、resolve_git_commondir等
- E-05: `crates/ignore/src/types.rs` - FileTypeDef、Types、TypesBuilder、Selection等
- E-06: `crates/ignore/src/overrides.rs` - Override、OverrideBuilder
- E-07: `crates/ignore/src/pathutil.rs` - is_hidden、strip_prefix、is_file_name、file_name
- E-08: `crates/ignore/src/default_types.rs` - DEFAULT_TYPES定数
- E-09: `crates/ignore/src/gitignore.rs` (テストコード #[cfg(test)] mod tests) - ignored!/not_ignored!マクロ、parse_excludes_fileテスト、case_insensitiveテスト
- E-10: `crates/ignore/src/types.rs` (テストコード) - matched!マクロ、test_invalid_defs
- E-11: `crates/ignore/src/overrides.rs` (テストコード) - empty、simple、only_ignores、precedence等のテスト
- E-12: `crates/ignore/src/default_types.rs` (テストコード) - default_types_are_sortedテスト
- E-13: `crates/ignore/src/dir.rs` (テストコード) - IgnoreBuilderのオプション設定テスト

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

### lib.rs - Error enum (C-001 ~ C-031)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | Error::is_partial - Partialでtrue | E-01 (lib.rs:162-170) | ○ |
| C-002 | Error::is_partial - WithLineNumber再帰判定 | E-01 (lib.rs:165) | ○ |
| C-003 | Error::is_partial - WithPath再帰判定 | E-01 (lib.rs:166) | ○ |
| C-004 | Error::is_partial - WithDepth再帰判定 | E-01 (lib.rs:167) | ○ |
| C-005 | Error::is_partial - Ioでfalse | E-01 (lib.rs:168) | ○ |
| C-006 | Error::is_partial - Globでfalse | E-01 (lib.rs:168) | ○ |
| C-007 | Error::is_partial - Loopでfalse | E-01 (lib.rs:168) | ○ |
| C-008 | Error::is_io - Ioでtrue | E-01 (lib.rs:180) | ○ |
| C-009 | Error::is_io - Partial単一Ioでtrue | E-01 (lib.rs:175) | ○ |
| C-010 | Error::is_io - Partial複数でfalse | E-01 (lib.rs:175) | ○ |
| C-011 | Error::is_io - Globでfalse | E-01 (lib.rs:181) | ○ |
| C-012 | Error::io_error - IoでSome | E-01 (lib.rs:220) | ○ |
| C-013 | Error::io_error - WithLineNumber再帰 | E-01 (lib.rs:217) | ○ |
| C-014 | Error::io_error - GlobでNone | E-01 (lib.rs:219) | ○ |
| C-015 | Error::io_error - LoopでNone | E-01 (lib.rs:219) | ○ |
| C-016 | Error::into_io_error - IoでSome | E-01 (lib.rs:245) | ○ |
| C-017 | Error::into_io_error - 1要素Partial内IoでSome | E-01 (lib.rs:240-244) | ○ |
| C-018 | Error::into_io_error - 2要素以上PartialでNone | E-01 (lib.rs:240) | ○ |
| C-019 | Error::depth - WithDepthでSome | E-01 (lib.rs:257) | ○ |
| C-020 | Error::depth - WithPath内WithDepthでSome | E-01 (lib.rs:255) | ○ |
| C-021 | Error::depth - IoでNone | E-01 (lib.rs:258) | ○ |
| C-022 | Error::with_path | E-01 (lib.rs:263-268) | ○ |
| C-023 | Error::with_depth | E-01 (lib.rs:271-276) | ○ |
| C-024 | Error::tagged - パス付き | E-01 (lib.rs:280-289) | ○ |
| C-025 | Error::tagged - 空パス | E-01 (lib.rs:285-287) | ○ |
| C-026 | Error::clone | E-01 (lib.rs:119-153) | ○ |
| C-027 | Error::Display - Partial | E-01 (lib.rs:335-337) | ○ |
| C-028 | Error::Display - WithLineNumber | E-01 (lib.rs:339-341) | ○ |
| C-029 | Error::Display - Loop | E-01 (lib.rs:346-355) | ○ |
| C-030 | Error::from_walkdir | E-01 (lib.rs:292-312) | ○ |
| C-031 | Error::From<io::Error> | E-01 (lib.rs:379-383) | ○ |

### lib.rs - Match<T> enum (C-032 ~ C-049)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-032 | Match::is_none - Noneでtrue | E-01 (lib.rs:443) | ○ |
| C-033 | Match::is_none - Ignoreでfalse | E-01 (lib.rs:445) | ○ |
| C-034 | Match::is_none - Whitelistでfalse | E-01 (lib.rs:445) | ○ |
| C-035 | Match::is_ignore - Ignoreでtrue | E-01 (lib.rs:451-453) | ○ |
| C-036 | Match::is_ignore - Noneでfalse | E-01 (lib.rs:451) | ○ |
| C-037 | Match::is_whitelist - Whitelistでtrue | E-01 (lib.rs:460-462) | ○ |
| C-038 | Match::is_whitelist - Ignoreでfalse | E-01 (lib.rs:460) | ○ |
| C-039 | Match::invert - Ignore->Whitelist | E-01 (lib.rs:470) | ○ |
| C-040 | Match::invert - Whitelist->Ignore | E-01 (lib.rs:471) | ○ |
| C-041 | Match::invert - None->None | E-01 (lib.rs:469) | ○ |
| C-042 | Match::inner - Ignoreの内部値 | E-01 (lib.rs:480) | ○ |
| C-043 | Match::inner - Whitelistの内部値 | E-01 (lib.rs:480) | ○ |
| C-044 | Match::inner - NoneでNone | E-01 (lib.rs:479) | ○ |
| C-045 | Match::map - Ignore変換 | E-01 (lib.rs:491) | ○ |
| C-046 | Match::map - Whitelist変換 | E-01 (lib.rs:491) | ○ |
| C-047 | Match::map - None時 | E-01 (lib.rs:490) | ○ |
| C-048 | Match::or - selfがNone時 | E-01 (lib.rs:498) | ○ |
| C-049 | Match::or - selfが非None時 | E-01 (lib.rs:498) | ○ |

### lib.rs - PartialErrorBuilder (C-050 ~ C-057)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-050 | PartialErrorBuilder::push | E-01 (lib.rs:389-391) | ○ |
| C-051 | PartialErrorBuilder::push_ignore_io - IO無視 | E-01 (lib.rs:393-396) | ○ |
| C-052 | PartialErrorBuilder::push_ignore_io - 非IO追加 | E-01 (lib.rs:393-396) | ○ |
| C-053 | PartialErrorBuilder::maybe_push - Some | E-01 (lib.rs:399-401) | ○ |
| C-054 | PartialErrorBuilder::maybe_push - None | E-01 (lib.rs:399-401) | ○ |
| C-055 | PartialErrorBuilder::into_error_option - 空 | E-01 (lib.rs:412-413) | ○ |
| C-056 | PartialErrorBuilder::into_error_option - 1件 | E-01 (lib.rs:414-415) | ○ |
| C-057 | PartialErrorBuilder::into_error_option - 複数 | E-01 (lib.rs:416-417) | ○ |

### gitignore.rs - Glob (C-058 ~ C-066)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-058 | Glob::from - Some | E-02 (gitignore.rs:47-49) | ○ |
| C-059 | Glob::from - None | E-02 (gitignore.rs:47-49) | ○ |
| C-060 | Glob::original | E-02 (gitignore.rs:52-54) | ○ |
| C-061 | Glob::actual | E-02 (gitignore.rs:58-60) | ○ |
| C-062 | Glob::is_whitelist | E-02 (gitignore.rs:63-65) | ○ |
| C-063 | Glob::is_only_dir | E-02 (gitignore.rs:68-70) | ○ |
| C-064 | Glob::has_doublestar_prefix - **/foo | E-02 (gitignore.rs:73-75) | ○ |
| C-065 | Glob::has_doublestar_prefix - ** | E-02 (gitignore.rs:73-75) | ○ |
| C-066 | Glob::has_doublestar_prefix - 通常glob | E-02 (gitignore.rs:73-75) | ○ |

### gitignore.rs - Gitignore (C-067 ~ C-095)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-067 | Gitignore::new - 正常 | E-02 (gitignore.rs:105-118) | ○ |
| C-068 | Gitignore::new - 部分エラー | E-02 (gitignore.rs:105-118) | ○ |
| C-069 | Gitignore::empty | E-02 (gitignore.rs:140-151) | ○ |
| C-070 | Gitignore::empty::is_empty | E-02 (gitignore.rs:162-164) | ○ |
| C-071 | Gitignore::path | E-02 (gitignore.rs:156-158) | ○ |
| C-072 | Gitignore::is_empty - true | E-02 (gitignore.rs:162-164) | ○ |
| C-073 | Gitignore::is_empty - false | E-02 (gitignore.rs:162-164) | ○ |
| C-074 | Gitignore::len | E-02 (gitignore.rs:168-170) | ○ |
| C-075 | Gitignore::num_ignores | E-02 (gitignore.rs:173-175) | ○ |
| C-076 | Gitignore::num_whitelists | E-02 (gitignore.rs:178-180) | ○ |
| C-077 | Gitignore::matched - Ignore | E-02 (gitignore.rs:193-198), E-09 (ig1-ig44) | ○ |
| C-078 | Gitignore::matched - ディレクトリパターン一致 | E-02 (gitignore.rs:260), E-09 (ig8) | ○ |
| C-079 | Gitignore::matched - ディレクトリパターン不一致 | E-02 (gitignore.rs:260), E-09 (ignot7) | ○ |
| C-080 | Gitignore::matched - Whitelist(!) | E-02, E-09 (ignot6) | ○ |
| C-081 | Gitignore::matched - ** | E-02, E-09 (ig9-ig14) | ○ |
| C-082 | Gitignore::matched - abc/** | E-02, E-09 (ig14) | ○ |
| C-083 | Gitignore::matched - ルート相対一致 | E-02, E-09 (ig5) | ○ |
| C-084 | Gitignore::matched - ルート相対不一致 | E-02, E-09 (ignot4) | ○ |
| C-085 | Gitignore::matched - 空マッチャ | E-02 (gitignore.rs:194-196) | ○ |
| C-086 | Gitignore::matched - ./プレフィックスストリップ | E-02 (gitignore.rs:278-279) | ○ |
| C-087 | Gitignore::matched - \\!エスケープ | E-02 (gitignore.rs:475-477) | ○ |
| C-088 | Gitignore::matched - \\#エスケープ | E-02 (gitignore.rs:475) | ○ |
| C-089 | Gitignore::matched - only_on_files dir | E-02 (gitignore.rs:251-253) | ○ |
| C-090 | Gitignore::matched - only_on_files file | E-02 (gitignore.rs:251-253) | ○ |
| C-091 | Gitignore::matched_path_or_any_parents - 直接 | E-02 (gitignore.rs:221-243) | ○ |
| C-092 | Gitignore::matched_path_or_any_parents - 親 | E-02 (gitignore.rs:236-241) | ○ |
| C-093 | Gitignore::matched_path_or_any_parents - 空 | E-02 (gitignore.rs:226-228) | ○ |
| C-094 | Gitignore::strip - ./ | E-02 (gitignore.rs:278-279) | ○ |
| C-095 | Gitignore::strip - 共通プレフィックス | E-02 (gitignore.rs:289-296) | ○ |

### gitignore.rs - GitignoreBuilder (C-096 ~ C-118)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-096 | GitignoreBuilder::new | E-02 (gitignore.rs:321-332) | ○ |
| C-097 | GitignoreBuilder::new - ./ | E-02 (gitignore.rs:325) | ○ |
| C-098 | GitignoreBuilder::build - 正常 | E-02 (gitignore.rs:337-354) | ○ |
| C-099 | GitignoreBuilder::build - エラー | E-02 (gitignore.rs:340-343) | ○ |
| C-100 | GitignoreBuilder::add - 正常 | E-02 (gitignore.rs:393-425) | ○ |
| C-101 | GitignoreBuilder::add - ファイル不在 | E-02 (gitignore.rs:395-397) | ○ |
| C-102 | GitignoreBuilder::add - BOM | E-02 (gitignore.rs:413-418) | ○ |
| C-103 | GitignoreBuilder::add_line - コメント | E-02 (gitignore.rs:458-459) | ○ |
| C-104 | GitignoreBuilder::add_line - 空行 | E-02 (gitignore.rs:464-466) | ○ |
| C-105 | GitignoreBuilder::add_line - 末尾スペーストリム | E-02 (gitignore.rs:461-462) | ○ |
| C-106 | GitignoreBuilder::add_line - バックスラッシュスペース | E-02 (gitignore.rs:461) | ○ |
| C-107 | GitignoreBuilder::add_line - ! | E-02 (gitignore.rs:479-482) | ○ |
| C-108 | GitignoreBuilder::add_line - /プレフィックス | E-02 (gitignore.rs:483-490) | ○ |
| C-109 | GitignoreBuilder::add_line - 末尾/ | E-02 (gitignore.rs:494-501) | ○ |
| C-110 | GitignoreBuilder::add_line - **/自動付与 | E-02 (gitignore.rs:507-511) | ○ |
| C-111 | GitignoreBuilder::add_line - **/重複防止 | E-02 (gitignore.rs:507) | ○ |
| C-112 | GitignoreBuilder::add_line - /**拡張 | E-02 (gitignore.rs:516-518) | ○ |
| C-113 | GitignoreBuilder::add_line - \\!エスケープ | E-02 (gitignore.rs:475-477) | ○ |
| C-114 | GitignoreBuilder::add_line - \\#エスケープ | E-02 (gitignore.rs:475) | ○ |
| C-115 | GitignoreBuilder::add_line - 末尾\\/エスケープ | E-02 (gitignore.rs:494-501) | ○ |
| C-116 | GitignoreBuilder::case_insensitive | E-02 (gitignore.rs:540-545), E-09 (case_insensitive) | ○ |
| C-117 | GitignoreBuilder::allow_unclosed_class | E-02 (gitignore.rs:551-556) | ○ |
| C-118 | GitignoreBuilder::only_on_files | E-02 (gitignore.rs:569-572) | ○ |

### gitignore.rs - Helper functions (C-119 ~ C-126)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-119 | gitconfig_excludes_path | E-02 (gitignore.rs:578-592) | △ |
| C-120 | parse_excludes_file - 正常 | E-02 (gitignore.rs:648-673), E-09 (parse_excludes_file1) | ○ |
| C-121 | parse_excludes_file - チルダ | E-02, E-09 (parse_excludes_file2) | ○ |
| C-122 | parse_excludes_file - typo | E-02, E-09 (parse_excludes_file3) | ○ |
| C-123 | parse_excludes_file - クォート | E-02, E-09 (parse_excludes_file4) | ○ |
| C-124 | parse_excludes_file - 不正フォーマット | E-02 (gitignore.rs:648-673) | ○ |
| C-125 | expand_tilde - 展開 | E-02 (gitignore.rs:676-682) | ○ |
| C-126 | expand_tilde - 展開不要 | E-02 (gitignore.rs:676-682) | ○ |

### types.rs - FileTypeDef / Types / TypesBuilder (C-127 ~ C-159)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-127 | FileTypeDef::name | E-05 (types.rs:153-155) | ○ |
| C-128 | FileTypeDef::globs | E-05 (types.rs:158-160) | ○ |
| C-129 | Types::empty | E-05 (types.rs:223-232) | ○ |
| C-130 | Types::is_empty | E-05 (types.rs:235-237) | ○ |
| C-131 | Types::len | E-05 (types.rs:240-242) | ○ |
| C-132 | Types::definitions | E-05 (types.rs:245-254) | ○ |
| C-133 | Types::matched - Whitelist | E-05 (types.rs:257-292), E-10 (match1-match11) | ○ |
| C-134 | Types::matched - Ignore | E-05 (types.rs:287-289), E-10 (matchnot1) | ○ |
| C-135 | Types::matched - ディレクトリ | E-05 (types.rs:260-261) | ○ |
| C-136 | Types::matched - negate | E-05 (types.rs:281-283), E-10 (matchnot2) | ○ |
| C-137 | Types::matched - selection/negateなし | E-05 (types.rs:258) | ○ |
| C-138 | Types::matched - ファイル名なしパス | E-05 (types.rs:263-265) | ○ |
| C-139 | TypesBuilder::new | E-05 (types.rs:308-313) | ○ |
| C-140 | TypesBuilder::build - 正常 | E-05 (types.rs:317-358) | ○ |
| C-141 | TypesBuilder::build - 未定義タイプ | E-05 (types.rs:327-330) | ○ |
| C-142 | TypesBuilder::definitions | E-05 (types.rs:363-372) | ○ |
| C-143 | TypesBuilder::select | E-05 (types.rs:377-388) | ○ |
| C-144 | TypesBuilder::select - "all" | E-05 (types.rs:378-382) | ○ |
| C-145 | TypesBuilder::negate | E-05 (types.rs:393-404) | ○ |
| C-146 | TypesBuilder::negate - "all" | E-05 (types.rs:394-398) | ○ |
| C-147 | TypesBuilder::clear | E-05 (types.rs:407-409) | ○ |
| C-148 | TypesBuilder::add - 正常 | E-05 (types.rs:417-431) | ○ |
| C-149 | TypesBuilder::add - 同名タイプ追加 | E-05 (types.rs:417-431) | ○ |
| C-150 | TypesBuilder::add - "all"拒否 | E-05 (types.rs:418) | ○ |
| C-151 | TypesBuilder::add - 非英数字拒否 | E-05 (types.rs:418) | ○ |
| C-152 | TypesBuilder::add_def - name:glob | E-05 (types.rs:442-475) | ○ |
| C-153 | TypesBuilder::add_def - include | E-05 (types.rs:453-472), E-10 (match8, match9) | ○ |
| C-154 | TypesBuilder::add_def - 空名前 | E-05 (types.rs:448-449) | ○ |
| C-155 | TypesBuilder::add_def - 空glob | E-05 (types.rs:448-449) | ○ |
| C-156 | TypesBuilder::add_def - include未定義 | E-05 (types.rs:462), E-10 (test_invalid_defs) | ○ |
| C-157 | TypesBuilder::add_def - 不正中間値 | E-05 (types.rs:456) | ○ |
| C-158 | TypesBuilder::add_def - 空文字列 | E-05 (types.rs:473), E-10 (test_invalid_defs) | ○ |
| C-159 | TypesBuilder::add_defaults | E-05 (types.rs:478-488) | ○ |

### overrides.rs - Override / OverrideBuilder (C-160 ~ C-175)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-160 | Override::empty | E-06 (overrides.rs:51-53), E-11 (empty) | ○ |
| C-161 | Override::is_empty | E-06 (overrides.rs:65-67) | ○ |
| C-162 | Override::path | E-06 (overrides.rs:58-60) | ○ |
| C-163 | Override::num_ignores - 意味反転 | E-06 (overrides.rs:70-72) | ○ |
| C-164 | Override::num_whitelists - 意味反転 | E-06 (overrides.rs:75-77) | ○ |
| C-165 | Override::matched - Whitelist | E-06 (overrides.rs:97-106), E-11 (simple) | ○ |
| C-166 | Override::matched - Ignore不一致 | E-06 (overrides.rs:102-103), E-11 (simple) | ○ |
| C-167 | Override::matched - !パターンでIgnore | E-06, E-11 (simple, only_ignores) | ○ |
| C-168 | Override::matched - 空Override | E-06 (overrides.rs:98-100), E-11 (empty) | ○ |
| C-169 | Override::matched - ディレクトリNone | E-06 (overrides.rs:102), E-11 (allow_directories) | ○ |
| C-170 | Override::matched - ディレクトリWhitelist | E-06, E-11 | ○ |
| C-171 | OverrideBuilder::new | E-06 (overrides.rs:119-123) | ○ |
| C-172 | OverrideBuilder::build | E-06 (overrides.rs:128-130) | ○ |
| C-173 | OverrideBuilder::add | E-06 (overrides.rs:138-141) | ○ |
| C-174 | OverrideBuilder::case_insensitive | E-06 (overrides.rs:149-154), E-11 (case_insensitive) | ○ |
| C-175 | OverrideBuilder::allow_unclosed_class | E-06 (overrides.rs:160-163) | ○ |

### pathutil.rs (C-176 ~ C-188)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-176 | is_hidden - ドットファイルでtrue | E-07 (pathutil.rs:11-18) | ○ |
| C-177 | is_hidden - 通常ファイルでfalse | E-07 (pathutil.rs:11-18) | ○ |
| C-178 | is_hidden - ファイル名なしでfalse | E-07 (pathutil.rs:12) | ○ |
| C-179 | strip_prefix - 正常除去 | E-07 (pathutil.rs:63-76) | ○ |
| C-180 | strip_prefix - 不一致 | E-07 (pathutil.rs:71) | ○ |
| C-181 | strip_prefix - プレフィックス超過 | E-07 (pathutil.rs:71) | ○ |
| C-182 | is_file_name - ファイル名のみ | E-07 (pathutil.rs:92-99) | ○ |
| C-183 | is_file_name - パス含む | E-07 (pathutil.rs:92-99) | ○ |
| C-184 | file_name - 正常 | E-07 (pathutil.rs:116-132) | ○ |
| C-185 | file_name - ファイル名のみ | E-07 (pathutil.rs:116-132) | ○ |
| C-186 | file_name - 空パス | E-07 (pathutil.rs:121) | ○ |
| C-187 | file_name - ドット | E-07 (pathutil.rs:123) | ○ |
| C-188 | file_name - ドットドット | E-07 (pathutil.rs:127) | ○ |

### default_types.rs (C-189)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-189 | DEFAULT_TYPES - ソート順 | E-08, E-12 (default_types_are_sorted) | ○ |

### walk.rs - DirEntry (C-190 ~ C-203)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-190 | DirEntry::path | E-03 (walk.rs:37-39) | ○ |
| C-191 | DirEntry::into_path | E-03 (walk.rs:43-45) | ○ |
| C-192 | DirEntry::path_is_symlink - symlink | E-03 (walk.rs:48-50) | ○ |
| C-193 | DirEntry::path_is_symlink - 通常 | E-03 (walk.rs:48-50) | ○ |
| C-194 | DirEntry::is_stdin - stdin | E-03 (walk.rs:55-57, 173-178) | ○ |
| C-195 | DirEntry::is_stdin - 通常 | E-03 (walk.rs:55-57) | ○ |
| C-196 | DirEntry::metadata - 正常 | E-03 (walk.rs:60-62, 180-195) | ○ |
| C-197 | DirEntry::metadata - stdinエラー | E-03 (walk.rs:183-188) | ○ |
| C-198 | DirEntry::file_type - 正常 | E-03 (walk.rs:67-69, 197-204) | ○ |
| C-199 | DirEntry::file_type - stdinでNone | E-03 (walk.rs:200) | ○ |
| C-200 | DirEntry::file_name | E-03 (walk.rs:75-77, 206-213) | ○ |
| C-201 | DirEntry::depth | E-03 (walk.rs:80-82, 215-222) | ○ |
| C-202 | DirEntry::error - Some | E-03 (walk.rs:97-99) | ○ |
| C-203 | DirEntry::error - None | E-03 (walk.rs:97-99) | ○ |

### walk.rs - WalkBuilder (C-204 ~ C-235)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-204 | WalkBuilder::new | E-03 (walk.rs:546-561) | ○ |
| C-205 | WalkBuilder::build | E-03 (walk.rs:564-613) | ○ |
| C-206 | WalkBuilder::build_parallel | E-03 (walk.rs:620-637) | ○ |
| C-207 | WalkBuilder::add | E-03 (walk.rs:644-647) | ○ |
| C-208 | WalkBuilder::max_depth - 設定 | E-03 (walk.rs:652-658) | ○ |
| C-209 | WalkBuilder::max_depth - min_depth補正 | E-03 (walk.rs:654-656) | ○ |
| C-210 | WalkBuilder::min_depth - 設定 | E-03 (walk.rs:663-669) | ○ |
| C-211 | WalkBuilder::min_depth - max_depth補正 | E-03 (walk.rs:665-667) | ○ |
| C-212 | WalkBuilder::follow_links | E-03 (walk.rs:672-675) | ○ |
| C-213 | WalkBuilder::max_filesize | E-03 (walk.rs:678-681) | ○ |
| C-214 | WalkBuilder::threads | E-03 (walk.rs:689-692) | ○ |
| C-215 | WalkBuilder::add_ignore - 正常 | E-03 (walk.rs:707-730) | ○ |
| C-216 | WalkBuilder::add_gitignore | E-03 (walk.rs:733-735) | ○ |
| C-217 | WalkBuilder::add_custom_ignore_filename | E-03 (walk.rs:738-741) | ○ |
| C-218 | WalkBuilder::overrides | E-03 (walk.rs:756-759) | ○ |
| C-219 | WalkBuilder::types | E-03 (walk.rs:766-769) | ○ |
| C-220 | WalkBuilder::standard_filters - 有効化 | E-03 (walk.rs:785-792) | ○ |
| C-221 | WalkBuilder::standard_filters - 無効化 | E-03 (walk.rs:785-792) | ○ |
| C-222 | WalkBuilder::hidden | E-03 (walk.rs:797-800) | ○ |
| C-223 | WalkBuilder::parents | E-03 (walk.rs:805-808) | ○ |
| C-224 | WalkBuilder::ignore | E-03 (walk.rs:813-816) | ○ |
| C-225 | WalkBuilder::git_global | E-03 (walk.rs:821-824) | ○ |
| C-226 | WalkBuilder::git_ignore | E-03 (walk.rs:844-847) | ○ |
| C-227 | WalkBuilder::git_exclude | E-03 (walk.rs:852-855) | ○ |
| C-228 | WalkBuilder::require_git | E-03 (walk.rs:870-873) | ○ |
| C-229 | WalkBuilder::ignore_case_insensitive | E-03 (walk.rs:878-881) | ○ |
| C-230 | WalkBuilder::sort_by_file_path | E-03 (walk.rs:896-902) | ○ |
| C-231 | WalkBuilder::sort_by_file_name | E-03 (walk.rs:915-921) | ○ |
| C-232 | WalkBuilder::same_file_system | E-03 (walk.rs:931-934) | ○ |
| C-233 | WalkBuilder::skip_stdout | E-03 (walk.rs:937-946) | ○ |
| C-234 | WalkBuilder::filter_entry | E-03 (walk.rs:969-975) | ○ |
| C-235 | WalkBuilder::current_dir | E-03 (walk.rs:978-981) | ○ |

### walk.rs - Walk / WalkState (C-236 ~ C-247)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-236 | Walk::new | E-03 (walk.rs:1043-1045) | ○ |
| C-237 | Walk::next - 正常 | E-03 (walk.rs:1084-1155) | ○ |
| C-238 | Walk::next - gitignoreスキップ | E-03 (walk.rs:1060-1061) | ○ |
| C-239 | Walk::next - stdinエントリ | E-03 (walk.rs:1095-1097) | ○ |
| C-240 | Walk::next - 終端 | E-03 (walk.rs:1084-1155) | ○ |
| C-241 | Walk::skip_entry - depth 0 | E-03 (walk.rs:1050-1061) | ○ |
| C-242 | Walk::skip_entry - ignore | E-03 (walk.rs:1060-1061) | ○ |
| C-243 | Walk::skip_entry - max_filesize | E-03 (walk.rs:1061) | ○ |
| C-244 | WalkState::is_continue - Continue | E-03 (walk.rs:1237-1239) | ○ |
| C-245 | WalkState::is_continue - Skip | E-03 (walk.rs:1237-1239) | ○ |
| C-246 | WalkState::is_quit - Quit | E-03 (walk.rs:1241-1243) | ○ |
| C-247 | WalkState::is_quit - Continue | E-03 (walk.rs:1241-1243) | ○ |

### walk.rs - WalkParallel / helper functions (C-248 ~ C-264)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-248 | WalkParallel::threads - 自動 | E-03 (walk.rs:1420-1428) | △ |
| C-249 | WalkParallel::threads - 明示 | E-03 (walk.rs:1420-1428) | △ |
| C-250 | skip_filesize - 超過 | E-03 (walk.rs:1171-1184) | ○ |
| C-251 | skip_filesize - 以下 | E-03 (walk.rs:1171-1184) | ○ |
| C-252 | skip_filesize - メタデータNone | E-03 (walk.rs:1175) | ○ |
| C-253 | should_skip_entry - ignore対象 | E-03 (walk.rs:1186-1220) | ○ |
| C-254 | should_skip_entry - whitelist対象 | E-03 (walk.rs:1186-1220) | ○ |
| C-255 | should_skip_entry - マッチなし | E-03 (walk.rs:1186-1220) | ○ |
| C-256 | check_symlink_loop - ループ検出 | E-03 (walk.rs:1226-1234) | △ |
| C-257 | check_symlink_loop - ループなし | E-03 (walk.rs:1226-1234) | △ |
| C-258 | DirEntryInner::path - Stdin | E-03 (walk.rs:109-111) | ○ |
| C-259 | DirEntryInner::is_stdin - Stdin | E-03 (walk.rs:128-130) | ○ |
| C-260 | DirEntryInner::file_type - Stdin | E-03 (walk.rs:135-137) | ○ |
| C-261 | DirEntryRaw::path_is_symlink - ty | E-03 (walk.rs:304-306) | ○ |
| C-262 | DirEntryRaw::path_is_symlink - follow_link | E-03 (walk.rs:304-306) | ○ |
| C-263 | DirEntryRaw::file_name - 正常 | E-03 (walk.rs:315-320) | ○ |
| C-264 | DirEntryRaw::file_name - ファイル名なし | E-03 (walk.rs:317-319) | ○ |

### dir.rs - Ignore / IgnoreBuilder (C-265 ~ C-286)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-265 | Ignore::path | E-04 (dir.rs:155-157) | ○ |
| C-266 | Ignore::is_root - 親なし | E-04 (dir.rs:160-162) | ○ |
| C-267 | Ignore::is_root - 親あり | E-04 (dir.rs:160-162) | ○ |
| C-268 | Ignore::is_absolute_parent | E-04 (dir.rs:165-167) | ○ |
| C-269 | Ignore::parent - あり | E-04 (dir.rs:170-175) | ○ |
| C-270 | Ignore::parent - ルート | E-04 (dir.rs:170-175) | ○ |
| C-271 | Ignore::add_parents - 正常 | E-04 (dir.rs:178-233) | △ |
| C-272 | Ignore::add_parents - canonicalize失敗 | E-04 (dir.rs:185-187) | ○ |
| C-273 | Ignore::add_child - 正常 | E-04 (dir.rs:243-246) | ○ |
| C-274 | Ignore::add_child - .gitignore読み込み | E-04 (dir.rs:290-310) | ○ |
| C-275 | Ignore::add_child - .ignore読み込み | E-04 (dir.rs:280-288) | ○ |
| C-276 | Ignore::matched_dir_entry - override優先 | E-04 (dir.rs:376-385) | ○ |
| C-277 | Ignore::matched_dir_entry - hidden | E-04 (dir.rs:355-356) | ○ |
| C-278 | Ignore::matched_dir_entry - hidden=false | E-04 (dir.rs:355-356) | ○ |
| C-279 | Ignore::matched - .ignore > .gitignore | E-04 (dir.rs:509-531) | ○ |
| C-280 | Ignore::matched - types | E-04 (dir.rs:509-531) | ○ |
| C-281 | Ignore::parents イテレータ | E-04 (dir.rs:536-538, 552-563) | ○ |
| C-282 | IgnoreBuilder::new | E-04 (dir.rs:599-618) | ○ |
| C-283 | IgnoreBuilder::build | E-04 (dir.rs:624-671) | ○ |
| C-284 | Selection::is_negated - Select | E-04 (dir.rs:80-82) | ○ |
| C-285 | Selection::is_negated - Negate | E-04 (dir.rs:80-82) | ○ |
| C-286 | Selection::name | E-04 (dir.rs:85-88) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-119（gitconfig_excludes_path）**：この関数は環境変数 `$HOME` や `$XDG_CONFIG_HOME` に依存しており、実際の動作確認には環境の設定が必要。ソースコードからロジックは読み取れるが、テスト時のモック化が必要。
  - 候補：環境変数のモック / テスト用のホームディレクトリ設定 / git設定ファイルのテスト用作成
- **C-248/C-249（WalkParallel::threads）**：並列走査のスレッド数自動検出はCPUコア数に依存するため、テスト環境によって結果が異なる。コードの構造は確認できるが、具体的な期待値の設定が困難。
  - 候補：スレッド数を明示的に指定するテスト / 最低1以上であることの確認
- **C-256/C-257（check_symlink_loop）**：シンボリックリンクのループ検出テストにはファイルシステム上にシンボリックリンクの循環構造が必要。コード構造は確認できるが実環境でのテスト構築が必要。
  - 候補：TempDirを使用したシンボリックリンクの循環構造の構築
- **C-271（Ignore::add_parents）**：ファイルシステムの実パスに依存する（`dunce::canonicalize`を使用）。テスト時にはテスト用ディレクトリ階層が必要。
  - 候補：TempDirを使用したテスト用ディレクトリ階層の構築

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - lib.rs のError/Matchの基本メソッド群（C-001 ~ C-057）: 純粋な列挙型操作で副作用なし
- **0: 低リスク** - pathutil.rs の関数群（C-176 ~ C-188）: Unix/非Unixのcfg切り替えがあるが各プラットフォームでの動作はシンプル
- **0: 低リスク** - default_types.rs（C-189）: 定数定義のソート順検証のみ
- **1: 中リスク** - gitignore.rs のGitignore::matched系（C-077 ~ C-095）: globsetライブラリへの依存があり、パターンマッチの正確性はglobsetの動作に依存
- **1: 中リスク** - types.rs のTypes::matched（C-133 ~ C-138）: select/negateの組み合わせロジックが複雑
- **1: 中リスク** - dir.rs のIgnore::matched_ignore（C-276 ~ C-280）: 6種類のignoreファイル間の優先順位ロジックがCHANGEDで変更されている
- **1: 中リスク** - overrides.rs のOverride::matched（C-165 ~ C-170）: gitignoreの意味反転（inverted semantics）が混乱を招きやすい
- **1: 中リスク** - gitignore.rs のonly_on_files（C-089, C-090, C-118）: CHANGED（カスタム変更）のため元のripgrep実装と異なる動作をする可能性がある
- **2: 高リスク** - walk.rs のWalkParallel（C-248 ~ C-249）: 並列走査のためrace conditionやデッドロックのリスクがある
- **2: 高リスク** - walk.rs のcheck_symlink_loop（C-256 ~ C-257）: ファイルシステムの実構造に依存するためテスト環境構築が困難

## 6) レビュアーチェックリスト（最小）
- [ ] C-089/C-090/C-118: `only_on_files`フラグの動作がCHANGEDコメントと一致しているか確認
- [ ] C-119: `gitconfig_excludes_path`のテストが環境に依存しすぎていないか確認
- [ ] C-165/C-166: Override::matchedの意味反転（gitignoreのIgnore/Whitelistが入れ替わる）が正しく表現されているか確認
- [ ] C-209/C-211: max_depth/min_depthの相互補正ロジックが正しくテストケース化されているか確認
- [ ] C-248/C-249: WalkParallelのスレッド数テストで環境依存性が考慮されているか確認
- [ ] C-256/C-257: check_symlink_loopのテストでシンボリックリンクの循環構造が正しく構築されているか確認
- [ ] C-271: Ignore::add_parentsでdunce::canonicalizeの使用がCHANGEDコメントと整合しているか確認
- [ ] C-279: Ignore::matchedの優先順位がCHANGEDコメントの「ホワイトリストが後のファイルでオーバーライド可能」と一致しているか確認
- [ ] 全般: テストID UT-IGN-001 ~ UT-IGN-286 の全テストケースがCSVフォーマットに準拠しているか確認
- [ ] 全般: pub(crate)のメソッド（Ignore, IgnoreBuilder, create_gitignore等）のテストが内部APIとして適切なカバレッジを持つか確認
