principle-fix-root-causes ยท diff
git:20260904.5a122b3 to git:20260914.6639cef
16 added, 11 removed. Audit A to A.
---
name: principle-fix-root-causes
- description: 'Requires diagnosis and repair of root causes. Apply when debugging any failure or regression.'
- user-invocable: false
+ description: 'Requires diagnosis and repair of root causes. Invoke only on stated "find the root cause" intent or "/principle-fix-root-causes".'
+ disable-model-invocation: true
---
# Fix Root Causes
- Land debugging fixes at the root cause, never at the symptom.
+ When debugging, do not fix symptoms. Trace every problem to its root cause and fix it there.
- - Reproduce before fixing; an unreproduced bug cannot be verified.
- - Ask why until reaching a changeable cause beyond the proximate symptom.
- - Add nil guards only when absence is legal; otherwise correct why absence occurred.
- - Replace paragraph-justified workarounds with a code fix.
- - Grep for sibling instances of the root cause and fix every occurrence.
- - When stuck, instrument, read the actual error, and observe before hypothesizing.
- - For failures after restart, suspect stale persistent state first: config files, caches, lock files, serialized state.
- - If clearing a state file restores behavior, add state validation instead of unrelated code.
+ **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.