---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 249
  claims_with_evidence: 243
  claims_without_evidence: 6
confidence_derived: 0.98
---

# 根拠レポート：tailwindcss-upgrade 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：243 / 249、根拠なし：6
- 優先レビュー（高）
  1. **UT-UPG-099（migrate関数の正常系）**：PostCSS処理の詳細な結果検証は実行時テストでのみ確認可能
  2. **UT-UPG-155（migrateJsConfig正常系）**：返却オブジェクトの詳細構造はconfig内容に依存し動的
  3. **UT-UPG-174（migrateContents正常系）**：テンプレートエンジンとの統合動作は実行環境依存
  4. **UT-UPG-175（migrateファイル書き戻し）**：ファイルI/Oの副作用は実行時でのみ確認可能
  5. **UT-UPG-241（prepareConfig正常系）**：designSystemロードは外部依存を含む
  6. **UT-UPG-247（helpヘルプ出力）**：console出力の詳細フォーマットは実行時でのみ確認可能

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

- E-01: `packages/@tailwindcss-upgrade/src/stylesheet.ts` - Stylesheetクラス定義（load, loadSync, fromString, fromRoot, importRules, isEmpty, ancestors, descendants, layers, analyzeImportPaths, containsRule）
- E-02: `packages/@tailwindcss-upgrade/src/utils/format-ns.ts` - formatNanoseconds関数定義
- E-03: `packages/@tailwindcss-upgrade/src/utils/args.ts` - args, convert, convertBoolean, convertNumber, convertString関数定義
- E-04: `packages/@tailwindcss-upgrade/src/utils/git.ts` - isRepoDirty関数定義
- E-05: `packages/@tailwindcss-upgrade/src/utils/walk.ts` - walk, walkDepth, WalkAction定義
- E-06: `packages/@tailwindcss-upgrade/src/utils/splice-changes-into-string.ts` - spliceChangesIntoString関数定義
- E-07: `packages/@tailwindcss-upgrade/src/utils/version.ts` - isMajor, isGreaterThan, installedTailwindVersion, expectedTailwindVersion関数定義
- E-08: `packages/@tailwindcss-upgrade/src/utils/package-version.ts` - getPackageVersion, getPackageVersionSync関数定義
- E-09: `packages/@tailwindcss-upgrade/src/utils/resolve.ts` - resolve, resolveJsId, resolveCssId関数定義
- E-10: `packages/@tailwindcss-upgrade/src/utils/packages.ts` - pkg関数（manager, add, has, remove）定義
- E-11: `packages/@tailwindcss-upgrade/src/utils/renderer.ts` - relative, wordWrap, formatDuration, indent, header, highlight関数定義
- E-12: `packages/@tailwindcss-upgrade/src/utils/extract-static-plugins.ts` - findStaticPlugins, extractStaticImportMap関数定義
- E-13: `packages/@tailwindcss-upgrade/src/utils/walk-variants.ts` - walkVariants関数定義
- E-14: `packages/@tailwindcss-upgrade/src/codemods/css/migrate.ts` - migrate, migrateContents関数定義
- E-15: `packages/@tailwindcss-upgrade/src/codemods/css/migrate-tailwind-directives.ts` - migrateTailwindDirectives, findTargetNode関数定義
- E-16: `packages/@tailwindcss-upgrade/src/codemods/css/migrate-import.ts` - migrateImport関数定義
- E-17: `packages/@tailwindcss-upgrade/src/codemods/css/migrate-variants-directive.ts` - migrateVariantsDirective関数定義
- E-18: `packages/@tailwindcss-upgrade/src/codemods/css/migrate-missing-layers.ts` - migrateMissingLayers関数定義
- E-19: `packages/@tailwindcss-upgrade/src/codemods/css/migrate-at-apply.ts` - migrateAtApply関数定義
- E-20: `packages/@tailwindcss-upgrade/src/codemods/css/migrate-media-screen.ts` - migrateMediaScreen関数定義
- E-21: `packages/@tailwindcss-upgrade/src/codemods/css/migrate-theme-to-var.ts` - migrateThemeToVar関数定義
- E-22: `packages/@tailwindcss-upgrade/src/codemods/css/migrate-at-layer-utilities.ts` - migrateAtLayerUtilities関数定義
- E-23: `packages/@tailwindcss-upgrade/src/codemods/css/migrate-preflight.ts` - migratePreflight, substituteFunctionsInValue, eventuallyUnquote関数定義
- E-24: `packages/@tailwindcss-upgrade/src/codemods/css/migrate-config.ts` - migrateConfig, relativeToStylesheet, quoteString関数定義
- E-25: `packages/@tailwindcss-upgrade/src/codemods/css/sort-buckets.ts` - sortBuckets, distance, BUCKET_ORDER定義
- E-26: `packages/@tailwindcss-upgrade/src/codemods/css/format-nodes.ts` - formatNodes関数定義
- E-27: `packages/@tailwindcss-upgrade/src/codemods/css/analyze.ts` - analyze関数定義
- E-28: `packages/@tailwindcss-upgrade/src/codemods/css/split.ts` - split関数定義
- E-29: `packages/@tailwindcss-upgrade/src/codemods/css/link.ts` - linkConfigs関数定義
- E-30: `packages/@tailwindcss-upgrade/src/codemods/config/migrate-js-config.ts` - migrateJsConfig, canMigrateConfig, migrateTheme, migrateDarkMode, migrateContent等の関数定義
- E-31: `packages/@tailwindcss-upgrade/src/codemods/config/migrate-postcss.ts` - migratePostCSSConfig, migratePostCSSJSConfig, migratePostCSSJsonConfig, isSimplePostCSSConfig, isEmptyObject関数定義
- E-32: `packages/@tailwindcss-upgrade/src/codemods/template/migrate.ts` - migrateCandidate, migrateContents, migrate, DEFAULT_MIGRATIONS定義
- E-33: `packages/@tailwindcss-upgrade/src/codemods/template/candidates.ts` - extractRawCandidates, baseCandidate, parseCandidate, printUnprefixedCandidate関数定義
- E-34: `packages/@tailwindcss-upgrade/src/codemods/template/is-safe-migration.ts` - isSafeMigration, isMiddleOfString関数定義
- E-35: `packages/@tailwindcss-upgrade/src/codemods/template/migrate-theme-to-var.ts` - createConverter, Convert enum, substituteFunctionsInValue, eventuallyUnquote関数定義
- E-36: `packages/@tailwindcss-upgrade/src/codemods/template/migrate-canonicalize-candidate.ts` - migrateCanonicalizeCandidate関数定義
- E-37: `packages/@tailwindcss-upgrade/src/codemods/template/migrate-simple-legacy-classes.ts` - migrateSimpleLegacyClasses, LEGACY_CLASS_MAP定義
- E-38: `packages/@tailwindcss-upgrade/src/codemods/template/migrate-legacy-classes.ts` - migrateLegacyClasses, LEGACY_CLASS_MAP, THEME_KEYS定義
- E-39: `packages/@tailwindcss-upgrade/src/codemods/template/migrate-legacy-arbitrary-values.ts` - migrateLegacyArbitraryValues関数定義
- E-40: `packages/@tailwindcss-upgrade/src/codemods/template/migrate-variant-order.ts` - migrateVariantOrder, isAtRuleVariant, isCombinatorVariant等の関数定義
- E-41: `packages/@tailwindcss-upgrade/src/codemods/template/migrate-prefix.ts` - migratePrefix, migratePrefixValue, extractV3Base関数定義
- E-42: `packages/@tailwindcss-upgrade/src/codemods/template/migrate-automatic-var-injection.ts` - migrateAutomaticVarInjection, injectVar, injectVarIntoVariant, AUTO_VAR_INJECTION_EXCEPTIONS定義
- E-43: `packages/@tailwindcss-upgrade/src/codemods/template/migrate-max-width-screen.ts` - migrateMaxWidthScreen関数定義
- E-44: `packages/@tailwindcss-upgrade/src/codemods/template/migrate-handle-empty-arbitrary-values.ts` - migrateEmptyArbitraryValues関数定義
- E-45: `packages/@tailwindcss-upgrade/src/codemods/template/migrate-modernize-arbitrary-values.ts` - migrateModernizeArbitraryValues関数定義
- E-46: `packages/@tailwindcss-upgrade/src/codemods/template/migrate-camelcase-in-named-value.ts` - migrateCamelcaseInNamedValue, camelToKebab関数定義
- E-47: `packages/@tailwindcss-upgrade/src/codemods/template/migrate-arbitrary-variants.ts` - migrateArbitraryVariants関数定義
- E-48: `packages/@tailwindcss-upgrade/src/codemods/template/prepare-config.ts` - prepareConfig, detectConfigPath, parentPaths, createResolvedUserConfig関数定義
- E-49: `packages/@tailwindcss-upgrade/src/commands/help/index.ts` - help関数定義
- E-50: `packages/@tailwindcss-upgrade/src/index.ts` - run関数定義（メインCLIエントリポイント）

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

