---
generated_at: 2026-02-22 17:00:00
metrics:
  claims_total: 198
  claims_with_evidence: 190
  claims_without_evidence: 8
confidence_derived: 0.96
---

# 根拠レポート：unix-fs 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：190 / 198、根拠なし：8
- 優先レビュー（高）
  1. **C-034, C-035（uv__fs_statx）**：Linux固有のstatxシステムコールに関するテスト。非Linux環境では検証不可
  2. **C-073, C-074（uv__fs_fsync macOS）**：macOS固有のF_FULLFSYNC/F_BARRIERFSYNCに関するテスト。macOS環境でのみ検証可能
  3. **C-154（uv__fs_futime非サポート環境）**：futimens非サポートプラットフォームの動作確認
  4. **C-085, C-086（sendfile_emulフォールバック）**：特殊なI/O状態でのフォールバック動作

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

- E-01: `src/unix/fs.c` - Unix FSメイン実装（2306行）
- E-02: `src/unix/fsevents.c` - macOS FSEventsイベント実装（907行）
- E-03: `src/unix/no-fsevents.c` - FSEvents非サポート環境スタブ（43行）
- E-04: `src/unix/internal.h` - Unix内部ヘッダ（マクロ定義、UV__PATH_MAX等）
- E-05: `docs/code-to-docs/単体テストケース一覧/plan.md` - テスト計画（モジュール定義）
- E-06: INITマクロ定義（fs.c L90-104） - リクエスト初期化、NULLチェック
- E-07: PATHマクロ定義（fs.c L106-117） - パス複製処理
- E-08: PATH2マクロ定義（fs.c L119-137） - 2パス複製処理
- E-09: POSTマクロ定義（fs.c L139-155） - 同期/非同期ディスパッチ
- E-10: `uv__fs_work`関数（fs.c L1681-1750） - FSタイプディスパッチャ
- E-11: `uv__fs_done`関数（fs.c L1753-1765） - 非同期完了コールバック
- E-12: `uv_fs_req_cleanup`関数（fs.c L2241-2271） - リソース解放
- E-13: `uv__fs_to_timespec`関数（fs.c L216-232） - 時刻変換（INF/NaN処理）
- E-14: `uv__fs_copyfile`関数（fs.c L1227-1433） - ファイルコピー実装
- E-15: `uv__fs_sendfile_emul`関数（fs.c L831-942） - sendfileエミュレーション
- E-16: `uv__fs_mkstemp`関数（fs.c L290-359） - 一時ファイル作成
- E-17: `uv__preadv_or_pwritev_emul`関数（fs.c L391-428） - preadv/pwritevエミュレーション
- E-18: `uv__fsevents_init`関数（fsevents.c L791-862） - FSEventsハンドル初期化
- E-19: `uv__fsevents_close`関数（fsevents.c L866-904） - FSEventsハンドルクローズ
- E-20: `uv__fsevents_event_cb`関数（fsevents.c L215-324） - FSEventsコールバック
- E-21: `uv__fsevents_global_init`関数（fsevents.c L503-576） - グローバル初期化

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

