---
generated_at: 2026-03-01 20:30:00
metrics:
  claims_total: 141
  claims_with_evidence: 141
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：ui.csv（単体テストケース一覧）

## 本レポートについて

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

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

1. **根拠の有無確認**：各テストケースに対して、ソースコード内の関数・メソッド定義が存在するか
2. **根拠との整合性**：テストケースの内容が実際のコードの振る舞いと矛盾していないか
3. **網羅性**：主要な関数・メソッドに対するテスト観点（正常系・異常系・境界値）を適切にカバーしているか

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：141 / 141、根拠なし：0
- 優先レビュー（高）
  1. なし（全テストケースに根拠あり）

## 2) 参照した情報（Evidence一覧）
> 以下のソースファイルを解析し、テストケースを生成しました。

### ユーティリティ関数
- E-01: `packages/ui/src/utilities/deepMerge.ts` - deepMergeSimple関数
- E-02: `packages/ui/src/utilities/setsAreEqual.ts` - setsAreEqual関数
- E-03: `packages/ui/src/utilities/removeUndefined.ts` - removeUndefined関数
- E-04: `packages/ui/src/utilities/normalizeRelationshipValue.ts` - normalizeRelationshipValue関数
- E-05: `packages/ui/src/utilities/formatAbsoluteURL.ts` - formatAbsoluteURL関数、getAbsoluteUrl関数
- E-06: `packages/ui/src/utilities/sanitizeID.ts` - sanitizeID関数
- E-07: `packages/ui/src/utilities/parseSearchParams.ts` - parseSearchParams関数
- E-08: `packages/ui/src/utilities/isEditing.ts` - isEditing関数
- E-09: `packages/ui/src/utilities/canUseDOM.ts` - canUseDOM定数
- E-10: `packages/ui/src/utilities/isURLAllowed.ts` - isURLAllowed関数
- E-11: `packages/ui/src/utilities/findLocaleFromCode.ts` - findLocaleFromCode関数
- E-12: `packages/ui/src/utilities/generateFieldID.ts` - generateFieldID関数
- E-13: `packages/ui/src/utilities/hasSavePermission.ts` - hasSavePermission関数
- E-14: `packages/ui/src/utilities/scrollToID.ts` - scrollToID関数
- E-15: `packages/ui/src/utilities/getOffsetTop.ts` - getOffsetTop関数
- E-16: `packages/ui/src/utilities/abortAndIgnore.ts` - abortAndIgnore関数、handleAbortRef関数
- E-17: `packages/ui/src/utilities/stringifyTruncated.ts` - stringifyTruncated関数
- E-18: `packages/ui/src/utilities/isClientUserObject.ts` - isClientUserObject関数
- E-19: `packages/ui/src/utilities/isValidReactElement.ts` - isValidReactElement関数
- E-20: `packages/ui/src/utilities/shouldPermanentlyDelete.ts` - shouldPermanentlyDelete関数
- E-21: `packages/ui/src/utilities/groupNavItems.ts` - groupNavItems関数、EntityType enum
- E-22: `packages/ui/src/utilities/hasOptionLabelJSXElement.ts` - hasOptionLabelJSXElement関数
- E-23: `packages/ui/src/utilities/getVisibleEntities.ts` - getVisibleEntities関数、isHidden関数
- E-24: `packages/ui/src/utilities/reduceFieldsToValuesWithValidation.ts` - reduceFieldsToValuesWithValidation関数
- E-25: `packages/ui/src/utilities/sanitizeFilterOptionsQuery.ts` - sanitizeFilterOptionsQuery関数

### フォーマット関連
- E-26: `packages/ui/src/utilities/formatDocTitle/formatLexicalDocTitle.ts` - formatLexicalDocTitle関数、isSerializedLexicalEditor関数
- E-27: `packages/ui/src/utilities/formatDocTitle/formatDateTitle.ts` - formatDate関数、formatTimeToNow関数
- E-28: `packages/ui/src/utilities/formatDocTitle/formatRelationshipTitle.ts` - formatRelationshipTitle関数
- E-29: `packages/ui/src/utilities/formatDocTitle/index.ts` - formatDocTitle関数