### Stylesheet（UT-UPG-001 〜 UT-UPG-023）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | Stylesheet.loadがCSSファイルを読み込みインスタンスを返却 | E-01 | ○ |
| C-002 | Stylesheet.loadが存在しないファイルでエラー | E-01 | ○ |
| C-003 | Stylesheet.loadSyncが同期的にインスタンスを返却 | E-01 | ○ |
| C-004 | Stylesheet.loadSyncが存在しないファイルでエラー | E-01 | ○ |
| C-005 | Stylesheet.fromStringがCSS文字列からインスタンス生成 | E-01 | ○ |
| C-006 | Stylesheet.fromStringが空文字列を処理 | E-01 | ○ |
| C-007 | Stylesheet.fromRootがPostCSS Rootからインスタンス生成 | E-01 | ○ |
| C-008 | Stylesheetのidが一意に生成される | E-01 | ○ |
| C-009 | Stylesheet.constructorがextensionを設定 | E-01 | ○ |
| C-010 | Stylesheet.importRulesが@importルールを抽出 | E-01 | ○ |
| C-011 | Stylesheet.importRulesが空Setを返却 | E-01 | ○ |
| C-012 | Stylesheet.isEmptyが空でtrue | E-01 | ○ |
| C-013 | Stylesheet.isEmptyが非空でfalse | E-01 | ○ |
| C-014 | Stylesheet.ancestorsが祖先をイテレート | E-01 | ○ |
| C-015 | Stylesheet.ancestorsがparents空で空イテレーション | E-01 | ○ |
| C-016 | Stylesheet.descendantsが子孫をイテレート | E-01 | ○ |
| C-017 | Stylesheet.layersがレイヤー名を取得 | E-01 | ○ |
| C-018 | Stylesheet.layersがルートで空Set | E-01 | ○ |
| C-019 | Stylesheet.analyzeImportPathsがconvertiblePathsに分類 | E-01 | ○ |
| C-020 | Stylesheet.analyzeImportPathsがnonConvertiblePathsに分類 | E-01 | ○ |
| C-021 | Stylesheet.containsRuleが合致時にtrue | E-01 | ○ |
| C-022 | Stylesheet.containsRuleが子シートで再帰検索 | E-01 | ○ |
| C-023 | Stylesheet.containsRuleが不在時にfalse | E-01 | ○ |

