mirror of
https://github.com/proffesor-for-testing/agentic-qe.git
synced 2026-09-19 08:45:47 +08:00
b3d2018ee2
Critical bug fixes and code quality improvements from brutal-honest-review. ## Critical Fixes (9/10 completed, 1 deferred) 1. Fixed Agent Pattern Isolation (CRITICAL) - Added SwarmMemoryManager.queryPatternsByAgent() - SQL filtering by agent_id in metadata - Each agent now isolated 2. Fixed Async Method Cascade - Changed getPatterns() to async - Fixed 10 callers across 6 files - Build passes 3. Fixed Misleading Logging - Added isRealAgentDB() detection - Honest mock vs real reporting 4. Consolidated Embedding Generation - Created EmbeddingGenerator utility - Removed 50+ duplicate lines 5. Added AgentDB Initialization Checks - Empty DB detection - HNSW index verification 6. Integration Test Suite - 26 new test cases - Error path coverage 7. Repository Cleanup - Removed 19 temp test files 8. New QE Skill: sherlock-review - Evidence-based investigative review - 38 QE skills total 9. Deferred: Wire Up Real Test Execution - Deferred to v1.9.0 (documented) ## Statistics - Fixes: 9/10 (90%, 1 deferred) - Files Modified: 16 - Files Created: 3 - Files Deleted: 19 - Integration Tests: 26 - Build: PASSING ## Breaking Changes - getPatterns() now async - add await 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
297 lines
5.7 KiB
Markdown
297 lines
5.7 KiB
Markdown
# Backup System Quick Start
|
|
|
|
## 5-Minute Quick Start
|
|
|
|
### Create Your First Backup
|
|
|
|
```bash
|
|
# Create a verified backup of all databases
|
|
./scripts/backup-databases.sh --verify
|
|
|
|
# Create compressed backup (recommended for storage)
|
|
./scripts/backup-databases.sh --compress --verify
|
|
```
|
|
|
|
### List Available Backups
|
|
|
|
```bash
|
|
./scripts/manage-backups.sh list
|
|
```
|
|
|
|
Output:
|
|
```
|
|
📦 Available Backups
|
|
===================
|
|
|
|
[1] 20250116-120000
|
|
Date: 2025-01-16T12:00:00Z
|
|
Files: 4 | Size: 21M
|
|
Branch: main (4a58796)
|
|
Compressed: 8.5M
|
|
|
|
[2] 20250115-140000
|
|
Date: 2025-01-15T14:00:00Z
|
|
Files: 4 | Size: 20M
|
|
Branch: main (25cb212)
|
|
```
|
|
|
|
### Restore from Backup
|
|
|
|
```bash
|
|
# List backups and select timestamp
|
|
./scripts/restore-databases.sh
|
|
|
|
# Restore specific backup
|
|
./scripts/restore-databases.sh 20250116-120000
|
|
|
|
# Force restore without confirmation (automation)
|
|
./scripts/restore-databases.sh 20250116-120000 --force
|
|
```
|
|
|
|
## Common Operations
|
|
|
|
### Before Migration
|
|
|
|
```bash
|
|
# Create safety backup before risky operation
|
|
./scripts/backup-databases.sh --compress --verify
|
|
```
|
|
|
|
### After Failed Operation
|
|
|
|
```bash
|
|
# List recent backups
|
|
./scripts/manage-backups.sh list
|
|
|
|
# Restore to previous state
|
|
./scripts/restore-databases.sh <timestamp> --force
|
|
```
|
|
|
|
### Verify Backup Health
|
|
|
|
```bash
|
|
# Verify specific backup
|
|
./scripts/manage-backups.sh verify 20250116-120000
|
|
|
|
# Verify all backups
|
|
./scripts/manage-backups.sh verify
|
|
|
|
# Compare backup with current state
|
|
./scripts/manage-backups.sh compare 20250116-120000
|
|
```
|
|
|
|
### Manage Storage
|
|
|
|
```bash
|
|
# Check storage usage
|
|
./scripts/manage-backups.sh size
|
|
|
|
# Clean old backups (keep last 10)
|
|
./scripts/manage-backups.sh clean 10
|
|
|
|
# Get backup details
|
|
./scripts/manage-backups.sh info 20250116-120000
|
|
```
|
|
|
|
## Integration with Code
|
|
|
|
### TypeScript/Node.js
|
|
|
|
```typescript
|
|
import { backupHelper } from './src/scripts/backup-helper';
|
|
|
|
// Create backup
|
|
const backup = await backupHelper.createBackup({
|
|
compress: true,
|
|
verify: true
|
|
});
|
|
|
|
console.log(`Backup created: ${backup.timestamp}`);
|
|
|
|
// Restore backup
|
|
await backupHelper.restoreBackup(backup.timestamp, {
|
|
verify: true,
|
|
force: true
|
|
});
|
|
|
|
// List backups
|
|
const backups = await backupHelper.listBackups();
|
|
console.log(`Found ${backups.length} backups`);
|
|
```
|
|
|
|
### Migration Example
|
|
|
|
```typescript
|
|
import { backupHelper } from './src/scripts/backup-helper';
|
|
|
|
async function safeMigration() {
|
|
// Create safety backup
|
|
const backup = await backupHelper.createSafetyBackup('my-migration');
|
|
|
|
try {
|
|
// Perform migration
|
|
await performMigration();
|
|
} catch (error) {
|
|
// Restore on failure
|
|
await backupHelper.restoreBackup(backup.timestamp, {
|
|
force: true
|
|
});
|
|
throw error;
|
|
}
|
|
}
|
|
```
|
|
|
|
## Automation
|
|
|
|
### Daily Backups (GitHub Actions)
|
|
|
|
The workflow is already configured in `.github/workflows/backup-databases.yml`
|
|
|
|
Runs daily at 2 AM UTC automatically.
|
|
|
|
### Manual Trigger
|
|
|
|
```bash
|
|
# Via GitHub UI
|
|
Actions > Daily Database Backup > Run workflow
|
|
|
|
# Via gh CLI
|
|
gh workflow run backup-databases.yml
|
|
```
|
|
|
|
### Cron Job (Linux/Mac)
|
|
|
|
```bash
|
|
# Edit crontab
|
|
crontab -e
|
|
|
|
# Add daily backup at 2 AM
|
|
0 2 * * * cd /path/to/project && ./scripts/backup-databases.sh --compress --verify
|
|
```
|
|
|
|
## Testing
|
|
|
|
### Run Full Test Suite
|
|
|
|
```bash
|
|
# Run backup system tests
|
|
./scripts/test-backup-system.sh
|
|
```
|
|
|
|
### Integration Tests
|
|
|
|
```bash
|
|
# Run Jest integration tests
|
|
npm run test:integration -- backup-restore.test.ts
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Backup Failed
|
|
|
|
```bash
|
|
# Check disk space
|
|
df -h
|
|
|
|
# Check permissions
|
|
ls -la .agentic-qe/backups
|
|
|
|
# Verify script is executable
|
|
chmod +x ./scripts/backup-databases.sh
|
|
```
|
|
|
|
### Restore Failed
|
|
|
|
```bash
|
|
# Verify backup exists
|
|
./scripts/manage-backups.sh list
|
|
|
|
# Check backup integrity
|
|
./scripts/manage-backups.sh verify <timestamp>
|
|
|
|
# Try force restore
|
|
./scripts/restore-databases.sh <timestamp> --force
|
|
```
|
|
|
|
### Out of Storage
|
|
|
|
```bash
|
|
# Check current usage
|
|
./scripts/manage-backups.sh size
|
|
|
|
# Clean old backups (keep last 5)
|
|
./scripts/manage-backups.sh clean 5
|
|
|
|
# Remove compressed archives
|
|
rm .agentic-qe/backups/*.tar.gz
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
### ✅ DO
|
|
|
|
- Create backup before every migration
|
|
- Verify backups regularly
|
|
- Test restore procedures
|
|
- Use compression for long-term storage
|
|
- Keep multiple backup generations
|
|
- Monitor storage usage
|
|
|
|
### ❌ DON'T
|
|
|
|
- Skip backup verification
|
|
- Delete backups without checking
|
|
- Run migrations without backup
|
|
- Ignore backup failures
|
|
- Store backups only locally
|
|
- Exceed storage quotas
|
|
|
|
## Emergency Recovery
|
|
|
|
### Complete Data Loss
|
|
|
|
```bash
|
|
# 1. Check for backups
|
|
./scripts/manage-backups.sh list
|
|
|
|
# 2. Identify most recent good backup
|
|
./scripts/manage-backups.sh verify <timestamp>
|
|
|
|
# 3. Restore
|
|
./scripts/restore-databases.sh <timestamp> --force
|
|
|
|
# 4. Verify restoration
|
|
sqlite3 agentdb.db "SELECT COUNT(*) FROM episodes"
|
|
```
|
|
|
|
### Corrupted Backup
|
|
|
|
```bash
|
|
# 1. Verify corruption
|
|
./scripts/manage-backups.sh verify <timestamp>
|
|
|
|
# 2. Try previous backup
|
|
./scripts/manage-backups.sh list
|
|
./scripts/restore-databases.sh <previous-timestamp> --force
|
|
```
|
|
|
|
## Support
|
|
|
|
- Full Documentation: [docs/database/backup-strategy.md](./backup-strategy.md)
|
|
- GitHub Issues: [agentic-qe-cf/issues](https://github.com/ruvnet/agentic-qe-cf/issues)
|
|
- Test Scripts: `./scripts/test-backup-system.sh`
|
|
|
|
## Quick Reference
|
|
|
|
| Command | Purpose |
|
|
|---------|---------|
|
|
| `./scripts/backup-databases.sh` | Create backup |
|
|
| `./scripts/restore-databases.sh <ts>` | Restore backup |
|
|
| `./scripts/manage-backups.sh list` | List backups |
|
|
| `./scripts/manage-backups.sh verify <ts>` | Verify integrity |
|
|
| `./scripts/manage-backups.sh clean N` | Keep last N |
|
|
| `./scripts/manage-backups.sh size` | Show storage |
|
|
| `./scripts/test-backup-system.sh` | Run tests |
|
|
|
|
**Remember**: Always verify backups before relying on them!
|