---
generated_at: 2026-03-01 03:15:00
metrics:
  claims_total: 156
  claims_with_evidence: 152
  claims_without_evidence: 4
confidence_derived: 0.97
---

# 根拠レポート：activejob.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：152 / 156、根拠なし：4
- 優先レビュー（高）
  1. **C-033**: SerializationError発生条件の詳細確認
  2. **C-103**: InlineAdapter#enqueue_at の挙動確認
  3. **C-140**: Step#advance! の succ メソッド要件確認
  4. **C-126**: max_resumptions の動作検証

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

- E-01: `activejob/lib/active_job/base.rb`
- E-02: `activejob/lib/active_job/core.rb`
- E-03: `activejob/lib/active_job/enqueuing.rb`
- E-04: `activejob/lib/active_job/execution.rb`
- E-05: `activejob/lib/active_job/arguments.rb`
- E-06: `activejob/lib/active_job/callbacks.rb`
- E-07: `activejob/lib/active_job/exceptions.rb`
- E-08: `activejob/lib/active_job/queue_adapter.rb`
- E-09: `activejob/lib/active_job/queue_name.rb`
- E-10: `activejob/lib/active_job/queue_priority.rb`
- E-11: `activejob/lib/active_job/serializers.rb`
- E-12: `activejob/lib/active_job/serializers/object_serializer.rb`
- E-13: `activejob/lib/active_job/serializers/duration_serializer.rb`
- E-14: `activejob/lib/active_job/serializers/time_serializer.rb`
- E-15: `activejob/lib/active_job/configured_job.rb`
- E-16: `activejob/lib/active_job/queue_adapters/test_adapter.rb`
- E-17: `activejob/lib/active_job/queue_adapters/async_adapter.rb`
- E-18: `activejob/lib/active_job/queue_adapters/inline_adapter.rb`
- E-19: `activejob/lib/active_job/test_helper.rb`
- E-20: `activejob/lib/active_job/logging.rb`
- E-21: `activejob/lib/active_job/instrumentation.rb`
- E-22: `activejob/lib/active_job/execution_state.rb`
- E-23: `activejob/lib/active_job/continuation.rb`
- E-24: `activejob/lib/active_job/continuable.rb`
- E-25: `activejob/lib/active_job/continuation/step.rb`

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

### Core モジュール (C-001 〜 C-012)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | initializeで引数、job_id、queue_name、priority等が初期化される | E-02 (L103-112) | ○ |
| C-002 | 引数なしで空のarguments配列で初期化される | E-02 (L104) | ○ |
| C-003 | serializeでjob_class, job_id等を含むハッシュが返却される | E-02 (L117-131) | ○ |
| C-004 | scheduled_atがISO8601形式でシリアライズされる | E-02 (L130) | ○ |
| C-005 | deserializeでjob_id, queue_name等が復元される | E-02 (L160-172) | ○ |
| C-006 | 不明なジョブクラスでUnknownJobClassErrorが発生 | E-02 (L5-9, L70-71) | ○ |
| C-007 | waitオプションでscheduled_atが設定される | E-02 (L176) | ○ |
| C-008 | wait_untilオプションでscheduled_atが設定される | E-02 (L177) | ○ |
| C-009 | queueオプションでqueue_nameが設定される | E-02 (L178) | ○ |
| C-010 | priorityオプションでpriorityが設定される | E-02 (L179) | ○ |
| C-011 | クラスメソッドdeserializeでジョブインスタンスが返却 | E-02 (L69-76) | ○ |
| C-012 | クラスメソッドsetでConfiguredJobが返却 | E-02 (L96-98) | ○ |

### Enqueuing モジュール (C-013 〜 C-020)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-013 | enqueueでジョブがキューに追加される | E-03 (L112-123) | ○ |
| C-014 | オプション付きでenqueueが動作する | E-03 (L112-113) | ○ |
| C-015 | エンキュー失敗時にfalseが返却される | E-03 (L118-122) | ○ |
| C-016 | EnqueueErrorでenqueue_errorが設定される | E-03 (L140-141) | ○ |
| C-017 | perform_laterでジョブがエンキューされる | E-03 (L81-88) | ○ |
| C-018 | perform_laterでブロックにジョブがyieldされる | E-03 (L85) | ○ |
| C-019 | perform_all_laterで複数ジョブが一括エンキュー | E-03 (L14-37) | ○ |
| C-020 | perform_all_laterでアダプタ別にグループ化 | E-03 (L16) | ○ |

