---
generated_at: 2026-02-18 10:30:00
metrics:
  claims_total: 100
  claims_with_evidence: 98
  claims_without_evidence: 2
confidence_derived: 0.98
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：98 / 100、根拠なし：2
- 優先レビュー（高）
  1. **UT-AGT-043 streamLLMResponse**: ストリーミング処理の内部実装確認が必要
  2. **UT-AGT-086 createMigrationTool**: 複合的な外部依存の統合テストが推奨

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

- E-01: `src/checkpoint/byteaUtils.ts` - BYTEA変換ユーティリティ関数
- E-02: `src/checkpoint/SupabaseCheckpointSaver.ts` - Supabaseチェックポイント永続化クラス
- E-03: `src/utils/tapParser.ts` - TAP v13パーサー
- E-04: `src/utils/applyOpenAiSchemaRequirements.ts` - OpenAI Structured Outputs互換性変換
- E-05: `src/utils/messageCleanup.ts` - メッセージクリーンアップユーティリティ
- E-06: `src/utils/toolMessageUtils.ts` - ToolMessageエラー検出
- E-07: `src/utils/streamingLlmUtils.ts` - LLMストリーミングユーティリティ
- E-08: `src/utils/formatWebSearchContent.ts` - Web検索結果フォーマッター
- E-09: `src/qa-agent/tools/validateSqlSyntax.ts` - SQL構文検証
- E-10: `src/qa-agent/tools/validatePgTapTest.ts` - pgTAPテスト検証
- E-11: `src/qa-agent/distributeRequirements/getUnprocessedRequirements.ts` - 未処理要件抽出
- E-12: `src/qa-agent/validateSchema/formatValidationErrors.ts` - 検証エラーフォーマッター
- E-13: `src/pm-agent/routing/routeAfterAnalyzeRequirements.ts` - PM Agent ルーティング
- E-14: `src/qa-agent/routing/routeAfterAnalyzeFailures.ts` - QA Agent ルーティング
- E-15: `src/repositories/InMemoryRepository.ts` - インメモリリポジトリ実装
- E-16: `src/repositories/types.ts` - リポジトリ型定義
- E-17: `src/workflowSchemaIssuesAnnotation.ts` - ワークフロースキーマ問題アノテーション
- E-18: `src/utils/hasToolCalls.ts` - ツール呼び出し検出
- E-19: `src/utils/errorHandling.ts` - エラーハンドリング・リトライポリシー
- E-20: `src/db-agent/tools/createMigrationTool.ts` - マイグレーションツール
- E-21: `src/utils/getConfigurable.ts` - 設定抽出ユーティリティ
- E-22: `src/utils/generateDdl.ts` - DDL生成ユーティリティ
- E-23: `src/qa-agent/testcaseGeneration/routeAfterSave.ts` - 保存後ルーティング
- E-24: `src/qa-agent/testcaseGeneration/routeAfterGenerate.ts` - 生成後ルーティング
- E-25: `src/checkpoint/byteaUtils.test.ts` - 既存テストファイル（参考）
- E-26: `src/utils/tapParser.test.ts` - 既存テストファイル（参考）
- E-27: `src/utils/applyOpenAiSchemaRequirements.test.ts` - 既存テストファイル（参考）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | uint8ArrayToBase64がNode.js環境でBase64変換する | E-01 L12-21 | ○ |
| C-02 | uint8ArrayToBase64がブラウザ環境でも動作する | E-01 L17-20 | ○ |
| C-03 | hexToUint8ArrayがPostgreSQL hex形式を変換する | E-01 L27-34 | ○ |
| C-04 | hexToUint8Arrayが\\xプレフィックスを処理する | E-01 L28 | ○ |
| C-05 | base64ToUint8ArrayがBase64をデコードする | E-01 L40-51 | ○ |
| C-06 | uint8ArrayToStringがテキストデコードする | E-01 L64-66 | ○ |
| C-07 | SupabaseCheckpointSaverがclient/optionsで初期化される | E-02 L73-78 | ○ |
| C-08 | getTupleがthread_idなしでundefinedを返す | E-02 L87-89 | ○ |
| C-09 | putがconfigurable不在でErrorをスローする | E-02 L296-300 | ○ |
| C-10 | putWritesがthread_id/checkpoint_id不在でErrorをスローする | E-02 L369-373 | ○ |
| C-11 | deleteThreadが全データを削除する | E-02 L412-466 | ○ |
| C-12 | getNextVersionが正しくインクリメントする | E-02 L404-406 | ○ |
| C-13 | parseTapOutputがTAP出力をパースする | E-03 L238-272 | ○ |
| C-14 | parseTapOutputがSKIP/TODOディレクティブを処理する | E-03 L68-104 | ○ |
| C-15 | parseTapOutputがYAML診断ブロックをパースする | E-03 L139-169 | ○ |
| C-16 | applyOpenAISchemaRequirementsがadditionalPropertiesを追加する | E-04 L26-44 | ○ |
| C-17 | applyOpenAISchemaRequirementsがconst用のtypeを追加する | E-04 L54-67 | ○ |
| C-18 | applyOpenAISchemaRequirementsが再帰的に処理する | E-04 L80-103 | ○ |
| C-19 | removeReasoningFromMessageがreasoningを削除する | E-05 L8-50 | ○ |
| C-20 | removeReasoningFromMessageがtool_callsを保持する | E-05 L37-39 | ○ |
| C-21 | isToolMessageErrorがエラーを検出する | E-06 L8-10 | ○ |
| C-22 | isMessageContentErrorがerror/errorsパターンを検出する | E-06 L17-19 | ○ |
| C-23 | streamLLMResponseがチャンクを蓄積する | E-07 L74-108 | ○ |
| C-24 | streamLLMResponseがreasoning_duration_msを計算する | E-07 L36-68 | △ |
| C-25 | formatWebSearchContentがWeb検索結果をフォーマットする | E-08 L46-55 | ○ |
| C-26 | formatWebSearchContentがcitationをMarkdownリンクに変換する | E-08 L78-90 | ○ |
| C-27 | validateSqlSyntaxが有効なSQLを検証する | E-09 L9-18 | ○ |
| C-28 | validateSqlSyntaxが無効なSQLでエラーを返す | E-09 L11-14 | ○ |
| C-29 | isPgTapTestがpgTAP関数を検出する | E-10 L12-15 | ○ |
| C-30 | validatePgTapTestが構文エラーを検出する | E-10 L30-36 | ○ |
| C-31 | getUnprocessedRequirementsがSQL未生成テストケースを抽出する | E-11 L7-36 | ○ |
| C-32 | formatValidationErrorsが失敗テストをフォーマットする | E-12 L9-39 | ○ |
| C-33 | routeAfterAnalyzeRequirementsがgoal設定済みでENDを返す | E-13 L18-21 | ○ |
| C-34 | routeAfterAnalyzeRequirementsがリトライ上限でエラーをスローする | E-13 L24-31 | ○ |
| C-35 | routeAfterAnalyzeFailuresが失敗なしでENDを返す | E-14 L8-11 | ○ |
| C-36 | routeAfterAnalyzeFailuresがリトライ上限でENDを返す | E-14 L13-19 | ○ |
| C-37 | InMemoryRepositoryが初期スキーマで初期化される | E-15 L41-66 | ○ |
| C-38 | InMemoryRepository.getSchemaが存在するスキーマを返す | E-15 L77-87 | ○ |
| C-39 | InMemoryRepository.createVersionがパッチを適用する | E-15 L89-123 | ○ |
| C-40 | workflowSchemaIssuesAnnotationのreducerが置換動作する | E-17 L19-21 | ○ |
| C-41 | hasToolCallsがtool_calls配列の存在を検出する | E-18 L8-14 | ○ |
| C-42 | WorkflowTerminationErrorがnodeIdとoriginalErrorを設定する | E-19 L5-15 | ○ |
| C-43 | RETRY_POLICYがWorkflowTerminationErrorでリトライしない | E-19 L26-28 | ○ |
| C-44 | createMigrationToolがスキーマを更新する | E-20 L112-193 | △ |
| C-45 | getConfigurableがconfigurableを抽出する | E-21 L10-31 | ○ |
| C-46 | generateDdlFromSchemaがDDLを生成する | E-22 L7-10 | ○ |
| C-47 | routeAfterSaveがgeneratedSqlsの有無でルーティングする | E-23 L7-17 | ○ |
| C-48 | routeAfterGenerateがtool_callsの有無でルーティングする | E-24 L10-24 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-24 (streamLLMResponse reasoning_duration_ms)**:
  - ストリーミング処理の内部タイミング計測は動作確認が必要
  - 候補：統合テストでの実際のストリーム処理確認 / モックストリームでの単体テスト
