# Session-Prompt F-02 — Spike: Modell-API-Format (Theorist + Prototyper) ``` Modell: Opus Du arbeitest in /Users/tarikmoussa/Desktop/files/agent-swarm-repo auf einem neuen Branch `spike/model-api` (von `main`). WICHTIG: Dies ist ein Research-Spike. Der Branch ist Wegwerf. Kein Produktionscode. Spike-Gate-Regeln: `docs/loops/spike-gate.md` ADR: `docs/adr/0004-modell-api-spike-first.md` ## Aufgabe Bestimme das API-Format des selbst gehosteten Sprachmodells auf dem Jetson Orin Nano Super und produziere eine Mini-Spec (`spike/model-api/spec.md`), gegen die F-05 dann portiert. Hintergrund: Das Modell läuft auf einem lokalen Server. Der wahrscheinlichste Backend-Stack ist **Ollama** (exponiert eine OpenAI-kompatible API auf Port 11434) oder **llama.cpp HTTP-Server** (Port 8080, eigenes Format). Wir wissen es nicht sicher. ## Phase 1 — Theorist (du selbst, Opus) 1. Liste die drei wahrscheinlichsten Backend-Optionen für Jetson Orin: - Ollama (`/api/generate`, `/api/chat` oder OpenAI-compat `/v1/chat/completions`) - llama.cpp HTTP (`/completion`) - Custom FastAPI 2. Für jede Option: notiere das minimale Request-/Response-Schema (JSON). 3. Schreibe `spike/model-api/spec.md` mit den Schema-Varianten und dem GO-Kriterium: "Antwort ist nicht-leer und unter 30 s". ## Phase 2 — Prototyper (du selbst, Opus) Schreibe `spike/model-api/probe.py` — ein minimales, wegwerfbares Python-Skript: - Liest MODEL_BASE_URL aus Env-Var (default: http://localhost:11434). - Schickt eine kurze Test-Nachricht ("Hallo, antworte mit einem Wort."). - Gibt die rohe JSON-Antwort aus. - Kommentiert, welches Schema es probiert hat. Das Skript ist **kein Produktionscode** — kein Error-Handling, keine Abstraktionen. ## Phase 3 — GO/NO-GO Dokumentiere in `spike/model-api/result.md`: - Welches Backend hast du vorgefunden (oder angenommen)? - Funktioniert der Probe erfolgreich? (GO / NO-GO) - Exaktes API-Schema für den Connector (Request + Response-Felder). - Empfehlung für F-05 Porter (welche Library, welchen Endpoint). ## Akzeptanzkriterien - [ ] `spike/model-api/spec.md` enthält ≥ 2 Schema-Varianten mit JSON-Beispielen. - [ ] `spike/model-api/probe.py` läuft ohne Import-Fehler (`python spike/model-api/probe.py --help` o. ä.). - [ ] `spike/model-api/result.md` enthält ein klares GO oder NO-GO mit Begründung. - [ ] GO: Das finale API-Schema ist in `result.md` exakt spezifiziert (Felder, Typen, Endpoint-Pfad). - [ ] NO-GO: Ursache dokumentiert + Human-Empfehlung, welches Backend aufzusetzen. ## Nicht anfassen `src/`, `tests/`, `pyproject.toml`, `ROADMAP.md`, `STATE.md` — alles außer `spike/model-api/`. Kein Produktionscode schreiben. Spike-Branch wird nach GO verworfen. ## Commit & Push - Conventional Commit: `docs: spike model-api format discovery [GO/NO-GO]` - Trailer: `Co-Authored-By: Claude Opus 4.7 ` - Push nach `origin spike/model-api`. - Kein PR — Leader entscheidet nach GO/NO-GO über nächsten Schritt. ## Abschluss 1. `STATE.md` aktualisieren: F-02 Spike-Ergebnis + GO/NO-GO eintragen. 2. Falls GO: Leader dispatcht F-05 (Porter · Sonnet) mit `result.md` als Spec. Falls NO-GO: Leader markiert F-05 als ⛔ blocked-extern + Human-Eskalation. 3. Session-Log: `sessions/F-02-.md`. 4. Hygiene-Gate: `bash scripts/gate-session-hygiene.sh`. ```