---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 101
  claims_with_evidence: 99
  claims_without_evidence: 2
confidence_derived: 0.98
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：99 / 101、根拠なし：2
- 優先レビュー（高）
  1. **C-033 (UT-PCS-033)**：AST参照比較によるキャッシュ再利用の期待結果は、compiler.build()の参照返却仕様に依存するため根拠不足
  2. **C-048 (UT-PCS-048)**：キャッシュキーのフォーマットにおける `opts.base ?? ''` の挙動確認が必要

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

- E-01: `packages/@tailwindcss-postcss/src/index.ts` - メインプラグインファイル（tailwindcss関数、getContextFromCache関数、CacheEntry型、PluginOptions型）
- E-02: `packages/@tailwindcss-postcss/src/ast.ts` - AST変換ファイル（cssAstToPostCssAst関数、postCssAstToCssAst関数）
- E-03: `packages/@tailwindcss-postcss/src/postcss-fix-relative-paths/index.ts` - 相対パス修正プラグイン（fixRelativePathsPlugin関数、fixRelativePath関数）
- E-04: `packages/@tailwindcss-postcss/src/index.cts` - CJS再エクスポートファイル
- E-05: `packages/@tailwindcss-postcss/package.json` - パッケージ構成情報
- E-06: `packages/@tailwindcss-postcss/src/index.test.ts` - 既存テストファイル（テストパターンの参考）
- E-07: `packages/@tailwindcss-postcss/src/ast.test.ts` - AST変換の既存テストファイル

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 (UT-PCS-001) | デフォルトオプションでプラグインオブジェクトが返却される | E-01 (L71-L363, L365) | ○ |
| C-002 (UT-PCS-002) | baseオプション指定時にベースディレクトリが使用される | E-01 (L72) | ○ |
| C-003 (UT-PCS-003) | optimizeオプションtrueでCSS最適化される | E-01 (L73, L292-L309) | ○ |
| C-004 (UT-PCS-004) | optimize.minify:falseでミニファイ無効 | E-01 (L300-L302) | ○ |
| C-005 (UT-PCS-005) | transformAssetUrls:falseでURL書き換え無効 | E-01 (L74) | ○ |
| C-006 (UT-PCS-006) | デフォルトでtransformAssetUrlsがtrue | E-01 (L74) | ○ |
| C-007 (UT-PCS-007) | NODE_ENV=productionで最適化有効 | E-01 (L73) | ○ |
| C-008 (UT-PCS-008) | NODE_ENV未設定で最適化無効 | E-01 (L73) | ○ |
| C-009 (UT-PCS-009) | pluginsにfixRelativePathsPluginが含まれる | E-01 (L78-L83) | ○ |
| C-010 (UT-PCS-010) | postcssプロパティがtrue | E-01 (L365) | ○ |
| C-011 (UT-PCS-011) | Tailwind CSSのatルール含むCSSのコンパイル | E-01 (L86-L358) | ○ |
| C-012 (UT-PCS-012) | Tailwind CSS atルールなしのbailアウト | E-01 (L96-L113) | ○ |
| C-013 (UT-PCS-013) | @applyでbailアウトしない | E-01 (L107) | ○ |
| C-014 (UT-PCS-014) | @themeでbailアウトしない | E-01 (L103) | ○ |
| C-015 (UT-PCS-015) | @variantでbailアウトしない | E-01 (L104) | ○ |
| C-016 (UT-PCS-016) | @configでbailアウトしない | E-01 (L105) | ○ |
| C-017 (UT-PCS-017) | @pluginでbailアウトしない | E-01 (L106) | ○ |
| C-018 (UT-PCS-018) | @referenceでbailアウトしない | E-01 (L101) | ○ |
| C-019 (UT-PCS-019) | @tailwindでbailアウトしない | E-01 (L108) | ○ |
| C-020 (UT-PCS-020) | CSS ModulesでAtPropertyポリフィル無効 | E-01 (L90, L145) | ○ |
| C-021 (UT-PCS-021) | 通常CSSで全Polyfills有効 | E-01 (L145) | ○ |
| C-022 (UT-PCS-022) | 依存パスがresult.messagesに登録 | E-01 (L167-L174) | ○ |
| C-023 (UT-PCS-023) | globパターンがdir-dependency登録 | E-01 (L275-L282) | ○ |
| C-024 (UT-PCS-024) | CSS自身は依存関係から除外 | E-01 (L244-L246) | ○ |
| C-025 (UT-PCS-025) | compiler.root='none'でソース検出無効 | E-01 (L215-L217) | ○ |
| C-026 (UT-PCS-026) | compiler.root=nullでbase使用 | E-01 (L220-L222) | ○ |
| C-027 (UT-PCS-027) | compiler.rootオブジェクト指定でroot使用 | E-01 (L225-L226) | ○ |
| C-028 (UT-PCS-028) | base自身のglob '*'は登録されない | E-01 (L263-L265) | ○ |
| C-029 (UT-PCS-029) | pattern空文字でdependency登録 | E-01 (L267-L272) | ○ |
| C-030 (UT-PCS-030) | Features.Noneで早期リターン | E-01 (L158-L159) | ○ |
| C-031 (UT-PCS-031) | ファイル変更なしでインクリメンタルビルド | E-01 (L162, L190-L196, L200-L207) | ○ |
| C-032 (UT-PCS-032) | ファイル変更ありでフルリビルド | E-01 (L194-L196, L200-L207) | ○ |
| C-033 (UT-PCS-033) | AST変更なしでキャッシュ再利用 | E-01 (L291) | △ |
| C-034 (UT-PCS-034) | インデント2スペース設定 | E-01 (L330) | ○ |
| C-035 (UT-PCS-035) | エラー時compilerがnullリセット | E-01 (L336) | ○ |
| C-036 (UT-PCS-036) | エラー時依存関係がmessagesに追加 | E-01 (L340-L347) | ○ |
| C-037 (UT-PCS-037) | messageプロパティありでroot.error | E-01 (L353-L355) | ○ |
| C-038 (UT-PCS-038) | messageプロパティなしで文字列root.error | E-01 (L357) | ○ |
| C-039 (UT-PCS-039) | result.opts.from未設定で空文字 | E-01 (L89) | ○ |
| C-040 (UT-PCS-040) | 依存ファイル0件で正常処理 | E-01 (L167) | ○ |
| C-041 (UT-PCS-041) | statSyncがnullの場合スキップ | E-01 (L183-L189) | ○ |
| C-042 (UT-PCS-042) | 入力ファイル未存在でフルリビルド | E-01 (L184-L188) | ○ |
| C-043 (UT-PCS-043) | 新規エントリがキャッシュ追加 | E-01 (L32-L48) | ○ |
| C-044 (UT-PCS-044) | 同キーでキャッシュヒット | E-01 (L34) | ○ |
| C-045 (UT-PCS-045) | 異なるinputFileで別キャッシュ | E-01 (L33) | ○ |
| C-046 (UT-PCS-046) | 異なるbaseで別キャッシュ | E-01 (L33) | ○ |
| C-047 (UT-PCS-047) | 異なるoptimizeで別キャッシュ | E-01 (L33) | ○ |
| C-048 (UT-PCS-048) | base undefined時のキーフォーマット | E-01 (L33) | △ |
| C-049 (UT-PCS-049) | 空AST配列から空PostCSS Root | E-02 (L9-L124) | ○ |
| C-050 (UT-PCS-050) | declarationがPostCSS declに変換 | E-02 (L66-L74) | ○ |
| C-051 (UT-PCS-051) | important付きdeclaration変換 | E-02 (L70-L71) | ○ |
| C-052 (UT-PCS-052) | ruleがPostCSS ruleに変換 | E-02 (L77-L85) | ○ |
| C-053 (UT-PCS-053) | rule子ノード再帰変換 | E-02 (L82-L84) | ○ |
| C-054 (UT-PCS-054) | at-ruleがPostCSS atRuleに変換 | E-02 (L88-L96) | ○ |
| C-055 (UT-PCS-055) | at-rule子ノード再帰変換 | E-02 (L93-L95) | ○ |
| C-056 (UT-PCS-056) | commentがPostCSS commentに変換 | E-02 (L99-L107) | ○ |
| C-057 (UT-PCS-057) | commentのraws.left/rightが空文字 | E-02 (L103-L104) | ○ |
| C-058 (UT-PCS-058) | at-rootがスキップ | E-02 (L110-L111) | ○ |
| C-059 (UT-PCS-059) | contextがスキップ | E-02 (L110-L111) | ○ |
| C-060 (UT-PCS-060) | sourceが引数から設定 | E-02 (L24) | ○ |
| C-061 (UT-PCS-061) | ソースロケーション付きノードのsource設定 | E-02 (L26-L48, L50-L62) | ○ |
| C-062 (UT-PCS-062) | ソースロケーションなしでsource削除 | E-02 (L59-L61) | ○ |
| C-063 (UT-PCS-063) | ruleのraws.semicolon=true | E-02 (L80) | ○ |
| C-064 (UT-PCS-064) | at-ruleのraws.semicolon=true | E-02 (L91) | ○ |
| C-065 (UT-PCS-065) | value null/undefinedで空文字 | E-02 (L69) | ○ |
| C-066 (UT-PCS-066) | 大量ネストの正常変換 | E-02 (L64-L117) | ○ |
| C-067 (UT-PCS-067) | 空PostCSS Rootから空配列 | E-02 (L126-L189) | ○ |
| C-068 (UT-PCS-068) | PostCSS declがdeclaration変換 | E-02 (L149-L153) | ○ |
| C-069 (UT-PCS-069) | important付きPostCSS decl変換 | E-02 (L150) | ○ |
| C-070 (UT-PCS-070) | PostCSS ruleがrule変換 | E-02 (L156-L160) | ○ |
| C-071 (UT-PCS-071) | PostCSS rule子ノード再帰変換 | E-02 (L159) | ○ |
| C-072 (UT-PCS-072) | PostCSS atRuleがat-rule変換 | E-02 (L164-L168) | ○ |
| C-073 (UT-PCS-073) | PostCSS atRule子ノード再帰変換 | E-02 (L167) | ○ |
| C-074 (UT-PCS-074) | '!'開始コメントがcomment変換 | E-02 (L172-L177) | ○ |
| C-075 (UT-PCS-075) | '!'非開始コメントは無視 | E-02 (L173) | ○ |
| C-076 (UT-PCS-076) | ソース情報ありでsrc設定 | E-02 (L132-L141) | ○ |
| C-077 (UT-PCS-077) | ソース情報なしでsrc undefined | E-02 (L133-L134) | ○ |
| C-078 (UT-PCS-078) | source.input.fileがSource.fileに | E-02 (L128) | ○ |
| C-079 (UT-PCS-079) | source.input.idがSource.fileに | E-02 (L128) | ○ |
| C-080 (UT-PCS-080) | source.start undefinedでsrc undefined | E-02 (L138) | ○ |
| C-081 (UT-PCS-081) | source.end undefinedでsrc undefined | E-02 (L139) | ○ |
| C-082 (UT-PCS-082) | source.input undefinedでsrc undefined | E-02 (L137) | ○ |
| C-083 (UT-PCS-083) | 空コメントテキストの境界値 | E-02 (L173) | ○ |
| C-084 (UT-PCS-084) | fixRelativePathsPluginのプラグイン構造 | E-03 (L8, L68-L73) | ○ |
| C-085 (UT-PCS-085) | 相対パスの書き換え | E-03 (L12-L66) | ○ |
| C-086 (UT-PCS-086) | 親ディレクトリ参照の書き換え | E-03 (L48, L52-L55) | ○ |
| C-087 (UT-PCS-087) | ダブルクォートパスの処理 | E-03 (L30-L31) | ○ |
| C-088 (UT-PCS-088) | シングルクォートパスの処理 | E-03 (L32-L33) | ○ |
| C-089 (UT-PCS-089) | クォートなしパスのスキップ | E-03 (L35-L37) | ○ |
| C-090 (UT-PCS-090) | 否定パスの処理 | E-03 (L41-L45) | ○ |
| C-091 (UT-PCS-091) | 非相対パスのスキップ | E-03 (L48-L49) | ○ |
| C-092 (UT-PCS-092) | 絶対パスのスキップ | E-03 (L48-L49) | ○ |
| C-093 (UT-PCS-093) | @sourceルールのマッチ | E-03 (L71) | ○ |
| C-094 (UT-PCS-094) | @pluginルールのマッチ | E-03 (L71) | ○ |
| C-095 (UT-PCS-095) | @configルールのマッチ | E-03 (L71) | ○ |
| C-096 (UT-PCS-096) | マッチ外ルールのスキップ | E-03 (L71) | ○ |
| C-097 (UT-PCS-097) | rootPath未設定のスキップ | E-03 (L13-L16) | ○ |
| C-098 (UT-PCS-098) | inputFilePath未設定のスキップ | E-03 (L18-L21) | ○ |
| C-099 (UT-PCS-099) | touched WeakSetによる二重処理防止 | E-03 (L10, L23-L25, L65) | ○ |
| C-100 (UT-PCS-100) | 同一ディレクトリで'./'付加 | E-03 (L60-L62) | ○ |
| C-101 (UT-PCS-101) | CJSエクスポートの互換性 | E-04 (L1-L7) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-033 (UT-PCS-033)**: AST参照同一性（`context.tailwindCssAst !== tailwindCssAst`）によるキャッシュ再利用の正確な動作条件は、`compiler.build()` の内部実装に依存する。同一の候補で再ビルドした場合に同一参照が返されるかどうかは、tailwindcssコアの実装仕様確認が必要
  - 候補：`packages/tailwindcss/src/compile.ts` の `build()` メソッド実装 / tailwindcssコアのドキュメント