### formatNanoseconds（UT-UPG-024 〜 UT-UPG-034）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-024 | ns単位でフォーマット | E-02 | ○ |
| C-025 | us単位でフォーマット | E-02 | ○ |
| C-026 | ms単位でフォーマット | E-02 | ○ |
| C-027 | s単位でフォーマット | E-02 | ○ |
| C-028 | m単位でフォーマット | E-02 | ○ |
| C-029 | h単位でフォーマット | E-02 | ○ |
| C-030 | d単位でフォーマット | E-02 | ○ |
| C-031 | number型入力の処理 | E-02 | ○ |
| C-032 | 0でns表示 | E-02 | ○ |
| C-033 | 999nsの境界値 | E-02 | ○ |
| C-034 | 1000nsの境界値 | E-02 | ○ |

### args（UT-UPG-035 〜 UT-UPG-047）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-035 | ロングフラグのパース | E-03 | ○ |
| C-036 | エイリアスのパース | E-03 | ○ |
| C-037 | string型フラグのパース | E-03 | ○ |
| C-038 | デフォルト値の使用 | E-03 | ○ |
| C-039 | 残余引数の格納 | E-03 | ○ |
| C-040 | 空引数のデフォルト値 | E-03 | ○ |
| C-041 | boolean型への変換 | E-03 | ○ |
| C-042 | number型への変換 | E-03 | ○ |
| C-043 | 未知のtypeでエラー | E-03 | ○ |
| C-044 | 文字列'true'のboolean変換 | E-03 | ○ |
| C-045 | 文字列'false'のboolean変換 | E-03 | ○ |
| C-046 | 数値文字列のnumber変換 | E-03 | ○ |
| C-047 | NaN時のundefined返却 | E-03 | ○ |