### フォーム関連
- E-30: `packages/ui/src/forms/Form/fieldReducer.ts` - fieldReducer関数（ADD_ROW、DUPLICATE_ROW、REMOVE_ROW、MOVE_ROW、UPDATE、REPLACE_STATE、ADD_SERVER_ERRORS、SET_ROW_COLLAPSED、REMOVE）
- E-31: `packages/ui/src/forms/Form/rows.ts` - separateRows関数、flattenRows関数
- E-32: `packages/ui/src/forms/Form/rowHelpers.ts` - extractRowsAndCollapsedIDs関数、toggleAllRows関数
- E-33: `packages/ui/src/forms/Form/mergeServerFormState.ts` - mergeServerFormState関数
- E-34: `packages/ui/src/forms/Form/createNestedClientFieldPath.ts` - createNestedClientFieldPath関数
- E-35: `packages/ui/src/forms/Form/reduceToSerializableFields.ts` - reduceToSerializableFields関数、sanitizeField関数
- E-36: `packages/ui/src/forms/WatchChildErrors/buildPathSegments.ts` - buildPathSegments関数

### プロバイダー関連
- E-37: `packages/ui/src/providers/ListQuery/mergeQuery.ts` - mergeQuery関数
- E-38: `packages/ui/src/providers/ListQuery/sanitizeQuery.ts` - sanitizeQuery関数
- E-39: `packages/ui/src/providers/TableColumns/getInitialColumns.ts` - getInitialColumns関数、getRemainingColumns関数
- E-40: `packages/ui/src/providers/TableColumns/buildColumnState/findValueFromPath.ts` - findValueFromPath関数
- E-41: `packages/ui/src/providers/TableColumns/buildColumnState/isColumnActive.ts` - isColumnActive関数
- E-42: `packages/ui/src/providers/TableColumns/buildColumnState/sortFieldMap.ts` - sortFieldMap関数
- E-43: `packages/ui/src/providers/LivePreview/sizeReducer.ts` - sizeReducer関数
- E-44: `packages/ui/src/providers/Folders/groupItemIDsByRelation.ts` - groupItemIDsByRelation関数

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

