| name | debug-methodology |
| description | Systematic debugging and problem-solving methodology. Activate when encountering unexpected errors, service failures, regression bugs, deployment issues, or when a fix attempt has failed twice. Also activate when proposing ANY fix to verify it addresses root cause (not a workaround). Prevents patch-chaining, wrong-environment restarts, workaround addiction, and "drunk man" random fixes. |
Debug Methodology
Systematic approach to debugging and problem-solving. Distilled from real production incidents and industry best practices.
โ ๏ธ The Root Cause Imperative
Every fix MUST target the root cause. Workarounds are forbidden unless explicitly approved.
Before proposing ANY solution, pass the Root Cause Gate:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ROOT CAUSE GATE โ
โ โ
โ 1. What is the ACTUAL problem? โ
โ 2. WHY does it happen? (not just WHAT) โ
โ 3. Does my fix eliminate the WHY? โ
โ YES โ proceed โ
โ NO โ this is a workaround โ STOP โ
โ โ
โ Workaround test: โ
โ "If I remove my fix, does the bug return?" โ
โ YES โ workaround (fix the cause instead)โ
โ NO โ genuine fix โ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
The 5 Whys โ Mandatory for Non-Obvious Problems
Problem: API returns 524 timeout
Why? โ Cloudflare cuts connections >100s
Why? โ The API call takes >100s
Why? โ Using non-streaming request, server holds connection silent
Why? โ Code uses regular fetch, not streaming
Fix: โ Use streaming (server sends data continuously, Cloudflare won't cut)
โ WRONG: Switch to faster model (workaround โ avoids the timeout instead of fixing it)
โ
RIGHT: Use streaming API (root cause โ Cloudflare needs ongoing data)
Common Workaround Traps
| Problem | Workaround (โ) | Root Cause Fix (โ
) |
|---|
| API timeout | Switch to faster model | Use streaming / fix the slow query |
| Data precision loss | Search by name instead of ID | Fix BigInt parsing |
| Search returns nothing | Try different search strategy | Fix the search implementation |
| Dependency conflict | Downgrade / pin version | Use correct environment (venv) |
| Feature doesn't work | Remove the feature | Debug why it fails |
Self-check question: "Am I solving the problem, or avoiding it?"
Phase 1: STOP โ Assess Before Acting
Before ANY fix attempt:
โก What is the EXACT symptom? (error message, behavior, screenshot)
โก When did it last work? What changed since then?
โก How is the service running? (process, env, startup command)
For running services:
ps -p <PID> -o command=
ls .venv/ venv/ env/
which python3 && python3 --version
which node && node --version
NEVER restart a service without first recording its original startup command.
Phase 2: Hypothesize โ Form ONE Theory
Priority order:
- Did I change something? โ diff/revert first
- Did the environment change? โ versions, deps, configs
- Did external inputs change? โ API responses, data formats
- Genuine new bug? โ only after ruling out 1-3
Phase 3: Test โ One Change at a Time
Change X โ Test โ Works? โ Done
โ Fails? โ REVERT X โ new hypothesis
Do NOT stack changes.
Phase 4: Patch-Chain Detection
2 fix attempts failed โ STOP. Revert ALL. Back to Phase 1.
You are likely:
- Fixing symptoms of a wrong fix
- In the wrong environment entirely
- Misunderstanding the architecture
Phase 5: Post-Fix Verification
After any fix, verify:
โก Does it solve the ORIGINAL problem? (not just silence the error)
โก Did I introduce new issues? (regression check)
โก Would removing my fix bring the bug back? (confirms causality)
โก Is the fix in the right layer? (not patching symptoms upstream)
Anti-Patterns
๐จ Workaround Addiction (NEW โ Most Common!)
Bypassing the problem instead of fixing it. "It's slower but works" / "Use a different approach".
โ Ask: "Am I solving or avoiding?" If avoiding โ find the real fix.
โ Workarounds are ONLY acceptable when: (1) explicitly approved by user, (2) clearly labeled as temporary, (3) a TODO is created for the real fix.
๐จ Drunk Man Anti-Pattern
Randomly changing things until the problem disappears.
โ Each change needs a hypothesis.
๐จ Streetlight Anti-Pattern
Looking where comfortable, not where the problem is.
โ "Is this where the bug IS, or where I KNOW HOW TO LOOK?"
๐จ Cargo Cult Fix
Copying a fix without understanding why it works.
โ Understand the mechanism first.
๐จ Ignoring the User
User says "it broke after you changed X" โ immediately diff X.
โ User observations are the most valuable data.
Environment Checklist
โก Runtime: system or venv/nvm?
โก Dependencies: match expected versions?
โก Config: .env, config.json โ recent changes?
โก Process manager: PM2/systemd โ restart method?
โก Logs: tail -f before reproducing
โก Backup: snapshot before any change
Deployment Safety
โก Pull latest from server first
โก Backup current working version
โก Make changes on latest
โก Deploy with same startup method
โก Verify immediately
โก If broken โ revert, THEN debug
๐จ Server Code Modification Rules
Every code change on a server MUST be syntax-verified before restart/reload.
After editing .js files:
โก node -c <file> # Syntax check
โก node -e "require('./<file>')" # Module load check (for route files)
โก FAIL โ DO NOT restart. DO NOT tell user to refresh. Fix first.
After editing .html files:
โก Check critical tag closure (div/script/style)
โก grep -c '<div' file && grep -c '</div' file # Count match
Complex multi-line changes:
โก Write complete file locally โ scp upload
โก NEVER use sed for multi-line code insertion (newlines get swallowed)
โก If sed is unavoidable โ verify with node -c immediately after
Restart sequence:
โก node -c *.js passes โ pm2 restart <app>
โก Check pm2 logs --lines 5 for startup errors
โก curl health endpoint to confirm service is up
Why: sed -i multi-line insertion silently corrupts JS (newlines become single line), causing syntax errors that break the entire page with no visible error to the user.
Decision Tree
Problem appears
โโ I just edited something? โ DIFF โ REVERT if suspect
โโ Service won't start? โ CHECK startup command + env
โโ New error after fix? โ STOP (patch chain!) โ Revert โ Phase 1
โโ User reports regression? โ DIFF before/after
โโ Tempted to work around? โ ROOT CAUSE GATE โ fix the real issue
โโ Intermittent? โ CHECK logs + external deps + timing