# Completion Conditions Guide - Dev Flow MCP

**Version**: 2.3.0
**Date**: [Date]
**Purpose**: Standardized completion criteria for tasks and stages

## 📋 Overview

Completion conditions provide machine-readable, quantifiable criteria for determining when tasks and stages are truly complete. This eliminates subjective completion decisions and ensures consistent quality standards.

## 🎯 Standard Completion Conditions

### Core Testing Conditions

#### `tests_pass`
- **Description**: All tests must pass without failures
- **Usage**: Essential for any task involving code changes
- **Example**: `completion_conditions: ["tests_pass"]`
- **Validation**: Runs project test command and checks exit code
- **Common Use**: Every development task

#### `coverage>X`
- **Description**: Test coverage must exceed specified percentage
- **Usage**: Ensures adequate test coverage for quality assurance
- **Example**: `completion_conditions: ["coverage>80"]`
- **Validation**: Analyzes test coverage reports
- **Common Use**: Core functionality, critical features
- **Recommended Thresholds**:
  - `coverage>60`: Minimum for basic features
  - `coverage>80`: Standard for core functionality
  - `coverage>90`: Critical business logic
  - `coverage>95`: Security-sensitive code

### Code Quality Conditions

#### `eslint=0`
- **Description**: No ESLint errors (for JavaScript/TypeScript projects)
- **Usage**: Ensures code follows style guidelines and best practices
- **Example**: `completion_conditions: ["eslint=0"]`
- **Validation**: Runs ESLint and checks error count
- **Common Use**: All JavaScript/TypeScript tasks

#### `build_success`
- **Description**: Project builds without errors
- **Usage**: Ensures code compiles and dependencies resolve
- **Example**: `completion_conditions: ["build_success"]`
- **Validation**: Runs build command and checks exit code
- **Common Use**: Setup tasks, major refactoring

#### `no_todos`
- **Description**: No TODO comments remain in code
- **Usage**: Ensures all temporary markers are resolved
- **Example**: `completion_conditions: ["no_todos"]`
- **Validation**: Scans codebase for TODO/FIXME comments
- **Common Use**: Final tasks, documentation, cleanup

### Documentation Conditions

#### `docs_updated`
- **Description**: Documentation reflects current implementation
- **Usage**: Ensures documentation stays current with code changes
- **Example**: `completion_conditions: ["docs_updated"]`
- **Validation**: Checks if docs were modified recently
- **Common Use**: API changes, new features

#### `readme_complete`
- **Description**: README file contains required sections
- **Usage**: Ensures project documentation is comprehensive
- **Example**: `completion_conditions: ["readme_complete"]`
- **Validation**: Checks for standard README sections
- **Common Use**: Project setup, documentation tasks

### Performance Conditions

#### `performance_acceptable`
- **Description**: Performance benchmarks meet requirements
- **Usage**: Ensures performance standards are maintained
- **Example**: `completion_conditions: ["performance_acceptable"]`
- **Validation**: Runs performance tests and checks metrics
- **Common Use**: Optimization tasks, critical features

#### `memory_leak_free`
- **Description**: No memory leaks detected
- **Usage**: Ensures application stability
- **Example**: `completion_conditions: ["memory_leak_free"]`
- **Validation**: Runs memory profiling tools
- **Common Use**: Long-running processes, optimization

### Security Conditions

#### `security_scan_pass`
- **Description**: Security vulnerability scan passes
- **Usage**: Ensures no known security issues
- **Example**: `completion_conditions: ["security_scan_pass"]`
- **Validation**: Runs security scanning tools
- **Common Use**: Authentication, data handling

#### `dependencies_secure`
- **Description**: All dependencies are secure and up-to-date
- **Usage**: Ensures supply chain security
- **Example**: `completion_conditions: ["dependencies_secure"]`
- **Validation**: Checks for vulnerable dependencies
- **Common Use**: Setup tasks, dependency updates

## 🏗️ Task Type Recommendations

### Setup Tasks
```yaml
completion_conditions:
  - "build_success"
  - "tests_pass"
  - "dependencies_secure"
```

### Core Development Tasks
```yaml
completion_conditions:
  - "tests_pass"
  - "coverage>80"
  - "eslint=0"
  - "build_success"
```

### Feature Implementation
```yaml
completion_conditions:
  - "tests_pass"
  - "coverage>85"
  - "eslint=0"
  - "docs_updated"
```

