fix: critical clear() data persistence regression (v5.10.4)
Workshop team reported that brain.clear() doesn't fully delete persistent storage. After calling clear() and creating a new Brainy instance, all data was restored from storage. This is a CRITICAL data integrity bug. Root causes (3 bugs fixed): 1. **FileSystemStorage deleting wrong directory**: Data stored in branches/main/entities/ but clear() was only deleting old pre-v5.4.0 structure (nouns/, verbs/, metadata/) 2. **COW reinitialization after clear()**: Setting cowEnabled=false on old instance doesn't affect new instances. Fixed with persistent marker file. 3. **Metadata index cache not cleared**: find() with type filters returned stale data after clear(). Fixed by recreating MetadataIndexManager. Changes: - FileSystemStorage: Clear branches/ directory (where data actually lives) - All storage adapters: Add checkClearMarker()/createClearMarker() methods - BaseStorage: Check for cow-disabled marker before initializing COW - Brainy: Recreate metadataIndex after clear() to flush cached data - Tests: Comprehensive regression suite (8 tests) to prevent recurrence Fixes Workshop bug report: /media/dpsifr/storage/home/Projects/workshop/BRAINY_V5_10_2_CLEAR_BUG.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
53420f6c9a
commit
aba15638dc
11 changed files with 613 additions and 17 deletions
|
|
@ -2196,7 +2196,7 @@ export class Brainy<T = any> implements BrainyInterface<T> {
|
|||
return this.augmentationRegistry.execute('clear', {}, async () => {
|
||||
// Clear storage
|
||||
await this.storage.clear()
|
||||
|
||||
|
||||
// Reset index
|
||||
if ('clear' in this.index && typeof this.index.clear === 'function') {
|
||||
await this.index.clear()
|
||||
|
|
@ -2204,10 +2204,15 @@ export class Brainy<T = any> implements BrainyInterface<T> {
|
|||
// Recreate index if no clear method
|
||||
this.index = this.setupIndex()
|
||||
}
|
||||
|
||||
|
||||
// v5.10.4: Recreate metadata index to clear cached data
|
||||
// Bug: Metadata index cache was not being cleared, causing find() with type filters to return stale data
|
||||
this.metadataIndex = new MetadataIndexManager(this.storage)
|
||||
await this.metadataIndex.init()
|
||||
|
||||
// Reset dimensions
|
||||
this.dimensions = undefined
|
||||
|
||||
|
||||
// Clear any cached sub-APIs
|
||||
this._neural = undefined
|
||||
this._nlp = undefined
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue