Files
gh-yaleh-meta-cc-claude/skills/error-recovery/reference/prevention-guidelines.md
2025-11-30 09:07:22 +08:00

8.6 KiB
Raw Permalink Blame History

Error Prevention Guidelines

Version: 1.0 Source: Bootstrap-003 Error Recovery Methodology Last Updated: 2025-10-18

Proactive strategies to prevent common errors before they occur.


Overview

Prevention is better than recovery. This document provides actionable guidelines to prevent the most common error categories.

Automation Impact: 3 automated tools prevent 23.7% of all errors (317/1336)


Category 1: Build/Compilation Errors (15.0%)

Prevention Strategies

1. Pre-Commit Linting

# Add to .git/hooks/pre-commit
gofmt -w .
golangci-lint run
go build

2. IDE Integration

  • Use IDE with real-time syntax checking (VS Code, GoLand)
  • Enable "save on format" (gofmt)
  • Configure inline linter warnings

3. Incremental Compilation

# Build frequently during development
go build ./...  # Fast incremental build

4. Type Safety

  • Use strict type checking
  • Avoid interface{} when possible
  • Add type assertions with error checks

Effectiveness

Prevents ~60% of Category 1 errors


Category 2: Test Failures (11.2%)

Prevention Strategies

1. Run Tests Before Commit

# Add to .git/hooks/pre-commit
go test ./...

2. Test-Driven Development (TDD)

  • Write test first
  • Write minimal code to pass
  • Refactor

3. Fixture Management

# Version control test fixtures
git add tests/fixtures/
# Update fixtures with code changes
./scripts/update-fixtures.sh

4. Continuous Integration

# .github/workflows/test.yml
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Run tests
        run: go test ./...

Effectiveness

Prevents ~70% of Category 2 errors


Category 3: File Not Found (18.7%) ⚠️ AUTOMATABLE

Prevention Strategies

1. Path Validation Tool

# Use automation before file operations
./scripts/validate-path.sh [path]

# Returns:
# - File exists: OK
# - File missing: Suggests similar paths

2. Autocomplete

  • Use shell/IDE autocomplete for paths
  • Tab completion reduces typos by 95%

3. Existence Checks

// In code
if _, err := os.Stat(path); os.IsNotExist(err) {
    return fmt.Errorf("file not found: %s", path)
}

4. Working Directory Awareness

# Always know where you are
pwd
# Use absolute paths when unsure
realpath [relative_path]

Effectiveness

Prevents 65.2% of Category 3 errors with automation


Category 4: File Size Exceeded (6.3%) ⚠️ AUTOMATABLE

Prevention Strategies

1. Size Check Tool

# Use automation before reading
./scripts/check-file-size.sh [file]

# Returns:
# - OK to read
# - Too large, use pagination
# - Suggests offset/limit values

2. Pre-Read Size Check

# Manual check
wc -l [file]
du -h [file]

# If >10000 lines, use pagination

3. Use Selective Reading

# Instead of full read
head -n 1000 [file]
grep "pattern" [file]
tail -n 1000 [file]

4. Streaming for Large Files

// In code, process line-by-line
scanner := bufio.NewScanner(file)
for scanner.Scan() {
    processLine(scanner.Text())
}

Effectiveness

Prevents 100% of Category 4 errors with automation


Category 5: Write Before Read (5.2%) ⚠️ AUTOMATABLE

Prevention Strategies

1. Read-Before-Write Check

# Use automation before Write/Edit
./scripts/check-read-before-write.sh [file]

# Returns:
# - File already read: OK to write
# - File not read: Suggests Read first

2. Always Read First

# Workflow pattern
Read [file]      # Step 1: Always read
Edit [file] ...  # Step 2: Then edit

3. Use Edit for Modifications

  • Edit: Requires prior read (safer)
  • Write: For new files or complete rewrites

4. Session Context Awareness

  • Track what files have been read
  • Clear workflow: Read → Analyze → Edit

Effectiveness

Prevents 100% of Category 5 errors with automation


Category 6: Command Not Found (3.7%)

Prevention Strategies

1. Build Before Execute

# Always build first
make build
./command [args]

2. PATH Verification

# Check command availability
which [command] || echo "Command not found, build first"

3. Use Absolute Paths

# For project binaries
./bin/meta-cc [args]
# Not: meta-cc [args]

