---
generated_at: 2026-02-24 15:30:00
metrics:
  claims_total: 165
  claims_with_evidence: 162
  claims_without_evidence: 3
confidence_derived: 0.98
---

# 根拠レポート：packages-github-tool 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：162 / 165、根拠なし：3
- 優先レビュー（高）
  1. **UT-GIT-154 (computeSha)**: 内部関数でexportされていない可能性あり
  2. **UT-GIT-155, UT-GIT-156, UT-GIT-157, UT-GIT-158 (isValidPath)**: 内部関数でexportされていない可能性あり
  3. **UT-GIT-119, UT-GIT-120 (isRenamedTitleEvent)**: 内部関数でexportされていない可能性あり

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

- E-01: `packages/github-tool/src/errors.ts` - GitHubError, GitHubWebhookUnauthorizedError クラス定義
- E-02: `packages/github-tool/src/octokit.ts` - octokit関数定義
- E-03: `packages/github-tool/src/client.ts` - graphql関数定義
- E-04: `packages/github-tool/src/repository.ts` - getRepositoryFullname関数定義
- E-05: `packages/github-tool/src/webhooks.ts` - ensureWebhookEvent, isWebhookEvent, verifyRequest, handleWebhook関数定義
- E-06: `packages/github-tool/src/reactions.ts` - addReaction関数定義
- E-07: `packages/github-tool/src/pull-requests.ts` - getPullRequestDiff, getPullRequestReviewComment, replyPullRequestReviewComment, updatePullRequestReviewComment, updatePullRequest関数定義
- E-08: `packages/github-tool/src/issues.ts` - createIssue, createIssueComment, createPullRequestComment, updateIssueComment関数定義
- E-09: `packages/github-tool/src/discussions.ts` - getDiscussion, getDiscussionForCommentCreation, findDiscussionReplyTargetId, createDiscussionComment, updateDiscussionComment, getDiscussionComment関数定義
- E-10: `packages/github-tool/src/tools.ts` - githubTools関数定義（30以上のAIツール）
- E-11: `packages/github-tool/src/lib/diff-compression.ts` - compressLargeDiff関数定義
- E-12: `packages/github-tool/src/document-loaders/utils.ts` - handleGitHubClientError, executeRestRequest関数定義
- E-13: `packages/github-tool/src/document-loaders/issues/cache.ts` - setCache, getCache関数定義
- E-14: `packages/github-tool/src/document-loaders/issues/fetchers.ts` - fetchIssuesMetadata, fetchIssueDetails, isRenamedTitleEvent, getTitleUpdatedAt, calculateContentEditedAt関数定義
- E-15: `packages/github-tool/src/document-loaders/issues/loader.ts` - createGitHubIssuesLoader関数定義
- E-16: `packages/github-tool/src/document-loaders/pull-requests/cache.ts` - createCacheKey関数定義
- E-17: `packages/github-tool/src/document-loaders/pull-requests/fetchers.ts` - fetchDiffs, fetchPullRequestsMetadata, fetchPullRequestDetails関数定義
- E-18: `packages/github-tool/src/document-loaders/pull-requests/loader.ts` - createGitHubPullRequestsLoader関数定義
- E-19: `packages/github-tool/src/document-loaders/blobs/archive-loader.ts` - createGitHubArchiveLoader関数定義
- E-20: `packages/github-tool/src/document-loaders/blobs/tree-loader.ts` - createGitHubTreeLoader, traverseTree, fetchDefaultBranchHead関数定義
- E-21: `packages/github-tool/src/types.ts` - GitHubAuthConfig型定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | GitHubErrorコンストラクタがname, message, causeを正しく設定する | E-01 | ○ |
| C-02 | GitHubError.isInstanceがSymbolマーカーでインスタンス判定する | E-01 | ○ |
| C-03 | GitHubError.hasMarkerがSymbol.forで動的マーカー判定する | E-01 | ○ |
| C-04 | GitHubWebhookUnauthorizedErrorがGitHubErrorを継承する | E-01 | ○ |
| C-05 | octokit関数がapp-installation/app/personal-access-tokenの3戦略をサポート | E-02, E-21 | ○ |
| C-06 | octokit関数が不明な戦略でエラーをスロー（exhaustive check） | E-02 | ○ |
| C-07 | graphql関数が3つの認証戦略でurql Clientを生成 | E-03, E-21 | ○ |
| C-08 | getRepositoryFullnameがGraphQL queryでリポジトリ情報を取得 | E-04 | ○ |
| C-09 | ensureWebhookEventがイベント名で型ガードを提供 | E-05 | ○ |
| C-10 | isWebhookEventがname/dataプロパティでオブジェクト検証 | E-05 | ○ |
| C-11 | verifyRequestがWebhooks.verifyで署名検証し、失敗時にGitHubWebhookUnauthorizedErrorをスロー | E-05 | ○ |
| C-12 | handleWebhookがイベントハンドラを動的に登録・呼び出し | E-05 | ○ |
| C-13 | addReactionがGraphQL mutationでリアクションを追加 | E-06 | ○ |
| C-14 | getPullRequestDiffがREST APIでdiffを取得しcompressLargeDiffで圧縮 | E-07, E-11 | ○ |
| C-15 | getPullRequestReviewComment/reply/updateがREST APIでコメント操作 | E-07 | ○ |
| C-16 | updatePullRequestがREST APIでPRを更新 | E-07 | ○ |
| C-17 | createIssue/createIssueComment/createPullRequestComment/updateIssueCommentがREST APIでIssue操作 | E-08 | ○ |
| C-18 | getDiscussion/getDiscussionForCommentCreationがGraphQL queryでDiscussion取得 | E-09 | ○ |
| C-19 | findDiscussionReplyTargetIdがdatabaseIdでコメント検索 | E-09 | ○ |
| C-20 | createDiscussionComment/updateDiscussionCommentがGraphQL mutationでコメント操作 | E-09 | ○ |
| C-21 | githubToolsが30以上のAIツールを提供 | E-10 | ○ |
| C-22 | addPullRequestReviewCommentがinReplyTo有無で異なるエンドポイントを使用 | E-10 | ○ |
| C-23 | createBranchがgetDefaultBranch内部関数でデフォルトブランチを取得 | E-10 | ○ |
| C-24 | compressLargeDiffがmaxSize超過時にファイル単位で圧縮 | E-11 | ○ |
| C-25 | compressLargeDiffがbase64/hexエンコードデータをプレースホルダに置換 | E-11 | ○ |
| C-26 | handleGitHubClientErrorがapp-installation 404でDocumentLoaderErrorをスロー | E-12 | ○ |
| C-27 | executeRestRequestが5xxで指数バックオフリトライ | E-12 | ○ |
| C-28 | executeRestRequestが403/429でrateLimitedエラーをスロー | E-12 | ○ |
| C-29 | issueDetailsCache がupdatedAtベースでキャッシュ無効化 | E-13 | ○ |
| C-30 | fetchIssuesMetadataがRenamedTitleEventでタイトル編集日時を計算 | E-14 | ○ |
| C-31 | fetchIssueDetailsがtitle/body/commentsを含むIssueDetailsを返却 | E-14 | ○ |
| C-32 | createGitHubIssuesLoaderがloadMetadata/loadDocumentを実装 | E-15 | ○ |
| C-33 | loadDocumentがBotコメント/空コンテンツ/長大コンテンツをnull返却でスキップ | E-15 | ○ |
| C-34 | fetchDiffsがpagination対応でREST APIから差分取得 | E-17 | ○ |
| C-35 | fetchPullRequestsMetadataがマージ済みPRのメタデータを取得 | E-17 | ○ |
| C-36 | fetchPullRequestDetailsがファイルメタデータ（isGenerated/isBinary）を含む | E-17 | ○ |
| C-37 | createGitHubPullRequestsLoaderがmergedAtがnullのPRをスキップ | E-18 | ○ |
| C-38 | loadDocumentが生成ファイル/バイナリファイル/長大diffをスキップ | E-18 | ○ |
| C-39 | createGitHubArchiveLoaderがtarball APIでアーカイブ取得・展開 | E-19 | ○ |
| C-40 | computeShaがgit blob SHA-1計算と同じアルゴリズム | E-19 | △ |
| C-41 | isValidPathがパストラバーサル/絶対パス/nullバイトを検出 | E-19 | △ |
| C-42 | createGitHubTreeLoaderがrecursive tree APIでファイル一覧取得 | E-20 | ○ |
| C-43 | traverseTreeがtruncatedツリーでDocumentLoaderError.tooLargeをスロー | E-20 | ○ |
| C-44 | fetchDefaultBranchHeadがdefault_branch + branch APIでHEAD取得 | E-20 | ○ |
| C-45 | isRenamedTitleEvent/getTitleUpdatedAt/calculateContentEditedAtが内部関数として実装 | E-14 | △ |