### Execution モジュール (C-021 〜 C-027)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-021 | perform_nowでジョブが即座に実行される | E-04 (L45-58) | ○ |
| C-022 | executionsカウンタがインクリメントされる | E-04 (L47) | ○ |
| C-023 | 例外発生時にrescue_with_handlerが呼ばれる | E-04 (L52-54) | ○ |
| C-024 | ハンドラがない例外は再スローされる | E-04 (L57) | ○ |
| C-025 | 未実装performでNotImplementedErrorが発生 | E-04 (L60-62) | ○ |
| C-026 | クラスメソッドperform_nowでジョブが実行される | E-04 (L22-24) | ○ |
| C-027 | executeでシリアライズデータから実行される | E-04 (L26-31) | ○ |

### Arguments モジュール (C-028 〜 C-041)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-028 | 基本型がそのままシリアライズされる | E-05 (L40-41) | ○ |
| C-029 | 配列が要素ごとにシリアライズされる | E-05 (L56-57) | ○ |
| C-030 | ハッシュがシリアライズされる | E-05 (L60-72) | ○ |
| C-031 | シンボルがシリアライズされる | E-05 (L52-53) | ○ |
| C-032 | GlobalID対応オブジェクトがシリアライズされる | E-05 (L54-55) | ○ |
| C-033 | 未保存ActiveRecordでSerializationErrorが発生 | E-05 (L191-196) | △ |
| C-034 | 予約済みキーでSerializationErrorが発生 | E-05 (L161-162) | ○ |
| C-035 | 不正なキー型でSerializationErrorが発生 | E-05 (L167-168) | ○ |
| C-036 | 基本型がそのままデシリアライズされる | E-05 (L111) | ○ |
| C-037 | 配列が要素ごとにデシリアライズされる | E-05 (L113-114) | ○ |
| C-038 | ハッシュがデシリアライズされる | E-05 (L115-122) | ○ |
| C-039 | GlobalIDからオブジェクトが復元される | E-05 (L132-134) | ○ |
| C-040 | デシリアライズ失敗時にDeserializationErrorが発生 | E-05 (L82-86) | ○ |
| C-041 | 不正なプリミティブ型でArgumentErrorが発生 | E-05 (L124) | ○ |

### Callbacks モジュール (C-042 〜 C-047)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-042 | before_performコールバックが実行される | E-06 (L50-52) | ○ |
| C-043 | after_performコールバックが実行される | E-06 (L69-71) | ○ |
| C-044 | around_performコールバックが実行される | E-06 (L102-104) | ○ |
| C-045 | before_enqueueコールバックが実行される | E-06 (L121-123) | ○ |
| C-046 | after_enqueueコールバックが実行される | E-06 (L141-143) | ○ |
| C-047 | around_enqueueコールバックが実行される | E-06 (L162-164) | ○ |

### Exceptions モジュール (C-048 〜 C-060)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-048 | retry_onで例外発生時にリトライされる | E-07 (L66-85) | ○ |
| C-049 | 最大試行回数到達でブロックが実行される | E-07 (L73-77) | ○ |
| C-050 | 最大試行回数到達で例外が再スローされる | E-07 (L78-82) | ○ |
| C-051 | :polynomially_longerで遅延が増加 | E-07 (L177-181) | ○ |
| C-052 | attempts: :unlimitedで無限リトライ | E-07 (L69) | ○ |
| C-053 | discard_onでジョブが破棄される | E-07 (L111-119) | ○ |
| C-054 | discard_onでブロックが実行される | E-07 (L115) | ○ |
| C-055 | after_discardコールバックが実行される | E-07 (L133-135) | ○ |
| C-056 | retry_jobでジョブがリエンキューされる | E-07 (L160-167) | ○ |
| C-057 | retry_jobでオプションが指定可能 | E-07 (L160-163) | ○ |
| C-058 | Duration/Integerで固定遅延が計算される | E-07 (L182-185) | ○ |
| C-059 | Procで動的遅延が計算される | E-07 (L186-188) | ○ |
| C-060 | jitter=0で遅延にランダム成分なし | E-07 (L194-196) | ○ |