4. Dependency Checks

# Check required tools
command -v jq >/dev/null || echo "jq not installed"
command -v go >/dev/null || echo "go not installed"

Effectiveness

Prevents ~80% of Category 6 errors


Category 7: JSON Parsing Errors (6.0%)

Prevention Strategies

1. Validate JSON Before Use

# Validate syntax
jq . [file.json] > /dev/null

# Validate and pretty-print
cat [file.json] | python -m json.tool

2. Schema Validation

# Use JSON schema validator
jsonschema -i [data.json] [schema.json]

3. Test Fixtures with Code

// Test that fixtures parse correctly
func TestFixtureParsing(t *testing.T) {
    data, _ := os.ReadFile("tests/fixtures/sample.json")
    var result MyStruct
    if err := json.Unmarshal(data, &result); err != nil {
        t.Errorf("Fixture doesn't match schema: %v", err)
    }
}

4. Type Safety

// Use strong typing
type Config struct {
    Port int    `json:"port"`    // Not string
    Name string `json:"name"`
}

Effectiveness

Prevents ~70% of Category 7 errors


Category 13: String Not Found (Edit) (3.2%)

Prevention Strategies

1. Always Re-Read Before Edit

# Workflow
Read [file]              # Fresh read
Edit [file] old="..." new="..."  # Then edit

2. Copy Exact Strings

  • Don't retype old_string
  • Copy from file viewer
  • Preserves whitespace/formatting

3. Include Context

// Not: old_string="x"
// Yes: old_string="    x = 1\n    y = 2"  // Includes indentation

4. Verify File Hasn't Changed

# Check file modification time
ls -l [file]
# Or use version control
git status [file]

Effectiveness

Prevents ~80% of Category 13 errors


Cross-Cutting Prevention Strategies

1. Automation First

High-Priority Automated Tools:

  1. validate-path.sh (65.2% of Category 3)
  2. check-file-size.sh (100% of Category 4)
  3. check-read-before-write.sh (100% of Category 5)

Combined Impact: 23.7% of ALL errors prevented

Installation:

# Add to PATH
export PATH=$PATH:./scripts

# Or use as hooks
./scripts/install-hooks.sh

2. Pre-Commit Hooks

#!/bin/bash
# .git/hooks/pre-commit

# Format code
gofmt -w .

# Run linters
golangci-lint run

# Run tests
go test ./...

# Build
go build

# If any fail, prevent commit
if [ $? -ne 0 ]; then
    echo "Pre-commit checks failed"
    exit 1
fi

3. Continuous Integration

# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v2
      - name: Lint
        run: golangci-lint run
      - name: Test
        run: go test ./... -cover
      - name: Build
        run: go build

4. Development Workflow

Standard Workflow:

  1. Write code
  2. Format (gofmt)
  3. Lint (golangci-lint)
  4. Test (go test)
  5. Build (go build)
  6. Commit

TDD Workflow:

  1. Write test (fails - red)
  2. Write code (passes - green)
  3. Refactor
  4. Repeat

Prevention Metrics

Impact by Category

Category Baseline Frequency Prevention Remaining
File Not Found (3) 250 (18.7%) -163 (65.2%) 87 (6.5%)
File Size (4) 84 (6.3%) -84 (100%) 0 (0%)
Write Before Read (5) 70 (5.2%) -70 (100%) 0 (0%)
Total Automated 404 (30.2%) -317 (78.5%) 87 (6.5%)

ROI Analysis

Time Investment:

  • Setup automation: 2 hours
  • Maintain automation: 15 min/week

Time Saved:

  • 317 errors × 3 min avg recovery = 951 minutes = 15.9 hours
  • ROI: 7.95x in first month alone

Best Practices

Do's

Use automation tools when available Run pre-commit hooks Test before commit Build incrementally Validate inputs (paths, JSON, etc.) Use type safety Check file existence before operations

Don'ts

Skip validation steps to save time Commit without running tests Ignore linter warnings Manually type file paths (use autocomplete) Skip pre-read for file edits Ignore automation tool suggestions


Source: Bootstrap-003 Error Recovery Methodology Framework: BAIME (Bootstrapped AI Methodology Engineering) Status: Production-ready, validated with 1336 errors Automation Coverage: 23.7% of errors prevented