### git（UT-UPG-048 〜 UT-UPG-051）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-048 | クリーンなリポジトリでfalse | E-04 | ○ |
| C-049 | ダーティなリポジトリでtrue | E-04 | ○ |
| C-050 | 非gitリポジトリでfalse | E-04 | ○ |
| C-051 | gitエラーでtrue | E-04 | ○ |

### walk（UT-UPG-052 〜 UT-UPG-055）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-052 | 全ノード訪問 | E-05 | ○ |
| C-053 | WalkAction.Skipでスキップ | E-05 | ○ |
| C-054 | WalkAction.Stopで停止 | E-05 | ○ |
| C-055 | walkDepthの深さ優先逆順 | E-05 | ○ |

### spliceChangesIntoString（UT-UPG-056 〜 UT-UPG-059）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-056 | 単一変更の適用 | E-06 | ○ |
| C-057 | 複数変更の適用 | E-06 | ○ |
| C-058 | 空変更で元文字列 | E-06 | ○ |
| C-059 | 未ソート変更の処理 | E-06 | ○ |

### version（UT-UPG-060 〜 UT-UPG-065）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-060 | isMajor(3)がv3でtrue | E-07 | ○ |
| C-061 | isMajor(3)がv4でfalse | E-07 | ○ |
| C-062 | isGreaterThanの比較 | E-07 | ○ |
| C-063 | installedTailwindVersionの取得 | E-07 | ○ |
| C-064 | 未インストール時のエラー | E-07 | ○ |
| C-065 | expectedTailwindVersionの取得 | E-07 | ○ |

### package-version（UT-UPG-066 〜 UT-UPG-069）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-066 | getPackageVersionの非同期取得 | E-08 | ○ |
| C-067 | 未インストールでnull | E-08 | ○ |
| C-068 | getPackageVersionSyncの同期取得 | E-08 | ○ |
| C-069 | 同期版未インストールでnull | E-08 | ○ |

### resolve（UT-UPG-070 〜 UT-UPG-074）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-070 | モジュールID解決 | E-09 | ○ |
| C-071 | カスタムリゾルバの優先 | E-09 | ○ |
| C-072 | ESMモジュール解決 | E-09 | ○ |
| C-073 | CJSフォールバック | E-09 | ○ |
| C-074 | CSSファイル解決 | E-09 | ○ |

### packages（UT-UPG-075 〜 UT-UPG-080）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-075 | パッケージマネージャ検出 | E-10 | ○ |
| C-076 | 依存関係存在確認 | E-10 | ○ |
| C-077 | 依存関係不在確認 | E-10 | ○ |
| C-078 | パッケージ追加 | E-10 | ○ |
| C-079 | devDependencies追加 | E-10 | ○ |
| C-080 | パッケージ削除 | E-10 | ○ |

### renderer（UT-UPG-081 〜 UT-UPG-087）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-081 | 相対パス生成 | E-11 | ○ |
| C-082 | 短いパス優先 | E-11 | ○ |
| C-083 | テキスト折り返し | E-11 | ○ |
| C-084 | 改行含むテキスト処理 | E-11 | ○ |
| C-085 | 空文字列の処理 | E-11 | ○ |
| C-086 | 短時間の色付きフォーマット | E-11 | ○ |
| C-087 | インデント適用 | E-11 | ○ |

