# Session-Log: Architect B-1 — ADR-0022 LAN-Sync-Protokoll > **Datum:** 3. April 2026 > **Agent:** 🏗️ Lead Architect > **Aufgabe:** B-1 — ADR für LAN-Sync-Protokoll schreiben --- ## Erledigte Aufgaben ### 1. Optionen analysiert Drei Synchronisationsstrategien wurden für den Kontext Meldestelle ↔ Richter-Turm bewertet: | Option | Ergebnis | |-----------------------------------------|--------------------------------------------------| | A: Event-Sourcing (Append-Only Log) | Basis der gewählten Lösung (vereinfacht) | | B: CRDT | Verworfen — zu komplex, keine KMP-Bibliotheken | | C: Timestamp-Sync (Last-Write-Wins) | Verworfen — Uhren-Drift-Risiko, kein Audit-Trail | | D: Event-Sourcing Light + Lamport-Uhren | **Gewählt** | ### 2. Entscheidung getroffen **Event-Sourcing Light mit Lamport-Uhren** als LAN-Sync-Protokoll: - Meldestelle = Master für Nennungen/Kassa; Richter-Turm = Master für Bewertungen/Ergebnisse - Domänen-Mastership eliminiert strukturell ~90 % der Konflikte - Lamport-Timestamps lösen verbleibende Konflikte deterministisch (kein Uhren-Drift) - WebSocket-Transport (bidirektional), Handshake via HELLO/HELLO_ACK/SYNC_DELTA - Snapshots alle 100 Events begrenzen Log-Größe und Replay-Zeit ### 3. ADR-0022 abgelegt **Datei:** `docs/01_Architecture/adr/0022-lan-sync-protocol-de.md` Inhalt: - Vollständige Optionsanalyse (A–D) - `SyncEvent`-Datenmodell (Kotlin) - Lamport-Uhr-Regeln - WebSocket-Protokoll (Handshake, laufender Betrieb, Reconnect) - Domänen-Mastership-Tabelle - Snapshot-Strategie - Implementierungsplan (4 Phasen) - Offene Punkte (USB-Stick Fallback, Payload-Serialisierung, Multi-Richter-Turm) ### 4. Downstream-Teams informiert - **👷 Backend Developer**: `Backend_Roadmap.md` — C-3 als freigegeben markiert, detaillierte Implementierungsschritte ergänzt - **🎨 Frontend Expert**: `Frontend_Roadmap.md` — C-3 als freigegeben markiert, WebSocket-Client- und UI-Aufgaben ergänzt - **🏗️ Architect Roadmap**: Sprint B als abgeschlossen markiert --- ## Geänderte Dateien | Datei | Änderung | |----------------------------------------------------------------|------------------------------------------| | `docs/01_Architecture/adr/0022-lan-sync-protocol-de.md` | **NEU** — ADR-0022 erstellt | | `docs/04_Agents/Roadmaps/Architect_Roadmap.md` | Sprint B abgeschlossen, B-1 ✅ | | `docs/04_Agents/Roadmaps/Backend_Roadmap.md` | C-3 freigegeben, Abhängigkeit ADR-0022 ✅ | | `docs/04_Agents/Roadmaps/Frontend_Roadmap.md` | C-3 freigegeben, Abhängigkeit ADR-0022 ✅ | | `docs/99_Journal/2026-04-03_Architect_B1_LAN-Sync_ADR-0022.md` | **NEU** — dieser Session-Log | --- ## Nächste Schritte - **Sprint C-1** (Architect): Offline-First-Konzept für Desktop ↔ Backend ausarbeiten - **Sprint C-3** (Backend): `SyncEvent`-Modell, SQLDelight-Tabellen, LamportClock, WebSocket-Server - **Sprint C-3** (Frontend): WebSocket-Client, Sync-Status-UI, Discovery-UI - **Offen**: USB-Stick Fallback — separate Besprechung (Sprint B/C)