claude-flow-multilang
Version:
Revolutionary multilingual AI orchestration framework with cultural awareness and DDD architecture
489 lines (336 loc) • 12.1 kB
Markdown
# Validation and Rollback Systems
This document describes the comprehensive validation and rollback mechanisms implemented for SPARC initialization to ensure safe and reliable setup.
## Overview
The validation and rollback systems provide multiple layers of safety and reliability:
1. **Pre-initialization validation** - Checks system readiness before any changes
2. **Automatic backup creation** - Creates restore points before initialization
3. **Atomic operations** - Ensures all-or-nothing initialization
4. **Post-initialization verification** - Validates successful completion
5. **Rollback mechanisms** - Allows reverting to previous states
6. **Auto-recovery procedures** - Handles common failure scenarios
7. **Health monitoring** - Continuous system health assessment
## Components
### ValidationSystem
The `ValidationSystem` orchestrates all validation checks:
- **PreInitValidator**: Checks permissions, disk space, conflicts, dependencies
- **PostInitValidator**: Verifies file integrity, completeness, structure
- **ConfigValidator**: Validates configuration files and syntax
- **ModeValidator**: Tests SPARC mode functionality
- **HealthChecker**: Monitors system health and resources
### RollbackSystem
The `RollbackSystem` provides comprehensive rollback capabilities:
- **BackupManager**: Creates and manages backups
- **RollbackExecutor**: Executes rollback operations
- **StateTracker**: Tracks initialization state and checkpoints
- **RecoveryManager**: Handles automated recovery procedures
## Usage
### Enhanced Initialization
Use the enhanced initialization for maximum safety:
```bash
# Safest initialization with full validation and rollback
claude-flow init --enhanced --sparc
# Enhanced with specific options
claude-flow init --safe --sparc --force
# Validation only (no initialization)
claude-flow init --validate-only
# Skip specific validations if needed
claude-flow init --enhanced --skip-pre-validation --skip-backup
```
### Validation Commands
Run validation checks independently:
```bash
# Full validation suite
claude-flow init --validate
# Skip specific validation phases
claude-flow init --validate --skip-pre-init --skip-config --skip-mode-test
# Pre-initialization check only
claude-flow init --validate --pre-init-only
```
### Rollback Commands
Rollback previous initialization:
```bash
# Full system rollback
claude-flow init --rollback --full
# Partial rollback for specific phase
claude-flow init --rollback --partial --phase sparc-init
# Interactive rollback (shows available points)
claude-flow init --rollback
# List available backups and checkpoints
claude-flow init --list-backups
```
## Validation Phases
### Phase 1: Pre-initialization Validation
**Purpose**: Ensure system is ready for initialization
**Checks**:
- File system permissions (read/write access)
- Available disk space (minimum 100MB required)
- Existing file conflicts (with --force handling)
- Required dependencies (node, npm, npx, git)
- Environment variables and configuration
**Result**: Block initialization if critical issues found
### Phase 2: Backup Creation
**Purpose**: Create restore point before any changes
**Actions**:
- Backup existing critical files
- Backup directory structures
- Create backup manifest with metadata
- Store backup with timestamp and ID
**Result**: Rollback point available for recovery
### Phase 3: Atomic Initialization
**Purpose**: Perform initialization with checkpoint tracking
**Process**:
1. Begin atomic operation
2. Create checkpoints before each phase
3. Execute initialization steps
4. Track all file/directory operations
5. Commit or rollback based on success
**Phases**:
- File creation (CLAUDE.md, memory-bank.md, coordination.md)
- Directory structure creation
- Memory system setup
- Coordination system setup
- Executable creation
- SPARC initialization (if enabled)
- Claude command creation
### Phase 4: Post-initialization Validation
**Purpose**: Verify initialization completed successfully
**Checks**:
- File integrity (existence, size, readability)
- Completeness (all required files and directories)
- Structure validation (correct organization)
- Permission verification (executable files)
**Result**: Automatic rollback if validation fails
### Phase 5: Configuration Validation
**Purpose**: Validate configuration files and syntax
**Checks**:
- .roomodes JSON syntax and structure
- CLAUDE.md content and sections
- Memory configuration validity
- Coordination configuration completeness
**Result**: Warnings for configuration issues
### Phase 6: Health Checks
**Purpose**: Assess overall system health
**Checks**:
- SPARC mode availability
- Template integrity
- Configuration consistency
- System resource adequacy
**Result**: Health report with recommendations
## Rollback Mechanisms
### Full Rollback
Completely reverts system to pre-initialization state:
1. Remove all initialization artifacts
2. Restore files from backup
3. Verify rollback completion
4. Update state tracking
### Partial Rollback
Reverts specific components or phases:
- **sparc-init**: Remove SPARC-specific files and configurations
- **claude-commands**: Remove Claude Code slash commands
- **memory-setup**: Reset memory system
- **coordination-setup**: Remove coordination files
- **executable-creation**: Remove local executable
### Atomic Rollback
Automatic rollback during failed initialization:
1. Track all operations in atomic operation
2. Reverse operations in case of failure
3. Restore system to checkpoint state
4. Clean up partial changes
## Auto-Recovery
The system includes automated recovery for common failures:
### Permission Denied
- Attempt to fix directory permissions
- Verify write access restoration
- Provide manual resolution steps
### Disk Space Issues
- Clean temporary files
- Remove old backups
- Check available space after cleanup
### Missing Dependencies
- Attempt dependency installation/configuration
- Verify dependency availability
- Provide installation guidance
### Corrupted Configuration
- Regenerate configuration files
- Restore from backup if available
- Create minimal working configuration
### Partial Initialization
- Identify completed vs missing components
- Complete missing initialization steps
- Verify final system state
### SPARC Failures
- Recover .roomodes configuration
- Restore .roo directory structure
- Recreate SPARC commands
## State Tracking
The system maintains detailed state information:
### Rollback Points
- Backup ID and location
- Timestamp and type
- System state snapshot
### Checkpoints
- Phase name and timestamp
- Operation details
- Status tracking
### File Operations
- Operation type (create/modify/delete)
- File paths and metadata
- Reversible operation data
### Phase History
- Initialization progress
- Phase transitions
- Timing information
## Error Handling
### Validation Failures
- Clear error messages with context
- Suggested resolution steps
- Prevention of unsafe operations
### Initialization Failures
- Automatic rollback triggers
- Error categorization
- Recovery procedure selection
### Rollback Failures
- Emergency procedures
- Manual recovery steps
- System state analysis
## Best Practices
### For Users
1. **Use Enhanced Mode**: Always use `--enhanced` for production setups
2. **Validate First**: Run `--validate-only` before initialization
3. **Keep Backups**: Don't skip backup creation unless absolutely necessary
4. **Monitor Health**: Regular health checks with `--validate`
5. **Clean Rollbacks**: Use specific rollback phases when possible
### For Developers
1. **Atomic Operations**: Wrap complex operations in atomic blocks
2. **Checkpoint Frequently**: Create checkpoints before major operations
3. **Validate Early**: Check prerequisites before making changes
4. **Handle Errors**: Provide clear error messages and recovery steps
5. **Test Recovery**: Regularly test rollback and recovery procedures
## Testing
The system includes comprehensive test coverage:
```bash
# Run validation and rollback tests
import { runValidationTests } from './validation/test-runner.js';
const results = await runValidationTests('/path/to/project');
```
Test categories:
- Pre-initialization validation
- Post-initialization validation
- Configuration validation
- Mode functionality testing
- Health checks
- Backup system
- Rollback operations
- State tracking
- Recovery procedures
- Atomic operations
## Configuration
### Environment Variables
- `CLAUDE_FLOW_DEBUG`: Enable debug logging
- `CLAUDE_FLOW_BACKUP_DIR`: Custom backup directory
- `CLAUDE_FLOW_STATE_FILE`: Custom state file location
### System Requirements
- **Disk Space**: Minimum 100MB free space
- **Permissions**: Read/write access to project directory
- **Dependencies**: Node.js, npm, npx (git recommended)
- **Memory**: At least 100MB available RAM
### Backup Management
- **Retention**: Keeps last 5 backups by default
- **Cleanup**: Automatic cleanup of old backups
- **Storage**: Backups stored in `.claude-flow-backups/`
- **Compression**: Future enhancement for large projects
## Troubleshooting
### Common Issues
1. **Permission Denied**
```bash
# Fix permissions
chmod -R 755 .
claude-flow init --enhanced --sparc
```
2. **Disk Space Low**
```bash
# Clean and retry
claude-flow init --rollback --full
df -h # Check space
claude-flow init --enhanced --sparc
```
3. **Validation Failures**
```bash
# Check what's failing
claude-flow init --validate
# Fix issues and retry
claude-flow init --enhanced --sparc
```
4. **Partial Initialization**
```bash
# Complete missing components
claude-flow init --enhanced --sparc --force
# Or start fresh
claude-flow init --rollback --full
```
### Emergency Recovery
If all automated recovery fails:
1. **Manual Backup Restore**
```bash
# Find backup
ls .claude-flow-backups/
# Manual restore from backup directory
```
2. **Clean State Reset**
```bash
# Remove all artifacts manually
rm -rf .claude .roo CLAUDE.md memory-bank.md coordination.md
rm -rf memory/ coordination/ claude-flow
```
3. **Fresh Installation**
```bash
# Start completely fresh
npx claude-flow@latest init --sparc --force
```
## Future Enhancements
Planned improvements to the validation and rollback systems:
1. **Interactive Recovery**: GUI-based recovery interface
2. **Remote Backups**: Cloud backup storage options
3. **Incremental Backups**: Space-efficient backup strategy
4. **Parallel Validation**: Faster validation through parallelization
5. **Smart Recovery**: AI-assisted failure diagnosis and recovery
6. **Integration Testing**: Automated end-to-end testing
7. **Performance Monitoring**: Real-time performance metrics
8. **Custom Validators**: User-defined validation rules
## API Reference
### ValidationSystem
```javascript
const validator = new ValidationSystem(workingDir);
// Run validation phases
await validator.validatePreInit(options);
await validator.validatePostInit();
await validator.validateConfiguration();
await validator.testModeFunctionality();
await validator.runHealthChecks();
// Generate reports
const report = validator.generateReport(results);
```
### RollbackSystem
```javascript
const rollback = new RollbackSystem(workingDir);
// Create backups and rollback points
await rollback.createPreInitBackup();
await rollback.createCheckpoint(phase, data);
// Perform rollbacks
await rollback.performFullRollback(backupId);
await rollback.performPartialRollback(phase);
// Auto-recovery
await rollback.performAutoRecovery(failureType, context);
```
### AtomicOperation
```javascript
const atomicOp = createAtomicOperation(rollbackSystem, 'operation-name');
await atomicOp.begin();
try {
// Perform operations
await atomicOp.commit();
} catch (error) {
await atomicOp.rollback();
}
```
This validation and rollback system ensures that SPARC initialization is safe, reliable, and recoverable, providing confidence for users and maintaining system integrity even in failure scenarios.