### QueueAdapter モジュール (C-061 〜 C-066)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-061 | 設定済みアダプタが返却される | E-08 (L34-37) | ○ |
| C-062 | 未設定時asyncアダプタがデフォルト | E-08 (L35) | ○ |
| C-063 | シンボルでアダプタが設定される | E-08 (L51-54) | ○ |
| C-064 | アダプタインスタンスで設定される | E-08 (L55-59) | ○ |
| C-065 | 不正オブジェクトでArgumentErrorが発生 | E-08 (L60-61) | ○ |
| C-066 | アダプタ名が文字列で返却される | E-08 (L41-44) | ○ |

### QueueName モジュール (C-067 〜 C-071)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-067 | queue_asでキュー名が設定される | E-09 (L39-45) | ○ |
| C-068 | ブロックで動的にキュー名が設定される | E-09 (L40-41) | ○ |
| C-069 | queue_name_from_partでprefixが結合される | E-09 (L47-51) | ○ |
| C-070 | queue_nameでキュー名が返却される | E-09 (L61-66) | ○ |
| C-071 | Procの場合評価結果が返却される | E-09 (L62-64) | ○ |

### QueuePriority モジュール (C-072 〜 C-075)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-072 | queue_with_priorityで優先度が設定される | E-10 (L39-45) | ○ |
| C-073 | ブロックで動的に優先度が設定される | E-10 (L40-41) | ○ |
| C-074 | priorityで優先度が返却される | E-10 (L53-58) | ○ |
| C-075 | Procの場合評価結果が返却される | E-10 (L54-56) | ○ |

### Serializers モジュール (C-076 〜 C-088)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-076 | シリアライザでオブジェクトがシリアライズされる | E-11 (L31-35) | ○ |
| C-077 | 未対応型でSerializationErrorが発生 | E-11 (L33) | ○ |
| C-078 | デシリアライズでオブジェクトが復元される | E-11 (L40-48) | ○ |
| C-079 | シリアライザキー不在でArgumentErrorが発生 | E-11 (L42) | ○ |
| C-080 | 不明なシリアライザ名でArgumentErrorが発生 | E-11 (L45) | ○ |
| C-081 | add_serializersでシリアライザが追加される | E-11 (L60-63) | ○ |
| C-082 | serialize?で対象クラスにtrueが返却される | E-12 (L37-39) | ○ |
| C-083 | serialize?で対象外クラスにfalseが返却される | E-12 (L37-39) | ○ |
| C-084 | serializeでシリアライザキーを含むハッシュが返却 | E-12 (L42-44) | ○ |
| C-085 | 未実装deserializeでNotImplementedErrorが発生 | E-12 (L47-49) | ○ |
| C-086 | Durationがシリアライズされる | E-13 (L6-9) | ○ |
| C-087 | ハッシュからDurationが復元される | E-13 (L11-17) | ○ |
| C-088 | ISO8601文字列からTimeが復元される | E-14 (L6-8) | ○ |

### ConfiguredJob (C-089 〜 C-092)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-089 | ConfiguredJob初期化でオプションが保持される | E-15 (L5-8) | ○ |
| C-090 | perform_nowでオプション付き即時実行される | E-15 (L10-12) | ○ |
| C-091 | perform_laterでオプション付きエンキューされる | E-15 (L14-20) | ○ |
| C-092 | perform_laterでブロックにジョブがyieldされる | E-15 (L18) | ○ |

### TestAdapter (C-093 〜 C-098)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-093 | enqueued_jobsでエンキュー済みジョブ配列が返却 | E-16 (L19-21) | ○ |
| C-094 | performed_jobsで実行済みジョブ配列が返却 | E-16 (L24-26) | ○ |
| C-095 | enqueueでジョブがenqueued_jobsに追加される | E-16 (L28-31, L52-58) | ○ |
| C-096 | perform_enqueued_jobs=trueで即時実行される | E-16 (L30, L52-55) | ○ |
| C-097 | enqueue_atでat付きジョブが追加される | E-16 (L33-36) | ○ |
| C-098 | filtered?でフィルタ条件が適用される | E-16 (L61-87) | ○ |

