---
generated_at: 2026-02-22 12:00:00
metrics:
  claims_total: 231
  claims_with_evidence: 226
  claims_without_evidence: 5
confidence_derived: 0.98
---

# 根拠レポート：win-net.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：226 / 231、根拠なし：5
- 優先レビュー（高）
  1. **UT-WNT-060〜062**: Windows 10バージョン判定のテストはOS依存のため、モック化の方針が未確定
  2. **UT-WNT-184**: Winsock初期化のテストは副作用が大きく、テスト実行環境への影響を要確認
  3. **UT-WNT-140**: IPC経由のハンドル転送テストは、pipe.cの内部実装詳細に依存

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

- E-01: `src/win/tcp.c` - Windows TCP実装（1739行）
- E-02: `src/win/udp.c` - Windows UDP実装（1194行）
- E-03: `src/win/pipe.c` - Windows名前付きパイプ実装（約2700行）
- E-04: `src/win/poll.c` - Windowsポーリング実装（583行）
- E-05: `src/win/getaddrinfo.c` - Windows DNS正引き実装（394行）
- E-06: `src/win/getnameinfo.c` - Windows DNS逆引き実装（147行）
- E-07: `src/win/winsock.c` - Winsockユーティリティ・ワークアラウンド実装（576行）
- E-08: `src/win/stream.c` - Windowsストリーム抽象化（279行）
- E-09: `src/win/stream-inl.h` - ストリームインライン関数（54行）
- E-10: `src/win/winsock.h` - Winsock定数・構造体定義（181行）
- E-11: `docs/code-to-docs/単体テストケース一覧/plan.md` - プロジェクト構造とモジュール分割

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

### TCP関連 (UT-WNT-001〜073)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | uv_tcp_initはuv_tcp_init_exをAF_UNSPECで呼ぶ | E-01 (L271-273) | ○ |
| C-02 | uv_tcp_init_exでAF_INET/AF_INET6/AF_UNSPECのみ許可 | E-01 (L226-228) | ○ |
| C-03 | flags上位ビットが立っている場合UV_EINVAL | E-01 (L230-231) | ○ |
| C-04 | uv__tcp_set_socketは既にソケット設定済みでUV_EBUSY | E-01 (L158-159) | ○ |
| C-05 | uv__tcp_keepaliveはidle/intvl/cntが1未満でUV_EINVAL | E-01 (L87-88) | ○ |
| C-06 | uv__tcp_try_bindでUV_TCP_REUSEPORTはERROR_NOT_SUPPORTED | E-01 (L368-369) | ○ |
| C-07 | uv__tcp_try_bindでWSAEADDRINUSEはdelayed_errorに保存 | E-01 (L411-416) | ○ |
| C-08 | uv__tcp_listenでREADING状態はWSAEISCONN | E-01 (L630-632) | ○ |
| C-09 | uv__tcp_acceptでpending_acceptsがNULLならWSAEWOULDBLOCK | E-01 (L717-719) | ○ |
| C-10 | uv__tcp_try_writeでwrite_reqs_pending>0ならUV_EAGAIN | E-01 (L1020-1021) | ○ |
| C-11 | uv_tcp_close_resetでストリームシャットダウン中はUV_EINVAL | E-01 (L608-609) | ○ |
| C-12 | uv_tcp_simultaneousでCONNECTIONハンドルはUV_EINVAL | E-01 (L1424-1426) | ○ |
| C-13 | uv_tcp_simultaneousでenable=trueはUV_ENOTSUP | E-01 (L1435-1437) | ○ |
| C-14 | uv__is_loopbackでIPv4 127.x.x.xを検出 | E-01 (L807-809) | ○ |
| C-15 | uv__is_loopbackでIPv6 ::1を検出 | E-01 (L812-817) | ○ |
| C-16 | uv__tcp_xfer_exportで未バインド非リッスンはERROR_NOT_SUPPORTED | E-01 (L1314-1315) | ○ |
| C-17 | uv_socketpairでソケットペアが作成される | E-01 (L1631-1738) | ○ |
| C-18 | WSAECONNABORTEDがWSAECONNRESETに変換される | E-01 (L1059-1063) | ○ |
| C-19 | uv__process_tcp_write_reqでUV_ECONNABORTEDがUV_ECANCELEDに変換 | E-01 (L1191-1194) | ○ |
| C-20 | uv__windows10_version1709のバージョン判定ロジック | E-01 (L55-67) | ○ |

