110 lines
4.4 KiB
Markdown
110 lines
4.4 KiB
Markdown
# Monorepo-Konsolidierung – Präsentation
|
||
|
||
---
|
||
|
||
## Problem
|
||
|
||
- **18+ einzelne Repositories** — kein Überblick, kein Zusammenhang
|
||
- **Secrets manuell transportieren** — .gitignore-basiert, geht bei neuem Rechner verloren
|
||
- **3 Arbeitskontexte** (Bahn, Extern, Privat) — vermischen sich unkontrolliert
|
||
- **AI-Agenten** greifen unkontrolliert auf Dateien aller Kontexte zu
|
||
- **Team-Zusammenarbeit** erfordert separate Repos — aber ich will den Überblick behalten
|
||
- **Wissen verstreut** — Confluence, Jira, lokale Notizen, Chats, keine Suche darüber
|
||
|
||
---
|
||
|
||
## Lösung: Ein Monorepo mit Kontextgrenzen
|
||
|
||
```
|
||
monorepo/
|
||
├── bahn/ ← 10 DB-InfraGO-Projekte
|
||
├── extern/ ← 2 externe Projekte
|
||
├── privat/ ← 2 persönliche Projekte
|
||
└── shared/ ← Übergreifende Tools, Orchestrator, Wissen
|
||
```
|
||
|
||
**Grundprinzip:** Alles an einem Ort, aber mit klaren Grenzen.
|
||
|
||
---
|
||
|
||
## Kernideen
|
||
|
||
### 1. Kontextbasierte Sicherheit
|
||
- Jeder Kontext hat eigene Secrets (verschlüsselt im Repo via git-crypt)
|
||
- AI-Agent im Kontext "bahn" kann nicht auf "privat"-Secrets zugreifen
|
||
- Zugriffsverletzungen werden geloggt und der Task wird abgebrochen
|
||
|
||
### 2. Maschinenkontext
|
||
- Jeder Rechner hat nur Zugriff auf autorisierte Kontexte
|
||
- Extern-Laptop → nur extern-Secrets entschlüsselbar
|
||
- Hauptrechner → alles entschlüsselbar
|
||
- Neue Maschine? Dokumentierter Onboarding-Prozess
|
||
|
||
### 3. Föderierte Team-Zusammenarbeit
|
||
- Bahn-Team sieht nur `bahn/` als eigenständiges Git-Repo
|
||
- Extern-Team sieht nur `extern/` als eigenständiges Git-Repo
|
||
- Nur ich sehe das vollständige Monorepo (Hub-and-Spoke)
|
||
- Bidirektionale Synchronisation, Team hat Vorrang bei Konflikten
|
||
|
||
### 4. Multi-Harness AI-Dispatch
|
||
- Pro Kontext/Task den optimalen AI-Agenten wählen
|
||
- Kiro, Codex, Claude Code, Antigravity — einheitliche Schnittstelle
|
||
- Agent bekommt nur Workspace + Secrets seines Kontexts
|
||
|
||
### 5. Übergreifender Wissensspeicher
|
||
- ETL-Pipeline für alle Wissensquellen (Markdown, Confluence, Jira, PDFs)
|
||
- Progressive Disclosure: Agent liest erst Index, lädt bei Bedarf Details
|
||
- Kontextübergreifende Suche mit Berechtigungsprüfung
|
||
- Kontextbrücke: Wissen gezielt freigeben (mit Sensitive-Content-Filter)
|
||
|
||
---
|
||
|
||
## Benefits
|
||
|
||
| Vorteil | Details |
|
||
|---------|---------|
|
||
| **Ein Repo, voller Überblick** | Alle Projekte an einem Ort, klar strukturiert |
|
||
| **Secrets sicher & portabel** | Verschlüsselt committet, nicht gitignored — kein manueller Transport |
|
||
| **AI-Agent-Sicherheit** | Kein versehentlicher Zugriff auf fremde Kontexte |
|
||
| **Team-Kollaboration** | Teams arbeiten unabhängig, ohne zu wissen dass ein Monorepo existiert |
|
||
| **Wissen verfügbar** | Jeder AI-Agent bekommt relevantes Wissen aus dem Index injiziert |
|
||
| **Multi-Maschinen** | Neuer Rechner = git clone + Schlüssel installieren, fertig |
|
||
| **Bahn-Repos unverändert** | Bestehende Workflows bleiben, Monorepo zieht nur rein |
|
||
|
||
---
|
||
|
||
## Drawbacks / Risiken
|
||
|
||
| Risiko | Mitigation |
|
||
|--------|-----------|
|
||
| **Monorepo wird groß** | Git-Subtrees statt Submodules (flache Checkouts möglich); Wissensdatenbank-Output kann via .gitignore ausgeschlossen werden |
|
||
| **git-crypt-Komplexität** | Dokumentierter Onboarding-Prozess; Schlüssel in Passwort-Manager |
|
||
| **OneDrive-Sync-Konflikte** | Index.lock-Handling dokumentiert; Steering-Files für zukünftige Sessions |
|
||
| **Single Point of Failure** | Regelmäßige Pushes zu GitHub/GitLab; Team-Repos als unabhängige Backups |
|
||
| **Federation-Komplexität** | Einfache team-wins-Strategie; Manuelle Konfliktauflösung nur bei echten Merge-Konflikten |
|
||
| **Lernkurve** | CLI-Tool `ctx-guard` vereinfacht alle Operationen; 13 dokumentierte Commands |
|
||
|
||
---
|
||
|
||
## Tech Stack
|
||
|
||
- **Python** — Alle Tools in `shared/tools/monorepo-cli/`
|
||
- **git-crypt** — Encryption at rest, pro Kontext
|
||
- **git subtree** — Repo-Einbindung und Federation
|
||
- **YAML** — Konfiguration, Frontmatter, Index
|
||
- **Hypothesis** — 27 Property-Based Tests für Korrektheit
|
||
- **300+ Tests** — Unit, Property, Integration (E2E)
|
||
|
||
---
|
||
|
||
## Status
|
||
|
||
✅ Architektur designed und implementiert (12 Module, 300+ Tests)
|
||
✅ Repos in Kontextordner migriert
|
||
✅ Wissensdatenbank als Upstream eingebunden
|
||
✅ CLI-Tool funktionsfähig
|
||
⬜ git-crypt einrichten (Schlüssel generieren)
|
||
⬜ Team-Repos auf GitLab erstellen
|
||
⬜ Knowledge-Management-System für Notizen starten
|
||
⬜ NoteGraph-Neuentwicklung auf Basis des Wissensspeichers
|