Files
jetson-ai-ollama/manifests/requirements.md
Tarik Moussa accd61625c docs(reconciliation): sync planning repo to ansible-eulernest reality
Plan ↔ reality abgleich nach tatsächlicher Implementierung in ansible-eulernest:

- CONVENTIONS.md: 4 Profile (+ coder), Registry-Pull statt GGUF/DVC,
  SoT-Pointer auf ansible-eulernest, JP7.2 Source-Build-Note
- STATE.md: W2–W4 done (via ansible-eulernest), W1/W5/W6 dropped,
  N1–N3 (GPU-metric, benchmarks, smoke-tests) als nächste Schritte
- ROADMAP.md: Abgeschlossene Items referenzieren ansible-eulernest-Rollen;
  neue Items N1–N3 für verbleibende Arbeit
- manifests/requirements.md: R-03–R-06 done, R-02/R-07/R-08 drift
- docs/adr/0003: Registry-Pull > GGUF; ansible-eulernest als Impl-SoT
- sessions/2026-06-14-reconciliation.md: Session-Log

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 14:45:40 +02:00

31 lines
3.0 KiB
Markdown

# Requirements-Manifest (kalt verifizierbar)
Eine Zeile je Erfolgskriterium — der **kalt lesbare Review** (siehe `REVIEW.md`).
Der Reviewer prüft Spalte für Spalte; `done`-Zeilen müssen ihren Prüfbefehl bestehen.
> **Wichtig:** `done`-Items mit Pfad `ansible-eulernest/...` sind in der Implementierung
> (`~/Desktop/ansible-eulernest`) verifizierbar, nicht in diesem Repo.
| ID | Anforderung | Datei(en) | Test/Prüfbefehl | Status |
|----|-------------|-----------|------------------|--------|
| R-01 | Vertrag zuerst: CONVENTIONS + disjunkte Ownership | `CONVENTIONS.md`, `STATE.md` | `grep -q qwen-light CONVENTIONS.md` | done |
| R-02 | Vier Profile über Ansible-Vars (light/gemma/heavy/coder) | `ansible-eulernest/group_vars/jetson/vars.yml` | `grep -q coder ansible-eulernest/group_vars/jetson/vars.yml` | drift |
| R-03 | q8_0-KV + Flash Attention + MAX_LOADED_MODELS=1 | `ansible-eulernest/roles/ollama/templates/ollama-override.conf.j2` | `grep -q q8_0 ansible-eulernest/roles/ollama/templates/ollama-override.conf.j2` | done |
| R-04 | num_ctx je Profil explizit (light/gemma/coder 16384, heavy 8192) | `ansible-eulernest/group_vars/jetson/vars.yml` | `grep -q num_ctx ansible-eulernest/group_vars/jetson/vars.yml` | done |
| R-05 | GPU-Nutzung verifiziert (GPU-Gate); Ollama nur LAN + Firewall | `ansible-eulernest/roles/ollama/tasks/main.yml` | `grep -q size_vram ansible-eulernest/roles/ollama/tasks/main.yml` | done |
| R-06 | Metrik-Endpoint über Exporter (`:8000/metrics`) | `ansible-eulernest/roles/ollama_exporter/files/ollama_exporter.py` | `ls ansible-eulernest/roles/ollama_exporter/files/ollama_exporter.py` | done |
| R-07 | Keine Secrets im Klartext; Secrets im Vault | `ansible-eulernest/group_vars/jetson/vault.yml` | `ansible-vault view ansible-eulernest/group_vars/jetson/vault.yml --vault-password-file ansible-eulernest/.vault_pass` | drift |
| R-08 | Modell-Source-of-Truth reproduzierbar | `ansible-eulernest/group_vars/jetson/vars.yml` | `grep -q ollama_profiles ansible-eulernest/group_vars/jetson/vars.yml` | drift |
| R-09 | Smoke-Tests: alle 5 Endpoints von außen verifiziert | `scripts/smoke-test.sh` (→ N3 ROADMAP) | `bash scripts/smoke-test.sh` | todo |
| R-10 | Kalt verifizierbar; Tests kodieren Kriterien | `REVIEW.md`, `scripts/smoke-test.sh` | `bash -n scripts/smoke-test.sh` | todo |
Status: `todo` · `in_progress` · `done` · `drift` (Implementierung abweichend von ursprünglicher Planung, aber funktional korrekt).
## Drift-Erklärungen
**R-02 drift:** Ursprünglich drei Modelfiles (GGUF-basiert). Implementiert als vier Ollama-Profile via Ansible-Vars + Registry-Pull. Funktional äquivalent; Datei-Pfade anders. Siehe ADR-0003.
**R-07 drift:** `.env.example` nie erstellt. Secrets leben in Ansible-Vault — sicherer als Platzhalter-File. Keine offene Lücke.
**R-08 drift:** DVC nie implementiert. Ansible-Vars (`ollama_profiles[].base`) sind die SoT für Modell-Identität. Registry-Pulls statt GGUFs. Versionspinning fehlt (unpinned risk). Mitigation: Digest-Check im Pre-Demo-Checklist. Siehe ADR-0003.