debug-repro — 再現・原因切り分け・修正
不具合を「症状」から「根本原因」へ落とし込む。推測で直さず、再現と検証で確証を得る。
進め方
- 症状を正確に捉える
- エラーメッセージ・スタックトレース・期待結果と実際の結果・発生条件を集める
- 不足していれば AskUserQuestion で最小限を確認(再現手順・環境・直近の変更)
- 再現する
- 最小の再現手順を確立する。可能なら
test-authorで失敗する再現テストを書く - 再現できないなら、まず再現条件の特定を最優先にする
- 最小の再現手順を確立する。可能なら
- 原因を仮説立てする
- スタックトレースを起点に関係コードを読む。直近の差分(
git log/git diff)を疑う - 仮説は 1〜3 個に絞り、それぞれ「もし真なら何が観測されるはず」を言語化する
- スタックトレースを起点に関係コードを読む。直近の差分(
- 検証する
- ログ追加・条件の絞り込み・二分探索(
git bisect等)で仮説を潰す - 確証を得てから修正する。「たぶんこれ」で複数箇所を同時にいじらない
- ログ追加・条件の絞り込み・二分探索(
- 修正と確認
- 根本原因に対する最小修正を行う。再現テストがパスすることを確認する
- 同種の問題が他にないか(同じパターンの箇所)を 1 度だけ確認する
原則
- 症状の抑制(握り潰し・リトライ追加)でなく根本原因を直す。やむを得ない暫定対応は明示する
- 1 度に 1 変数。複数の変更を混ぜて「直った」を曖昧にしない
- 分からないことを分かったふりしない。確証の度合いを正直に伝える
- 修正は外科的に。ついでのリファクタを混ぜない(CLAUDE.md 準拠)