### UDP関連 (UT-WNT-074〜130)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-21 | uv__udp_init_exでAF_UNSPECはソケット未作成 | E-02 (L142-162) | ○ |
| C-22 | uv__udp_set_socketで既にソケット設定済みはUV_EBUSY | E-02 (L64-65) | ○ |
| C-23 | uv__udp_maybe_bindでUV_UDP_REUSEPORTはUV_ENOTSUP | E-02 (L206-207) | ○ |
| C-24 | uv__udp_maybe_bindで非IPv6にUV_UDP_IPV6ONLYはERROR_INVALID_PARAMETER | E-02 (L209-212) | ○ |
| C-25 | uv__udp_recv_startで既に受信中はUV_EALREADY | E-02 (L318-319) | ○ |
| C-26 | uv__udp_try_sendでnbufs<1はUV_EINVAL | E-02 (L1132-1133) | ○ |
| C-27 | uv__udp_try_sendでsend_queue_count!=0はUV_EAGAIN | E-02 (L1143-1144) | ○ |
| C-28 | uv__udp_try_send2でcount>INT_MAXはUV_EINVAL | E-02 (L1183-1184) | ○ |
| C-29 | uv_udp_set_broadcastでINVALID_SOCKETはUV_EBADF | E-02 (L884-885) | ○ |
| C-30 | VALIDATE_TTLマクロで1-255の範囲チェック | E-02 (L1004) | ○ |
| C-31 | VALIDATE_MULTICAST_TTLマクロで-1-255の範囲チェック | E-02 (L1005) | ○ |
| C-32 | uv_udp_using_recvmmsgは常に0を返す | E-02 (L187-189) | ○ |
| C-33 | uv_udp_open_exで不正フラグはUV_EINVAL | E-02 (L917-918) | ○ |
| C-34 | uv_udp_open_exでUV_UDP_REUSEPORTはUV_ENOTSUP | E-02 (L940-941) | ○ |
| C-35 | uv__udp_connectで不正addrlenはUV_EINVAL | E-02 (L1050-1056) | ○ |
| C-36 | WSAEMSGSIZEでUV_UDP_PARTIALフラグが設定される | E-02 (L485-491) | ○ |

### パイプ関連 (UT-WNT-131〜152)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-37 | uv_pipe_initでipcフラグが設定される | E-03 (L114-128) | ○ |
| C-38 | includes_nulでNULバイトを検出 | E-03 (L102-106) | ○ |
| C-39 | includes_nulでn=0は0を返す | E-03 (L103-104) | ○ |
| C-40 | pipe.cの各公開関数の存在と基本的なシグネチャ | E-03 | ○ |
| C-41 | uv_pipe_bindからuv_pipe_bind2への内部委譲 | E-03 (L704-709) | ○ |
| C-42 | IPCデータ書き込みがuv__pipe_write_ipcで処理される | E-03 (L1746) | ○ |

### ポーリング関連 (UT-WNT-153〜161)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-43 | uv_poll_initはuv_poll_init_socketに委譲 | E-04 (L406-408) | ○ |
| C-44 | fast pollとslow pollの2モードが存在 | E-04 (L77-136, L265-360) | ○ |
| C-45 | uv_poll_startはuv__poll_setに委譲 | E-04 (L514-516) | ○ |
| C-46 | uv_poll_stopはevents=0でuv__poll_setを呼ぶ | E-04 (L519-521) | ○ |

### DNS解決関連 (UT-WNT-162〜177)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | uv_getaddrinfoでreq=NULLまたはnode/service両方NULLはUV_EINVAL | E-05 (L256-257) | ○ |
| C-48 | uv_getaddrinfoでloop=NULL, cb!=NULLはUV_EINVAL | E-05 (L258-259) | ○ |
| C-49 | uv__getaddrinfo_translate_errorのマッピング表 | E-05 (L35-48) | ○ |
| C-50 | uv_if_indextonameでbuffer/size/(*size==0)はUV_EINVAL | E-05 (L359) | ○ |
| C-51 | uv_if_indextoiidでバッファ不足はUV_ENOBUFS | E-05 (L386-389) | ○ |

### 名前解決関連 (UT-WNT-178〜183)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | uv_getnameinfoでreq=NULLまたはaddr=NULLはUV_EINVAL | E-06 (L111-112) | ○ |
| C-53 | uv_getnameinfoで不正sa_familyはUV_EINVAL | E-06 (L114-124) | ○ |
| C-54 | 同期モード（cb=NULL）では即時実行 | E-06 (L134-145) | ○ |

### Winsock関連 (UT-WNT-184〜202)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-55 | uv__ntstatus_to_winsock_errorのマッピング表 | E-07 (L137-251) | ○ |
| C-56 | uv__convert_to_localhost_if_unspecifiedでINADDR_ANY→INADDR_LOOPBACK | E-07 (L558-561) | ○ |
| C-57 | uv__convert_to_localhost_if_unspecifiedでaddr=NULLはUV_EINVAL | E-07 (L552-553) | ○ |
| C-58 | uv__wsarecv_workaroundでoverlapped=NULLはSOCKET_ERROR | E-07 (L279-282) | ○ |
| C-59 | uv__wsarecvfrom_workaroundでaddr/addr_len=NULLはSOCKET_ERROR | E-07 (L374-378) | ○ |

