mirror of
https://github.com/SuperClaude-Org/SuperClaude_Framework.git
synced 2025-12-29 16:16:08 +00:00
454 lines
15 KiB
Markdown
454 lines
15 KiB
Markdown
|
|
# framework_logic.py - Core SuperClaude Framework Decision Engine
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
The `framework_logic.py` module implements the core decision-making algorithms from the SuperClaude framework, translating RULES.md, PRINCIPLES.md, and ORCHESTRATOR.md patterns into executable intelligence. This module serves as the central nervous system for all hook operations, providing evidence-based decision making, complexity assessment, risk evaluation, and quality validation.
|
||
|
|
|
||
|
|
## Purpose and Responsibilities
|
||
|
|
|
||
|
|
### Primary Functions
|
||
|
|
- **Decision Algorithm Implementation**: Executable versions of SuperClaude framework rules
|
||
|
|
- **Complexity Assessment**: Multi-factor scoring system for operation routing decisions
|
||
|
|
- **Risk Evaluation**: Context-aware risk assessment with mitigation strategies
|
||
|
|
- **Quality Validation**: Multi-step validation cycles with measurable quality scores
|
||
|
|
- **Performance Estimation**: Resource impact prediction and optimization recommendations
|
||
|
|
|
||
|
|
### Framework Pattern Implementation
|
||
|
|
- **RULES.md Compliance**: Read-before-write validation, systematic codebase changes, session lifecycle rules
|
||
|
|
- **PRINCIPLES.md Integration**: Evidence-based decisions, quality standards, error handling patterns
|
||
|
|
- **ORCHESTRATOR.md Logic**: Intelligent routing, resource management, quality gate enforcement
|
||
|
|
|
||
|
|
## Core Classes and Data Structures
|
||
|
|
|
||
|
|
### Enumerations
|
||
|
|
|
||
|
|
#### OperationType
|
||
|
|
```python
|
||
|
|
class OperationType(Enum):
|
||
|
|
READ = "read" # File reading operations
|
||
|
|
WRITE = "write" # File creation operations
|
||
|
|
EDIT = "edit" # File modification operations
|
||
|
|
ANALYZE = "analyze" # Code analysis operations
|
||
|
|
BUILD = "build" # Build/compilation operations
|
||
|
|
TEST = "test" # Testing operations
|
||
|
|
DEPLOY = "deploy" # Deployment operations
|
||
|
|
REFACTOR = "refactor" # Code restructuring operations
|
||
|
|
```
|
||
|
|
|
||
|
|
#### RiskLevel
|
||
|
|
```python
|
||
|
|
class RiskLevel(Enum):
|
||
|
|
LOW = "low" # Minimal impact, safe operations
|
||
|
|
MEDIUM = "medium" # Moderate impact, requires validation
|
||
|
|
HIGH = "high" # Significant impact, requires approval
|
||
|
|
CRITICAL = "critical" # System-wide impact, maximum validation
|
||
|
|
```
|
||
|
|
|
||
|
|
### Data Classes
|
||
|
|
|
||
|
|
#### OperationContext
|
||
|
|
```python
|
||
|
|
@dataclass
|
||
|
|
class OperationContext:
|
||
|
|
operation_type: OperationType # Type of operation being performed
|
||
|
|
file_count: int # Number of files involved
|
||
|
|
directory_count: int # Number of directories involved
|
||
|
|
has_tests: bool # Whether tests are available
|
||
|
|
is_production: bool # Production environment flag
|
||
|
|
user_expertise: str # beginner|intermediate|expert
|
||
|
|
project_type: str # web|api|cli|library|etc
|
||
|
|
complexity_score: float # 0.0 to 1.0 complexity rating
|
||
|
|
risk_level: RiskLevel # Assessed risk level
|
||
|
|
```
|
||
|
|
|
||
|
|
#### ValidationResult
|
||
|
|
```python
|
||
|
|
@dataclass
|
||
|
|
class ValidationResult:
|
||
|
|
is_valid: bool # Overall validation status
|
||
|
|
issues: List[str] # Critical issues found
|
||
|
|
warnings: List[str] # Non-critical warnings
|
||
|
|
suggestions: List[str] # Improvement recommendations
|
||
|
|
quality_score: float # 0.0 to 1.0 quality rating
|
||
|
|
```
|
||
|
|
|
||
|
|
## Core Methods and Algorithms
|
||
|
|
|
||
|
|
### Framework Rule Implementation
|
||
|
|
|
||
|
|
#### should_use_read_before_write()
|
||
|
|
```python
|
||
|
|
def should_use_read_before_write(self, context: OperationContext) -> bool:
|
||
|
|
"""RULES.md: Always use Read tool before Write or Edit operations."""
|
||
|
|
return context.operation_type in [OperationType.WRITE, OperationType.EDIT]
|
||
|
|
```
|
||
|
|
|
||
|
|
**Implementation Details**:
|
||
|
|
- Direct mapping from RULES.md operational security requirements
|
||
|
|
- Returns True for any operation that modifies existing files
|
||
|
|
- Used by hooks to enforce read-before-write validation
|
||
|
|
|
||
|
|
#### should_enable_validation()
|
||
|
|
```python
|
||
|
|
def should_enable_validation(self, context: OperationContext) -> bool:
|
||
|
|
"""ORCHESTRATOR.md: Enable validation for production code or high-risk operations."""
|
||
|
|
return (
|
||
|
|
context.is_production or
|
||
|
|
context.risk_level in [RiskLevel.HIGH, RiskLevel.CRITICAL] or
|
||
|
|
context.operation_type in [OperationType.DEPLOY, OperationType.REFACTOR]
|
||
|
|
)
|
||
|
|
```
|
||
|
|
|
||
|
|
### Complexity Assessment Algorithm
|
||
|
|
|
||
|
|
#### calculate_complexity_score()
|
||
|
|
Multi-factor complexity scoring with weighted components:
|
||
|
|
|
||
|
|
**File Count Factor (0.0 to 0.3)**:
|
||
|
|
- 1 file: 0.0
|
||
|
|
- 2-3 files: 0.1
|
||
|
|
- 4-10 files: 0.2
|
||
|
|
- 10+ files: 0.3
|
||
|
|
|
||
|
|
**Directory Factor (0.0 to 0.2)**:
|
||
|
|
- 1 directory: 0.0
|
||
|
|
- 2 directories: 0.1
|
||
|
|
- 3+ directories: 0.2
|
||
|
|
|
||
|
|
**Operation Type Factor (0.0 to 0.3)**:
|
||
|
|
- Refactor/Architecture: 0.3
|
||
|
|
- Build/Implement/Migrate: 0.2
|
||
|
|
- Fix/Update/Improve: 0.1
|
||
|
|
- Read/Analyze: 0.0
|
||
|
|
|
||
|
|
**Language/Framework Factor (0.0 to 0.2)**:
|
||
|
|
- Multi-language projects: 0.2
|
||
|
|
- Framework changes: 0.1
|
||
|
|
- Single language/no framework: 0.0
|
||
|
|
|
||
|
|
**Total Score**: Sum of all factors, capped at 1.0
|
||
|
|
|
||
|
|
### Risk Assessment Algorithm
|
||
|
|
|
||
|
|
#### assess_risk_level()
|
||
|
|
Context-based risk evaluation with escalation rules:
|
||
|
|
|
||
|
|
1. **Production Environment**: Automatic HIGH risk
|
||
|
|
2. **Complexity > 0.7**: HIGH risk
|
||
|
|
3. **Complexity > 0.4**: MEDIUM risk
|
||
|
|
4. **File Count > 10**: MEDIUM risk
|
||
|
|
5. **Default**: LOW risk
|
||
|
|
|
||
|
|
### Quality Validation Framework
|
||
|
|
|
||
|
|
#### validate_operation()
|
||
|
|
Multi-criteria validation with quality scoring:
|
||
|
|
|
||
|
|
**Evidence-Based Validation**:
|
||
|
|
- Evidence provided: Quality maintained
|
||
|
|
- No evidence: -0.1 quality score, warning generated
|
||
|
|
|
||
|
|
**Error Handling Validation**:
|
||
|
|
- Write/Edit/Deploy operations require error handling
|
||
|
|
- Missing error handling: -0.2 quality score, issue generated
|
||
|
|
|
||
|
|
**Test Coverage Validation**:
|
||
|
|
- Logic changes should have tests
|
||
|
|
- Missing tests: -0.1 quality score, suggestion generated
|
||
|
|
|
||
|
|
**Documentation Validation**:
|
||
|
|
- Public APIs require documentation
|
||
|
|
- Missing docs: -0.1 quality score, suggestion generated
|
||
|
|
|
||
|
|
**Security Validation**:
|
||
|
|
- User input handling requires validation
|
||
|
|
- Missing input validation: -0.3 quality score, critical issue
|
||
|
|
|
||
|
|
**Quality Thresholds**:
|
||
|
|
- Valid operation: No issues AND quality_score ≥ 0.7
|
||
|
|
- Final quality_score: max(calculated_score, 0.0)
|
||
|
|
|
||
|
|
### Thinking Mode Selection
|
||
|
|
|
||
|
|
#### determine_thinking_mode()
|
||
|
|
Complexity-based thinking mode selection:
|
||
|
|
|
||
|
|
- **Complexity ≥ 0.8**: `--ultrathink` (32K token analysis)
|
||
|
|
- **Complexity ≥ 0.6**: `--think-hard` (10K token analysis)
|
||
|
|
- **Complexity ≥ 0.3**: `--think` (4K token analysis)
|
||
|
|
- **Complexity < 0.3**: No thinking mode required
|
||
|
|
|
||
|
|
### Delegation Decision Logic
|
||
|
|
|
||
|
|
#### should_enable_delegation()
|
||
|
|
Multi-factor delegation assessment:
|
||
|
|
|
||
|
|
```python
|
||
|
|
def should_enable_delegation(self, context: OperationContext) -> Tuple[bool, str]:
|
||
|
|
if context.file_count > 3:
|
||
|
|
return True, "files" # File-based delegation
|
||
|
|
elif context.directory_count > 2:
|
||
|
|
return True, "folders" # Folder-based delegation
|
||
|
|
elif context.complexity_score > 0.4:
|
||
|
|
return True, "auto" # Automatic strategy selection
|
||
|
|
else:
|
||
|
|
return False, "none" # No delegation needed
|
||
|
|
```
|
||
|
|
|
||
|
|
## Performance Target Management
|
||
|
|
|
||
|
|
### Configuration Integration
|
||
|
|
```python
|
||
|
|
def __init__(self):
|
||
|
|
# Load performance targets from SuperClaude configuration
|
||
|
|
self.performance_targets = {}
|
||
|
|
|
||
|
|
# Hook-specific targets
|
||
|
|
self.performance_targets['session_start_ms'] = config_loader.get_hook_config(
|
||
|
|
'session_start', 'performance_target_ms', 50
|
||
|
|
)
|
||
|
|
self.performance_targets['tool_routing_ms'] = config_loader.get_hook_config(
|
||
|
|
'pre_tool_use', 'performance_target_ms', 200
|
||
|
|
)
|
||
|
|
# ... additional targets
|
||
|
|
```
|
||
|
|
|
||
|
|
### Performance Impact Estimation
|
||
|
|
```python
|
||
|
|
def estimate_performance_impact(self, context: OperationContext) -> Dict[str, Any]:
|
||
|
|
base_time = 100 # ms
|
||
|
|
estimated_time = base_time * (1 + context.complexity_score * 3)
|
||
|
|
|
||
|
|
# Factor in file count impact
|
||
|
|
if context.file_count > 5:
|
||
|
|
estimated_time *= 1.5
|
||
|
|
|
||
|
|
# Generate optimization suggestions
|
||
|
|
optimizations = []
|
||
|
|
if context.file_count > 3:
|
||
|
|
optimizations.append("Consider parallel processing")
|
||
|
|
if context.complexity_score > 0.6:
|
||
|
|
optimizations.append("Enable delegation mode")
|
||
|
|
|
||
|
|
return {
|
||
|
|
'estimated_time_ms': int(estimated_time),
|
||
|
|
'performance_risk': 'high' if estimated_time > 1000 else 'low',
|
||
|
|
'suggested_optimizations': optimizations,
|
||
|
|
'efficiency_gains_possible': len(optimizations) > 0
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Quality Gates Integration
|
||
|
|
|
||
|
|
### get_quality_gates()
|
||
|
|
Dynamic quality gate selection based on operation context:
|
||
|
|
|
||
|
|
**Base Gates** (All Operations):
|
||
|
|
- `syntax_validation`: Language-specific syntax checking
|
||
|
|
|
||
|
|
**Write/Edit Operations**:
|
||
|
|
- `type_analysis`: Type compatibility validation
|
||
|
|
- `code_quality`: Linting and style checking
|
||
|
|
|
||
|
|
**High-Risk Operations**:
|
||
|
|
- `security_assessment`: Vulnerability scanning
|
||
|
|
- `performance_analysis`: Performance impact analysis
|
||
|
|
|
||
|
|
**Test-Available Operations**:
|
||
|
|
- `test_validation`: Test execution and coverage
|
||
|
|
|
||
|
|
**Deployment Operations**:
|
||
|
|
- `integration_testing`: End-to-end validation
|
||
|
|
- `deployment_validation`: Environment compatibility
|
||
|
|
|
||
|
|
## SuperClaude Principles Application
|
||
|
|
|
||
|
|
### apply_superclaude_principles()
|
||
|
|
Automatic principle enforcement with recommendations:
|
||
|
|
|
||
|
|
**Evidence > Assumptions**:
|
||
|
|
```python
|
||
|
|
if 'assumptions' in enhanced_data and not enhanced_data.get('evidence'):
|
||
|
|
enhanced_data['recommendations'].append(
|
||
|
|
"Gather evidence to validate assumptions"
|
||
|
|
)
|
||
|
|
```
|
||
|
|
|
||
|
|
**Code > Documentation**:
|
||
|
|
```python
|
||
|
|
if enhanced_data.get('operation_type') == 'document' and not enhanced_data.get('has_working_code'):
|
||
|
|
enhanced_data['warnings'].append(
|
||
|
|
"Ensure working code exists before extensive documentation"
|
||
|
|
)
|
||
|
|
```
|
||
|
|
|
||
|
|
**Efficiency > Verbosity**:
|
||
|
|
```python
|
||
|
|
if enhanced_data.get('output_length', 0) > 1000 and not enhanced_data.get('justification_for_length'):
|
||
|
|
enhanced_data['efficiency_suggestions'].append(
|
||
|
|
"Consider token efficiency techniques for long outputs"
|
||
|
|
)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Integration with Hooks
|
||
|
|
|
||
|
|
### Hook Implementation Pattern
|
||
|
|
```python
|
||
|
|
# Hook initialization
|
||
|
|
framework_logic = FrameworkLogic()
|
||
|
|
|
||
|
|
# Operation context creation
|
||
|
|
context = OperationContext(
|
||
|
|
operation_type=OperationType.EDIT,
|
||
|
|
file_count=file_count,
|
||
|
|
directory_count=dir_count,
|
||
|
|
has_tests=has_tests,
|
||
|
|
is_production=is_production,
|
||
|
|
user_expertise="intermediate",
|
||
|
|
project_type="web",
|
||
|
|
complexity_score=0.0, # Will be calculated
|
||
|
|
risk_level=RiskLevel.LOW # Will be assessed
|
||
|
|
)
|
||
|
|
|
||
|
|
# Calculate complexity and assess risk
|
||
|
|
context.complexity_score = framework_logic.calculate_complexity_score(operation_data)
|
||
|
|
context.risk_level = framework_logic.assess_risk_level(context)
|
||
|
|
|
||
|
|
# Make framework-compliant decisions
|
||
|
|
should_validate = framework_logic.should_enable_validation(context)
|
||
|
|
should_delegate, delegation_strategy = framework_logic.should_enable_delegation(context)
|
||
|
|
thinking_mode = framework_logic.determine_thinking_mode(context)
|
||
|
|
|
||
|
|
# Validate operation
|
||
|
|
validation_result = framework_logic.validate_operation(operation_data)
|
||
|
|
if not validation_result.is_valid:
|
||
|
|
# Handle validation issues
|
||
|
|
handle_validation_issues(validation_result)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Error Handling Strategies
|
||
|
|
|
||
|
|
### Graceful Degradation
|
||
|
|
- **Configuration Errors**: Use default performance targets
|
||
|
|
- **Calculation Errors**: Return safe default values
|
||
|
|
- **Validation Failures**: Provide detailed error context
|
||
|
|
|
||
|
|
### Fallback Mechanisms
|
||
|
|
- **Complexity Calculation**: Default to 0.5 if calculation fails
|
||
|
|
- **Risk Assessment**: Default to MEDIUM risk if assessment fails
|
||
|
|
- **Quality Validation**: Default to valid with warnings if validation fails
|
||
|
|
|
||
|
|
## Performance Characteristics
|
||
|
|
|
||
|
|
### Operation Timings
|
||
|
|
- **Complexity Calculation**: <5ms for typical operations
|
||
|
|
- **Risk Assessment**: <3ms for context evaluation
|
||
|
|
- **Quality Validation**: <10ms for comprehensive validation
|
||
|
|
- **Performance Estimation**: <2ms for impact calculation
|
||
|
|
|
||
|
|
### Memory Efficiency
|
||
|
|
- **Context Objects**: ~200-400 bytes per context
|
||
|
|
- **Validation Results**: ~500-1000 bytes with full details
|
||
|
|
- **Configuration Cache**: ~1-2KB for performance targets
|
||
|
|
|
||
|
|
## Configuration Requirements
|
||
|
|
|
||
|
|
### Required Configuration Sections
|
||
|
|
```yaml
|
||
|
|
# Performance targets for each hook
|
||
|
|
hook_configurations:
|
||
|
|
session_start:
|
||
|
|
performance_target_ms: 50
|
||
|
|
pre_tool_use:
|
||
|
|
performance_target_ms: 200
|
||
|
|
post_tool_use:
|
||
|
|
performance_target_ms: 100
|
||
|
|
pre_compact:
|
||
|
|
performance_target_ms: 150
|
||
|
|
|
||
|
|
# Global performance settings
|
||
|
|
global_configuration:
|
||
|
|
performance_monitoring:
|
||
|
|
enabled: true
|
||
|
|
target_percentile: 95
|
||
|
|
alert_threshold_ms: 500
|
||
|
|
```
|
||
|
|
|
||
|
|
## Usage Examples
|
||
|
|
|
||
|
|
### Basic Decision Making
|
||
|
|
```python
|
||
|
|
framework_logic = FrameworkLogic()
|
||
|
|
|
||
|
|
# Create operation context
|
||
|
|
context = OperationContext(
|
||
|
|
operation_type=OperationType.REFACTOR,
|
||
|
|
file_count=15,
|
||
|
|
directory_count=3,
|
||
|
|
has_tests=True,
|
||
|
|
is_production=False,
|
||
|
|
user_expertise="expert",
|
||
|
|
project_type="web",
|
||
|
|
complexity_score=0.0,
|
||
|
|
risk_level=RiskLevel.LOW
|
||
|
|
)
|
||
|
|
|
||
|
|
# Calculate complexity and assess risk
|
||
|
|
context.complexity_score = framework_logic.calculate_complexity_score({
|
||
|
|
'file_count': 15,
|
||
|
|
'directory_count': 3,
|
||
|
|
'operation_type': 'refactor',
|
||
|
|
'multi_language': False,
|
||
|
|
'framework_changes': True
|
||
|
|
})
|
||
|
|
|
||
|
|
context.risk_level = framework_logic.assess_risk_level(context)
|
||
|
|
|
||
|
|
# Make decisions
|
||
|
|
should_read_first = framework_logic.should_use_read_before_write(context) # False (refactor)
|
||
|
|
should_validate = framework_logic.should_enable_validation(context) # True (refactor)
|
||
|
|
should_delegate, strategy = framework_logic.should_enable_delegation(context) # True, "files"
|
||
|
|
thinking_mode = framework_logic.determine_thinking_mode(context) # "--think-hard"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Quality Validation
|
||
|
|
```python
|
||
|
|
operation_data = {
|
||
|
|
'operation_type': 'write',
|
||
|
|
'affects_logic': True,
|
||
|
|
'has_tests': False,
|
||
|
|
'is_public_api': True,
|
||
|
|
'has_documentation': False,
|
||
|
|
'handles_user_input': True,
|
||
|
|
'has_input_validation': False,
|
||
|
|
'has_error_handling': True
|
||
|
|
}
|
||
|
|
|
||
|
|
validation_result = framework_logic.validate_operation(operation_data)
|
||
|
|
|
||
|
|
print(f"Valid: {validation_result.is_valid}") # False
|
||
|
|
print(f"Quality Score: {validation_result.quality_score}") # 0.4
|
||
|
|
print(f"Issues: {validation_result.issues}") # ['User input handling without validation']
|
||
|
|
print(f"Warnings: {validation_result.warnings}") # ['No tests found for logic changes', 'Public API lacks documentation']
|
||
|
|
print(f"Suggestions: {validation_result.suggestions}") # ['Add unit tests for new logic', 'Add API documentation']
|
||
|
|
```
|
||
|
|
|
||
|
|
## Dependencies and Relationships
|
||
|
|
|
||
|
|
### Internal Dependencies
|
||
|
|
- **yaml_loader**: Configuration loading and management
|
||
|
|
- **Standard Libraries**: json, time, dataclasses, enum, typing
|
||
|
|
|
||
|
|
### Framework Integration
|
||
|
|
- **RULES.md**: Direct implementation of operational rules
|
||
|
|
- **PRINCIPLES.md**: Quality standards and decision-making principles
|
||
|
|
- **ORCHESTRATOR.md**: Intelligent routing and resource management patterns
|
||
|
|
|
||
|
|
### Hook Coordination
|
||
|
|
- Used by all 7 hooks for consistent decision-making
|
||
|
|
- Provides standardized context and validation interfaces
|
||
|
|
- Enables cross-hook performance monitoring and optimization
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
*This module serves as the foundational intelligence layer for the entire SuperClaude framework, ensuring that all hook operations are evidence-based, quality-validated, and optimally routed according to established patterns and principles.*
|