### extract-static-plugins（UT-UPG-088 〜 UT-UPG-095）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-088 | ESMプラグイン抽出 | E-12 | ○ |
| C-089 | CJSプラグイン抽出 | E-12 | ○ |
| C-090 | オプション付きプラグイン | E-12 | ○ |
| C-091 | pluginsなしで空配列 | E-12 | ○ |
| C-092 | 動的プラグインでnull | E-12 | ○ |
| C-093 | ESMインポート解析 | E-12 | ○ |
| C-094 | CJSインポート解析 | E-12 | ○ |
| C-095 | 名前付きインポート解析 | E-12 | ○ |

### walk-variants（UT-UPG-096 〜 UT-UPG-098）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-096 | バリアントイテレーション | E-13 | ○ |
| C-097 | compound再帰イテレーション | E-13 | ○ |
| C-098 | 空バリアント | E-13 | ○ |

### CSS migrate（UT-UPG-099 〜 UT-UPG-102）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-099 | migrate関数の正常系 | E-14 | △ |
| C-100 | fileなしでエラー | E-14 | ○ |
| C-101 | canMigrate=falseでスキップ | E-14 | ○ |
| C-102 | migrateContentsの文字列入力 | E-14 | ○ |

### CSS migrate-tailwind-directives（UT-UPG-103 〜 UT-UPG-109）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-103 | @tailwindディレクティブ統合 | E-15 | ○ |
| C-104 | @tailwind components削除 | E-15 | ○ |
| C-105 | @tailwind screens削除 | E-15 | ○ |
| C-106 | @responsive変換 | E-15 | ○ |
| C-107 | prefix付きimport | E-15 | ○ |
| C-108 | レイヤー順序 | E-15 | ○ |
| C-109 | base個別import | E-15 | ○ |

### CSS migrate-import（UT-UPG-110 〜 UT-UPG-112）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-110 | 拡張子付与 | E-16 | ○ |
| C-111 | 相対パス化 | E-16 | ○ |
| C-112 | 変更不要時の保持 | E-16 | ○ |

### CSS migrate-variants-directive（UT-UPG-113）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-113 | @variants変換 | E-17 | ○ |

### CSS migrate-missing-layers（UT-UPG-114 〜 UT-UPG-116）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-114 | レイヤー追加 | E-18 | ○ |
| C-115 | importへのlayer追加 | E-18 | ○ |
| C-116 | 既存layer保持 | E-18 | ○ |

### CSS migrate-at-apply（UT-UPG-117 〜 UT-UPG-118）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-117 | !important変換 | E-19 | ○ |
| C-118 | ユーティリティ変換 | E-19 | ○ |

### CSS migrate-media-screen（UT-UPG-119 〜 UT-UPG-121）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-119 | @screen変換 | E-20 | ○ |
| C-120 | screen()関数解決 | E-20 | ○ |
| C-121 | designSystem=nullでスキップ | E-20 | ○ |

### CSS migrate-theme-to-var（UT-UPG-122 〜 UT-UPG-124）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-122 | theme()->var()変換 | E-21 | ○ |
| C-123 | メディアクエリ変換 | E-21 | ○ |
| C-124 | designSystem=nullでスキップ | E-21 | ○ |

### CSS migrate-at-layer-utilities（UT-UPG-125 〜 UT-UPG-129）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-125 | @layer->@utility変換 | E-22 | ○ |
| C-126 | components変換 | E-22 | ○ |
| C-127 | セレクタ分割 | E-22 | ○ |
| C-128 | v4スキップ | E-22 | ○ |
| C-129 | 同名統合 | E-22 | ○ |

### CSS migrate-preflight（UT-UPG-130 〜 UT-UPG-132）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-130 | 互換CSS注入 | E-23 | ○ |
| C-131 | v4スキップ | E-23 | ○ |
| C-132 | 非ルートスキップ | E-23 | ○ |

### CSS migrate-config（UT-UPG-133 〜 UT-UPG-136）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-133 | 設定注入 | E-24 | ○ |
| C-134 | migration=nullで変更なし | E-24 | ○ |
| C-135 | 非ルートでスキップ | E-24 | ○ |
| C-136 | 二重注入防止 | E-24 | ○ |

