pitwallDocs

    Principles · prove

    Fix Root Causes

    Fix Root Causes

    When debugging, do not fix symptoms. Trace every problem to its root cause and fix it there.

    Why: Symptom fixes accumulate. Each workaround makes the system harder to reason about, and the real bug remains. Root-cause fixes are slower upfront but reduce total debugging time.

    Pattern:

    • Reproduce first
    • Ask “why” until you hit the root cause
    • Do not add guards (adding a nil check to silence a crash is a symptom fix)
    • If a workaround needs a paragraph-long comment to justify it, the code is wrong (fix the code, not the comment)
    • Check for the pattern, not just the instance (grep for the same pattern, fix all instances)
    • When stuck, instrument. Don’t guess (add logging, read the actual error)

    Restart bugs: suspect state before code

    When something “fails after restart,” suspect stale persistent state first: config files, caches, lock files, serialized state. If clearing a state file restores behavior, prioritize state validation as the fix.

    pitwall adaptation

    • Under the port playbook, copy the source behaviour (bugs and workarounds included) and record them under “found in source”; the fix is a separate /pitwall:ticket (security holes excepted — playbooks/port.md). Under bug-fix, this principle governs.
    • “Fix all instances” stops at the task’s file budget (~8 files); further instances become a /pitwall:ticket.