### fs.c - 公開API関数（uv_fs_*）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | uv_fs_openの同期モード正常系 | E-01 (L2001-2015), E-06, E-07, E-09 | ○ |
| C-002 | uv_fs_openの非同期モード正常系 | E-01 (L2001-2015), E-09 | ○ |
| C-003 | uv_fs_openの新規作成モード | E-01 (L2001-2015) | ○ |
| C-004 | uv_fs_openのreq=NULL検証 | E-06 (L92-93: req==NULLチェック) | ○ |
| C-005 | uv_fs_openの存在しないパス | E-01 (L362-388: open syscall) | ○ |
| C-006 | uv_fs_openのPATHメモリ確保失敗 | E-07 (L113-114: UV_ENOMEM) | ○ |
| C-007 | uv__fs_openのO_CLOEXECフラグ | E-01 (L362-388: #ifdef O_CLOEXEC) | ○ |
| C-008 | uv_fs_closeの同期モード正常系 | E-01 (L1816-1823), E-06, E-09 | ○ |
| C-009 | uv_fs_closeの非同期モード正常系 | E-01 (L1816-1823) | ○ |
| C-010 | uv__fs_closeの無効fd | E-01 (L158-167: close syscall) | ○ |
| C-011 | uv__fs_closeのEINTR処理 | E-01 (L163-164: EINTR -> rc=0) | ○ |
| C-012 | uv__fs_closeのEINPROGRESS処理 | E-01 (L163-164: EINPROGRESS -> rc=0) | ○ |
| C-013 | uv_fs_readの正常系 | E-01 (L2018-2051), E-01 (L505-556) | ○ |
| C-014 | uv_fs_readのpread | E-01 (L529-530: off >= 0 -> pread) | ○ |
| C-015 | uv_fs_readのreadv | E-01 (L526-527: nbufs > 1 -> readv) | ○ |
| C-016 | uv_fs_readのbufs=NULL | E-01 (L2026-2027: UV_EINVAL) | ○ |
| C-017 | uv_fs_readのnbufs=0 | E-01 (L2026-2027: UV_EINVAL) | ○ |
| C-018 | uv_fs_readのnbufs=1境界値 | E-01 (L524-525: nbufs==1 -> read) | ○ |
| C-019 | uv_fs_readのiovmax超過 | E-01 (L518-520: nbufs>iovmax切り詰め) | ○ |
| C-020 | uv_fs_writeの正常系 | E-01 (L2207-2238), E-01 (L1198-1224) | ○ |
| C-021 | uv_fs_writeのpwrite | E-01 (L1217-1218: off>=0 -> pwrite) | ○ |
| C-022 | uv_fs_writeのwritev | E-01 (L1214-1215: nbufs>1 -> writev) | ○ |
| C-023 | uv_fs_writeのbufs=NULL | E-01 (L2216-2217: UV_EINVAL) | ○ |
| C-024 | uv_fs_writeのnbufs=0 | E-01 (L2216-2217: UV_EINVAL) | ○ |
| C-025 | uv__fs_write_allの全データ書き込み | E-01 (L1635-1678: while loop) | ○ |
| C-026 | uv__fs_write_allの部分書き込みエラー | E-01 (L1656-1659: total==0チェック) | ○ |
| C-027 | uv__fs_write_allのEINTRリトライ | E-01 (L1652-1654: do-while EINTR) | ○ |
| C-028 | uv_fs_statの正常系 | E-01 (L2157-2164), E-01 (L1574-1587) | ○ |
| C-029 | uv_fs_statの存在しないパス | E-01 (L1574-1587: uv__stat失敗) | ○ |
| C-030 | uv_fs_fstatの正常系 | E-01 (L1876-1883), E-01 (L1606-1619) | ○ |
| C-031 | uv_fs_fstatの無効fd | E-01 (L1606-1619: uv__fstat失敗) | ○ |
| C-032 | uv_fs_lstatの正常系 | E-01 (L1938-1945), E-01 (L1590-1603) | ○ |
| C-033 | uv_fs_lstatの通常ファイル | E-01 (L1590-1603) | ○ |
| C-034 | uv__fs_statxの正常系（Linux） | E-01 (L1513-1571: #ifdef __linux__) | △ |
| C-035 | uv__fs_statxの非サポート | E-01 (L1568-1570: return UV_ENOSYS) | △ |
| C-036 | uv__to_statの変換 | E-01 (L1435-1510) | ○ |
| C-037 | uv__to_statのタイムスタンプ | E-01 (L1447-1509: プラットフォーム別) | ○ |
| C-038 | uv_fs_mkdirの正常系 | E-01 (L1962-1974) | ○ |
| C-039 | uv_fs_mkdirのEEXIST | E-01 (L1962-1974: mkdir syscall) | ○ |
| C-040 | uv_fs_rmdirの正常系 | E-01 (L2134-2138) | ○ |
| C-041 | uv_fs_rmdirの存在しないディレクトリ | E-01 (L2134-2138: rmdir syscall) | ○ |
| C-042 | uv_fs_rmdirの非空ディレクトリ | E-01 (L2134-2138: rmdir syscall) | ○ |
| C-043 | uv_fs_unlinkの正常系 | E-01 (L2183-2190) | ○ |
| C-044 | uv_fs_unlinkの存在しないファイル | E-01 (L2183-2190: unlink syscall) | ○ |
| C-045 | uv_fs_renameの正常系 | E-01 (L2120-2131) | ○ |
| C-046 | uv_fs_renameの存在しないソース | E-01 (L2120-2131: rename syscall) | ○ |
| C-047 | uv_fs_chmodの正常系 | E-01 (L1790-1799) | ○ |
| C-048 | uv_fs_chmodの存在しないファイル | E-01 (L1790-1799: chmod syscall) | ○ |
| C-049 | uv_fs_fchmodの正常系 | E-01 (L1826-1835) | ○ |
| C-050 | uv_fs_fchmodの無効fd | E-01 (L1826-1835: fchmod syscall) | ○ |
| C-051 | uv_fs_chownの正常系 | E-01 (L1802-1813) | ○ |
| C-052 | uv_fs_chownの権限不足 | E-01 (L1802-1813: chown syscall) | ○ |
| C-053 | uv_fs_fchownの正常系 | E-01 (L1838-1849) | ○ |
| C-054 | uv_fs_lchownの正常系 | E-01 (L1852-1863) | ○ |
| C-055 | uv_fs_linkの正常系 | E-01 (L1948-1959) | ○ |
| C-056 | uv_fs_linkの存在しないソース | E-01 (L1948-1959: link syscall) | ○ |
| C-057 | uv_fs_symlinkの正常系 | E-01 (L2167-2180) | ○ |
| C-058 | uv_fs_symlinkの既存パス | E-01 (L2167-2180: symlink syscall) | ○ |
| C-059 | uv_fs_readlinkの正常系 | E-01 (L2100-2107), E-01 (L734-791) | ○ |
| C-060 | uv_fs_readlinkの非シンボリックリンク | E-01 (L734-791: readlink syscall) | ○ |
| C-061 | uv__fs_readlinkのバッファリサイズ | E-01 (L780-785: len==maxlenリサイズ) | ○ |
| C-062 | uv_fs_realpathの正常系 | E-01 (L2110-2117), E-01 (L793-829) | ○ |
| C-063 | uv_fs_realpathの存在しないパス | E-01 (L793-829: realpath失敗) | ○ |
| C-064 | uv_fs_accessのF_OK | E-01 (L1778-1787) | ○ |
| C-065 | uv_fs_accessのR_OK | E-01 (L1778-1787: access syscall) | ○ |
| C-066 | uv_fs_accessの存在しないファイル | E-01 (L1778-1787: access syscall) | ○ |
| C-067 | uv_fs_accessのW_OK権限不足 | E-01 (L1778-1787: access syscall) | ○ |
| C-068 | uv_fs_ftruncateの正常系 | E-01 (L1896-1908) | ○ |
| C-069 | uv_fs_ftruncateのサイズ0 | E-01 (L1896-1908: ftruncate syscall) | ○ |
| C-070 | uv_fs_ftruncateのファイル拡張 | E-01 (L1896-1908: ftruncate syscall) | ○ |
| C-071 | uv_fs_fsyncの正常系 | E-01 (L1886-1893), E-01 (L170-191) | ○ |
| C-072 | uv_fs_fdatasyncの正常系 | E-01 (L1866-1873), E-01 (L194-203) | ○ |
| C-073 | uv__fs_fsyncのmacOS F_FULLFSYNC | E-01 (L171-191: #if __APPLE__) | △ |
| C-074 | uv__fs_fsyncのmacOSフォールバック | E-01 (L183-187: r!=0フォールバック) | △ |
| C-075 | uv_fs_utimeの正常系 | E-01 (L2193-2204), E-01 (L1141-1173) | ○ |
| C-076 | uv_fs_futimeの正常系 | E-01 (L1911-1922), E-01 (L236-263) | ○ |
| C-077 | uv_fs_lutimeの正常系 | E-01 (L1924-1935), E-01 (L1176-1195) | ○ |
| C-078 | uv__fs_to_timespecの通常値 | E-13 (L224-225: tv_sec/tv_nsec計算) | ○ |
| C-079 | uv__fs_to_timespecのINFINITY | E-13 (L219-220: UTIME_NOW) | ○ |
| C-080 | uv__fs_to_timespecのNaN | E-13 (L221-222: UTIME_OMIT) | ○ |
| C-081 | uv__fs_to_timespecのナノ秒補正 | E-13 (L227-230: tv_nsec<0補正) | ○ |
| C-082 | uv_fs_sendfileの正常系 | E-01 (L2141-2154), E-01 (L1029-1138) | ○ |
| C-083 | uv_fs_sendfileの無効ソースfd | E-01 (L1029-1138) | ○ |
| C-084 | uv__fs_sendfile_emulの正常系 | E-15 (L831-942) | ○ |
| C-085 | uv__fs_sendfile_emulのpreadフォールバック | E-15 (L892-895: EIO/ESPIPEでuse_pread=0) | △ |
| C-086 | uv__fs_sendfile_emulのEAGAIN poll待機 | E-15 (L913-931: poll() EAGAIN処理) | △ |
| C-087 | uv__fs_sendfile_emulのゼロサイズ | E-15 (L875: for nsent<len) | ○ |
| C-088 | uv_fs_scandirの正常系 | E-01 (L2054-2063), E-01 (L569-592) | ○ |
| C-089 | uv__fs_scandirのフィルタ | E-01 (L559-561: filter関数) | ○ |
| C-090 | uv__fs_scandirのソート | E-01 (L564-566: sort関数) | ○ |
| C-091 | uv__fs_scandirの空ディレクトリ | E-01 (L579-584: n==0処理) | ○ |
| C-092 | uv__fs_scandirの存在しないディレクトリ | E-01 (L585-587: n==-1) | ○ |
| C-093 | uv__fs_scandir_filterの通常ファイル名 | E-01 (L559-561) | ○ |
| C-094 | uv__fs_scandir_filterの"." | E-01 (L560: strcmp "." != 0) | ○ |
| C-095 | uv__fs_scandir_filterの".." | E-01 (L560: strcmp ".." != 0) | ○ |
| C-096 | uv_fs_opendirの正常系 | E-01 (L2065-2072), E-01 (L594-612) | ○ |
| C-097 | uv_fs_opendirの存在しないディレクトリ | E-01 (L601-603: opendir失敗) | ○ |
| C-098 | uv__fs_opendirのメモリ確保失敗 | E-01 (L597-599: uv__malloc NULL) | ○ |
| C-099 | uv_fs_readdirの正常系 | E-01 (L2074-2085), E-01 (L614-658) | ○ |
| C-100 | uv_fs_readdirの特殊エントリスキップ | E-01 (L636: strcmp "." / "..") | ○ |
| C-101 | uv_fs_readdirのdir=NULL | E-01 (L2080-2081: UV_EINVAL) | ○ |
| C-102 | uv_fs_readdirのdir->dir=NULL | E-01 (L2080: dir->dir==NULL) | ○ |
| C-103 | uv_fs_readdirのdir->dirents=NULL | E-01 (L2080: dir->dirents==NULL) | ○ |
| C-104 | uv_fs_closedirの正常系 | E-01 (L2087-2098), E-01 (L660-673) | ○ |
| C-105 | uv_fs_closedirのdir=NULL | E-01 (L2093-2094: UV_EINVAL) | ○ |
| C-106 | uv_fs_mkdtempの正常系 | E-01 (L1977-1986), E-01 (L266-268) | ○ |
| C-107 | uv_fs_mkdtempの不正テンプレート | E-01 (L266-268: mkdtemp syscall) | ○ |
| C-108 | uv_fs_mkdtempのメモリ確保失敗 | E-01 (L1982-1984: UV_ENOMEM) | ○ |
| C-109 | uv_fs_mkstempの正常系 | E-01 (L1989-1998), E-16 | ○ |
| C-110 | uv__fs_mkstempのテンプレート検証 | E-16 (L309-313: pattern比較) | ○ |
| C-111 | uv__fs_mkstempの短テンプレート | E-16 (L309: path_length < pattern_size) | ○ |
| C-112 | uv__fs_mkstempのmkstempフォールバック | E-16 (L337-353: mkstemp fallback) | ○ |
| C-113 | uv_fs_copyfileの正常系 | E-01 (L2274-2291), E-14 | ○ |
| C-114 | uv_fs_copyfileのEXCL成功 | E-14 (L1260-1261: O_EXCL) | ○ |
| C-115 | uv_fs_copyfileのEXCL失敗 | E-14 (L1260-1261: O_EXCL) | ○ |
| C-116 | uv_fs_copyfileの不正フラグ | E-01 (L2282-2286: flag検証) | ○ |
| C-117 | uv__fs_copyfileのメタデータ保持 | E-14 (L1314-1357: futimens/fchmod/fchown) | ○ |
| C-118 | uv__fs_copyfileの同一ファイル検出 | E-14 (L1279-1289: dev/ino比較) | ○ |
| C-119 | uv__fs_copyfileの存在しないソース | E-14 (L1246-1250: srcfd<0) | ○ |
| C-120 | uv__fs_copyfileのエラー時クリーンアップ | E-14 (L1421-1425: uv_fs_unlink) | ○ |
| C-121 | uv_fs_statfsの正常系 | E-01 (L2294-2301), E-01 (L675-721) | ○ |
| C-122 | uv__fs_statfsのフィールド設定 | E-01 (L706-719: フィールド代入) | ○ |
| C-123 | uv__fs_statfsのメモリ確保失敗 | E-01 (L692-696: ENOMEM) | ○ |
| C-124 | uv__fs_statfsの存在しないパス | E-01 (L684-690: statfs失敗) | ○ |
| C-125 | uv__fs_pathmax_sizeの正常系 | E-01 (L723-732) | ○ |
| C-126 | uv__fs_pathmax_sizeのフォールバック | E-01 (L728-729: pathmax==-1) | ○ |
| C-127 | uv_fs_req_cleanupの正常系 | E-12 (L2241-2271) | ○ |
| C-128 | uv_fs_req_cleanupのNULLセーフ | E-12 (L2242-2243: req==NULL return) | ○ |
| C-129 | uv_fs_req_cleanupの同期モード | E-12 (L2250-2253: cb!=NULL条件) | ○ |
| C-130 | uv_fs_req_cleanupのMKDTEMP例外 | E-12 (L2252: MKDTEMP/MKSTEMP例外) | ○ |
| C-131 | uv_fs_req_cleanupのREADDIR | E-12 (L2258-2259: readdir_cleanup) | ○ |
| C-132 | uv_fs_req_cleanupのSCANDIR | E-12 (L2261-2262: scandir_cleanup) | ○ |
| C-133 | uv__fs_workのディスパッチ | E-10 (L1698-1736: switch文) | ○ |
| C-134 | uv__fs_workのEINTRリトライ | E-10 (L1687-1688, L1738: retry_on_eintr) | ○ |
| C-135 | uv__fs_workのCLOSE非リトライ | E-10 (L1687-1688: CLOSE除外) | ○ |
| C-136 | uv__fs_workのREAD非リトライ | E-10 (L1687-1688: READ除外) | ○ |
| C-137 | uv__fs_workのstat結果ポインタ | E-10 (L1745-1749: ptr=&statbuf) | ○ |
| C-138 | uv__fs_workのエラーコード設定 | E-10 (L1740-1741: UV__ERR(errno)) | ○ |
| C-139 | uv__fs_doneのコールバック | E-11 (L1764: req->cb(req)) | ○ |
| C-140 | uv__fs_doneのキャンセル | E-11 (L1759-1762: UV_ECANCELED) | ○ |
| C-141 | uv__fs_postのワーク登録 | E-01 (L1768-1775) | ○ |
| C-142 | uv__fs_buf_offsetの正常系 | E-01 (L1621-1633) | ○ |
| C-143 | uv__fs_buf_offsetのsize=0 | E-01 (L1624: size>0ループ) | ○ |
| C-144 | uv__fs_buf_offsetの全完了 | E-01 (L1624-1625) | ○ |
| C-145 | preadエミュレーション | E-17 (L391-428) | ○ |
| C-146 | pwriteエミュレーション | E-17 (L391-428: is_pread=0) | ○ |
| C-147 | エミュレーションのEINTR | E-17 (L412: while EINTR) | ○ |
| C-148 | エミュレーションの即座エラー | E-17 (L414-418: total>0チェック) | ○ |
| C-149 | エミュレーションの部分成功エラー | E-17 (L414-416: total>0でreturn total) | ○ |
| C-150 | エミュレーションのnbufs=0 | E-17 (L403: i<nbufsループ) | ○ |
| C-151 | uv_fs_get_system_errorの正常系 | E-01 (L2303-2305) | ○ |
| C-152 | uv_fs_get_system_errorの成功時 | E-01 (L2304: -req->result) | ○ |
| C-153 | uv__fs_futimeの正常系 | E-01 (L236-263) | ○ |
| C-154 | uv__fs_futimeの非サポート | E-01 (L259-262: ENOSYS) | △ |
| C-155 | uv__fs_mkdtempの成功 | E-01 (L266-268) | ○ |
| C-156 | uv__fs_mkdtempの失敗 | E-01 (L267: mkdtemp NULL -> -1) | ○ |
| C-157 | uv__fs_fdatasyncの正常系 | E-01 (L194-203: #if __linux__) | ○ |
| C-158 | uv__fs_fdatasyncのmacOS | E-01 (L197-199: #elif __APPLE__) | △ |

### fsevents.c - macOS FSEvents実装

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-159 | uv__fsevents_initの正常系 | E-18 (L791-862) | ○ |
| C-160 | uv__fsevents_initの存在しないパス | E-18 (L801-803: realpath失敗) | ○ |
| C-161 | uv__fsevents_initのメモリ不足 | E-18 (L806-807: uv__strdup NULL) | ○ |
| C-162 | uv__fsevents_closeの正常系 | E-19 (L866-904) | ○ |
| C-163 | uv__fsevents_closeのcf_cb=NULL | E-19 (L870-871: UV_EINVAL) | ○ |
| C-164 | uv__fsevents_loop_deleteの正常系 | E-02 (L671-701) | ○ |
| C-165 | uv__fsevents_loop_deleteのNULL | E-02 (L676-677: cf_state==NULL) | ○ |
| C-166 | uv__fsevents_loop_initの正常系 | E-02 (L580-667) | ○ |
| C-167 | uv__fsevents_loop_initの重複防止 | E-02 (L586-587: cf_state!=NULL -> 0) | ○ |
| C-168 | uv__fsevents_loop_initのグローバル初期化失敗 | E-02 (L589-591: err時return) | ○ |
| C-169 | uv__fsevents_global_initの正常系 | E-21 (L503-576) | ○ |
| C-170 | uv__fsevents_global_initのライブラリロード失敗 | E-21 (L519-525: dlopen失敗) | ○ |
| C-171 | uv__fsevents_global_initの再初期化スキップ | E-21 (L511-512: handle!=NULL -> goto out) | ○ |
| C-172 | uv__fsevents_event_cbのイベント処理 | E-20 (L215-324) | ○ |
| C-173 | uv__fsevents_event_cbのシステムイベントフィルタ | E-20 (L250-251: kFSEventsSystem) | ○ |
| C-174 | uv__fsevents_event_cbのパスフィルタ | E-20 (L260-272: realpath_len比較) | ○ |
| C-175 | uv__fsevents_event_cbのUV_CHANGE | E-20 (L311-314: kFSEventsModified) | ○ |
| C-176 | uv__fsevents_event_cbのUV_RENAME | E-20 (L309: event->events=UV_RENAME) | ○ |
| C-177 | uv__fsevents_event_cbの非再帰フィルタ | E-20 (L297-301: RECURSIVE未設定時) | ○ |
| C-178 | uv__fsevents_push_eventの正常系 | E-02 (L195-211) | ○ |
| C-179 | uv__fsevents_push_eventのエラー伝搬 | E-02 (L206-207: cf_error設定) | ○ |
| C-180 | uv__fsevents_cbの正常系 | E-02 (L183-191) | ○ |
| C-181 | uv__fsevents_cbのクローズ中スキップ | E-02 (L172: uv__is_closing/uv__is_active) | ○ |
| C-182 | uv__fsevents_create_streamの正常系 | E-02 (L328-380) | ○ |
| C-183 | uv__fsevents_create_streamの失敗 | E-02 (L372-376: Start失敗 -> UV_EMFILE) | ○ |
| C-184 | uv__fsevents_destroy_streamの正常系 | E-02 (L384-395) | ○ |
| C-185 | uv__fsevents_destroy_streamのNULL | E-02 (L385-386: NULL -> return) | ○ |
| C-186 | uv__fsevents_rescheduleの正常系 | E-02 (L399-500) | ○ |
| C-187 | uv__fsevents_rescheduleの不要スキップ | E-02 (L420-423: need_reschedule==0) | ○ |
| C-188 | uv__fsevents_rescheduleのエラーブロードキャスト | E-02 (L484-489: 全ハンドルにエラー) | ○ |
| C-189 | uv__fsevents_rescheduleのクローズセマフォ | E-02 (L498-499: sem_post) | ○ |
| C-190 | uv__cf_loop_signalの正常系 | E-02 (L763-787) | ○ |
| C-191 | uv__cf_loop_signalのメモリ不足 | E-02 (L769-771: UV_ENOMEM) | ○ |
| C-192 | uv__cf_loop_runnerの正常系 | E-02 (L705-727) | ○ |
| C-193 | uv__cf_loop_cbのシグナル処理 | E-02 (L731-758) | ○ |
| C-194 | uv__cf_loop_cbの終了シグナル | E-02 (L752-753: handle==NULL -> Stop) | ○ |

### no-fsevents.c - スタブ関数

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-195 | uv_fs_event_initのENOSYS | E-03 (L27-29) | ○ |
| C-196 | uv_fs_event_startのENOSYS | E-03 (L31-34) | ○ |
| C-197 | uv_fs_event_stopのENOSYS | E-03 (L36-38) | ○ |
| C-198 | uv__fs_event_closeのUNREACHABLE | E-03 (L40-42) | ○ |

## 4) 不足情報（Unknown / Missing）
- **プラットフォーム固有の動作検証**：statx（Linux限定）、F_FULLFSYNC（macOS限定）、futimens非サポート環境など、特定プラットフォームでしか検証できないテストケースが存在する
  - 候補：Linux CI環境 / macOS CI環境 / 旧Unix環境
- **sendfile_emulのI/O状態テスト**：preadからreadへのフォールバック（ESPIPE等）やEAGAIN時のpoll待機は、特殊なI/O状態を再現する必要がある
  - 候補：モック / パイプfd / ノンブロッキングソケット
- **fdatasyncのmacOSフォールバック**：macOS環境でfdatasyncがfsyncにフォールバックする動作はmacOS固有
  - 候補：macOS CI環境

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - スタブ関数（no-fsevents.c）のテスト。単純なENOSYS返却のため信頼性高
- 0: 低リスク - 入力バリデーション（NULL/0チェック）のテスト。INITマクロで明確に実装
- 1: 中リスク - プラットフォーム固有分岐のテスト（statx, F_FULLFSYNC等）。実行環境に依存
- 1: 中リスク - FSEvents関連テスト。macOS固有APIの動的ロードに依存
- 1: 中リスク - sendfileエミュレーションのエッジケース。特殊なI/O状態の再現が必要
- 0: 低リスク - ファイルCRUD操作（open/close/read/write/stat）。標準POSIX APIに基づく

## 6) レビュアーチェックリスト（最小）
- [ ] テストケースの網羅性：fs.c内の全公開関数（uv_fs_*）がカバーされているか
- [ ] テストケースの網羅性：fs.c内の全内部関数（uv__fs_*）がカバーされているか
- [ ] テストケースの網羅性：fsevents.c内の主要関数がカバーされているか
- [ ] テストケースの網羅性：no-fsevents.c内の全スタブ関数がカバーされているか
- [ ] プラットフォーム固有テスト（C-034,035,073,074,154,158）が適切なCI環境で実行可能か
- [ ] INITマクロ由来のNULLチェック（C-004等）が全公開APIに一貫して適用されているか
- [ ] 非同期モード（cb!=NULL）と同期モード（cb=NULL）の両方がテストされているか
- [ ] uv_fs_req_cleanupの各fs_type固有のクリーンアップパスが網羅されているか
- [ ] uv__fs_copyfileのエラーハンドリングパス（src open失敗、dst open失敗、コピー中エラー、同一ファイル）が網羅されているか
- [ ] sendfileエミュレーションのフォールバックパス（pread->read、EAGAIN->poll）が実環境で検証可能か