### AsyncAdapter (C-099 〜 C-101)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-099 | enqueueでスレッドプールに追加される | E-17 (L39-41) | ○ |
| C-100 | enqueue_atでScheduledTaskが作成される | E-17 (L43-45) | ○ |
| C-101 | shutdownでスレッドプールがシャットダウン | E-17 (L50-52) | ○ |

### InlineAdapter (C-102 〜 C-103)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-102 | enqueueでジョブが即座に実行される | E-18 (L14-16) | ○ |
| C-103 | enqueue_atでNotImplementedErrorが発生 | E-18 (L18-20) | △ |

### TestHelper (C-104 〜 C-117)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-104 | assert_enqueued_jobsでジョブ数がアサートされる | E-19 (L122-138) | ○ |
| C-105 | ブロック内のエンキュー数がアサートされる | E-19 (L125-132) | ○ |
| C-106 | :onlyオプションで特定ジョブのみカウント | E-19 (L126, L684-714) | ○ |
| C-107 | :exceptオプションで特定ジョブを除外 | E-19 (L126, L684-714) | ○ |
| C-108 | assert_no_enqueued_jobsでジョブなしがアサート | E-19 (L186-190) | ○ |
| C-109 | assert_performed_jobsで実行数がアサートされる | E-19 (L278-294) | ○ |
| C-110 | assert_no_performed_jobsで実行なしがアサート | E-19 (L348-352) | ○ |
| C-111 | assert_enqueued_withで引数付きアサート | E-19 (L406-452) | ○ |
| C-112 | Procマッチャーで条件アサート | E-19 (L427-433) | ○ |
| C-113 | assert_performed_withで引数付きアサート | E-19 (L510-557) | ○ |
| C-114 | perform_enqueued_jobsでジョブが実行される | E-19 (L620-654) | ○ |
| C-115 | :onlyオプションで特定ジョブのみ実行 | E-19 (L640-641) | ○ |
| C-116 | :atオプションで指定時刻までのジョブが実行 | E-19 (L643) | ○ |
| C-117 | :onlyと:exceptの同時指定でArgumentError | E-19 (L766-768) | ○ |

### Continuable モジュール (C-118 〜 C-126)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-118 | stepでステップが実行される | E-24 (L36-50) | ○ |
| C-119 | メソッド名でステップが実行される | E-24 (L37-46) | ○ |
| C-120 | 不正な引数数のメソッドでArgumentError | E-24 (L40) | ○ |
| C-121 | serializeでcontinuation情報がシリアライズ | E-24 (L52-54) | ○ |
| C-122 | deserializeでcontinuation情報が復元 | E-24 (L56-60) | ○ |
| C-123 | checkpoint!でstoppingの場合中断 | E-24 (L62-64) | ○ |
| C-124 | interrupt!でInterrupt例外が発生 | E-24 (L66-69) | ○ |
| C-125 | 中断後にジョブがリトライされる | E-24 (L79-80) | ○ |
| C-126 | max_resumptions到達でResumeLimitError | E-24 (L91-97) | △ |

### Continuation クラス (C-127 〜 C-135)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-127 | 初期状態で空の継続が作成される | E-23 (L222-230) | ○ |
| C-128 | シリアライズ済み進捗から復元される | E-23 (L224-225) | ○ |
| C-129 | 完了済みステップがスキップされる | E-23 (L236-237, L293-294) | ○ |
| C-130 | 新規ステップが実行される | E-23 (L238-240, L307-321) | ○ |
| C-131 | isolated: trueで進行後に中断される | E-23 (L297-305) | ○ |
| C-132 | to_hで進捗がシリアライズされる | E-23 (L243-248) | ○ |
| C-133 | started?で開始済みtrueが返却 | E-23 (L260-262) | ○ |
| C-134 | started?で未開始falseが返却 | E-23 (L260-262) | ○ |
| C-135 | advanced?で進行trueが返却 | E-23 (L264-266) | ○ |