### CSS sort-buckets（UT-UPG-137 〜 UT-UPG-141）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-137 | バケットソート | E-25 | ○ |
| C-138 | バケット統合 | E-25 | ○ |
| C-139 | 空バケット削除 | E-25 | ○ |
| C-140 | 距離計算 | E-25 | ○ |
| C-141 | ソース情報なしでnull | E-25 | ○ |

### CSS format-nodes（UT-UPG-142 〜 UT-UPG-143）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-142 | Prettierフォーマット | E-26 | ○ |
| C-143 | ユーザーバケット保持 | E-26 | ○ |

### CSS analyze（UT-UPG-144 〜 UT-UPG-148）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-144 | 親子関係構築 | E-27 | ○ |
| C-145 | @configルート検出 | E-27 | ○ |
| C-146 | @tailwindルート検出 | E-27 | ○ |
| C-147 | 共通親ルート | E-27 | ○ |
| C-148 | ambiguousパスエラー | E-27 | ○ |

### CSS split（UT-UPG-149 〜 UT-UPG-151）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-149 | @utility分割 | E-28 | ○ |
| C-150 | 空シート統合 | E-28 | ○ |
| C-151 | ルートスキップ | E-28 | ○ |

### CSS link（UT-UPG-152 〜 UT-UPG-154）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-152 | コンフィグリンク | E-29 | ○ |
| C-153 | ルートなしエラー | E-29 | ○ |
| C-154 | 既存@config | E-29 | ○ |

### config migrate-js-config（UT-UPG-155 〜 UT-UPG-163）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-155 | JS->CSS変換 | E-30 | △ |
| C-156 | 変換不可でnull | E-30 | ○ |
| C-157 | シンプルconfig判定 | E-30 | ○ |
| C-158 | 関数値拒否 | E-30 | ○ |
| C-159 | 未知プロパティ拒否 | E-30 | ○ |
| C-160 | presets拒否 | E-30 | ○ |
| C-161 | darkMode変換 | E-30 | ○ |
| C-162 | テーマ変換 | E-30 | ○ |
| C-163 | コンテンツ変換 | E-30 | ○ |

### config migrate-postcss（UT-UPG-164 〜 UT-UPG-171）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-164 | PostCSS変換 | E-31 | ○ |
| C-165 | autoprefixer削除 | E-31 | ○ |
| C-166 | postcss-import削除 | E-31 | ○ |
| C-167 | nesting削除 | E-31 | ○ |
| C-168 | 設定なしスキップ | E-31 | ○ |
| C-169 | JSONコンフィグ | E-31 | ○ |
| C-170 | シンプル判定true | E-31 | ○ |
| C-171 | 動的判定false | E-31 | ○ |

### template migrate（UT-UPG-172 〜 UT-UPG-175）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-172 | 候補マイグレーション | E-32 | ○ |
| C-173 | 安全でない場合のスキップ | E-32 | ○ |
| C-174 | テンプレートマイグレーション | E-32 | △ |
| C-175 | ファイル書き戻し | E-32 | △ |

### template candidates（UT-UPG-176 〜 UT-UPG-180）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-176 | 候補抽出 | E-33 | ○ |
| C-177 | 空コンテンツ | E-33 | ○ |
| C-178 | ベース候補 | E-33 | ○ |
| C-179 | prefix付きパース | E-33 | ○ |
| C-180 | prefix除去出力 | E-33 | ○ |

### template is-safe-migration（UT-UPG-181 〜 UT-UPG-188）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-181 | class属性内で安全 | E-34 | ○ |
| C-182 | styleブロック内で不安全 | E-34 | ○ |
| C-183 | 条件構文内で不安全 | E-34 | ○ |
| C-184 | 論理演算子後で不安全 | E-34 | ○ |
| C-185 | オブジェクトアクセス後で不安全 | E-34 | ○ |
| C-186 | 関数呼び出し後で不安全 | E-34 | ○ |
| C-187 | クォート内でtrue | E-34 | ○ |
| C-188 | クォート外でfalse | E-34 | ○ |

