---
generated_at: 2026-02-24 16:15:00
metrics:
  claims_total: 35
  claims_with_evidence: 33
  claims_without_evidence: 2
confidence_derived: 0.94
---

# 根拠レポート：script モジュール単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.94**
  - 根拠あり：33 / 35、根拠なし：2
- 優先レビュー（高）
  1. **UT-SCR-010（gitコマンド失敗時のエラーハンドリング）**：実装でのエラーハンドリング方法が不明確
  2. **UT-SCR-031（チーム配列の不変性）**：配列が読み取り専用として実装されているか不明

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

- E-01: `packages/script/src/index.ts` (L1-86) - メインソースコード
- E-02: `packages/script/package.json` - パッケージ設定
- E-03: `packages/script/tsconfig.json` - TypeScript設定
- E-04: `packages/script/sst-env.d.ts` - SST環境型定義（自動生成）

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

### Bunバージョンチェック関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 (UT-SCR-001) | 適切なBunバージョンで正常に実行される | E-01 (L15-17) semver.satisfiesでチェック | ○ |
| C-02 (UT-SCR-002) | semver rangeで互換バージョンが許可される | E-01 (L13) ^プレフィックスで範囲指定 | ○ |
| C-03 (UT-SCR-003) | packageManager field未存在時にエラー | E-01 (L8-10) throw new Error | ○ |
| C-04 (UT-SCR-004) | Bunバージョン範囲外でエラー | E-01 (L15-17) throw new Error | ○ |

### CHANNEL計算関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-05 (UT-SCR-005) | OPENCODE_CHANNEL設定時その値が返る | E-01 (L26) if (env.OPENCODE_CHANNEL) return | ○ |
| C-06 (UT-SCR-006) | OPENCODE_BUMP設定時latestが返る | E-01 (L27) if (env.OPENCODE_BUMP) return "latest" | ○ |
| C-07 (UT-SCR-007) | OPENCODE_VERSION正式版でlatestが返る | E-01 (L28) !startsWith("0.0.0-")判定 | ○ |
| C-08 (UT-SCR-008) | OPENCODE_VERSIONプレビュー版でブランチ名が返る | E-01 (L29) git branch --show-current | ○ |
| C-09 (UT-SCR-009) | 環境変数未設定時gitブランチ名が返る | E-01 (L29) フォールバック処理 | ○ |
| C-10 (UT-SCR-010) | gitコマンド失敗時のエラーハンドリング | **根拠なし** - エラーハンドリング未実装の可能性 | △ |

### IS_PREVIEW計算関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-11 (UT-SCR-011) | CHANNEL=latestでIS_PREVIEW=false | E-01 (L31) CHANNEL !== "latest" | ○ |
| C-12 (UT-SCR-012) | CHANNEL!=latestでIS_PREVIEW=true | E-01 (L31) 比較演算結果 | ○ |

### VERSION計算関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-13 (UT-SCR-013) | OPENCODE_VERSION設定時その値が返る | E-01 (L34) if (env.OPENCODE_VERSION) return | ○ |
| C-14 (UT-SCR-014) | IS_PREVIEW=trueでプレビューバージョン生成 | E-01 (L35) 0.0.0-{CHANNEL}-{timestamp}形式 | ○ |
| C-15 (UT-SCR-015) | BUMP=majorでメジャーインクリメント | E-01 (L44) major + 1 | ○ |
| C-16 (UT-SCR-016) | BUMP=minorでマイナーインクリメント | E-01 (L45) minor + 1 | ○ |
| C-17 (UT-SCR-017) | BUMP=patchでパッチインクリメント | E-01 (L46) patch + 1 | ○ |
| C-18 (UT-SCR-018) | BUMP値大文字でも正しく処理 | E-01 (L43) toLowerCase() | ○ |
| C-19 (UT-SCR-019) | fetch失敗時エラースロー | E-01 (L38) !res.ok時throw | ○ |
| C-20 (UT-SCR-020) | 不正レスポンス時エラースロー | E-01 (L38) res.statusText | ○ |
| C-21 (UT-SCR-021) | 0.0.0から正しくインクリメント | E-01 (L42) Number()でパース | ○ |
| C-22 (UT-SCR-022) | 不正バージョン形式の耐性 | E-01 (L42) Number() || 0 でフォールバック | ○ |

