BMAD-METHOD/bmad/bmm/workflows/debug/wolf-fence/instructions.md

4.1 KiB

wolf-fence-search

Binary search debugging to systematically isolate bug location.

Context

This task implements the Wolf Fence algorithm (binary search debugging) to efficiently locate bugs by repeatedly dividing the search space in half. Named after the problem: "There's one wolf in Alaska; how do you find it? Build a fence down the middle, wait for the wolf to howl, determine which side it's on, and repeat."

Task Execution

Phase 1: Initial Analysis

  1. Identify the boundaries of the problem space:
    • Entry point where system is working
    • Exit point where bug manifests
    • Code path between these points
  2. Determine testable checkpoints
  3. Calculate optimal division points

Phase 2: Binary Search Implementation

Step 1: Divide Search Space

  1. Identify midpoint of current search area
  2. Insert diagnostic checkpoint at midpoint:
    • Add assertion to verify expected state
    • Add logging to capture actual state
    • Add breakpoint if interactive debugging available

Step 2: Test and Observe

  1. Execute code up to checkpoint
  2. Verify if bug has manifested:
    • State is correct → Bug is in second half
    • State is incorrect → Bug is in first half
    • Cannot determine → Need better checkpoint

Step 3: Narrow Focus

  1. Select the half containing the bug
  2. Repeat division process
  3. Continue until bug location is isolated to:
    • Single function
    • Few lines of code
    • Specific data transformation

Phase 3: Refinement

For Complex Bugs

  1. Multi-dimensional search: When bug depends on multiple factors

    • Apply binary search on each dimension
    • Create test matrix for combinations
  2. Time-based search: For timing/concurrency issues

    • Binary search on execution timeline
    • Add timestamps to narrow race conditions
  3. Data-based search: For data-dependent bugs

    • Binary search on input size
    • Isolate problematic data patterns

Phase 4: Bug Isolation

Once narrowed to small code section:

  1. Analyze the isolated code thoroughly
  2. Identify exact failure mechanism
  3. Verify bug reproduction in isolation
  4. Document minimal reproduction case

Automated Implementation

Checkpoint Generation Strategy

1. Identify all function boundaries in path
2. Select optimal checkpoint locations:
   - Function entry/exit points
   - Loop boundaries
   - Conditional branches
   - Data transformations

3. Insert non-invasive checkpoints:
   - Use existing logging if available
   - Add temporary assertions
   - Leverage existing test infrastructure

Search Optimization

  • Start with coarse-grained divisions (module/class level)
  • Progressively move to fine-grained (function/line level)
  • Skip obviously correct sections based on static analysis
  • Prioritize high-probability areas based on:
    • Recent changes
    • Historical bug density
    • Code complexity metrics

Output Format

# Wolf Fence Debug Analysis

## Search Summary

**Initial Scope:** [entry point] → [exit point]
**Final Location:** [specific file:line]
**Iterations Required:** [number]
**Time to Isolate:** [duration]

## Search Path

### Iteration 1

- **Search Space:** [full range]
- **Checkpoint:** [location]
- **Result:** Bug in [first/second] half
- **Evidence:** [what was observed]

### Iteration 2

- **Search Space:** [narrowed range]
- **Checkpoint:** [location]
- **Result:** Bug in [first/second] half
- **Evidence:** [what was observed]

[Continue for all iterations...]

## Bug Location

**File:** [path]
**Function:** [name]
**Lines:** [range]
**Description:** [what the bug is]

## Minimal Reproduction

```[language]
// Minimal code to reproduce
[code snippet]
```

Root Cause

[Brief explanation of why bug occurs]

[Suggested solution]

Verification Points

  • Bug reproducible at isolated location
  • Fix resolves issue at checkpoint
  • No regression in other checkpoints

## Completion Criteria
- [ ] Search space properly bounded
- [ ] Binary search completed
- [ ] Bug location isolated
- [ ] Minimal reproduction created
- [ ] Root cause identified
- [ ] Fix recommendation provided