### ユーティリティ関数（UT-UI-001 〜 UT-UI-072）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | deepMergeSimple: 2つのオブジェクトをマージ | E-01 | ○ |
| C-02 | deepMergeSimple: ネストオブジェクトの再帰マージ | E-01 | ○ |
| C-03 | deepMergeSimple: obj2がobj1を上書き | E-01 | ○ |
| C-04 | deepMergeSimple: 配列は上書き（マージされない） | E-01 | ○ |
| C-05 | deepMergeSimple: 空オブジェクト同士のマージ | E-01 | ○ |
| C-06 | setsAreEqual: 同一要素のSet比較 | E-02 | ○ |
| C-07 | setsAreEqual: 異なる要素のSet比較 | E-02 | ○ |
| C-08 | setsAreEqual: サイズ違いのSet比較 | E-02 | ○ |
| C-09 | setsAreEqual: 空Set同士の比較 | E-02 | ○ |
| C-10 | removeUndefined: undefinedプロパティ削除 | E-03 | ○ |
| C-11 | removeUndefined: nullは保持 | E-03 | ○ |
| C-12 | removeUndefined: 空オブジェクト処理 | E-03 | ○ |
| C-13 | normalizeRelationshipValue: 単純ID（非ポリモーフィック） | E-04 | ○ |
| C-14 | normalizeRelationshipValue: オブジェクトからID抽出 | E-04 | ○ |
| C-15 | normalizeRelationshipValue: ポリモーフィック値 | E-04 | ○ |
| C-16 | normalizeRelationshipValue: ネストオブジェクトID抽出 | E-04 | ○ |
| C-17 | normalizeRelationshipValue: null入力処理 | E-04 | ○ |
| C-18 | formatAbsoluteURL: 絶対URL保持 | E-05 | ○ |
| C-19 | formatAbsoluteURL: 相対URL変換 | E-05 | ○ |
| C-20 | formatAbsoluteURL: httpプロトコル処理 | E-05 | ○ |
| C-21 | sanitizeID: 数値ID処理 | E-06 | ○ |
| C-22 | sanitizeID: URLデコード | E-06 | ○ |
| C-23 | sanitizeID: undefined入力処理 | E-06 | ○ |
| C-24 | parseSearchParams: URLSearchParams変換 | E-07 | ○ |
| C-25 | parseSearchParams: ネストパラメータ対応 | E-07 | ○ |
| C-26 | isEditing: globalSlug指定時 | E-08 | ○ |
| C-27 | isEditing: collectionSlug+id指定時 | E-08 | ○ |
| C-28 | isEditing: collectionSlugのみ（新規作成） | E-08 | ○ |
| C-29 | isEditing: 空オブジェクト | E-08 | ○ |
| C-30 | canUseDOM: ブラウザ環境判定 | E-09 | ○ |
| C-31 | canUseDOM: サーバー環境判定 | E-09 | ○ |
| C-32 | isURLAllowed: 許可リスト完全一致 | E-10 | ○ |
| C-33 | isURLAllowed: ワイルドカードマッチ | E-10 | ○ |
| C-34 | isURLAllowed: 不許可URL | E-10 | ○ |
| C-35 | isURLAllowed: 無効URL | E-10 | ○ |
| C-36 | findLocaleFromCode: ロケール検索成功 | E-11 | ○ |
| C-37 | findLocaleFromCode: ロケール不在 | E-11 | ○ |
| C-38 | findLocaleFromCode: 空配列処理 | E-11 | ○ |
| C-39 | generateFieldID: 基本ID生成 | E-12 | ○ |
| C-40 | generateFieldID: editDepthサフィックス | E-12 | ○ |
| C-41 | generateFieldID: UUIDサフィックス | E-12 | ○ |
| C-42 | generateFieldID: 空パス処理 | E-12 | ○ |
| C-43 | hasSavePermission: 編集権限あり | E-13 | ○ |
| C-44 | hasSavePermission: 作成権限あり | E-13 | ○ |
| C-45 | hasSavePermission: グローバル権限 | E-13 | ○ |
| C-46 | hasSavePermission: 権限なし | E-13 | ○ |
| C-47 | scrollToID: スクロール実行 | E-14 | ○ |
| C-48 | scrollToID: 要素不在 | E-14 | ○ |
| C-49 | getOffsetTop: offset計算 | E-15 | ○ |
| C-50 | getOffsetTop: 負値対策 | E-15 | ○ |
| C-51 | abortAndIgnore: abort実行 | E-16 | ○ |
| C-52 | abortAndIgnore: エラー無視 | E-16 | ○ |
| C-53 | handleAbortRef: Controller作成 | E-16 | ○ |
| C-54 | handleAbortRef: 既存abort | E-16 | ○ |
| C-55 | stringifyTruncated: JSON変換 | E-17 | ○ |
| C-56 | stringifyTruncated: 切り詰め | E-17 | ○ |
| C-57 | stringifyTruncated: 閾値判定 | E-17 | ○ |
| C-58 | isClientUserObject: オブジェクト判定 | E-18 | ○ |
| C-59 | isClientUserObject: null判定 | E-18 | ○ |
| C-60 | isClientUserObject: undefined判定 | E-18 | ○ |
| C-61 | isValidReactElement: React要素判定 | E-19 | ○ |
| C-62 | isValidReactElement: Lazy判定 | E-19 | ○ |
| C-63 | isValidReactElement: null判定 | E-19 | ○ |
| C-64 | shouldPermanentlyDelete: ゴミ箱完全削除 | E-20 | ○ |
| C-65 | shouldPermanentlyDelete: ゴミ箱なし | E-20 | ○ |
| C-66 | shouldPermanentlyDelete: 完全削除選択 | E-20 | ○ |
| C-67 | shouldPermanentlyDelete: ソフト削除 | E-20 | ○ |
| C-68 | groupNavItems: グループ化 | E-21 | ○ |
| C-69 | groupNavItems: 権限フィルタ | E-21 | ○ |
| C-70 | groupNavItems: グループ除外 | E-21 | ○ |
| C-71 | hasOptionLabelJSXElement: JSXラベル検出 | E-22 | ○ |
| C-72 | hasOptionLabelJSXElement: 文字列ラベル | E-22 | ○ |

