---
generated_at: 2026-02-24 18:00:00
metrics:
  claims_total: 76
  claims_with_evidence: 74
  claims_without_evidence: 2
confidence_derived: 0.97
---

# 根拠レポート：packages-sdk.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：74 / 76、根拠なし：2
- 優先レビュー（高）
  1. **UT-SDK-010（境界値3MB丁度）**：正確な境界値計算の実装詳細確認が必要
  2. **UT-SDK-019（timeoutMs=0の挙動）**：エッジケースの実装詳細確認が必要

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

- E-01: `packages/sdk/src/sdk.ts` - Giselleクラス定義（310-593行）
- E-02: `packages/sdk/src/sdk.ts` - GiselleOptions型定義（9-23行）
- E-03: `packages/sdk/src/sdk.ts` - estimateDecodedBytesFromBase64関数（99-112行）
- E-04: `packages/sdk/src/sdk.ts` - joinPath関数（114-118行）
- E-05: `packages/sdk/src/sdk.ts` - readResponseText関数（120-126行）
- E-06: `packages/sdk/src/sdk.ts` - parseRunResponseJson関数（128-137行）
- E-07: `packages/sdk/src/sdk.ts` - parseUploadFileResponseJson関数（139-169行）
- E-08: `packages/sdk/src/sdk.ts` - parseAppsListResponseJson関数（195-219行）
- E-09: `packages/sdk/src/sdk.ts` - parseTaskResponseJson関数（259-308行）
- E-10: `packages/sdk/src/sdk.ts` - resolveAppName関数（171-193行）
- E-11: `packages/sdk/src/sdk.ts` - #runApp privateメソッド（339-400行）
- E-12: `packages/sdk/src/sdk.ts` - #uploadFile privateメソッド（402-452行）
- E-13: `packages/sdk/src/sdk.ts` - #listApps privateメソッド（454-497行）
- E-14: `packages/sdk/src/sdk.ts` - #getTask privateメソッド（499-552行）
- E-15: `packages/sdk/src/sdk.ts` - #runAppAndWait privateメソッド（554-592行）
- E-16: `packages/sdk/src/sdk.ts` - maxInlineFileDecodedBytes定数（97行）
- E-17: `packages/sdk/src/sdk.ts` - defaultBaseUrl定数（94行）
- E-18: `packages/sdk/src/sdk.ts` - defaultPollIntervalMs定数（95行）
- E-19: `packages/sdk/src/sdk.ts` - defaultTimeoutMs定数（96行）
- E-20: `packages/sdk/src/errors.ts` - GiselleSdkErrorクラス（1-3行）
- E-21: `packages/sdk/src/errors.ts` - ConfigurationErrorクラス（5-7行）
- E-22: `packages/sdk/src/errors.ts` - ApiErrorクラス（9-19行）
- E-23: `packages/sdk/src/errors.ts` - UnsupportedFeatureErrorクラス（21-23行）
- E-24: `packages/sdk/src/errors.ts` - NotImplementedErrorクラス（25-27行）
- E-25: `packages/sdk/src/errors.ts` - TimeoutErrorクラス（29-31行）
- E-26: `packages/sdk/src/sdk.test.ts` - 既存テストコード（全体）
- E-27: `packages/sdk/package.json` - パッケージ設定

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

### Giselleクラス - constructor
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | UT-SDK-001: デフォルト設定でインスタンスが生成されること | E-01, E-02, E-17, E-26 | ○ |
| C-02 | UT-SDK-002: カスタム設定でインスタンスが生成されること | E-01, E-02, E-26 | ○ |
| C-03 | UT-SDK-003: メソッドが利用可能であること | E-01 | ○ |

### Giselleクラス - apps.run
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-04 | UT-SDK-004: 正常なリクエストでtaskIdが返却されること | E-11, E-26 | ○ |
| C-05 | UT-SDK-005: ファイルID参照付きでリクエストが送信されること | E-11, E-26 | ○ |
| C-06 | UT-SDK-006: Base64ファイル付きでリクエストが送信されること | E-11, E-26 | ○ |
| C-07 | UT-SDK-007: apiKeyが未設定の場合ConfigurationError | E-11, E-21, E-26 | ○ |
| C-08 | UT-SDK-008: 不正なBase64でUnsupportedFeatureError | E-03, E-11, E-23 | ○ |
| C-09 | UT-SDK-009: 3MB超Base64でUnsupportedFeatureError | E-03, E-11, E-16, E-26 | ○ |
| C-10 | UT-SDK-010: 3MB丁度のBase64が受け入れられること | E-03, E-16 | △ |
| C-11 | UT-SDK-011: 非200ステータスでApiError | E-11, E-22, E-26 | ○ |
| C-12 | UT-SDK-012: 不正なJSONでApiError | E-11, E-22, E-26 | ○ |
| C-13 | UT-SDK-013: taskId欠損でApiError | E-06, E-11 | ○ |