### Bug Fixes
```yaml
completion_conditions:
  - "tests_pass"
  - "coverage>75"
  - "eslint=0"
```

### Performance Tasks
```yaml
completion_conditions:
  - "tests_pass"
  - "performance_acceptable"
  - "memory_leak_free"
  - "build_success"
```

### Security Tasks
```yaml
completion_conditions:
  - "tests_pass"
  - "security_scan_pass"
  - "dependencies_secure"
  - "eslint=0"
```

### Documentation Tasks
```yaml
completion_conditions:
  - "docs_updated"
  - "readme_complete"
  - "no_todos"
  - "tests_pass"
```

### Cleanup/Refactoring Tasks
```yaml
completion_conditions:
  - "tests_pass"
  - "coverage>80"
  - "eslint=0"
  - "no_todos"
  - "build_success"
```

## 🔧 Custom Conditions

### Language-Specific Conditions

#### Python Projects
- `pylint=0`: No PyLint errors
- `mypy_pass`: Type checking passes
- `black_formatted`: Code is properly formatted

#### Java Projects
- `checkstyle=0`: No Checkstyle violations
- `spotbugs=0`: No SpotBugs issues
- `jacoco>80`: JaCoCo coverage threshold

#### Rust Projects
- `clippy=0`: No Clippy warnings
- `rustfmt_check`: Code is properly formatted
- `cargo_audit_pass`: No security advisories

#### Go Projects
- `go_vet_pass`: Go vet passes
- `gofmt_check`: Code is properly formatted
- `golint=0`: No golint issues

### Project-Specific Conditions

#### API Projects
- `api_tests_pass`: API integration tests pass
- `swagger_updated`: API documentation is current
- `rate_limit_tested`: Rate limiting is tested

#### Frontend Projects
- `e2e_tests_pass`: End-to-end tests pass
- `accessibility_check`: Accessibility standards met
- `bundle_size_ok`: Bundle size within limits

#### Library Projects
- `examples_work`: All examples execute successfully
- `api_stable`: Public API is stable
- `backwards_compatible`: No breaking changes

## 📊 Condition Combinations

### Minimum Viable (MVP)
```yaml
completion_conditions:
  - "tests_pass"
  - "build_success"
```

### Standard Quality
```yaml
completion_conditions:
  - "tests_pass"
  - "coverage>80"
  - "eslint=0"
  - "build_success"
```

### High Quality
```yaml
completion_conditions:
  - "tests_pass"
  - "coverage>90"
  - "eslint=0"
  - "build_success"
  - "no_todos"
  - "docs_updated"
```

### Production Ready
```yaml
completion_conditions:
  - "tests_pass"
  - "coverage>95"
  - "eslint=0"
  - "build_success"
  - "no_todos"
  - "docs_updated"
  - "security_scan_pass"
  - "performance_acceptable"
```

## 🚀 Implementation Tips

### 1. Start Simple
Begin with basic conditions and add more as your project matures:
```yaml
# Week 1
completion_conditions: ["tests_pass"]

# Week 2
completion_conditions: ["tests_pass", "build_success"]

# Week 3
completion_conditions: ["tests_pass", "build_success", "eslint=0"]
```

### 2. Adjust Thresholds
Gradually increase quality thresholds:
```yaml
# Early development
completion_conditions: ["coverage>60"]

# Mid development
completion_conditions: ["coverage>80"]

# Pre-release
completion_conditions: ["coverage>90"]
```

### 3. Task-Specific Conditions
Different tasks need different conditions:
```yaml
# Setup task
completion_conditions: ["build_success", "dependencies_secure"]

# Feature task
completion_conditions: ["tests_pass", "coverage>85", "eslint=0"]

# Documentation task
completion_conditions: ["docs_updated", "no_todos"]
```

### 4. Use Conditional Logic
Some conditions only apply in certain contexts:
```yaml
# Only check coverage if tests exist
completion_conditions: ["tests_pass", "coverage>80"]

# Only check docs if this is a public API
completion_conditions: ["tests_pass", "docs_updated"]
```

## 📚 References

- [TDD Validator Implementation](../src/tdd-validator.ts)
- [Task Types Guide](task_types.md)
- [Quality Standards](quality_standards.md)
- [Testing Best Practices](testing_guide.md)

---

**Last Updated**: [Date]  
**Next Review**: [Date + 30 days]
