fix: resolve critical v5.0.0 metadata race condition

CRITICAL BUG FIX: TypeAwareStorage metadata race condition

Problem:
- saveNoun() called before saveNounMetadata()
- TypeAwareStorage couldn't determine entity type (not cached yet)
- Defaulted to 'thing' and saved to wrong storage path
- Later saveNounMetadata() saved to correct path
- Noun and metadata in different locations = entity not found

Impact:
- Broke VFS file operations completely
- Broke brain.get(), brain.relate(), brain.find()
- All metadata-dependent features failed
- Workshop team completely blocked

Solution:
- Reversed save order: saveNounMetadata() FIRST, then saveNoun()
- Type now cached before saveNoun() needs it
- Both saved to correct type-aware paths

Additional Fixes:
- Make baseStorage.initializeCOW() public (was protected)
- Remove enableCOW config option (cleanup)
- COW auto-init temporarily disabled (deadlock issue)

Known Limitations (v5.0.1):
- Fork API exists but COW requires manual init
- Will be zero-config in v5.1.0

Fixes: Workshop Bug Report (VFS metadata missing)
This commit is contained in:
David Snelling 2025-11-02 07:45:29 -08:00
parent f3e98a8bde
commit 12d8ea7efc
5 changed files with 64 additions and 16 deletions

View file

@ -572,7 +572,6 @@ export interface BrainyConfig {
type: 'auto' | 'memory' | 'filesystem' | 's3' | 'r2' | 'opfs' | 'gcs'
options?: any
branch?: string // COW branch name (default: 'main')
enableCOW?: boolean // Enable Copy-on-Write support (default: false for v5.0.0)
}
// Model configuration