- **C-048 (UT-PCS-048)**: `opts.base ?? ''` における nullish coalescing 演算子の結果、`undefined` の場合は `''` となるため、実際のキーフォーマットは `test.css::JSON.stringify(undefined)` すなわち `test.css::undefined` となる。ただし `JSON.stringify(undefined)` は `undefined`（文字列ではなく）を返すため正確なキー文字列の確認が必要
  - 候補：TypeScript/JavaScript の `JSON.stringify(undefined)` の仕様確認 / 実行時テスト

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - AST変換関連テストケース（C-049〜C-083）：ソースコードから直接導出された純粋関数に近いロジックであり信頼性が高い
- 0: 低リスク - fixRelativePathsPlugin関連テストケース（C-084〜C-101）：明確な入出力を持つパス処理であり信頼性が高い
- 1: 中リスク - プラグインメインロジック（C-011〜C-042）：非同期処理、外部依存（Scanner, compileAst, optimizeCss）を含むため、モック設計の正確性がテストの有効性に影響する
- 1: 中リスク - キャッシュ関連（C-043〜C-048）：QuickLRUの内部挙動とキーフォーマットの正確性確認が必要
- 0: 低リスク - CJS互換性（C-101）：シンプルな再エクスポートであり信頼性が高い

## 6) レビュアーチェックリスト（最小）
- [ ] C-033のAST参照比較によるキャッシュ再利用の期待結果が正しいか確認（compiler.build()の参照返却仕様を要確認）
- [ ] C-048のキャッシュキーフォーマットで `opts.base ?? ''` および `JSON.stringify(opts.optimize)` の結果が期待値と一致するか確認
- [ ] プラグインメインロジック（C-011〜C-042）のテストケースで、外部依存（Scanner, compileAst, optimizeCss）のモック方針が適切か確認
- [ ] bailチェック対象のアトルール一覧（C-012〜C-019）がソースコードの条件分岐（8種: import, reference, theme, variant, config, plugin, apply, tailwind）と完全に一致するか確認
- [ ] CSS Modulesの判定ロジック（C-020）で `.module.css` 以外の拡張子パターンのテストが不要か確認
- [ ] fixRelativePathsPluginのwalkAtRulesの正規表現 `/source|plugin|config/` が意図した全パターンをカバーしているか確認