### Giselleクラス - apps.runAndWait
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-14 | UT-SDK-014: タスク完了まで待機し結果返却 | E-15, E-26 | ○ |
| C-15 | UT-SDK-015: failed状態で終了時も結果返却 | E-15 | ○ |
| C-16 | UT-SDK-016: cancelled状態で終了時も結果返却 | E-15 | ○ |
| C-17 | UT-SDK-017: カスタムpollIntervalMsが適用 | E-15, E-18 | ○ |
| C-18 | UT-SDK-018: タイムアウト時にTimeoutError | E-15, E-25, E-26 | ○ |
| C-19 | UT-SDK-019: timeoutMs=0でも1回ポーリング | E-15 | △ |
| C-20 | UT-SDK-020: 最終取得時にincludeGenerations=1 | E-15, E-26 | ○ |

### Giselleクラス - apps.list
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-21 | UT-SDK-021: アプリ一覧が返却されること | E-13, E-26 | ○ |
| C-22 | UT-SDK-022: workspaceNameがnameとして返却 | E-10, E-13, E-26 | ○ |
| C-23 | UT-SDK-023: workspace.nameがnameとして返却 | E-10, E-13 | ○ |
| C-24 | UT-SDK-024: 名前がない場合Untitled返却 | E-08, E-10, E-26 | ○ |
| C-25 | UT-SDK-025: apiKey未設定でConfigurationError | E-13, E-21, E-26 | ○ |
| C-26 | UT-SDK-026: 非200ステータスでApiError | E-13, E-22 | ○ |
| C-27 | UT-SDK-027: 不正な構造でApiError | E-08, E-13 | ○ |

### Giselleクラス - files.upload
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | UT-SDK-028: ファイルアップロードでUploadFileResult返却 | E-12, E-26 | ○ |
| C-29 | UT-SDK-029: fileName省略時file.name使用 | E-12 | ○ |
| C-30 | UT-SDK-030: FormDataでファイル送信 | E-12, E-26 | ○ |
| C-31 | UT-SDK-031: apiKey未設定でConfigurationError | E-12, E-21 | ○ |
| C-32 | UT-SDK-032: 非200ステータスでApiError | E-12, E-22 | ○ |
| C-33 | UT-SDK-033: status不正でApiError | E-07, E-12 | ○ |

### ヘルパー関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-34 | UT-SDK-034: Base64サイズ計算（正常） | E-03 | ○ |
| C-35 | UT-SDK-035: パディングなしBase64 | E-03 | ○ |
| C-36 | UT-SDK-036: パディング1つのBase64 | E-03 | ○ |
| C-37 | UT-SDK-037: パディング2つのBase64 | E-03 | ○ |
| C-38 | UT-SDK-038: 空文字列で0返却 | E-03 | ○ |
| C-39 | UT-SDK-039: 長さ不正でエラー | E-03 | ○ |
| C-40 | UT-SDK-040: 不正文字でエラー | E-03 | ○ |
| C-41 | UT-SDK-041: joinPath正常結合 | E-04 | ○ |
| C-42 | UT-SDK-042: 末尾スラッシュ処理 | E-04 | ○ |
| C-43 | UT-SDK-043: 先頭スラッシュ処理 | E-04 | ○ |
| C-44 | UT-SDK-044: readResponseText正常取得 | E-05 | ○ |
| C-45 | UT-SDK-045: readResponseTextエラー時空文字 | E-05 | ○ |
| C-46 | UT-SDK-046: parseRunResponseJson正常パース | E-06 | ○ |
| C-47 | UT-SDK-047: parseRunResponseJson null入力 | E-06 | ○ |
| C-48 | UT-SDK-048: parseRunResponseJson taskId欠損 | E-06 | ○ |
| C-49 | UT-SDK-049: parseRunResponseJson 空taskId | E-06 | ○ |
| C-50 | UT-SDK-050: parseUploadFileResponseJson正常パース | E-07 | ○ |
| C-51 | UT-SDK-051: parseUploadFileResponseJson file欠損 | E-07 | ○ |
| C-52 | UT-SDK-052: parseUploadFileResponseJson status不正 | E-07 | ○ |
| C-53 | UT-SDK-053: parseAppsListResponseJson正常パース | E-08 | ○ |
| C-54 | UT-SDK-054: parseAppsListResponseJson apps不正 | E-08 | ○ |
| C-55 | UT-SDK-055: parseAppsListResponseJson スキーマ検証 | E-08 | ○ |
| C-56 | UT-SDK-056: parseTaskResponseJson statusのみ | E-09 | ○ |
| C-57 | UT-SDK-057: parseTaskResponseJson 完全結果 | E-09 | ○ |
| C-58 | UT-SDK-058: parseTaskResponseJson task欠損 | E-09 | ○ |
| C-59 | UT-SDK-059: parseTaskResponseJson status欠損 | E-09 | ○ |
| C-60 | UT-SDK-060: resolveAppName name優先 | E-10 | ○ |
| C-61 | UT-SDK-061: resolveAppName workspaceNameフォールバック | E-10 | ○ |
| C-62 | UT-SDK-062: resolveAppName workspace.name | E-10 | ○ |
| C-63 | UT-SDK-063: resolveAppName null入力 | E-10 | ○ |
| C-64 | UT-SDK-064: resolveAppName 空文字列無視 | E-10 | ○ |