### template migrate-theme-to-var（UT-UPG-189 〜 UT-UPG-194）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-189 | theme()->var()変換 | E-35 | ○ |
| C-190 | モディファイア処理 | E-35 | ○ |
| C-191 | MigrateThemeOnly | E-35 | ○ |
| C-192 | theme()なし | E-35 | ○ |
| C-193 | spacing変換 | E-35 | ○ |
| C-194 | prefix付き変換 | E-35 | ○ |

### template migrate-canonicalize-candidate（UT-UPG-195 〜 UT-UPG-196）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-195 | 正規化 | E-36 | ○ |
| C-196 | 変更なし | E-36 | ○ |

### template migrate-simple-legacy-classes（UT-UPG-197 〜 UT-UPG-200）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-197 | overflow-ellipsis変換 | E-37 | ○ |
| C-198 | flex-grow変換 | E-37 | ○ |
| C-199 | outline-none変換（v3） | E-37 | ○ |
| C-200 | 変換不要 | E-37 | ○ |

### template migrate-legacy-classes（UT-UPG-201 〜 UT-UPG-207）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-201 | shadow変換 | E-38 | ○ |
| C-202 | rounded変換 | E-38 | ○ |
| C-203 | blur変換 | E-38 | ○ |
| C-204 | ring変換 | E-38 | ○ |
| C-205 | v4スキップ | E-38 | ○ |
| C-206 | カスタムテーマスキップ | E-38 | ○ |
| C-207 | バリアント付き変換 | E-38 | ○ |

### template migrate-legacy-arbitrary-values（UT-UPG-208 〜 UT-UPG-210）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-208 | grid-colsカンマ変換 | E-39 | ○ |
| C-209 | grid-rowsカンマ変換 | E-39 | ○ |
| C-210 | 対象外保持 | E-39 | ○ |

### template migrate-variant-order（UT-UPG-211 〜 UT-UPG-213）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-211 | バリアント順序変更 | E-40 | ○ |
| C-212 | 単一バリアント保持 | E-40 | ○ |
| C-213 | v4スキップ | E-40 | ○ |

### template migrate-prefix（UT-UPG-214 〜 UT-UPG-221）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-214 | v3->v4 prefix変換 | E-41 | ○ |
| C-215 | prefix未設定保持 | E-41 | ○ |
| C-216 | v4スキップ | E-41 | ○ |
| C-217 | prefix値小文字変換 | E-41 | ○ |
| C-218 | 無効prefixでデフォルト | E-41 | ○ |
| C-219 | v3ベース抽出 | E-41 | ○ |
| C-220 | important付きベース | E-41 | ○ |
| C-221 | ネガティブ値ベース | E-41 | ○ |

### template migrate-automatic-var-injection（UT-UPG-222 〜 UT-UPG-226）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-222 | var()注入 | E-42 | ○ |
| C-223 | モディファイアvar注入 | E-42 | ○ |
| C-224 | バリアントvar注入 | E-42 | ○ |
| C-225 | 既存var保持 | E-42 | ○ |
| C-226 | 例外プロパティスキップ | E-42 | ○ |

### template migrate-max-width-screen（UT-UPG-227 〜 UT-UPG-228）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-227 | max-w-screen変換 | E-43 | ○ |
| C-228 | 対象外保持 | E-43 | ○ |

### template migrate-handle-empty-arbitrary-values（UT-UPG-229 〜 UT-UPG-231）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-229 | 空任意値変換 | E-44 | ○ |
| C-230 | モディファイア付き空値 | E-44 | ○ |
| C-231 | 変換不要 | E-44 | ○ |

### template migrate-modernize-arbitrary-values（UT-UPG-232 〜 UT-UPG-234）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-232 | group->in変換 | E-45 | ○ |
| C-233 | 名前付きgroup変換 | E-45 | ○ |
| C-234 | modifier移動 | E-45 | ○ |

### template migrate-camelcase-in-named-value（UT-UPG-235 〜 UT-UPG-238）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-235 | camelCase->kebab-case | E-46 | ○ |
| C-236 | v4スキップ | E-46 | ○ |
| C-237 | モディファイア変換 | E-46 | ○ |
| C-238 | camelToKebab内部関数 | E-46 | ○ |

### template migrate-arbitrary-variants（UT-UPG-239 〜 UT-UPG-240）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-239 | 任意バリアント変換 | E-47 | ○ |
| C-240 | バリアントなし保持 | E-47 | ○ |

