# Upgrades & Versions-Pins

## Warum Pins
Der Mem0-Sidecar nutzt mem0-**Interna** (NoThink-LLM-Swap, Roh-Zugriff auf die Chroma-Collection
für den Graphen, Annahmen übers Result-Format). Ein unkontrolliertes mem0/chromadb-Upgrade kann das
**still brechen**. Darum sind die Versionen in `mem0_service/requirements.txt` gepinnt — Upgrades
passieren nur absichtlich.

## Isolation (warum ein Upgrade nicht alles mitreißt)
- mem0 lebt in `~/.mem0/venv` (Python 3.12) — getrennt vom MC2-Backend (3.14).
- Die stabile Grenze nach außen ist **`/api/memory`**. UI, MCP (IDEs) und der Hermes-Provider
  reden NUR damit, nie direkt mit mem0. Ein mem0-Upgrade betrifft also **nur den Sidecar**.

## mem0 / chromadb sicher upgraden
```bash
cd ~/mission-control-v2
bash deploy/backup.sh                                   # 1. Backup
# 2. Pin anheben in mem0_service/requirements.txt (z.B. mem0ai==X.Y.Z)
uv pip install --python ~/.mem0/venv/bin/python -r mem0_service/requirements.txt   # 3. installieren
~/.mem0/venv/bin/python mem0_service/smoke_test.py      # 4. Smoke-Test (Wegwerf-Collection)
```
- **Grün** → `systemctl --user restart mem0-service`, fertig.
- **Rot** → entweder den Sidecar (`mem0_service/app.py`) an die neue mem0-API anpassen, oder Pin
  zurücksetzen und alten Stand per `deploy/restore.sh latest` wiederherstellen.

## Weitere Upgrade-Fallen
- **Embed-Modell wechseln** = andere Vektor-Dimension → Chroma muss **neu indiziert** werden
  (alle Fakten neu einbetten). Aktuell: Qwen3-Embedding-0.6B / 1024 Dim.
- **reagraph** ist auf **4.22.0** gepinnt — 4.23+ braucht `@react-three/fiber` v9 = React 19,
  das Projekt ist React 18 (Crash „reading 'S'" sonst).
- **Nach Hermes-Upgrades**: prüfen, dass `~/.hermes/plugins/mc2-memory` noch lädt und `sync_turn`
  feuert — die `MemoryProvider`-ABC könnte sich ändern (ein Turn über den Gateway, dann
  `curl /api/memory` checken).
- **OS/Engine-Updates** (apt, llama.cpp) laufen separat über die UI (Wartungs-Drawer) und sind
  von mem0 entkoppelt.
