Investigate
Systematic debugging workflow. Do not guess-and-fix — find the root cause first.
Phase 1: Collect
Gather all available evidence before forming any hypothesis.
- Read the error message, stack trace, or symptom description exactly as given
- Identify the affected code path — read the relevant source files
- Check
git log --oneline -20in the affected area for recent changes - If reproducible, reproduce the issue and capture the exact output
- List what you know and what you do not know
Deliverable: a structured symptom summary with affected files, error output, and recent changes.
Phase 2: Hypothesize
Form up to 3 ranked hypotheses. For each:
- State the hypothesis in one sentence
- Identify the single cheapest check that would confirm or refute it
- Do NOT start fixing yet
Phase 3: Verify
Test hypotheses in rank order. For each:
- Run the cheapest check identified in Phase 2
- If confirmed — move to Phase 4
- If refuted — record what you learned and move to the next hypothesis
3-strike rule: If all 3 hypotheses fail, step back and re-collect. Do not keep guessing. Re-read the code path more carefully, expand the search area, or check for environmental factors (config, dependencies, platform).
Phase 4: Fix
Only after root cause is confirmed:
- Write the minimal fix that addresses the root cause
- Do not refactor surrounding code
- Do not add speculative defensive checks
- Run the test suite to verify the fix and check for regressions
Phase 5: Verify and Report
- Confirm the original symptom is resolved
- Confirm no regressions were introduced
- Summarize: root cause, fix applied, evidence of resolution
Rules
- Never skip Phase 1-3 and jump to fixing
- Never change tests to match broken behavior
- If the bug is in a dependency or environment, report it — do not patch around it silently
- If you cannot reproduce the issue, say so and explain what you tried