KI-Konzil/_bmad-output/implementation-artifacts/epic-4-retro-2026-03-12.md
copilot-swe-agent[bot] 57e2acadaf feat: add epic retrospectives (3, 4, 5), update sprint status and project context
Co-authored-by: Kenearos <86194771+Kenearos@users.noreply.github.com>
2026-03-12 22:31:01 +00:00

84 lines
4.3 KiB
Markdown

# Retrospektive — Epic 4: Frontend-Backend-Integration (Phase 3)
<!-- 🏃 Facilitiert von BMAD SM Skill — Agent: Bob (Scrum Master) -->
<!-- Skill Command: /bmad-agent-bmm-sm → [ER] Epic Retrospective -->
<!-- Workflow: _bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml -->
**Datum:** 2026-03-12
**Epic:** Epic 4 — Frontend-Backend-Integration (Phase 3)
**Status:** Abgeschlossen — 3/3 Stories erledigt
**Facilitiert von:** Bob (🏃 Scrum Master)
---
## 1. Epic-Zusammenfassung
**Ziel:** LangGraph liest JSON-Blueprint und baut Graph dynamisch. WebSocket-Events pulsieren Nodes im Canvas. Finaler Output erscheint im Frontend.
**Stories abgeschlossen:**
- ✅ 4.1: Dynamischer Graph-Builder aus Blueprint-JSON
- ✅ 4.2: WebSocket-Agent-Events integrieren
- ✅ 4.3: Konferenzzimmer — Live-Execution-UI
---
## 2. Was lief gut? (Keep)
**Technische Entscheidungen:**
- **`dynamic_graph_builder.py`** als eigenständiges Modul neben `graph_builder.py` erlaubt parallelen Betrieb — Phase 1 und Phase 3 koexistieren, bis Phase 1 depreciert wird
- **`interrupt_before`-Mechanismus** von LangGraph konnte nahtlos für God Mode (Phase 4) vorbereitet werden — keine Architektur-Änderung nötig
- **WebSocket `broadcast_event()`** mit automatischer Dead-Connection-Bereinigung ist robust gegen Verbindungsabbrüche
- **`useCouncilWebSocket` Hook** kapselt alle WS-Logik — Konferenzzimmer-Komponente ist davon vollständig entkoppelt
- **`_resolve_tools()`** im dynamischen Graph-Builder mit Factory-Pattern ermöglicht saubere optionale Tool-Bindung
**Prozess:**
- Story 4.1 (Graph-Builder) wurde vor 4.2 (WebSocket) abgeschlossen — Backend-Grundlage vor Frontend-Integration war richtig
- Tests für `dynamic_graph_builder.py` mit gemockten LLMs laufen schnell und zuverlässig in CI
---
## 3. Was lief nicht gut? (Drop / Improve)
**Technisch:**
- `_connections`-Dict im WebSocket-Modul ist nicht persistent — bei Serverabsturz verlieren alle Clients ihre Verbindung ohne Wiederherstellungs-Mechanismus
- `run_in_executor(None, graph.invoke, state)` überträgt Fehler aus dem Thread-Pool nicht sauber an den asyncio Event-Loop — Exception-Handling verbessern
- Blueprint-Validierung beim `/api/councils/{id}/run`-Endpunkt prüft nicht, ob das Blueprint einen gültigen Entry-Point hat
**Prozess:**
- `test_builds_cyclic_graph` in `test_dynamic_graph_builder.py` hätte auch Edge-Cases (leere Kondition, Selbst-Loops) abdecken können
---
## 4. Lernerkenntnisse
| Erkenntnis | Anwendung in kommenden Epics |
|------------|------------------------------|
| LangGraph-`interrupt_before` ist einfach zu aktivieren — einfach Node-Namen in Liste übergeben | Für God Mode in Epic 5 Story 5.3 direkt genutzt |
| WebSocket-Events sollten immer `run_id` mitschicken | Clients können bei Multi-Tab-Szenarien Events filtern |
| Blueprint-Fehler erst beim Run zu melden ist zu spät | Pre-Run-Validierung in Konferenzzimmer vor `POST /run` hinzufügen |
| `_invoke_with_tools` als gemeinsames Muster für Agent- und Critic-Nodes | God-Mode-Nodes in Epic 5 nutzen denselben Wrapper |
---
## 5. Aktionspunkte für kommende Epics
| Priorität | Aktionspunkt | Verantwortlich | Status |
|-----------|-------------|----------------|--------|
| Hoch | Pre-Run Blueprint-Validierung im Frontend (Entry-Point vorhanden?) | Dev | Backlog |
| Mittel | Exception-Handling für Thread-Pool-Fehler in `run_council_async()` | Dev | Backlog |
| Niedrig | WebSocket-Reconnect-Logik im `useCouncilWebSocket`-Hook | Dev | Backlog |
---
## 6. Nächstes Epic (Preview: Epic 5)
**Epic 5 — Tools & God Mode** erweitert die in Epic 4 gelegte Integrationsgrundlage:
- Tavily-Web-Suche und PDF-Reader als Agent-Tools (Stories 5.1, 5.2 ✅)
- God Mode mit `interrupt_before` für Human-in-the-Loop (Story 5.3 ✅)
- Run-Verlauf und History-API (Story 5.4 ✅)
**Kritische Brücke:** Die in Epic 4 etablierte WebSocket-Verbindung (`run_paused`-Event) ist die Grundlage für das God-Mode-Overlay in Epic 5.
---
*Bob (Scrum Master): "Epic 4 war das technisch anspruchsvollste Epic — die Integration zweier komplexer Systeme (LangGraph + React Flow) über WebSockets. Dass alle NFRs (< 500 ms WS-Latenz, dynamischer Graph ab Phase 3) eingehalten wurden, ist ein großer Erfolg. Die Factory-Umstellung für Tools hat außerdem die Code-Qualität messbar verbessert!"*