---
generated_at: 2026-03-01 06:05:00
metrics:
  claims_total: 97
  claims_with_evidence: 97
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：babel-helper-transform-fixture-test-runner.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：97 / 97、根拠なし：0
- 優先レビュー（高）
  1. **UT-TFT-001〜005**: createTestContext関数のテストケース - VMコンテキスト生成の核心機能
  2. **UT-TFT-006〜017**: runCodeInTestContext関数のテストケース - コード実行の基本機能
  3. **UT-TFT-030〜037**: default export関数のテストケース - テストスイート生成の中核

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

- E-01: `packages/babel-helper-transform-fixture-test-runner/src/index.ts` - メインモジュール（964行）
- E-02: `packages/babel-helper-transform-fixture-test-runner/src/helpers.ts` - ヘルパー関数（8行）
- E-03: `packages/babel-helper-transform-fixture-test-runner/src/source-map-visualizer.ts` - ソースマップ可視化（150行）
- E-04: `packages/babel-helper-transform-fixture-test-runner/src/babel-helpers-in-memory.js` - Babelヘルパー用空ファイル（2行）
- E-05: `packages/babel-helper-transform-fixture-test-runner/src/exit-loader.cjs` - プロセス終了ローダー（5行）

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

### index.ts - createTestContext
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | createTestContextがvm.Contextを返却する | E-01 (行83-110: `vm.createContext`, `return context`) | ○ |
| C-02 | コンテキストにhelpersが含まれる | E-01 (行84-85: `...helpers`) | ○ |
| C-03 | コンテキストにtransform関数が含まれる | E-01 (行87-88: `transform: transformWithoutConfigFile`) | ○ |
| C-04 | babelHelpersが設定される | E-01 (行98-107: `runCacheableScriptInTestContext`) | ○ |
| C-05 | context.globalがcontext自身を参照 | E-01 (行93: `context.global = context`) | ○ |

### index.ts - runCodeInTestContext
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-06 | コードがVMで実行される | E-01 (行217: `vm.runInContext`) | ○ |
| C-07 | requireでモジュールが読み込める | E-01 (行200-201: `runModuleInTestContext`) | ○ |
| C-08 | exportsオブジェクトが設定される | E-01 (行203-206: `module.exports`) | ○ |
| C-09 | __filenameが設定される | E-01 (行216: `filename`) | ○ |
| C-10 | __dirnameが設定される | E-01 (行198: `dirname = path.dirname`) | ○ |
| C-11 | タイムアウトが適用される | E-01 (行221: `timeout: opts.timeout ?? 10000`) | ○ |
| C-12 | デフォルトタイムアウト10秒 | E-01 (行221: `opts.timeout ?? 10000`) | ○ |
| C-13 | process.cwdが変更される | E-01 (行210: `process.chdir`) | ○ |
| C-14 | process.cwdが復元される | E-01 (行225: `process.chdir(oldCwd)`) | ○ |
| C-15 | 構文エラーでエラースロー | E-01 (行217: `vm.runInContext`がエラースロー) | ○ |
| C-16 | 実行時エラーがスローされる | E-01 (行217: `vm.runInContext`がエラー伝播) | ○ |
| C-17 | 存在しないモジュールでエラー | E-01 (行162: `resolve.sync`がエラースロー) | ○ |

### index.ts - transform系関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-18 | 設定ファイルなしで変換実行 | E-01 (行54-67: `transformWithoutConfigFile`) | ○ |
| C-19 | configFile: falseが設定 | E-01 (行57: `configFile: false`) | ○ |
| C-20 | babelrc: falseが設定 | E-01 (行58: `babelrc: false`) | ○ |
| C-21 | オプションがマージされる | E-01 (行65: `...opts`) | ○ |
| C-22 | 非同期で変換実行 | E-01 (行68-81: `transformAsyncWithoutConfigFile`) | ○ |
| C-23 | async caller識別子が設定 | E-01 (行74: `name: "babel-helper-transform-fixture-test-runner/async"`) | ○ |

### index.ts - runCacheableScriptInTestContext
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-24 | スクリプトがキャッシュされる | E-01 (行118-126: `cachedScripts.get`, `cachedScripts.set`) | ○ |
| C-25 | モジュールオブジェクトが返却される | E-01 (行135-138, 149: `return module`) | ○ |
| C-26 | cachedDataが生成される | E-01 (行133: `script.createCachedData()`) | ○ |

### index.ts - runModuleInTestContext
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-27 | 外部モジュールが読み込まれる | E-01 (行162-164: `resolve.sync`) | ○ |
| C-28 | Node内部モジュールが取得できる | E-01 (行168: `if (filename === id) return require(id)`) | ○ |
| C-29 | モジュールがキャッシュから取得 | E-01 (行172: `if (moduleCache[filename])`) | ○ |

