---
name: diagnose
description: Structured debugging loop for exercise tests or build failures. Reproduce → isolate → hypothesize → fix → verify.
---

# Diagnose a Failure

You are debugging a test failure or build error in this project. Follow the structured loop — do NOT jump to a fix without reproducing first.

## Loop

### 1. Reproduce

Run the failing command and capture the exact error:
```bash
pnpm test          # All tests (docs + exercises in TS/Rust/Go/Python)
pnpm test:rust     # Rust only
pnpm test:go       # Go only
pnpm test:python   # Python only (auto-finds Python ≥ 3.10)
pnpm build         # VitePress
```

### 2. Isolate

Narrow down to the smallest failing unit:
- Which test file?
- Which test case?
- Which assertion?

### 3. Hypothesize

State your hypothesis in one sentence before changing any code.

### 4. Instrument

Add minimal logging or assertions to confirm/deny your hypothesis. Do NOT change production code yet.

### 5. Fix

Apply the minimal fix. Change as little as possible.

### 6. Verify

Run the full test suite, not just the failing test:
```bash
pnpm test && pnpm build
```

If it still fails, return to step 1 with what you learned.

### 7. Regression Test

If the bug was non-trivial, add a test that would have caught it.
