Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 09:07:22 +08:00
commit fab98d059b
179 changed files with 46209 additions and 0 deletions

View File

@@ -0,0 +1,461 @@
# Error Classification Taxonomy
**Version**: 2.0
**Source**: Bootstrap-003 Error Recovery Methodology
**Last Updated**: 2025-10-18
**Coverage**: 95.4% of observed errors
**Categories**: 13 complete categories
This taxonomy classifies errors systematically for effective recovery and prevention.
---
## Overview
This taxonomy is:
- **MECE** (Mutually Exclusive, Collectively Exhaustive): 95.4% coverage
- **Actionable**: Each category has clear recovery paths
- **Observable**: Each category has detectable symptoms
- **Universal**: 85-90% applicable to other software projects
**Automation Coverage**: 23.7% of errors preventable with 3 automated tools
---
## 13 Error Categories
### Category 1: Build/Compilation Errors (15.0%)
**Definition**: Syntax errors, type mismatches, import issues preventing compilation
**Examples**:
- `cmd/root.go:4:2: "fmt" imported and not used`
- `undefined: someFunction`
- `cannot use x (type int) as type string`
**Common Causes**:
- Unused imports after refactoring
- Type mismatches from incomplete changes
- Missing function definitions
- Syntax errors
**Detection Pattern**: `*.go:[line]:[col]: [error message]`
**Prevention**:
- Pre-commit linting (gofmt, golangci-lint)
- IDE real-time syntax checking
- Incremental compilation
**Recovery**: Fix syntax/type issue, retry `go build`
**Automation Potential**: Medium
---
### Category 2: Test Failures (11.2%)
**Definition**: Unit or integration test assertions that fail during execution
**Examples**:
- `--- FAIL: TestLoadFixture (0.00s)`
- `Fixture content should contain 'sequence' field`
- `FAIL github.com/project/package 0.003s`
**Common Causes**:
- Test fixture data mismatch
- Assertion failures from code changes
- Missing test data files
- Incorrect expected values
**Detection Pattern**: `--- FAIL:`, `FAIL\t`, assertion messages
**Prevention**:
- Run tests before commit
- Update test fixtures with code changes
- Test-driven development (TDD)
**Recovery**: Update test expectations or fix code
**Automation Potential**: Low (requires understanding test intent)
---
### Category 3: File Not Found (18.7%) ⚠️ AUTOMATABLE
**Definition**: Attempts to access non-existent files or directories
**Examples**:
- `File does not exist.`
- `wc: /path/to/file: No such file or directory`
- `File does not exist. Did you mean file.md?`
**Common Causes**:
- Typos in file paths
- Files moved or deleted
- Incorrect working directory
- Case sensitivity issues
**Detection Pattern**: `File does not exist`, `No such file or directory`
**Prevention**:
- **Automation: `validate-path.sh`** ✅ (prevents 65.2% of category 3 errors)
- Validate paths before file operations
- Use autocomplete for paths
- Check file existence first
**Recovery**: Correct file path, create missing file, or change directory
**Automation Potential**: **HIGH**
---
### Category 4: File Size Exceeded (6.3%) ⚠️ AUTOMATABLE
**Definition**: Attempted to read files exceeding token limit
**Examples**:
- `File content (46892 tokens) exceeds maximum allowed tokens (25000)`
- `File too large to read in single operation`
**Common Causes**:
- Reading large generated files without pagination
- Reading entire JSON files
- Reading log files without limiting lines
**Detection Pattern**: `exceeds maximum allowed tokens`, `File too large`
**Prevention**:
- **Automation: `check-file-size.sh`** ✅ (prevents 100% of category 4 errors)
- Pre-check file size before reading
- Use offset/limit parameters
- Use grep/head/tail instead of full Read
**Recovery**: Use Read with offset/limit, or use grep
**Automation Potential**: **FULL**
---
### Category 5: Write Before Read (5.2%) ⚠️ AUTOMATABLE
**Definition**: Attempted to Write/Edit a file without reading it first
**Examples**:
- `File has not been read yet. Read it first before writing to it.`
**Common Causes**:
- Forgetting to read file before edit
- Reading wrong file, editing intended file
- Session context lost
- Workflow error
**Detection Pattern**: `File has not been read yet`
**Prevention**:
- **Automation: `check-read-before-write.sh`** ✅ (prevents 100% of category 5 errors)
- Always Read before Write/Edit
- Use Edit instead of Write for existing files
- Check read history
**Recovery**: Read the file, then retry Write/Edit
**Automation Potential**: **FULL**
---
### Category 6: Command Not Found (3.7%)
**Definition**: Bash commands that don't exist or aren't in PATH
**Examples**:
- `/bin/bash: line 1: meta-cc: command not found`
- `command not found: gofmt`
**Common Causes**:
- Binary not built yet
- Binary not in PATH
- Typo in command name
- Required tool not installed
**Detection Pattern**: `command not found`
**Prevention**:
- Build before running commands
- Verify tool installation
- Use absolute paths for project binaries
**Recovery**: Build binary, install tool, or correct command
**Automation Potential**: Medium
---
### Category 7: JSON Parsing Errors (6.0%)
**Definition**: Malformed JSON or schema mismatches
**Examples**:
- `json: cannot unmarshal string into Go struct field`
- `invalid character '}' looking for beginning of value`
**Common Causes**:
- Schema changes without updating code
- Malformed JSON in test fixtures
- Type mismatches
- Missing or extra commas/braces
**Detection Pattern**: `json:`, `unmarshal`, `invalid character`
**Prevention**:
- Validate JSON with jq before use
- Use JSON schema validation
- Test JSON fixtures with actual code
**Recovery**: Fix JSON structure or update schema
**Automation Potential**: Medium
---
### Category 8: Request Interruption (2.2%)
**Definition**: User manually interrupted tool execution
**Examples**:
- `[Request interrupted by user for tool use]`
- `Command aborted before execution`
**Common Causes**:
- User realized mistake mid-execution
- User wants to change approach
- Long-running command needs stopping
**Detection Pattern**: `interrupted by user`, `aborted before execution`
**Prevention**: Not applicable (user decision)
**Recovery**: Not needed (intentional)
**Automation Potential**: N/A
---
### Category 9: MCP Server Errors (17.1%)
**Definition**: Errors from Model Context Protocol tool integrations
**Subcategories**:
- 9a. Connection Errors (server unavailable)
- 9b. Timeout Errors (query exceeds time limit)
- 9c. Query Errors (invalid parameters)
- 9d. Data Errors (unexpected format)
**Examples**:
- `MCP server connection failed`
- `Query timeout after 30s`
- `Invalid parameter: status must be 'error' or 'success'`
**Common Causes**:
- MCP server not running
- Network issues
- Query too broad
- Invalid parameters
- Schema changes
**Prevention**:
- Check MCP server status before queries
- Use pagination for large queries
- Validate query parameters
- Handle connection errors gracefully
**Recovery**: Restart MCP server, optimize query, or fix parameters
**Automation Potential**: Medium
---
### Category 10: Permission Denied (0.7%)
**Definition**: Insufficient permissions to access file or execute command
**Examples**:
- `Permission denied: /path/to/file`
- `Operation not permitted`
**Common Causes**:
- File permissions too restrictive
- Directory not writable
- User doesn't own file
**Detection Pattern**: `Permission denied`, `Operation not permitted`
**Prevention**:
- Verify permissions before operations
- Use appropriate user context
- Avoid modifying system files
**Recovery**: Change permissions (chmod/chown)
**Automation Potential**: Low
---
### Category 11: Empty Command String (1.1%)
**Definition**: Bash tool invoked with empty or whitespace-only command
**Examples**:
- `/bin/bash: line 1: : command not found`
**Common Causes**:
- Variable expansion to empty string
- Conditional command construction error
- Copy-paste error
**Detection Pattern**: `/bin/bash: line 1: : command not found`
**Prevention**:
- Validate command strings are non-empty
- Check variable values
- Use bash -x to debug
**Recovery**: Provide valid command string
**Automation Potential**: High
---
### Category 12: Go Module Already Exists (0.4%)
**Definition**: Attempted `go mod init` when go.mod already exists
**Examples**:
- `go: /path/to/go.mod already exists`
**Common Causes**:
- Forgot to check for existing go.mod
- Re-running initialization script
**Detection Pattern**: `go.mod already exists`
**Prevention**:
- Check for go.mod existence before init
- Idempotent scripts
**Recovery**: No action needed
**Automation Potential**: Full
---
### Category 13: String Not Found (Edit Errors) (3.2%)
**Definition**: Edit tool attempts to replace non-existent string
**Examples**:
- `String to replace not found in file.`
- `String: {old content} not found`
**Common Causes**:
- File changed since last inspection (stale old_string)
- Whitespace differences (tabs vs spaces)
- Line ending differences (LF vs CRLF)
- Copy-paste errors
**Detection Pattern**: `String to replace not found in file`
**Prevention**:
- Re-read file immediately before Edit
- Use exact string copies
- Include sufficient context in old_string
- Verify file hasn't changed
**Recovery**:
1. Re-read file to get current content
2. Locate target section
3. Copy exact current string
4. Retry Edit with correct old_string
**Automation Potential**: High
---
## Uncategorized Errors (4.6%)
**Remaining**: 61 errors
**Breakdown**:
- Low-frequency unique errors: ~35 errors (2.6%)
- Rare edge cases: ~15 errors (1.1%)
- Other tool-specific errors: ~11 errors (0.8%)
These occur too infrequently (<0.5% each) to warrant dedicated categories.
---
## Automation Summary
**Automated Prevention Available**:
| Category | Errors | Tool | Coverage |
|----------|--------|------|----------|
| File Not Found | 250 (18.7%) | `validate-path.sh` | 65.2% |
| File Size Exceeded | 84 (6.3%) | `check-file-size.sh` | 100% |
| Write Before Read | 70 (5.2%) | `check-read-before-write.sh` | 100% |
| **Total Automated** | **317 (23.7%)** | **3 tools** | **Weighted avg** |
**Automation Speedup**: 20.9x for automated categories
---
## Transferability
**Universal Categories** (90-100% transferable):
- Build/Compilation Errors
- Test Failures
- File Not Found
- File Size Limits
- Permission Denied
- Empty Command
**Portable Categories** (70-90% transferable):
- Command Not Found
- JSON Parsing
- String Not Found
**Context-Specific Categories** (40-70% transferable):
- Write Before Read (Claude Code specific)
- Request Interruption (AI assistant specific)
- MCP Server Errors (MCP-enabled systems)
- Go Module Exists (Go-specific)
**Overall Transferability**: ~85-90%
---
## Usage
### For Developers
1. **Error occurs** → Match to category using detection pattern
2. **Review common causes** → Identify root cause
3. **Apply prevention** → Check if automated tool available
4. **Execute recovery** → Follow category-specific steps
### For Tool Builders
1. **High automation potential** → Prioritize Categories 3, 4, 5, 11, 12
2. **Medium automation** → Consider Categories 6, 7, 9
3. **Low automation** → Manual handling for Categories 2, 8, 10
### For Project Adaptation
1. **Start with universal categories** (1-7, 10, 11, 13)
2. **Adapt context-specific** (8, 9, 12)
3. **Monitor uncategorized** → Create new categories if patterns emerge
---
**Source**: Bootstrap-003 Error Recovery Methodology
**Framework**: BAIME (Bootstrapped AI Methodology Engineering)
**Status**: Production-ready, validated with 1336 errors
**Coverage**: 95.4% (converged)