MnemoCore / REFACTORING_TODO.md
Granis87's picture
Upload folder using huggingface_hub
c3a3710 verified
# Refactoring TODO
Status för kodoptimering inför kommande funktionalitet.
---
## Hög Prioritet
### 1. Konsolidera HDV-implementation
**Status:** ✅ Completed (2026-02-18)
**Problem:**
- Dubbel implementation: `src/core/hdv.py` (float) + `src/core/binary_hdv.py` (binary)
- Skapar branch-logik genom hela koden
- Float HDV är legacy och bör depreceras
**Åtgärder genomförda:**
- `src/core/hdv.py` - Markerad som DEPRECATED med varning
- `src/core/__init__.py` - Exporterar nu BinaryHDV först
- `src/core/node.py` - Använder endast BinaryHDV
- `src/core/holographic.py` - Konverterad till BinaryHDV med XOR-binding
- `src/core/router.py` - Tog bort HDV-branching
- `src/core/engine.py` - Tog bort Union-typer och branching
- `src/core/tier_manager.py` - Standardiserade på BinaryHDV
---
### 2. Ofullständiga features
**Status:** ✅ Verified / Resolved
**Problem:**
- Flera TODOs i produktionskod som lämnats oimplementerade
**Filer:**
- `src/llm_integration.py`
**TODOs:**
```
Line 56: # TODO: Call Gemini 3 Pro via OpenClaw API
Line 106: # TODO: superposition_query() not implemented in HAIMEngine
Line 131: # TODO: Call Gemini 3 Pro
Line 301: # TODO: Implement concept-to-memory-ID mapping
Line 320: # TODO: orchestrate_orch_or() not implemented
```
**Åtgärd:**
- `superposition_query`: Implemented as `_superposition_query` in `HAIMLLMIntegrator`.
- `orchestrate_orch_or`: Implemented in `HAIMEngine`.
- LLM Calls: Code now supports generic providers (OpenAI, Gemini via `google.generativeai`, etc) with safe fallbacks (`_mock_llm_response`) if not configured.
- `_concept_to_memory_id`: Implemented in `MultiAgentHAIM`.
---
### 3. Standardisera felhantering
**Status:** Pending
**Problem:**
- Vissa funktioner returnerar `None` vid fel
- Andra kastar exceptions
- Svårt att förutse felbeteende
**Åtgärd:**
- Definiera domän-specifika exceptions:
- `MemoryNotFoundError`
- `StorageError`
- `EncodingError`
- `ConsolidationError`
- Skapa `src/core/exceptions.py`
- Uppdatera alla moduler att använda konsistent felhantering
---
## Medelprioritet
### 4. Minska Singleton-användning
**Status:** 📋 Roadmap
**Problem:**
- `AsyncRedisStorage.get_instance()`
- `QdrantStore.get_instance()`
- Försvårar testning
**Åtgärd:**
- Inför Dependency Injection
- Passa beroenden via konstruktor
**Komplexitet:** Hög - Kräver genomgripande ändringar av instansiering
---
### 5. Bryt isär stora funktioner
**Status:** 📋 Roadmap
**Problem:**
- `engine.py:store()` - 76 rader
- `tier_manager.py:consolidate_warm_to_cold()` - 48 rader
**Åtgärd:**
- Extrahera till mindre, testbara enheter
**Komplexitet:** Hög - Refaktorering av kärnlogik
---
### 6. Konsolidera Circuit Breakers
**Status:** ✅ Completed (2026-02-18)
**Problem:**
- `src/core/resilience.py` - pybreaker implementation
- `src/core/reliability.py` - Native implementation
- Dubbel implementation
**Åtgärder genomförda:**
- `src/core/reliability.py` - Nu primär modul med pre-konfigurerade instanser
- `src/core/resilience.py` - Markerad som DEPRECATED
- `src/core/qdrant_store.py` - Uppdaterad till reliability
- `src/api/main.py` - Uppdaterad till reliability, tog bort pybreaker-beroende
---
### 7. Centralisera hårkodade sökvägar
**Status:** ✅ Completed (2026-02-18)
**Problem:**
- `"./data"` fanns hårdkodat på flera ställen
**Åtgärder genomförda:**
- `src/core/holographic.py` - Använder nu `config.paths.data_dir` som default
- Alla sökvägar centraliserade i `config.yaml` och `HAIMConfig`
---
### 8. Standardisera import-stil
**Status:** ✅ Verified (2026-02-18)
**Problem:**
- Blandning av relativa och absoluta imports
- Till och med inom samma fil
**Analys:**
- `src/core/` använder konsekvent relativa imports (`.module`)
- Övriga moduler använder absoluta imports (`src.core.module`)
- Inga filer har blandad stil
**Slutsats:**
Import-stilen följer redan rekommenderad Python-praxis. Ingen åtgärd behövs.
---
## Låg prioritet
### 9. Rensa debug-filer
- Ta bort eller flytta `debug_*.py`
- Konsolidera test-helpers
### 10. Standardisera logging
- Välj ett framework (loguru rekommenderas)
- Ta bort ad-hoc print-statements
### 11. Förbättra typsäkerhet
- Lägg till mypy i CI
- Komplettera type hints
- Använd `TypedDict` för komplexa dict-returns
---
## Förbättra testtäckning
```bash
pytest --cov=mnemocore --cov-report=html
```
Kör för att identifiera luckor i testtäckningen.
---
## Fil-prioriteringslista
| Prioritet | Fil | Anledning |
|-----------|-----|-----------|
| 1 | `src/core/engine.py` | Kärnlogik, HDV dual-mode |
| 2 | `src/core/tier_manager.py` | Stora funktioner, lagringskomplexitet |
| 3 | `src/llm_integration.py` | Flera oimplementerade TODOs |
| 4 | `src/core/resilience.py` | Duplikat circuit breaker |
| 5 | `src/core/binary_hdv.py` | Överväg extrahering till separat paket |
---
## Framsteg
- [x] Punkt 1: HDV-konsolidering ✅
- [x] Punkt 2: Ofullständiga features ✅
- [ ] Punkt 3: Felhantering
- [ ] Punkt 4: Singleton-reduktion 📋 Roadmap
- [ ] Punkt 5: Stora funktioner 📋 Roadmap
- [x] Punkt 6: Circuit breakers ✅
- [x] Punkt 7: Hårkodade sökvägar ✅
- [x] Punkt 8: Import-stil ✅ (redan konsekvent)
- [x] Test-suite import fixad (src. -> mnemocore.) ✅
---
## Roadmap (Framtida refaktorering)
Dessa punkter kräver mer omfattande ändringar och bör planeras in senare:
| Punkt | Beskrivning | Komplexitet |
|-------|-------------|-------------|
| 4 | Minska Singleton-användning, inför DI | Hög |
| 5 | Bryt isär stora funktioner i engine/tier_manager | Hög |