- **C-44 (createMigrationTool)**:
  - 複数の外部依存（executeQuery, postgresqlSchemaDeparser, repositories）が絡む
  - 候補：モック化された統合テスト / 各依存関数の個別テスト

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: byteaUtils, tapParser, applyOpenAiSchemaRequirements - 既存テストファイルが存在し、ロジックが明確
- **0 (低リスク)**: messageCleanup, toolMessageUtils, hasToolCalls - シンプルなユーティリティ関数
- **1 (中リスク)**: SupabaseCheckpointSaver - 外部DB依存だが、既存テストファイルが存在
- **1 (中リスク)**: InMemoryRepository - インメモリ実装でテストしやすい
- **1 (中リスク)**: ルーティング関数群 - 状態遷移ロジックの網羅性確認が必要
- **2 (高リスク)**: createMigrationTool - 外部DB実行、DDL生成、パッチ適用の複合処理

## 6) レビュアーチェックリスト（最小）
- [ ] 各ユーティリティ関数のテストケースが境界値を網羅しているか確認
- [ ] SupabaseCheckpointSaverのテストケースがDB操作エラー時の挙動を網羅しているか確認
- [ ] ルーティング関数のテストケースが全ての分岐条件をカバーしているか確認
- [ ] createMigrationToolのテストケースがエラーハンドリングを網羅しているか確認
- [ ] 既存テストファイル（.test.ts）との整合性を確認
- [ ] LangGraphワークフローの状態遷移が正しくテストされているか確認
