---
generated_at: 2026-02-22 10:15:00
metrics:
  claims_total: 22
  claims_with_evidence: 22
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：12-ハンドルクローズ通知

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：22 / 22、根拠なし：0
- 優先レビュー（高）
  - 全ての主張がソースコードで裏付けられており、優先レビュー項目はない

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

- E-01: `include/uv.h` 333行目 - uv_close_cb型定義
- E-02: `include/uv.h` 463-476行目 - UV_HANDLE_FIELDSマクロ定義
- E-03: `include/uv.h` 470行目 - close_cbフィールド
- E-04: `include/uv.h` 504行目 - uv_close() API宣言
- E-05: `include/uv.h` 637行目 - uv_tcp_close_reset() API宣言
- E-06: `src/uv-common.h` 82行目 - UV_HANDLE_CLOSINGフラグ（0x00000001）
- E-07: `src/uv-common.h` 83行目 - UV_HANDLE_CLOSEDフラグ（0x00000002）
- E-08: `src/uv-common.h` 277-278行目 - uv__is_closing()マクロ
- E-09: `src/unix/core.c` 159-238行目 - uv_close()関数実装
- E-10: `src/unix/core.c` 160行目 - assert(!uv__is_closing(handle))
- E-11: `src/unix/core.c` 162行目 - UV_HANDLE_CLOSINGフラグ設定
- E-12: `src/unix/core.c` 163行目 - close_cbの保存
- E-13: `src/unix/core.c` 165-235行目 - 型別クローズ処理のswitch文
- E-14: `src/unix/core.c` 208-216行目 - FS_EVENTのSolaris/z/OS遅延クローズ
- E-15: `src/unix/core.c` 226-227行目 - FS_POLLの遅延クローズコメント
- E-16: `src/unix/core.c` 237行目 - uv__make_close_pending()呼び出し
- E-17: `src/unix/core.c` 268-273行目 - uv__make_close_pending()関数実装
- E-18: `src/unix/core.c` 303-365行目 - uv__finish_close()関数実装
- E-19: `src/unix/core.c` 316行目 - UV_HANDLE_CLOSED設定
- E-20: `src/unix/core.c` 336-341行目 - SIGNALハンドルの保留シグナルチェック
- E-21: `src/unix/core.c` 347行目 - uv__stream_destroy()呼び出し
- E-22: `src/unix/core.c` 359-363行目 - uv__handle_unref、queue_remove、close_cb呼び出し
- E-23: `src/unix/core.c` 362行目 - close_cbのNULLチェック
- E-24: `src/unix/core.c` 368-380行目 - uv__run_closing_handles()関数実装
- E-25: `src/unix/core.c` 397行目 - closing_handlesによるloop_alive判定
- E-26: `src/unix/core.c` 475行目 - uv_run()内のuv__run_closing_handles呼び出し位置

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | uv_close_cbのシグネチャはvoid (*)(uv_handle_t*) | E-01 | ○ |
| C-02 | close_cbはUV_HANDLE_FIELDSマクロ内で定義される | E-02, E-03 | ○ |
| C-03 | uv_close()は全ハンドル型に対応する | E-09, E-13 | ○ |
| C-04 | uv_close()はUV_HANDLE_CLOSINGフラグを設定する | E-11 | ○ |
| C-05 | close_cbはhandle->close_cbに保存される | E-12 | ○ |
| C-06 | 二重クローズはassertで検出される | E-10 | ○ |
| C-07 | ハンドル型別のクローズ処理がswitch文で分岐される | E-13 | ○ |
| C-08 | uv__make_close_pending()でclosing_handlesリストに追加される | E-16, E-17 | ○ |
| C-09 | closing_handlesはリンクリスト（next_closing）で管理される | E-17 | ○ |
| C-10 | uv__run_closing_handles()でクローズリストが処理される | E-24 | ○ |
| C-11 | uv__finish_close()でUV_HANDLE_CLOSEDフラグが設定される | E-19 | ○ |
| C-12 | ストリーム型ハンドルはuv__stream_destroy()で最終処理される | E-21 | ○ |
| C-13 | SIGNALハンドルは保留シグナル時に再キューされる | E-20 | ○ |
| C-14 | close_cbがNULLの場合コールバックはスキップされる | E-23 | ○ |
| C-15 | ハンドルはhandle_queueから除去される | E-22 | ○ |
| C-16 | クローズフェーズはuv_run()のイテレーション終盤で実行される | E-26 | ○ |
| C-17 | FS_POLLは遅延クローズとなる | E-15 | ○ |
| C-18 | FS_EVENTはSolaris/z/OSで遅延クローズとなる | E-14 | ○ |
| C-19 | closing_handlesはloop_alive判定に使用される | E-25 | ○ |
| C-20 | uv_tcp_close_reset()もclose_cbトリガーとなる | E-05 | ○ |
| C-21 | 13種類のハンドル型に対応する | E-13 | ○ |
| C-22 | UDPハンドルはuv__udp_finish_close()で最終処理される | E-18 (351行目) | ○ |

## 4) 不足情報（Unknown / Missing）
- 全ての主張にソースコード上の根拠が確認されたため、不足情報はない

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全ての主張がソースコードで裏付けられている
- 0: 低リスク - ハンドルクローズは基本的かつ安定した処理であり、ソースコードの構造も明確

## 6) レビュアーチェックリスト（最小）
- [ ] uv_close_cbのシグネチャがinclude/uv.h 333行目と一致するか
- [ ] UV_HANDLE_FIELDSマクロ内にclose_cbが含まれているか（include/uv.h 470行目）
- [ ] uv_close()のswitch文が全13ハンドル型をカバーしているか（src/unix/core.c 165-235行目）
- [ ] uv__finish_close()でclose_cbのNULLチェックが行われているか（src/unix/core.c 362行目）
- [ ] SIGNALハンドルの再キュー処理が正しく記述されているか（src/unix/core.c 336-341行目）