### フォーム関連（UT-UI-073 〜 UT-UI-096）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-73 | fieldReducer ADD_ROW: 行追加 | E-30 | ○ |
| C-74 | fieldReducer ADD_ROW: 位置指定追加 | E-30 | ○ |
| C-75 | fieldReducer DUPLICATE_ROW: 行複製 | E-30 | ○ |
| C-76 | fieldReducer REMOVE_ROW: 行削除 | E-30 | ○ |
| C-77 | fieldReducer MOVE_ROW: 行移動 | E-30 | ○ |
| C-78 | fieldReducer UPDATE: フィールド更新 | E-30 | ○ |
| C-79 | fieldReducer REPLACE_STATE: 状態置換 | E-30 | ○ |
| C-80 | fieldReducer ADD_SERVER_ERRORS: エラー追加 | E-30 | ○ |
| C-81 | fieldReducer SET_ROW_COLLAPSED: 折りたたみ | E-30 | ○ |
| C-82 | fieldReducer REMOVE: フィールド削除 | E-30 | ○ |
| C-83 | separateRows: 行分離 | E-31 | ○ |
| C-84 | flattenRows: 行フラット化 | E-31 | ○ |
| C-85 | extractRowsAndCollapsedIDs: ID抽出 | E-32 | ○ |
| C-86 | toggleAllRows: 全行折りたたみ | E-32 | ○ |
| C-87 | mergeServerFormState: 状態マージ | E-33 | ○ |
| C-88 | mergeServerFormState: 値除外マージ | E-33 | ○ |
| C-89 | mergeServerFormState: サーバー追加 | E-33 | ○ |
| C-90 | mergeServerFormState: 参照最適化 | E-33 | ○ |
| C-91 | createNestedClientFieldPath: パス結合 | E-34 | ○ |
| C-92 | createNestedClientFieldPath: 空親パス | E-34 | ○ |
| C-93 | createNestedClientFieldPath: 非データフィールド | E-34 | ○ |
| C-94 | reduceToSerializableFields: シリアライズ化 | E-35 | ○ |
| C-95 | buildPathSegments: パス構築 | E-36 | ○ |
| C-96 | buildPathSegments: タブ処理 | E-36 | ○ |