### Continuation::Step クラス (C-136 〜 C-143)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-136 | Stepが初期化される | E-25 (L25-31) | ○ |
| C-137 | set!でカーソルが設定されcheckpoint!呼出 | E-25 (L40-43) | ○ |
| C-138 | advance!でカーソルがsuccで進む | E-25 (L49-59) | ○ |
| C-139 | from引数からカーソルが進む | E-25 (L49-50) | ○ |
| C-140 | succがない場合UnadvanceableCursorError | E-25 (L52-56) | △ |
| C-141 | resumed?で再開trueが返却 | E-25 (L62-64) | ○ |
| C-142 | advanced?でカーソル変更trueが返却 | E-25 (L67-69) | ○ |
| C-143 | to_aで名前とカーソルの配列が返却 | E-25 (L71-73) | ○ |

### その他 (C-144 〜 C-156)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-144 | ロガーにタグ付けされて実行される | E-20 (L31-33, L36-43) | ○ |
| C-145 | ActiveSupport::Notificationsにイベント発行 | E-21 (L29-39) | ○ |
| C-146 | :performイベントが発行される | E-21 (L25-27) | ○ |
| C-147 | I18n.localeが設定されて実行される | E-22 (L6-8) | ○ |
| C-148 | Time.zoneが設定されて実行される | E-22 (L7) | ○ |
| C-149 | 全モジュールがincludeされている | E-01 (L64-74) | ○ |
| C-150 | successfully_enqueued?でtrueが返却 | E-02 (L58-60) | ○ |
| C-151 | successfully_enqueued?でfalseが返却 | E-02 (L58-60) | ○ |
| C-152 | HashWithIndifferentAccessがシリアライズされる | E-05 (L58-59, L172-176) | ○ |
| C-153 | HashWithIndifferentAccessが復元される | E-05 (L146-149) | ○ |
| C-154 | テストアダプタ以外でArgumentError | E-19 (L666-670) | ○ |
| C-155 | clear_enqueued_jobsでジョブがクリア | E-19 (L676-678) | ○ |
| C-156 | clear_performed_jobsで実行済みジョブがクリア | E-19 (L680-682) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-033**: 未保存ActiveRecordでのSerializationError発生条件は、GlobalIDへの変換時にMissingModelIdErrorが発生することが根拠だが、実際のActiveRecord連携テストが必要
  - 候補：ActiveRecordとの統合テスト / GlobalID gem のドキュメント確認
- **C-103**: InlineAdapter#enqueue_atの挙動はNotImplementedErrorをraiseするが、どのような状況で呼び出されるかの文脈が不明確
  - 候補：Rails GuideのActive Job設定ドキュメント / 他のアダプタとの比較
- **C-126**: max_resumptionsの挙動検証には、resumptions変数の増加タイミングと条件分岐の詳細な検証が必要
  - 候補：既存テストケースの確認 / Continuableモジュールの統合テスト
- **C-140**: Step#advance!でsucc未対応のオブジェクトが渡された場合のNoMethodError捕捉が正しく動作するか要確認
  - 候補：Ruby標準ライブラリのsuccメソッド仕様確認

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - Core, Enqueuing, Execution, Callbacks, QueueAdapter, QueueName, QueuePriority等の基本機能
  - ソースコードから直接読み取れる機能であり、信頼度が高い
- **1: 中リスク** - Serializers, TestHelper, Continuable/Continuation
  - 複雑なシリアライズ/デシリアライズロジックを含むため、エッジケースの検証が必要
- **2: 高リスク** - 異常系テストケース（SerializationError, DeserializationError, UnadvanceableCursorError等）
  - エラーハンドリングの網羅性を確認する必要がある

## 6) レビュアーチェックリスト（最小）
- [ ] Core#serialize/deserializeのラウンドトリップが正しく動作することを確認
- [ ] Arguments#serialize/deserializeで全ての対応型が正しく処理されることを確認
- [ ] Exceptions#retry_onの遅延計算（polynomial, jitter）が正しいことを確認
- [ ] TestHelper のアサーションメソッドが期待通りに動作することを確認
- [ ] Continuable/Continuationの中断・再開フローが正しく動作することを確認
- [ ] 各アダプタ（Test, Async, Inline）の動作が期待通りであることを確認
- [ ] シリアライザの追加・カスタマイズが正しく動作することを確認