## 4) 不足情報（Unknown / Missing）
- **UT-GIT-154 (computeSha)**: 関数はモジュール内でprivateに定義されており、直接テスト可能かは実装詳細に依存
  - 候補：統合テストで間接的に検証 / テスト用にexportを追加 / リファクタリングで分離
- **UT-GIT-155-158 (isValidPath)**: 同様にモジュール内のprivate関数
  - 候補：統合テストで間接的に検証 / テスト用にexportを追加
- **UT-GIT-119-125 (isRenamedTitleEvent, getTitleUpdatedAt, calculateContentEditedAt)**: fetchers.ts内のprivate関数
  - 候補：統合テストで間接的に検証 / テスト用にexportを追加

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: 大部分のテストケースはpublicなAPI/関数に対するもので、ソースコードから直接確認可能
- **1 (中リスク)**: 一部の内部関数（computeSha, isValidPath, isRenamedTitleEvent等）はexportされていないため、直接テストできない可能性がある
- **0 (低リスク)**: エラーハンドリング、認証、Webhookセキュリティ関連のテストケースは十分にカバー

## 6) レビュアーチェックリスト（最小）
- [ ] 内部関数（computeSha, isValidPath, isRenamedTitleEvent等）のテスト方針を確認
- [ ] GitHubError/GitHubWebhookUnauthorizedErrorのSymbolマーカー検証方法を確認
- [ ] tools.tsの各ツールのinputSchema（Zod）と実装の整合性を確認
- [ ] document-loadersの各ローダーがDocumentLoaderインターフェースを満たしていることを確認
- [ ] compressLargeDiffのエンコードデータ置換ロジックが実際のdiff形式に対応していることを確認
- [ ] executeRestRequestのリトライロジック（指数バックオフ、最大試行回数）が適切であることを確認