### プロバイダー関連（UT-UI-097 〜 UT-UI-141）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-97 | mergeQuery: クエリマージ | E-37 | ○ |
| C-98 | mergeQuery: ページリセット | E-37 | ○ |
| C-99 | mergeQuery: グループクエリ | E-37 | ○ |
| C-100 | sanitizeQuery: 空文字列除去 | E-38 | ○ |
| C-101 | sanitizeQuery: 空where除去 | E-38 | ○ |
| C-102 | sanitizeQuery: 型変換 | E-38 | ○ |
| C-103 | sanitizeQuery: ページ0除去 | E-38 | ○ |
| C-104 | getInitialColumns: デフォルト列 | E-39 | ○ |
| C-105 | getInitialColumns: 自動列選択 | E-39 | ○ |
| C-106 | getInitialColumns: 列数制限 | E-39 | ○ |
| C-107 | findValueFromPath: 値取得 | E-40 | ○ |
| C-108 | findValueFromPath: パス不在 | E-40 | ○ |
| C-109 | isColumnActive: アクティブ判定 | E-41 | ○ |
| C-110 | isColumnActive: アクセサ検索 | E-41 | ○ |
| C-111 | isColumnActive: デフォルトアクティブ | E-41 | ○ |
| C-112 | sortFieldMap: ソート | E-42 | ○ |
| C-113 | sortFieldMap: 未指定フィールド | E-42 | ○ |
| C-114 | sizeReducer: 幅更新 | E-43 | ○ |
| C-115 | sizeReducer: 高さ更新 | E-43 | ○ |
| C-116 | sizeReducer: リセット | E-43 | ○ |
| C-117 | isSerializedLexicalEditor: Lexical判定（true） | E-26 | ○ |
| C-118 | isSerializedLexicalEditor: 非Lexical判定 | E-26 | ○ |
| C-119 | formatLexicalDocTitle: テキスト抽出 | E-26 | ○ |
| C-120 | formatLexicalDocTitle: ネスト抽出 | E-26 | ○ |
| C-121 | formatDate: 日付フォーマット | E-27 | ○ |
| C-122 | formatDate: タイムゾーン | E-27 | ○ |
| C-123 | formatTimeToNow: 相対時間 | E-27 | ○ |
| C-124 | formatRelationshipTitle: 配列ID | E-28 | ○ |
| C-125 | formatRelationshipTitle: オブジェクトID | E-28 | ○ |
| C-126 | formatRelationshipTitle: プリミティブ | E-28 | ○ |
| C-127 | formatDocTitle: useAsTitle | E-29 | ○ |
| C-128 | formatDocTitle: グローバルラベル | E-29 | ○ |
| C-129 | formatDocTitle: フォールバック | E-29 | ○ |
| C-130 | groupItemIDsByRelation: グループ化 | E-44 | ○ |
| C-131 | groupItemIDsByRelation: 空配列 | E-44 | ○ |
| C-132 | reduceFieldsToValuesWithValidation: 値抽出 | E-24 | ○ |
| C-133 | reduceFieldsToValuesWithValidation: アンフラット | E-24 | ○ |
| C-134 | reduceFieldsToValuesWithValidation: データ除外 | E-24 | ○ |
| C-135 | reduceFieldsToValuesWithValidation: バリデーション | E-24 | ○ |
| C-136 | sanitizeFilterOptionsQuery: in配列変換 | E-25 | ○ |
| C-137 | sanitizeFilterOptionsQuery: 再帰変換 | E-25 | ○ |
| C-138 | sanitizeFilterOptionsQuery: 有効in保持 | E-25 | ○ |
| C-139 | getVisibleEntities: 表示エンティティ | E-23 | ○ |
| C-140 | getVisibleEntities: hidden関数 | E-23 | ○ |
| C-141 | getVisibleEntities: hidden boolean | E-23 | ○ |

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

なし。全てのテストケースはソースコードの直接解析に基づいて生成されています。

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

| リスク | 対象 | 説明 |
|--------|------|------|
| 0 | 全体 | 全テストケースがソースコードに基づいており、リスクは低い |

**注記：**
- UI パッケージは599ファイルを含む大規模なパッケージのため、本テストケース一覧は主要なユーティリティ関数、フォーム関連ロジック、プロバイダー関連の純粋関数に焦点を当てています
- React コンポーネント自体のテストは、統合テストまたは E2E テストとして別途実施することを推奨します

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

- [ ] テストID体系（UT-UI-XXX）が一貫しているか確認
- [ ] 各テストケースの「期待結果」が具体的で検証可能か確認
- [ ] 「高」優先度のテストケースが重要なビジネスロジックをカバーしているか確認
- [ ] 境界値テストケースが適切に設定されているか確認
- [ ] 異常系テストケースがエラーハンドリングを適切に検証しているか確認
- [ ] 実際のソースコード変更時にテストケースの更新が必要かどうかのトリガーを設定