### エラークラス
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-65 | UT-SDK-065: GiselleSdkError基本生成 | E-20 | ○ |
| C-66 | UT-SDK-066: GiselleSdkError Error継承 | E-20 | ○ |
| C-67 | UT-SDK-067: ConfigurationError生成 | E-21 | ○ |
| C-68 | UT-SDK-068: ConfigurationError継承確認 | E-21, E-20 | ○ |
| C-69 | UT-SDK-069: ApiError status/responseText設定 | E-22 | ○ |
| C-70 | UT-SDK-070: ApiError継承確認 | E-22, E-20 | ○ |
| C-71 | UT-SDK-071: UnsupportedFeatureError生成 | E-23 | ○ |
| C-72 | UT-SDK-072: NotImplementedError生成 | E-24 | ○ |
| C-73 | UT-SDK-073: TimeoutError生成 | E-25 | ○ |

### その他
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-74 | UT-SDK-074: デフォルトbaseUrl確認 | E-17, E-26 | ○ |
| C-75 | UT-SDK-075: Authorizationヘッダー設定 | E-11, E-26 | ○ |
| C-76 | UT-SDK-076: Content-Type設定 | E-11, E-26 | ○ |

## 4) 不足情報（Unknown / Missing）
- **UT-SDK-010（3MB丁度の境界値）**: 既存テストでは3MB超過のケースのみ検証されており、丁度3MBのケースは明示的にテストされていない。実装コード（`if (decodedBytes > maxInlineFileDecodedBytes)`）から「>」比較であることは確認できるが、実際の動作検証は推奨
  - 候補：手動テスト / 追加単体テスト
- **UT-SDK-019（timeoutMs=0の挙動）**: タイムアウト処理のループ構造上、1回目のポーリング前にタイムアウトチェックは行われないため、少なくとも1回はポーリングが実行される想定だが、テストコードでの明示的検証はない
  - 候補：実装詳細の確認 / 追加テスト

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: 大部分のテストケース - 既存テストコード・実装コードから明確に根拠が取れる
- **1（中リスク）**: UT-SDK-010, UT-SDK-019 - 境界値・エッジケースで追加検証が望ましい
- **2（高リスク）**: なし

## 6) レビュアーチェックリスト（最小）
- [ ] Giselleクラスの主要メソッド（apps.run, apps.runAndWait, apps.list, files.upload）のテストケースが網羅されているか
- [ ] エラークラス（ConfigurationError, ApiError, UnsupportedFeatureError, TimeoutError）の生成・継承テストが含まれているか
- [ ] 既存テストコード（sdk.test.ts）で検証済みの項目と整合性があるか
- [ ] 境界値テスト（3MBファイルサイズ制限、タイムアウト=0）の妥当性を確認
- [ ] プライベートメソッド（#runApp等）の内部ロジックが適切にテストケースに反映されているか
- [ ] Base64バリデーション関数の各分岐がカバーされているか
