| name | hypothesis-driven-debugging |
| description | Investigate compiler failures, test errors, or unexpected behavior through systematic minimal reproduction, 3-hypothesis testing, and verification. Always re-run builds and tests after changes. |
Hypothesis-Driven Debugging
A systematic, rigorous approach to debugging failures in the F# compiler codebase.
When to Use This Skill
Use this skill when:
- Investigating test failures (unit tests, integration tests, end-to-end tests)
- Debugging build errors or compilation failures
- Analyzing unexpected runtime behavior
- Troubleshooting performance regressions
- Examining warning/error message issues
Related: for a build / compile / restore failure, run the binlog-analysis skill first — it fetches the build's MSBuild binary log and analyzes it live via the binlog-mcp MCP (structured errors + root-cause diagnosis), a fast way to scope the minimal reproduction below.
Core Principles
- Always start with a minimal reproduction
- Form multiple competing hypotheses
- Design verification for each hypothesis
- Document findings rigorously
- Re-run builds and tests after every change
Process
Step 1: Create Minimal Reproduction
Before forming hypotheses, create the smallest possible reproduction:
-
Extract the failure:
dotnet test -- --filter-method "*YourTest*"