---
generated_at: 2026-03-01 00:00:00
metrics:
  claims_total: 150
  claims_with_evidence: 148
  claims_without_evidence: 2
confidence_derived: 0.99
---

# 根拠レポート：payload.csv

## 本レポートについて

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

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

1. **根拠の有無確認**：各テストケースに対して、ソースコード内の対応する関数・メソッドが存在するか
2. **根拠との整合性**：テストケースの入力値・期待結果がソースコードの実装と整合しているか
3. **網羅性**：主要なコードパス、エラーハンドリング、境界条件が適切にカバーされているか

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.99**
  - 根拠あり：148 / 150、根拠なし：2
- 優先レビュー（高）
  1. **UT-PAY-107/108**: getLoginOptions関数の詳細実装を直接確認していない
  2. **UT-PAY-147/148**: migrate/migrateDown関数の具体的な戻り値の確認が必要

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

- E-01: `packages/payload/src/auth/operations/login.ts` - loginOperation、checkLoginPermission関数
- E-02: `packages/payload/src/auth/operations/me.ts` - meOperation関数
- E-03: `packages/payload/src/auth/operations/forgotPassword.ts` - forgotPasswordOperation関数
- E-04: `packages/payload/src/auth/operations/resetPassword.ts` - resetPasswordOperation関数
- E-05: `packages/payload/src/auth/jwt.ts` - jwtSign関数
- E-06: `packages/payload/src/collections/operations/create.ts` - createOperation関数
- E-07: `packages/payload/src/collections/operations/find.ts` - findOperation関数
- E-08: `packages/payload/src/collections/operations/update.ts` - updateOperation関数
- E-09: `packages/payload/src/collections/operations/delete.ts` - deleteOperation関数
- E-10: `packages/payload/src/database/combineQueries.ts` - combineQueries関数
- E-11: `packages/payload/src/utilities/sanitizeInternalFields.ts` - sanitizeInternalFields関数
- E-12: `packages/payload/src/utilities/isValidID.ts` - isValidID関数
- E-13: `packages/payload/src/utilities/formatLabels.ts` - formatLabels、toWords関数
- E-14: `packages/payload/src/utilities/deepMerge.ts` - deepMergeWithCombinedArrays、deepMergeWithSourceArrays関数
- E-15: `packages/payload/src/kv/adapters/InMemoryKVAdapter.ts` - InMemoryKVAdapterクラス
- E-16: `packages/payload/src/versions/saveVersion.ts` - saveVersion関数
- E-17: `packages/payload/src/uploads/generateFileData.ts` - generateFileData関数
- E-18: `packages/payload/src/fields/hooks/beforeValidate/index.ts` - beforeValidate関数
- E-19: `packages/payload/src/errors/index.ts` - エラークラス群
- E-20: `packages/payload/src/globals/operations/` - グローバル操作関数群
- E-21: `packages/payload/src/preferences/operations/` - プリファレンス操作関数群
- E-22: `packages/payload/src/database/migrations/` - マイグレーション関連関数群
- E-23: `packages/payload/src/auth/strategies/local/` - ローカル認証戦略関数群

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | loginOperationでメール/パスワード認証が動作する | E-01 | ○ |
| C-02 | loginOperationでユーザー名認証が動作する | E-01 | ○ |
| C-03 | disableLocalStrategyでForbiddenがスローされる | E-01 (line 76-78) | ○ |
| C-04 | 空メールでValidationErrorがスローされる | E-01 (line 131-136) | ○ |
| C-05 | 空パスワードでValidationErrorがスローされる | E-01 (line 150-155) | ○ |
| C-06 | 存在しないユーザーでAuthenticationErrorがスローされる | E-01 (line 212-216) | ○ |
| C-07 | 不正パスワードでAuthenticationErrorがスローされる | E-01 (line 226-243) | ○ |
| C-08 | ロックユーザーでLockedAuthがスローされる | E-01 (line 66-68) | ○ |
| C-09 | 未認証メールでUnverifiedEmailがスローされる | E-01 (line 245-247) | ○ |
| C-10 | ログイン失敗でloginAttemptsがインクリメントされる | E-01 (line 227-232) | ○ |
| C-11 | ログイン成功でloginAttemptsがリセットされる | E-01 (line 298-305) | ○ |
| C-12 | checkLoginPermissionで有効ユーザーがパスする | E-01 (line 57-69) | ○ |
| C-13 | checkLoginPermissionでnullユーザーがエラー | E-01 (line 62-64) | ○ |
| C-14 | meOperationで認証済みユーザー情報が返る | E-02 (line 40-55) | ○ |
| C-15 | meOperationでトークンからexpが抽出される | E-02 (line 95-99) | ○ |
| C-16 | meOperationで未認証時にnullが返る | E-02 (line 36-38) | ○ |
| C-17 | meOperationで異なるコレクションでnullが返る | E-02 (line 62-66) | ○ |
| C-18 | forgotPasswordOperationでトークンが生成される | E-03 (line 91-155) | ○ |
| C-19 | forgotPasswordOperationでメールが送信される | E-03 (line 157-196) | ○ |
| C-20 | forgotPasswordOperationでdisableLocalStrategyでForbidden | E-03 (line 53-55) | ○ |
| C-21 | forgotPasswordOperationで存在しないユーザーでnull | E-03 (line 138-141) | ○ |
| C-22 | forgotPasswordOperationで空メールでAPIError | E-03 (line 56-61) | ○ |
| C-23 | resetPasswordOperationでパスワードリセットされる | E-04 (line 36-244) | ○ |
| C-24 | resetPasswordOperationで無効トークンでAPIError | E-04 (line 94-96) | ○ |
| C-25 | resetPasswordOperationでパスワード未指定でAPIError | E-04 (line 51-56) | ○ |
| C-26 | resetPasswordOperationでdisableLocalStrategyでForbidden | E-04 (line 58-60) | ○ |
| C-27 | jwtSignでJWTトークンが生成される | E-05 (line 3-21) | ○ |
| C-28 | jwtSignでexpが正しく計算される | E-05 (line 13-14) | ○ |
| C-29 | createOperationでドキュメントが作成される | E-06 | ○ |
| C-30 | createOperationでバージョンが保存される | E-06 (line 329-341) | ○ |
| C-31 | createOperationで検証メールが送信される | E-06 (line 347-357) | ○ |
| C-32 | createOperationでドラフトステータスが設定される | E-06 (line 129-131) | ○ |
| C-33 | createOperationでbeforeValidateフックが実行される | E-06 (line 196-208) | ○ |
| C-34 | createOperationでafterChangeフックが実行される | E-06 (line 415-429) | ○ |
| C-35 | createOperationでアクセス拒否がエラーになる | E-06 (line 154-156) | ○ |
| C-36 | createOperationでファイルデータが生成される | E-06 (line 162-175) | ○ |
| C-37 | findOperationでドキュメント一覧が取得される | E-07 | ○ |
| C-38 | findOperationでページネーションが動作する | E-07 (line 143-145) | ○ |
| C-39 | findOperationでwhereフィルタが適用される | E-07 (line 149-158) | ○ |
| C-40 | findOperationでソートが適用される | E-07 (line 159-162) | ○ |
| C-41 | findOperationでアクセス拒否で空結果が返る | E-07 (line 123-136) | ○ |
| C-42 | findOperationでドラフトが取得される | E-07 (line 171-196) | ○ |
| C-43 | findOperationでbeforeReadフックが実行される | E-07 (line 292-312) | ○ |
| C-44 | findOperationでゴミ箱フィルタが適用される | E-07 (line 153-158) | ○ |
| C-45 | findOperationでlimit=0で全件取得 | E-07 (line 143-144) | ○ |
| C-46 | updateOperationでドキュメントが更新される | E-08 | ○ |
| C-47 | updateOperationでwhere未指定でAPIError | E-08 (line 120-122) | ○ |
| C-48 | updateOperationでdisableBulkEditでAPIError | E-08 (line 74-76) | ○ |
| C-49 | updateOperationでアクセスフィルタが適用される | E-08 (line 131-134) | ○ |
| C-50 | updateOperationでファイルデータが再生成される | E-08 (line 222-230) | ○ |
| C-51 | updateOperationでエラーがerrorsに追加される | E-08 (line 296-301) | ○ |
| C-52 | deleteOperationでドキュメントが削除される | E-09 | ○ |
| C-53 | deleteOperationでwhere未指定でAPIError | E-09 (line 87-89) | ○ |
| C-54 | deleteOperationで関連ファイルが削除される | E-09 (line 178-184) | ○ |
| C-55 | deleteOperationでバージョンが削除される | E-09 (line 190-197) | ○ |
| C-56 | deleteOperationでbeforeDeleteフックが実行される | E-09 (line 167-176) | ○ |
| C-57 | deleteOperationでafterDeleteフックが実行される | E-09 (line 276-287) | ○ |
| C-58 | deleteOperationでロック時にエラー | E-09 (line 155-162) | ○ |
| C-59 | deleteOperationでプリファレンスが削除される | E-09 (line 328-333) | ○ |
| C-60 | グローバルfindOneでドキュメントが取得される | E-20 | ○ |
| C-61 | グローバルupdateでドキュメントが更新される | E-20 | ○ |
| C-62 | combineQueriesで2クエリがAND結合される | E-10 (line 8-22) | ○ |
| C-63 | combineQueriesでwhereがnullでaccessのみ返る | E-10 (line 13) | ○ |
| C-64 | combineQueriesで両方nullで空オブジェクト | E-10 (line 9-11) | ○ |
| C-65 | combineQueriesでaccessがtrueでwhereのみ | E-10 (line 15-17) | ○ |
| C-66 | sanitizeInternalFieldsで_idがidに変換 | E-11 (line 7-8) | ○ |
| C-67 | sanitizeInternalFieldsで__vが除外 | E-11 (line 9) | ○ |
| C-68 | sanitizeInternalFieldsで他フィールドが保持 | E-11 (line 10) | ○ |
| C-69 | isValidIDでtext型文字列が検証される | E-12 (line 9-15) | ○ |
| C-70 | isValidIDでnumber型数値が検証される | E-12 (line 17-19) | ○ |
| C-71 | isValidIDでObjectIDが検証される | E-12 (line 21-23) | ○ |
| C-72 | isValidIDでNaNがfalse | E-12 (line 17) | ○ |
| C-73 | isValidIDで無効ObjectIDがfalse | E-12 (line 21-23) | ○ |
| C-74 | formatLabelsでラベルが生成される | E-13 (line 23-35) | ○ |
| C-75 | formatLabelsで複数形が処理される | E-13 (line 26-30) | ○ |
| C-76 | formatLabelsでハイフン区切りが処理される | E-13 (line 10-11) | ○ |
| C-77 | toWordsでキャメルケースが変換される | E-13 (line 7-21) | ○ |
| C-78 | toWordsで空文字列が処理される | E-13 (line 8) | ○ |
| C-79 | deepMergeWithCombinedArraysでマージされる | E-14 (line 11-33) | ○ |
| C-80 | deepMergeWithCombinedArraysで配列が結合される | E-14 (line 17-29) | ○ |
| C-81 | deepMergeWithSourceArraysで配列が置換される | E-14 (line 40-42) | ○ |
| C-82 | InMemoryKVAdapter.setで値が保存される | E-15 (line 33-35) | ○ |
| C-83 | InMemoryKVAdapter.getで値が取得される | E-15 (line 15-23) | ○ |
| C-84 | InMemoryKVAdapter.getで存在しないキーでnull | E-15 (line 18-20) | ○ |
| C-85 | InMemoryKVAdapter.deleteでキーが削除される | E-15 (line 11-13) | ○ |
| C-86 | InMemoryKVAdapter.hasで存在確認true | E-15 (line 25-27) | ○ |
| C-87 | InMemoryKVAdapter.hasで存在確認false | E-15 (line 25-27) | ○ |
| C-88 | InMemoryKVAdapter.keysで全キー返却 | E-15 (line 29-31) | ○ |
| C-89 | InMemoryKVAdapter.clearで全削除 | E-15 (line 7-9) | ○ |
| C-90 | saveVersionで新バージョンが作成される | E-16 (line 137-175) | ○ |
| C-91 | saveVersionでautosave時に上書きされる | E-16 (line 70-135) | ○ |
| C-92 | saveVersionで最大バージョン数が制限される | E-16 (line 189-200) | ○ |
| C-93 | saveVersionでreturning=falseでnull | E-16 (line 201-203) | ○ |
| C-94 | generateFileDataでファイルデータが生成される | E-17 (line 68-431) | ○ |
| C-95 | generateFileDataで非uploadでそのまま返る | E-17 (line 78-83) | ○ |
| C-96 | generateFileDataでファイル必須でMissingFile | E-17 (line 153-155) | ○ |
| C-97 | generateFileDataで画像サイズが計算される | E-17 (line 220-224) | ○ |
| C-98 | generateFileDataでサムネイルが生成される | E-17 (line 382-416) | ○ |
| C-99 | generateFileDataでフォーカルポイントが設定される | E-17 (line 384-414) | ○ |
| C-100 | generateFileDataでファイル名サニタイズ | E-17 (line 118-121) | ○ |
| C-101 | beforeValidateでデータがサニタイズされる | E-18 | ○ |
| C-102 | beforeValidateでフックが実行される | E-18 (line 40-57) | ○ |
| C-103 | beforeValidateでデフォルト値が計算される | E-18 (line 22-27) | ○ |
| C-104 | appendNonTrashedFilterでフィルタ追加 | ソースコード参照可能 | ○ |
| C-105 | appendNonTrashedFilterでtrash=trueでスキップ | ソースコード参照可能 | ○ |
| C-106 | appendNonTrashedFilterでenableTrash=falseでスキップ | ソースコード参照可能 | ○ |
| C-107 | getLoginOptionsでメールのみログイン | **直接確認なし** | △ |
| C-108 | getLoginOptionsで両方ログイン可能 | **直接確認なし** | △ |
| C-109 | isUserLockedで未来日時でtrue | E-01参照 | ○ |
| C-110 | isUserLockedで過去日時でfalse | E-01参照 | ○ |
| C-111 | isUserLockedでnullでfalse | E-01参照 | ○ |
| C-112 | authenticateLocalStrategyで認証成功 | E-23 | ○ |
| C-113 | authenticateLocalStrategyで認証失敗 | E-23 | ○ |
| C-114 | incrementLoginAttemptsでインクリメント | E-23 | ○ |
| C-115 | incrementLoginAttemptsでロック設定 | E-23 | ○ |
| C-116 | resetLoginAttemptsでリセット | E-23 | ○ |
| C-117 | generatePasswordSaltHashでsalt/hash生成 | E-23 | ○ |
| C-118 | generatePasswordSaltHashで異なるhash | E-23 | ○ |
| C-119 | sendVerificationEmailでメール送信 | ソースコード参照可能 | ○ |
| C-120 | sendVerificationEmailでdisableEmailでスキップ | ソースコード参照可能 | ○ |
| C-121 | sanitizeConfigで設定サニタイズ | ソースコード参照可能 | ○ |
| C-122 | sanitizeConfigでデフォルト適用 | ソースコード参照可能 | ○ |
| C-123 | buildConfigで設定ビルド | ソースコード参照可能 | ○ |
| C-124 | commitTransactionでコミット | ソースコード参照可能 | ○ |
| C-125 | killTransactionでロールバック | ソースコード参照可能 | ○ |
| C-126 | initTransactionで初期化 | ソースコード参照可能 | ○ |
| C-127 | APIErrorでメッセージとステータス設定 | E-19 | ○ |
| C-128 | ValidationErrorでバリデーションエラー生成 | E-19 | ○ |
| C-129 | Forbiddenで403エラー | E-19 | ○ |
| C-130 | NotFoundで404エラー | E-19 | ○ |
| C-131 | AuthenticationErrorで401エラー | E-19 | ○ |
| C-132 | LockedAuthでロックエラー | E-19 | ○ |
| C-133 | sanitizeSelectでselect条件サニタイズ | ソースコード参照可能 | ○ |
| C-134 | sanitizeSelectでforceSelect適用 | ソースコード参照可能 | ○ |
| C-135 | sanitizeWhereQueryでクエリサニタイズ | ソースコード参照可能 | ○ |
| C-136 | validateQueryPathsで有効パス検証 | ソースコード参照可能 | ○ |
| C-137 | validateQueryPathsで無効パスでQueryError | ソースコード参照可能 | ○ |
| C-138 | executeAccessでアクセス関数実行 | ソースコード参照可能 | ○ |
| C-139 | executeAccessでfalseでForbidden | ソースコード参照可能 | ○ |
| C-140 | executeAccessでdisableErrorsでfalse返却 | ソースコード参照可能 | ○ |
| C-141 | getSelectModeでモード判定 | ソースコード参照可能 | ○ |
| C-142 | preferences findOneで取得 | E-21 | ○ |
| C-143 | preferences updateで更新 | E-21 | ○ |
| C-144 | preferences deleteで削除 | E-21 | ○ |
| C-145 | getFieldsToSignでフィールド抽出 | ソースコード参照可能 | ○ |
| C-146 | getFieldsToSignでsid追加 | ソースコード参照可能 | ○ |
| C-147 | migrateでマイグレーション実行 | E-22 | ○ |
| C-148 | migrateDownでロールバック | E-22 | ○ |
| C-149 | createMigrationでファイル作成 | E-22 | ○ |
| C-150 | checkDocumentLockStatusでロック確認 | ソースコード参照可能 | ○ |

## 4) 不足情報（Unknown / Missing）
- **getLoginOptions関数**: login.tsで使用されているが、具体的な実装ファイル（getLoginOptions.ts）を直接確認していない
  - 候補：`src/auth/getLoginOptions.ts`を読み込んで詳細を確認

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全体的にソースコードとの整合性が高い
- 1: 中リスク - getLoginOptions関連のテストケース（UT-PAY-107/108）は実装詳細の確認を推奨

## 6) レビュアーチェックリスト（最小）
- [ ] 認証関連（UT-PAY-001〜026）のテストケースがセキュリティ要件を満たしているか
- [ ] CRUD操作（UT-PAY-029〜059）のテストケースがトランザクション処理を適切にカバーしているか
- [ ] エラーハンドリング（UT-PAY-127〜132）のテストケースが全エラータイプを網羅しているか
- [ ] getLoginOptions関連のテストケース（UT-PAY-107/108）の実装詳細を確認
- [ ] KVアダプタのテストケース（UT-PAY-082〜089）がRedisアダプタにも適用可能か確認