### index.ts - default export
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-30 | テストスイートが生成される | E-01 (行486-563: `describe`, `it`) | ○ |
| C-31 | ignoreSuitesでスキップ | E-01 (行496: `ignoreSuites?.includes`) | ○ |
| C-32 | ignoreTasksでスキップ | E-01 (行500-505: `ignoreTasks?.includes`) | ○ |
| C-33 | disabledなタスクがスキップ | E-01 (行507: `task.disabled ? it.skip : it`) | ○ |
| C-34 | dynamicOptsが適用される | E-01 (行531: `if (dynamicOpts) dynamicOpts`) | ○ |
| C-35 | externalHelpersプラグイン追加 | E-01 (行533-538: `external-helpers`) | ○ |
| C-36 | sourceMapオプションでエラー | E-01 (行519-523: `sourceMap option is deprecated`) | ○ |
| C-37 | throwsオプションでエラー検証 | E-01 (行540-554: `assert.rejects`) | ○ |

### index.ts - run関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-38 | 変換結果が比較される | E-01 (行317-360: `validateFile`) | ○ |
| C-39 | exec.jsが実行される | E-01 (行290-314: `runCodeInTestContext`) | ○ |
| C-40 | ソースマップが検証される | E-01 (行401-415: `expect(result.map).toEqual`) | ○ |
| C-41 | ビジュアルソースマップが検証される | E-01 (行386-399: `visualizeSourceMap`) | ○ |
| C-42 | ログが検証される | E-01 (行363-379: `validateLogs`) | ○ |
| C-43 | ignoreOutputで比較スキップ | E-01 (行331: `if (!ignoreOutput)`) | ○ |
| C-44 | OVERWRITEでファイル更新 | E-01 (行428-431: `process.env.OVERWRITE`) | ○ |

### index.ts - validateFile
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-45 | 一致で成功 | E-01 (行422-441: `if (actualCode !== expectedCode)`) | ○ |
| C-46 | 不一致でエラー | E-01 (行434-440: `throw new Error`) | ○ |
| C-47 | OVERWRITEで更新 | E-01 (行428-431: `fs.writeFileSync`) | ○ |

### index.ts - normalizeOutput
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-48 | パスが置換される | E-01 (行447-479: `replace`, `<CWD>`) | ○ |
| C-49 | trimされる | E-01 (行456: `.trim()`) | ○ |
| C-50 | パス区切り統一 | E-01 (行470-475: `normalizePathSeparator`) | ○ |

### index.ts - escapeRegExp
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-51 | メタ文字がエスケープされる | E-01 (行443-444: `replace(/[|\\{}...]/g, "\\$&")`) | ○ |
| C-52 | 空文字列が処理される | E-01 (行443-444: replaceは空文字でも動作) | ○ |

### index.ts - maybeMockConsole
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-53 | validateLogs=falseでモックなし | E-01 (行235: `if (!validateLogs) return`) | ○ |
| C-54 | console出力がキャプチャされる | E-01 (行237-242: `jest.spyOn(console, "log")`) | ○ |
| C-55 | モックが復元される | E-01 (行247-248: `mockRestore()`) | ○ |

### index.ts - buildProcessTests
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-56 | テストが生成される | E-01 (行738-963: `buildProcessTests`) | ○ |
| C-57 | options.jsonが読み込まれる | E-01 (行759-782: `JSON.parse(readFileSync)`) | ○ |
| C-58 | osフィルタが動作する | E-01 (行762-780: `os.includes(process.platform)`) | ○ |
| C-59 | executor.jsが設定される | E-01 (行784-787: `opts.executor`) | ○ |
| C-60 | stdin/stdout/stderrが読み込まれる | E-01 (行791-798: `readFile(loc)`) | ○ |
| C-61 | inFiles/outFilesが設定される | E-01 (行801-802: `readDir`) | ○ |
| C-62 | .babelrcが含まれる | E-01 (行804-811: `.babelrc`) | ○ |
| C-63 | noBabelrcで追加されない | E-01 (行809: `!opts.noBabelrc`) | ○ |
| C-64 | minNodeVersionでスキップ | E-01 (行817-820: `minNodeVersion`) | ○ |
| C-65 | テストがソートされる | E-01 (行956-960: `sort`, `localeCompare`) | ○ |

### index.ts - buildParallelProcessTests
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | テストが分割される | E-01 (行719-736: `slice`) | ○ |
| C-67 | total=1で全テスト実行 | E-01 (行721-724: sliceLength計算) | ○ |