### Scriptオブジェクトgetter関連
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-23 (UT-SCR-023) | Script.channelでCHANNEL値取得 | E-01 (L69-71) get channel() | ○ |
| C-24 (UT-SCR-024) | Script.versionでVERSION値取得 | E-01 (L72-74) get version() | ○ |
| C-25 (UT-SCR-025) | Script.preview=trueの動作 | E-01 (L75-77) get preview() | ○ |
| C-26 (UT-SCR-026) | Script.preview=falseの動作 | E-01 (L75-77) get preview() | ○ |
| C-27 (UT-SCR-027) | Script.release=trueの動作 | E-01 (L78-80) !!env.OPENCODE_RELEASE | ○ |
| C-28 (UT-SCR-028) | Script.release=falseの動作 | E-01 (L78-80) !!演算子でfalsy判定 | ○ |
| C-29 (UT-SCR-029) | 空文字でScript.release=false | E-01 (L78-80) !!''はfalse | ○ |
| C-30 (UT-SCR-030) | Script.teamで配列取得 | E-01 (L81-83, L49-66) team配列 | ○ |
| C-31 (UT-SCR-031) | team配列の不変性 | **根拠なし** - Object.freeze未使用 | △ |

### その他
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-32 (UT-SCR-032) | console.log出力の確認 | E-01 (L85) console.log出力 | ○ |
| C-33 (UT-SCR-033) | 日時フォーマット生成 | E-01 (L35) toISOString().slice()とreplace() | ○ |
| C-34 (UT-SCR-034) | rootPkgPath解決 | E-01 (L4) path.resolve | ○ |
| C-35 (UT-SCR-035) | rootPkg不存在時エラー | E-01 (L5) Bun.file().json()でエラー | ○ |

## 4) 不足情報（Unknown / Missing）

### C-10: gitコマンド失敗時のエラーハンドリング
- **理由**: ソースコード（L29）では `git branch --show-current` の結果を直接使用しており、gitコマンド失敗時の明示的なエラーハンドリングが実装されていない
- **候補**: Bun shell (`$`)のデフォルトエラーハンドリング動作の確認が必要 / try-catchの追加検討

### C-31: team配列の不変性
- **理由**: team配列はconstで宣言されているが、Object.freezeやas constは使用されていないため、配列の内容は変更可能
- **候補**: 現状の実装では配列は可変 / readonly型注釈の追加検討 / Object.freezeの適用検討

## 5) リスクフラグ（レビュー観点）

| リスクレベル | 項目 | 説明 |
|---|---|---|
| 1 (中) | ネットワーク依存 | VERSION計算がnpm registryへのfetchに依存しており、ネットワーク障害時の動作に注意が必要 |
| 1 (中) | 外部コマンド依存 | CHANNEL計算がgitコマンドに依存しており、git非対応環境での動作に注意が必要 |
| 0 (低) | 環境変数依存 | 多くの動作が環境変数に依存するため、テスト時のモック設定に注意が必要 |
| 0 (低) | 日時依存 | プレビューバージョン生成が現在日時に依存するため、テスト時の日時固定が必要 |

## 6) レビュアーチェックリスト（最小）

- [ ] UT-SCR-010: Bun shell (`$`)のエラーハンドリング動作を確認し、gitコマンド失敗時のテストケースの期待結果を精査する
- [ ] UT-SCR-031: team配列の不変性要件を確認し、必要に応じてテストケースを削除または実装修正を提案する
- [ ] ネットワークモック: npm registry fetchのモック方法を確認し、テスト実装時の指針を追加する
- [ ] 日時モック: プレビューバージョン生成テストでの日時固定方法を確認する
- [ ] 環境変数: 各テストケースでの環境変数のセットアップ・クリーンアップ方法を確認する
