v2/bin/init/VALIDATION_ROLLBACK.md
This document describes the comprehensive validation and rollback mechanisms implemented for SPARC initialization to ensure safe and reliable setup.
The validation and rollback systems provide multiple layers of safety and reliability:
The ValidationSystem orchestrates all validation checks:
The RollbackSystem provides comprehensive rollback capabilities:
Use the enhanced initialization for maximum safety:
# 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
Run validation checks independently:
# 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 previous initialization:
# 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
Purpose: Ensure system is ready for initialization
Checks:
Result: Block initialization if critical issues found
Purpose: Create restore point before any changes
Actions:
Result: Rollback point available for recovery
Purpose: Perform initialization with checkpoint tracking
Process:
Phases:
Purpose: Verify initialization completed successfully
Checks:
Result: Automatic rollback if validation fails
Purpose: Validate configuration files and syntax
Checks:
Result: Warnings for configuration issues
Purpose: Assess overall system health
Checks:
Result: Health report with recommendations
Completely reverts system to pre-initialization state:
Reverts specific components or phases:
Automatic rollback during failed initialization:
The system includes automated recovery for common failures:
The system maintains detailed state information:
--enhanced for production setups--validate-only before initialization--validateThe system includes comprehensive test coverage:
# Run validation and rollback tests
import { runValidationTests } from './validation/test-runner.js';
const results = await runValidationTests('/path/to/project');
Test categories:
CLAUDE_FLOW_DEBUG: Enable debug loggingCLAUDE_FLOW_BACKUP_DIR: Custom backup directoryCLAUDE_FLOW_STATE_FILE: Custom state file location.claude-flow-backups/Permission Denied
# Fix permissions
chmod -R 755 .
claude-flow init --enhanced --sparc
Disk Space Low
# Clean and retry
claude-flow init --rollback --full
df -h # Check space
claude-flow init --enhanced --sparc
Validation Failures
# Check what's failing
claude-flow init --validate
# Fix issues and retry
claude-flow init --enhanced --sparc
Partial Initialization
# Complete missing components
claude-flow init --enhanced --sparc --force
# Or start fresh
claude-flow init --rollback --full
If all automated recovery fails:
Manual Backup Restore
# Find backup
ls .claude-flow-backups/
# Manual restore from backup directory
Clean State Reset
# Remove all artifacts manually
rm -rf .claude .roo CLAUDE.md memory-bank.md coordination.md
rm -rf memory/ coordination/ claude-flow
Fresh Installation
# Start completely fresh
npx claude-flow@latest init --sparc --force
Planned improvements to the validation and rollback systems:
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);
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);
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.