### template prepare-config（UT-UPG-241 〜 UT-UPG-246）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-241 | 設定準備 | E-48 | △ |
| C-242 | 自動検出 | E-48 | ○ |
| C-243 | 設定ファイル検出 | E-48 | ○ |
| C-244 | 検出失敗 | E-48 | ○ |
| C-245 | 親パス走査 | E-48 | ○ |
| C-246 | 不正パスエラー | E-48 | ○ |

### commands help（UT-UPG-247 〜 UT-UPG-249）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-247 | ヘルプ出力 | E-49 | △ |
| C-248 | 不正コマンド表示 | E-49 | ○ |
| C-249 | オプションなし | E-49 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-099（migrate正常系）**：PostCSS処理パイプラインの全プラグインの統合動作はソースコードの制御フローから推測したが、実際の出力結果は実行環境でのみ完全に検証可能
  - 候補：統合テスト結果 / PostCSS処理パイプラインの仕様書
- **C-155（migrateJsConfig正常系）**：返却オブジェクトの詳細構造はJS configの内容に依存するため、全パターンの網羅は困難
  - 候補：JS config仕様書 / 既存テストケースの期待値
- **C-174, C-175（template migrateContents/migrate）**：テンプレートエンジン（Oxide extractor）との統合動作やファイルI/Oの副作用は実行環境依存
  - 候補：Oxide extractorの仕様 / E2Eテスト結果
- **C-241（prepareConfig正常系）**：designSystemの生成は`@tailwindcss/node`の`__unstable__loadDesignSystem`に依存し外部モジュールの挙動を含む
  - 候補：@tailwindcss/nodeのAPI仕様
- **C-247（helpヘルプ出力）**：console出力の詳細フォーマットは実行時でのみ確認可能
  - 候補：CLIヘルプの仕様定義 / スナップショットテスト

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: UT-UPG-024〜034（formatNanoseconds） - 純粋関数で分岐が明確、ソースコードから完全に検証可能
- **0（低リスク）**: UT-UPG-035〜047（args） - 純粋関数系で入力/出力が明確
- **0（低リスク）**: UT-UPG-056〜059（spliceChangesIntoString） - 純粋関数で検証容易
- **0（低リスク）**: UT-UPG-197〜210（simple-legacy-classes, legacy-classes, legacy-arbitrary-values） - 定数マップに基づく変換で根拠が明確
- **1（中リスク）**: UT-UPG-001〜023（Stylesheet） - PostCSS依存の挙動が一部あるが、クラス定義自体は明確
- **1（中リスク）**: UT-UPG-088〜095（extract-static-plugins） - tree-sitter依存だが、クエリパターンがソースに記載
- **1（中リスク）**: UT-UPG-103〜148（CSS codemods各種） - PostCSS AST操作を含むが、変換ロジックはソースコードから追跡可能
- **2（高リスク）**: UT-UPG-099（migrate正常系） - 多数のPostCSSプラグインの統合動作を含み実行環境依存
- **2（高リスク）**: UT-UPG-155（migrateJsConfig） - 動的なconfig解析で返却値の完全予測が困難
- **2（高リスク）**: UT-UPG-241（prepareConfig） - 外部モジュール依存の複合動作

## 6) レビュアーチェックリスト（最小）
- [ ] 全249テストケースの対象ファイルが実際に存在するか確認
- [ ] 正常系・異常系・境界値の観点バランスが各関数で適切か確認
- [ ] LEGACY_CLASS_MAP / THEME_KEYS の全エントリに対応するテストケースがあるか確認
- [ ] v3->v4マイグレーション限定の処理（isMajor(3)ガード）に対してv4スキップケースが網羅されているか確認
- [ ] PostCSS AST操作系のテストケースで前提条件（designSystem設定等）が現実的か確認
- [ ] 根拠なし（△）の6件について、統合テストまたは手動テストでの補完計画を策定
- [ ] テストID（UT-UPG-001〜249）に欠番がないか確認
- [ ] 優先度の分布が妥当か確認（高: コア機能、中: サブ機能、低: ヘルパー/内部関数）