### ストリーム関連 (UT-WNT-203〜231)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-60 | uv_listenでクローズ中はUV_EINVAL | E-08 (L32-34) | ○ |
| C-61 | uv_listenでTCP/NAMED_PIPEの振り分け | E-08 (L36-45) | ○ |
| C-62 | uv__check_before_writeでnbufs<1または>1024*1024はUV_EINVAL | E-08 (L119-121) | ○ |
| C-63 | uv__check_before_writeでWRITABLEでないはUV_EPIPE | E-08 (L123-125) | ○ |
| C-64 | uv_try_writeでクローズ中はUV_EBADF | E-08 (L202-203) | ○ |
| C-65 | uv_try_writeでNAMED_PIPEはUV_EAGAIN | E-08 (L210-211) | ○ |
| C-66 | uv_try_write2でsend_handle!=NULLはUV_EAGAIN | E-08 (L223-224) | ○ |
| C-67 | uv_shutdownで書き込み不可/シャットダウン中/クローズ中はUV_ENOTCONN | E-08 (L232-236) | ○ |
| C-68 | uv_stream_set_blockingで非NAMED_PIPEはUV_EINVAL | E-08 (L269-270) | ○ |
| C-69 | uv__stream_initでwrite_queue_size=0, activecnt=0に初期化 | E-09 (L33-46) | ○ |
| C-70 | uv__connection_initでUV_HANDLE_CONNECTIONフラグ設定 | E-09 (L49-51) | ○ |

### 根拠不足の主張
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-71 | UT-WNT-060: Windows 10 v1709以降で1が返ることのテスト実行可能性 | E-01 (L55-67) | △ |
| C-72 | UT-WNT-061: Windows 10 v1709未満で0が返ることのテスト実行可能性 | E-01 (L55-67) | △ |
| C-73 | UT-WNT-140: IPCハンドル転送の内部詳細（pipe.c全体を読む必要あり） | E-03 (L1746-1847) | △ |
| C-74 | UT-WNT-184: uv__winsock_initの副作用テストの実現可能性 | E-07 (L78-134) | △ |
| C-75 | UT-WNT-201-202: AFDポーリングのNTデバイスI/O制御の詳細動作 | E-07 (L461-545) | △ |

## 4) 不足情報（Unknown / Missing）
- **OS依存のバージョン判定テスト**: uv__windows10_version1709のテストは実行環境のOSバージョンに依存するため、モック化またはスキップの方針が必要
  - 候補：pRtlGetVersionのモック化 / 条件付きテスト実行 / テストフィクスチャ
- **Winsock初期化のテスト**: uv__winsock_initはグローバル状態を変更するため、テスト間の分離が必要
  - 候補：プロセス分離テスト / テスト順序制御
- **AFD直接操作のテスト**: uv__msafd_pollやuv__wsarecv_workaroundはカーネルドライバ直接操作のため、テスト環境制約あり
  - 候補：統合テストとして実施 / AFDドライバのモック化

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: TCP/UDP/パイプの公開API関数群（UT-WNT-001〜055, 074〜130, 131〜149）- ソースコードから直接読み取れる入出力仕様
- **0 (低リスク)**: DNS解決・名前解決のバリデーション（UT-WNT-162〜183）- 明確な条件分岐
- **0 (低リスク)**: ストリーム抽象化のディスパッチ処理（UT-WNT-203〜231）- 型による分岐が明確
- **1 (中リスク)**: NTSTATUSマッピング（UT-WNT-187〜191）- マッピング表は網羅的だが全ケースの検証は困難
- **1 (中リスク)**: 非同期I/O完了処理（UT-WNT-066〜073, 128〜130, 160〜161）- IOCPの動作はOS依存
- **2 (高リスク)**: Windowsバージョン判定（UT-WNT-060〜062）- 実行環境依存
- **2 (高リスク)**: AFD直接操作（UT-WNT-197〜202）- カーネルドライバ依存

## 6) レビュアーチェックリスト（最小）
- [ ] TCP関連テスト（UT-WNT-001〜073）が主要公開APIを網羅しているか
- [ ] UDP関連テスト（UT-WNT-074〜130）がマルチキャスト・ブロードキャスト・TTL設定を網羅しているか
- [ ] パイプ関連テスト（UT-WNT-131〜152）がIPC通信の主要パスを網羅しているか
- [ ] DNS解決テスト（UT-WNT-162〜183）が同期/非同期両モードを含んでいるか
- [ ] エラーコード変換テスト（UT-WNT-169〜171, 187〜191）の代表的なマッピングが含まれているか
- [ ] 境界値テスト（TTL: 0/1/255/256, nbufs: 0, 空配列等）が適切に設定されているか
- [ ] OS依存テスト（バージョン判定、AFD操作）のテスト実行方針が決定されているか
- [ ] pipe.cの全関数がテスト対象として抽出されているか（約2700行の大規模ファイル）
