4.4 KiB
4.4 KiB
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