OSVauco/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md
chris 773482cfa3
Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
chore: update docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md via opax-mcp
2026-07-21 20:23:43 +00:00

170 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# HANDOFF-LOKAL-LLM-GITEA-MCP.md
# EGEN HANDOFF UFRAVIKELIG STYRINGSDOKUMENT
# GJELDER FRA NÅ OG FREM TIL 100 % FERDIGSTILLELSE
## 0. STATUS OG KOMMANDO
Denne handoffen er det eneste autoritative arbeidsdokumentet for sporet "lokal LLM-fabrikk + OPAX-MCP + Gitea stabilisering + blueprinting til Gitea-VM".
---
## FREMDRIFT OPPDATERT 2026-07-21 22:22 CEST
### ✅ FASE 0 Lås situasjonen — FERDIG
- Handoff opprettet som eget dokument
- dev-snap/GPU-VM er aktiv verifikasjonsbase
- Gitea er eneste source of truth
- Lokal LLM-bane er primær retning
### ✅ FASE 1 Lokale modeller lever — FERDIG
- Ollama kjører på Gitea-CPU-VM (34.67.252.59:11434)
- Modeller tilgjengelig via MCP: `gemma3:4b`, `qwen2.5:3b`
- Modeller på dev-snap localhost: `qwen2.5:7b`, `gemma3:4b`, `llama3.2`, `nomic-embed-text`
- `list_emma_models` via MCP: GRØNN ✅
### ✅ FASE 2 MCP peker korrekt til lokal modellsti — FERDIG
- `OLLAMA_BASE_URL` peker til Gitea-CPU-VM Ollama
- `OSVAUCO_AGENT_URL` fikset til kanonisk URL (commit a171a58)
- Rotårsak: Cloud Run krever regional URL som audience for identity tokens
- Feil: `zjbqp3prqq-uc.a.run.app` → Riktig: `osvauco-agent-357036551735.us-central1.run.app`
- 5 filer oppdatert av Gemini-agent, build SUCCESS 55182237 (21. juli 18:38)
- opax-mcp revisjon: opax-mcp-00122-m4n
### ✅ FASE 3 Gitea read-only grønn — FERDIG
- Rotårsak: `GITEA_URL` var ikke satt i opax-mcp Cloud Run service
- Gitea kjører på: `http://34.67.252.59:3000` (Gitea-CPU-VM)
- Fix: `gcloud run services update opax-mcp --update-env-vars GITEA_URL=http://34.67.252.59:3000`
- opax-mcp revisjon etter fix: opax-mcp-00123-g7d
- Alle 4 read-only tools GRØNNE:
-`list_commits`
-`get_file`
-`get_file_content`
-`list_repo_files`
- `get_connector_status`: `gitea_status: online`
### ✅ FASE 4 Hel kjede samtidig grønn — FERDIG 2026-07-21 20:57 CEST
Full smoke test kjørt og alle tools grønne samtidig:
| Tool | Status | Resultat |
|---|---|---|
| `get_connector_status` | ✅ | live, gitea online, 37 tools |
| `get_health` | ✅ | OK |
| `get_build_status` | ✅ | Siste build SUCCESS 55182237 |
| `describe_service` | ✅ | osvauco-agent-00695-8lk Ready |
| `list_workspace_users` | ✅ | 3 brukere returnert |
| `list_emma_models` | ✅ | gemma3:4b, qwen2.5:3b |
| `list_commits` | ✅ | Siste commits returnert |
| `list_repo_files` | ✅ | Rotmappe listert |
Ingen regresjon på tidligere grønne tools. Hele kjeden er verifisert i samme runde.
### ✅ FASE 5 Frys blueprint på dev-snap — FERDIG
- Blueprint dokumentert i `docs/BLUEPRINT-DEV-SNAP.md`
- Full env-var, modell- og serviceoversikt frosset
- Avklart at nåværende `OLLAMA_BASE_URL` og `GITEA_URL` i praksis har pekt mot dev-snap i aktiv verifikasjonsperiode
- Gitea-CPU-VM står fast som permanent målmaskin
### ⏳ FASE 6 CPU-optimalisering før permanent migrering — PÅGÅR
Formål: Verifisere at Emma-arkitekturen fungerer akseptabelt på Gitea-CPU-VM før permanent cutover fra dev-snap.
Bakgrunn:
Research og testprotokoll viser at problemet ikke bare er VM-spesifikasjoner, men Emma-loopen selv. Emma MCoT gjør typisk 46 sekvensielle LLM-kall per brukerturn (embed → think → choose_action → execute_action, evt. compress). På gitea-cpu-vm er kaldstart målt til ca. 4879 sekunder per modell, noe som gjør resident modellstrategi og keep_alive kritisk.
Bekreftede regler:
- `OLLAMA_KEEP_ALIVE=-1` er obligatorisk baseline
- resident modellstrategi må avklares eksplisitt (1 varm modell vs 2 varme modeller)
- `qwen2.5:7b` er ikke baseline-kandidat på gitea-cpu-vm
- CPU-optimalisering utføres direkte på gitea-cpu-vm (ikke dev-snap, da `num_gpu 0` ignoreres av Ollama der)
- alle resultater føres tilbake i OPPDATERINGSLOGG samme dag
Testrekkefølge:
1. ✅ Kaldstart / keep_alive baseline — FERDIG 2026-07-21
2. ⏳ Resident modell-strategi (1 vs 2 modeller)
3. ⏳ Parameter-matrise (`num_ctx`, `num_batch`, `OLLAMA_NUM_THREADS`)
4. ⏳ Full Emma MCoT end-to-end
5. ⏳ Belastningstest med samtidig Gitea + agent-last
Exit-kriterium:
- ✅ keep_alive-strategi bevist effektiv
- ⏳ resident modellvalg låst
- ⏳ optimal parameterkombinasjon dokumentert
- ⏳ full Emma-loop latency akseptert
- ⏳ 2-timers belastningstest bestått uten OOM og uten swap
---
## FASE 6.1 KALDSTART / KEEP_ALIVE BASELINE — RESULTATER 2026-07-21
Kjørt på: **gitea-cpu-vm** (34.67.252.59) — ekte CPU, ingen GPU
Merk: dev-snap ignorerer `num_gpu 0` i options-feltet — GPU brukes uansett der. Alle tester kjørt direkte på gitea-cpu-vm.
### Kaldstart-målinger
| Test | Modell | load_s | eval_s | tok/s | Processor | Status |
|---|---|---|---|---|---|---|
| 1.1 Ekte kaldstart | gemma3:4b | **117.69s** | 1.02s | 4.9 | 100% CPU | ✅ PASS |
| 1.2 Ekte kaldstart | qwen2.5:3b | **71.13s** | 1.73s | 6.4 | 100% CPU | ✅ PASS |
| 1.3 keep_alive=-1 load | gemma3:4b | 76.93s (kald→varm) | — | 5.9 | 100% CPU | ✅ PASS |
### keep_alive=-1 verifikasjon
| Test | Resultat | Status |
|---|---|---|
| 1.4 UNTIL=Forever | gemma3:4b: **Forever** ✅ / qwen2.5:3b: ~2 min ⚠️ (ikke satt keep_alive=-1) | ✅ PASS |
| 1.5 Varme kall ×5 | load_s: 0.9841.048s (ikke 0, men ikke 117s) | ✅ PASS |
### RAM-tilstand etter Fase 1
```
total used free shared buff/cache available
Mem: 15Gi 6.8Gi 3.8Gi 492Ki 5.3Gi 8.8Gi
Swap: 0B 0B 0B
NAME SIZE PROCESSOR UNTIL
gemma3:4b 2.9 GB 100% CPU Forever
qwen2.5:3b 2.2 GB 100% CPU ~1 min (utløper)
```
**RAM med 2 modeller lastet:** 6.8 GB used / 8.8 GB available — god margin, ingen swap ✅
### Konklusjoner Fase 6.1
1. **Kaldstart-range bekreftet:** gemma3:4b = 117s, qwen2.5:3b = 71s (verre enn antatt 4879s for gemma3)
2. **`OLLAMA_KEEP_ALIVE=-1` er bevist nødvendig og effektiv** — eliminerer 117s kaldstart fra kall 2+
3. **Varme kall koster ~1s load + ~0.9s eval = ~2s per kall** — 46 kall per Emma-turn = 812s ren LLM-tid
4. **keep_alive=-1 må settes eksplisitt per kall per modell** — arves ikke automatisk
5. **`num_gpu 0` i options ignoreres på dev-snap** — fremtidige CPU-tester kjøres direkte på gitea-cpu-vm
6. **RAM-margin er god med 2 modeller:** 5.1 GB (2.9+2.2) i Ollama + 8.8 GB available — ingen OOM-risiko ved normal last
---
## ÅPNE PUNKTER SOM MÅ LØSES FØR BLUEPRINT
- `GITEA_URL` satt runtime via `gcloud run services update`**må også legges permanent inn i `opax-mcp.yaml` i repo og rebuildes**
- `git.vauco.no` er planlagt som permanent domene for Gitea (ref: docs/DNS-OG-INFRASTRUKTUR.md) — erstatter IP når DNS er oppe
- Gitea-commits er ikke GPG-signert — vurder om dette skal fikses
## FASTE SANNHETER (uendret)
- Gitea er source of truth
- Lokale modeller er hovedretning
- dev-snap/GPU-VM er nåværende verifikasjonsflate
- Gitea-VM (34.67.252.59) er planlagt permanent målmaskin
- Denne handoffen overstyrer alt annet
## DEFINITION OF DONE
- ✅ Lokale modeller lever og kan brukes lokalt
- ✅ OPAX-MCP bruker lokal modellbackend korrekt
-`list_emma_models` er grønn
- ✅ Gitea read-only tools er grønne
- ✅ GCP/Workspace-kjernen er fortsatt grønn
- ⚠️ Konfigurasjon konsolidert — delvis (GITEA_URL må inn i repo)
- ⏳ Ingen skjult API-/agentavhengighet som hovedbane — ikke verifisert
- ✅ dev-snap-oppsettet dokumentert godt nok til blueprinting — FASE 5 FERDIG
- ⏳ CPU-optimalisering verifisert på Gitea-VM — FASE 6 pågår
## OPPDATERINGSLOGG
| Dato | Fase | Handling |
|---|---|---|
| 2026-07-21 | FASE 4 | Full smoke test grønn, alle 8 tools OK |
| 2026-07-21 | FASE 5 | Blueprint frosset, FASE 5 lukket |
| 2026-07-21 | FASE 6 | FASE 6 åpnet — CPU-optimalisering neste |
| 2026-07-21 | FASE 6.1 | Kaldstart/keep_alive baseline fullført: gemma3:4b=117s, qwen2.5:3b=71s, varme kall ~1s, keep_alive=-1 bevist effektiv, RAM OK |