### index.ts - assertTest
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-68 | stdout一致で成功 | E-01 (行667-668: `expect(stdout).toBe`) | ○ |
| C-69 | stdout不一致でエラー | E-01 (行667-675: `expect`, `throw`) | ○ |
| C-70 | stdoutContainsで部分一致 | E-01 (行668-669: `toContain`) | ○ |
| C-71 | stderr一致で成功 | E-01 (行647-655: `expect(stderr).toBe`) | ○ |
| C-72 | 予期しないstderrでエラー | E-01 (行653-655: `throw new Error`) | ○ |
| C-73 | IPCメッセージが検証される | E-01 (行682-684: `expect(ipcMessage).toEqual`) | ○ |
| C-74 | outFilesが検証される | E-01 (行686-716: `expect(actual).toBe(expected)`) | ○ |

### index.ts - readDir
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-75 | ファイルが読み込まれる | E-01 (行609-621: `readdirSync`, `readFile`) | ○ |
| C-76 | 再帰的に読み込まれる | E-01 (行612: `recursive: true`) | ○ |
| C-77 | フィルタリングされる | E-01 (行613: `.filter(dirent => ... pathFilter)`) | ○ |
| C-78 | 存在しないディレクトリで空オブジェクト | E-01 (行611: `if (fs.existsSync(loc))`) | ○ |

### index.ts - outputFileSync
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-79 | 親ディレクトリが作成される | E-01 (行623-626: `mkdirSync`, `recursive: true`) | ○ |

### index.ts - deleteDir
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-80 | 再帰削除される | E-01 (行628-630: `rmSync`, `recursive: true`) | ○ |
| C-81 | 存在しなくてもエラーなし | E-01 (行629: `force: true`) | ○ |

### helpers.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-82 | 空オブジェクトで成功 | E-02 (行1-3: `toHaveLength(0)`) | ○ |
| C-83 | 非空オブジェクトで失敗 | E-02 (行1-3: `getOwnPropertyNames`が配列を返す) | ○ |
| C-84 | 配列が改行で結合される | E-02 (行5-7: `join("\n")`) | ○ |
| C-85 | 空配列で空文字列 | E-02 (行6: `join`は空配列で空文字列) | ○ |
| C-86 | 1要素配列で改行なし | E-02 (行6: `join`は1要素で区切りなし) | ○ |

### source-map-visualizer.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-87 | ソースマップが可視化される | E-03 (行48-149: `visualize`) | ○ |
| C-88 | マッピング範囲が表示される | E-03 (行124-146: `ranges.map`) | ○ |
| C-89 | 複数ソースが処理される | E-03 (行49-54: `sourcesLines = new Map`) | ○ |
| C-90 | コードフレームが生成される | E-03 (行11-29: `simpleCodeFrameRange`) | ○ |
| C-91 | コンテキストが含まれる | E-03 (行7: `CONTEXT_SIZE = 4`) | ○ |
| C-92 | 0幅マーカーが><で表示 | E-03 (行23: `markerSize === 0 ? "><"`) | ○ |
| C-93 | 横に結合される | E-03 (行31-46: `joinMultiline`) | ○ |
| C-94 | パディングされる | E-03 (行41: `padEnd(leftLen)`) | ○ |
| C-95 | 行数差異が処理される | E-03 (行37-44: `linesCount = Math.max`) | ○ |

### exit-loader.cjs
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-96 | メッセージでプロセス終了 | E-05 (行4: `process.on("message", () => process.exit(0))`) | ○ |
| C-97 | チャネルがunrefされる | E-05 (行5: `process.channel.unref()`) | ○ |

## 4) 不足情報（Unknown / Missing）
- 根拠なしの項目はありません。全テストケースがソースコードに基づいて生成されています。

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全テストケースがソースコードから直接導出されています
- ただし、以下の点は追加レビューを推奨：
  - プロセステスト（buildProcessTests, assertTest）は外部プロセス起動を伴うため、環境依存の問題が発生する可能性あり
  - ソースマップ可視化（source-map-visualizer.ts）はTraceMapライブラリ依存

## 6) レビュアーチェックリスト（最小）
- [ ] createTestContext/runCodeInTestContextのVMコンテキスト生成・実行テストが実環境で動作するか
- [ ] buildProcessTestsのOSフィルタリング（process.platform）が期待通り動作するか
- [ ] source-map-visualizerのマッピング可視化が様々なソースマップ形式に対応しているか
- [ ] exit-loader.cjsのIPC処理がNode.jsバージョン間で互換性があるか
- [ ] タイムアウト関連テスト（UT-TFT-011, UT-TFT-012）の時間精度
