29 KiB
Implementation Plan: Monorepo-Consolidation
Overview
Inkrementelle Implementierung der Monorepo-Konsolidierung in Python. Die Umsetzung folgt einem Bottom-Up-Ansatz: Zunächst werden die Basis-Komponenten (Ordnerstruktur, Sicherheit, Verschlüsselung) erstellt, darauf aufbauend der Wissensspeicher und die Repo-Verwaltung, dann die Integrationsschicht (Orchestrator-Adapter, Kontextbrücke, Migration), und schließlich die Föderationsschicht (Team-Repos, Synchronisation).
Tasks
-
1. Projektstruktur und Basiskonfiguration
-
1.1 Monorepo-Grundstruktur und zentrale Konfigurationsdateien erstellen
- Erstelle die Ordnerstruktur:
privat/,dhive/,bahn/,shared/mit Unterordnernshared/tools/,shared/powers/,shared/knowledge-store/,shared/config/,shared/mcp-servers/ - Erstelle
monorepo.yamlmit Kontext-Definitionen, Naming-Regeln, Security- und Encryption-Konfiguration - Erstelle
shared/config/access-config.yamlmit Zugriffskonfiguration pro Kontext - Erstelle
shared/config/repos.yamlals leere Repo-Registry - Erstelle
shared/config/scopes.yamlmit Scope-Mapping für den Wissensspeicher - Erstelle
shared/config/machine-context.yamlmit Maschinenkontext-Mapping - Erstelle
shared/config/team-repos.yamlmit Föderations-Konfiguration - Erstelle
.gitignoremit Patterns für Build-Artefakte, Caches, temporäre Dateien (NICHT für Secrets) - Erstelle
.gitattributesmit Root-Level git-crypt-Regeln - Requirements: 1.1, 1.4, 2.2, 2.4, 2.6, 8.1, 9.5, 9.9, 10.11
- Erstelle die Ordnerstruktur:
-
1.2 Python-Paketstruktur und gemeinsame Datenmodelle anlegen
- Erstelle
shared/tools/monorepo-cli/mitpyproject.tomlundsrc/monorepo/Package - Definiere Dataclasses:
ProjectInfo,RepoEntry,MigrationPlan,SecurityEvent,ScopeConfig,MachineContext,EncryptionKey,PasswordManagerConfig,TeamRepoEntry,SharedMirrorConfig,SyncResult,ConflictInfo,IsolationReport,IsolationLeak - Definiere Enums:
Context,RepoMode,ArtifactType,KeySource,SyncDirection,SyncFrequency,ConflictStrategy - Erstelle
src/monorepo/__init__.py,src/monorepo/models.py,src/monorepo/config.py - Requirements: 1.1, 4.3, 9.5, 10.11
- Erstelle
-
-
2. Ordnerstruktur-Manager (StructureManager)
-
2.1 StructureManager-Klasse implementieren
- Implementiere
StructureManagerinsrc/monorepo/structure.py - Methode
validate_name(name: str) -> bool: Prüfung auf kebab-case, 2-50 Zeichen, Regex^[a-z0-9][a-z0-9\-]{0,48}[a-z0-9]$ - Methode
create_project(context: str, name: str) -> Path: Erstellt Projektordner, prüft Namenskonflikt, gibt Fehlermeldung bei Duplikat - Methode
list_projects(context: str | None) -> list[ProjectInfo]: Auflistung aller Projekte - Methode
resolve_context(project_path: Path) -> str: Kontexterkennung anhand Pfad - Requirements: 1.1, 1.2, 1.3, 1.5, 1.6
- Implementiere
-
[-] 2.2 Property-Test: Namensvalidierung (Property 1)
- Property 1: Namensvalidierung akzeptiert nur gültiges kebab-case
- Validates: Requirements 1.3
-
[-] 2.3 Property-Test: Namenskollision (Property 2)
- Property 2: Namenskollision verhindert doppelte Projekterstellung
- Validates: Requirements 1.6
-
[-] 2.4 Unit-Tests für StructureManager
- Teste Erstellung in allen vier Kontexten
- Teste Fehlermeldung bei existierendem Projektnamen
- Teste Edge Cases: Minimum-/Maximum-Länge, Sonderzeichen, Unicode
- Requirements: 1.1, 1.2, 1.3, 1.6
-
-
3. Sicherheits-Guard (ContextGuard)
-
3.1 ContextGuard-Klasse mit Zugriffskontrolle implementieren
- Implementiere
ContextGuardinsrc/monorepo/security.py - Methode
check_access(requesting_context: str, target_path: Path) -> bool: Prüft Zugriffsberechtigung basierend auf access-config.yaml - Methode
load_env(context: str) -> dict[str, str]: Lädt nur die .env des eigenen Kontexts (entschlüsselt via SecretEncryptionManager) - Shared-Zugriff: Nur auf explizit freigegebene Pfade gemäß Konfiguration
- Requirements: 2.1, 2.3, 2.6, 2.7
- Implementiere
-
[-] 3.2 AuditLogger und Violation-Protokollierung implementieren
- Implementiere
AuditLoggerinsrc/monorepo/audit.py - Methode
log_violation(event: SecurityEvent) -> None: Schreibt Zeitstempel, anfragender Kontext, Zielkontext, Ressource in Protokolldatei - Konfiguration des Audit-Log-Pfads aus monorepo.yaml
- Requirements: 2.5
- Implementiere
-
3.3 Property-Test: Kontextübergreifender Secret-Zugriff (Property 3)
- Property 3: Kontextübergreifender Secret-Zugriff wird verweigert
- Validates: Requirements 2.1, 2.3, 2.5, 2.7
-
3.4 Property-Test: Shared-Tool-Isolation (Property 4)
- Property 4: Shared-Tool-Isolation
- Validates: Requirements 2.7, 8.5
-
3.5 Unit-Tests für ContextGuard und AuditLogger
- Teste Zugriff innerhalb des eigenen Kontexts (erlaubt)
- Teste Zugriff auf fremden Kontext (verweigert)
- Teste Zugriff auf shared-Bereich (erlaubt gemäß Konfiguration)
- Teste Audit-Log-Format und Vollständigkeit
- Requirements: 2.1, 2.3, 2.5, 2.6, 2.7
-
-
4. Secret-Encryption-Manager (SecretEncryptionManager)
-
[-] 4.1 SecretEncryptionManager-Basisklasse mit git-crypt-Integration implementieren
- Implementiere
SecretEncryptionManagerinsrc/monorepo/encryption.py - Methode
encrypt_file(file_path: Path, context: str) -> EncryptionResult: Verschlüsselt Datei mit Kontext-Schlüssel - Methode
decrypt_file(file_path: Path) -> DecryptionResult: Entschlüsselt nur bei autorisiertem Maschinenkontext - Methode
is_authorized(context: str) -> bool: Prüft Maschinenkontext-Autorisierung - Methode
setup_gitcrypt_filters(context: str) -> None: Installiert git-crypt-Filter pro Kontext (.gitattributes) - Requirements: 9.1, 9.2, 9.3, 9.4, 9.8
- Implementiere
-
4.2 Maschinenkontext-Verwaltung und Schlüssel-Management implementieren
- Implementiere
MachineContext-Logik insrc/monorepo/encryption.py - Methode
get_context_key(context: str) -> Optional[EncryptionKey]: Schlüsselabruf aus Keyring oder Passwort-Manager - Methode
onboard_machine(machine_name, authorized_contexts) -> OnboardingResult: Einrichtung neuer Maschinen mit autorisierten Schlüsseln - Methode
resolve_merge(file_path, ours, theirs) -> bytes: Merge-Konflikt-Auflösung auf verschlüsselter Ebene - Lade Konfiguration aus
shared/config/machine-context.yaml - Passwort-Manager-Integration (Bitwarden, 1Password, KeePass) als optionaler Key-Source
- Requirements: 9.4, 9.5, 9.6, 9.7, 9.10, 9.11
- Implementiere
-
4.3 .gitattributes pro Kontext und git-crypt-Konfiguration erstellen
- Erstelle
privat/.gitattributesmit git-crypt-privat-Filter-Regeln - Erstelle
dhive/.gitattributesmit git-crypt-dhive-Filter-Regeln - Erstelle
bahn/.gitattributesmit git-crypt-bahn-Filter-Regeln - Definiere Secret-Patterns: .env, *.pem, *.key, token, secret
- Dokumentiere Onboarding-Prozess für neue Maschinen
- Requirements: 9.1, 9.2, 9.6, 9.9
- Erstelle
-
4.4 Property-Test: Verschlüsselung nur mit Kontext-Schlüssel (Property 23)
- Property 23: Verschlüsselte Secrets können nur mit autorisiertem Kontextschlüssel entschlüsselt werden
- Validates: Requirements 9.3, 9.8
-
4.5 Property-Test: Maschinenkontext-Beschränkung (Property 24)
- Property 24: Maschinenkontext beschränkt Entschlüsselung auf autorisierte Kontexte
- Validates: Requirements 9.4, 9.5, 9.8, 9.10
-
4.6 Unit-Tests für SecretEncryptionManager
- Teste Verschlüsselung/Entschlüsselung mit korrektem Schlüssel
- Teste Fehlschlag bei falschem Kontext-Schlüssel
- Teste Maschinenkontext-Autorisierungsprüfung
- Teste Fehlermeldung ohne Inhalt-Offenlegung
- Teste .gitattributes-Generierung pro Kontext
- Teste Merge-Auflösung für verschlüsselte Dateien
- Requirements: 9.1, 9.3, 9.4, 9.8, 9.10, 9.11
-
-
5. Checkpoint - Basis-Sicherheits- und Verschlüsselungsschicht
- Ensure all tests pass, ask the user if questions arise.
-
6. Wissensspeicher – ETL-Pipeline und Indexierung
-
6.1 KnowledgeStore-Basisklasse und YAML-Index implementieren
- Implementiere
KnowledgeStoreinsrc/monorepo/knowledge/store.py - Implementiere
YAMLIndexinsrc/monorepo/knowledge/index.pymit Methoden:load(),update_entry(),search(),get_by_scope() - Index-Format gemäß Design: version, last_updated, artifacts-Liste mit id, title, type, tags, scope, summary, path, content_hash, links
- Progressive-Disclosure: Index liefert nur kompakte Einträge (kein vollständiger Inhalt)
- Requirements: 3.13, 3.16, 3.18, 3.19
- Implementiere
-
6.2 Wissensartefakt-Modell mit YAML-Frontmatter implementieren
- Implementiere
ArtifactundArtifactMetadatainsrc/monorepo/knowledge/artifact.py - YAML-Frontmatter-Parsing und -Generierung (type, title, tags, source_context, created, updated, shareable, links, content_hash)
- Content-Hash-Berechnung (SHA-256)
- Scope-basierte Ordnerstruktur: Artefakt-Pfad =
{scope}/{type}/{name}.md - Requirements: 3.4, 3.6, 3.11, 3.17, 3.19
- Implementiere
-
6.3 ETL-Pipeline-Grundstruktur und Markdown-Quellstrategie implementieren
- Implementiere
ETLPipelineinsrc/monorepo/knowledge/etl.py - Implementiere
MarkdownSourceals erste Quellstrategie insrc/monorepo/knowledge/sources/markdown.py - Methode
ingest(source, context) -> list[Artifact]: Verarbeitet Quelle, erstellt Artefakte mit Metadaten - Inkrementelle Verarbeitung: Content-Hash-Vergleich, nur geänderte Inhalte aktualisieren
- Fehlerresilienz: Bei Quellenfehler → Fehler protokollieren, erfolgreiche Artefakte beibehalten, Retry-Markierung
- Index-Update im selben Durchlauf
- Requirements: 3.2, 3.6, 3.10, 3.12, 3.20, 3.21
- Implementiere
-
6.4 Volltextsuche und Scope-basierte Filterung implementieren
- Implementiere
search(query, allowed_scopes) -> list[SearchResult]in KnowledgeStore - Volltextsuche über indexierte Artefakte mit Relevanz-Sortierung
- Scope-Filterung: Nur Ergebnisse aus autorisierten Scopes zurückgeben
- Existenz nicht-autorisierter Artefakte nicht offenlegen
- Timeout-Handling: Abbruch nach 5 Sekunden mit Teilergebnis-Warnung
- Requirements: 3.3, 3.7, 3.9
- Implementiere
-
6.5 Graph-Verknüpfungen zwischen Artefakten implementieren
- Methode
link_artifacts(source_id, target_id, relation) -> None - Bidirektionale Verknüpfung: Eintrag im YAML-Frontmatter beider Artefakte
- Aktualisierung des YAML-Index mit Link-Informationen
- Requirements: 3.8
- Methode
-
6.6 NoteGraph-Migration und Scope-Konfiguration implementieren
- Implementiere
NoteGraphMigratorinsrc/monorepo/knowledge/migration.py - Migration der NoteGraph-Verzeichnisstruktur (decisions, inbox, meetings, people, projects)
- Scope-Konfiguration: Mapping Arbeitskontext → Scope in scopes.yaml
- Validierung: Alle Artefakte, Metadaten und Verknüpfungen im Zielsystem vorhanden und auffindbar
- Requirements: 3.5, 3.14
- Implementiere
-
6.7 Property-Test: Artefakt-Ingestion erzeugt vollständige Metadaten (Property 5)
- Property 5: Wissensartefakt-Ingestion erzeugt vollständige Metadaten im Index
- Validates: Requirements 3.2, 3.4, 3.6, 3.11, 3.13, 3.17, 3.21
-
6.8 Property-Test: Suche respektiert Scope-Berechtigungen (Property 6)
- Property 6: Suche respektiert Scope-Berechtigungen
- Validates: Requirements 3.3, 3.9
-
6.9 Property-Test: Progressive-Disclosure-Index (Property 7)
- Property 7: Progressive-Disclosure-Index enthält nur kompakte Einträge
- Validates: Requirements 3.16, 3.18
-
6.10 Property-Test: Inkrementelle Verarbeitung (Property 8)
- Property 8: Inkrementelle Verarbeitung erkennt Änderungen über Content-Hash
- Validates: Requirements 3.12
-
6.11 Property-Test: Volltextsuche (Property 9)
- Property 9: Volltextsuche findet indexierte Inhalte
- Validates: Requirements 3.7
-
6.12 Property-Test: ETL-Fehlerresilienz (Property 10)
- Property 10: ETL-Fehlerresilienz bewahrt erfolgreiche Artefakte
- Validates: Requirements 3.20
-
6.13 Property-Test: Graph-Verknüpfungen bidirektional (Property 11)
- Property 11: Graph-Verknüpfungen werden in beiden Artefakten reflektiert
- Validates: Requirements 3.8
-
-
7. Checkpoint - Wissensspeicher-Kern
- Ensure all tests pass, ask the user if questions arise.
-
8. Externes-Repo-Manager (RepoManager)
-
8.1 RepoManager-Klasse mit Subtree/Submodule-Einbindung implementieren
- Implementiere
RepoManagerinsrc/monorepo/repos.py - Methode
add_repo(entry: RepoEntry) -> None: Bindet Repo via Git-Subtree (Standard) oder Submodule ein - Methode
sync(repo_name: str) -> SyncResult: Aktualisiert auf gepinnte Version, gibt Ergebnismeldung (Erfolg/Misserfolg/unbekannt) - Bidirektionale Sync für Upstream-Repos (Pull/Push), Abbruch bei Merge-Konflikten
- Requirements: 4.1, 4.3, 4.4, 4.6, 4.7, 4.8
- Implementiere
-
8.2 Read-Only-Schutzmechanismus implementieren
- Methode
protect_readonly(repo_path: Path) -> None: Installiert Git pre-commit Hook - Hook verhindert Commits die Dateien im geschützten Verzeichnis ändern
- Fehlermeldung bei Schreibversuch mit Repo-Name und Read-Only-Status
- Fehlerprotokollierung bei fehlgeschlagener Synchronisation (Netzwerk, Auth, Merge)
- Requirements: 4.2, 4.5, 4.9
- Methode
-
8.3 Property-Test: Read-Only-Repos blockieren Schreibzugriffe (Property 12)
- Property 12: Read-Only-Repos blockieren Schreibzugriffe
- Validates: Requirements 4.2, 4.5
-
8.4 Property-Test: Fehlgeschlagene Synchronisation (Property 13)
- Property 13: Fehlgeschlagene Synchronisation bewahrt lokalen Stand
- Validates: Requirements 4.9
-
8.5 Unit-Tests für RepoManager
- Teste Subtree-Add und Submodule-Add
- Teste Sync-Ergebnismeldungen (Erfolg, Fehler, unbekannt)
- Teste Read-Only-Hook-Blockierung
- Teste Fehlerprotokollierung bei Sync-Fehlschlägen
- Requirements: 4.1, 4.2, 4.4, 4.5, 4.9
-
-
9. Kontextbrücke (ContextBridge)
-
9.1 ContextBridge-Klasse mit Sensitive-Content-Filter implementieren
- Implementiere
ContextBridgeinsrc/monorepo/bridge.py - Methode
share_artifact(artifact_id, user_confirmed) -> ShareResult: Freigabe nur mit expliziter Nutzerbestätigung - Methode
check_sensitive_content(content: str) -> list[SensitiveMatch]: Regex-basierte Prüfung auf Secrets, Endpoints, PII - Methode
revoke_share(artifact_id) -> None: Entfernt Artefakt aus allen Zielkontexten als Lesereferenz - Update-Propagierung: Änderungen im Quellkontext beim nächsten Lesezugriff sichtbar
- Requirements: 5.1, 5.2, 5.3, 5.4, 5.5, 5.6
- Implementiere
-
9.2 Property-Test: Sensitive-Content-Filter (Property 14)
- Property 14: Sensitive-Content-Filter blockiert Freigabe
- Validates: Requirements 5.1, 5.3
-
9.3 Property-Test: Freigabe-Lebenszyklus (Property 15)
- Property 15: Freigabe-Lebenszyklus (Share → Update → Revoke)
- Validates: Requirements 5.2, 5.5, 5.6
-
9.4 Property-Test: Explizite Nutzerbestätigung (Property 16)
- Property 16: Freigabe erfordert explizite Nutzerbestätigung
- Validates: Requirements 5.4
-
-
10. Checkpoint - Repo-Manager und Kontextbrücke
- Ensure all tests pass, ask the user if questions arise.
-
11. Migrations-Engine
-
11.1 MigrationEngine-Klasse mit Git-Historie-Bewahrung implementieren
- Implementiere
MigrationEngineinsrc/monorepo/migration.py - Methode
migrate(plan: MigrationPlan) -> MigrationResult: Führt Migration viagit filter-repoodergit subtree adddurch, bewahrt alle Commits, Branches, Tags, Autoreninformationen - Inkrementelle Migration: Repositories einzeln und unabhängig migrierbar
- Konflikterkennung: Pfadkollision, Branch-Namenskonflikt, Namenskonvention-Verletzung → Migration pausieren
- Requirements: 6.1, 6.3, 6.5, 6.6
- Implementiere
-
[-] 11.2 Migrations-Validierung und Rollback implementieren
- Methode
validate(repo_name: str) -> ValidationResult: Prüft Commit-Anzahl, Branches, Tags, Dateibaum-Vollständigkeit, Test-Durchlauf - Methode
rollback(repo_name: str) -> None: Stellt Vor-Migrations-Zustand wieder her, ohne andere Repos zu beeinflussen - Dokumentierter Migrationsplan: Für jedes Repo Ziel-Kontext, Reihenfolge, Abhängigkeiten, Einbindungsmodus
- Requirements: 6.1, 6.4, 6.7
- Methode
-
[-] 11.3 Property-Test: Migrations-Validierung (Property 17)
- Property 17: Migrations-Validierung prüft Vollständigkeit
- Validates: Requirements 6.4
-
[-] 11.4 Property-Test: Migrations-Rollback (Property 18)
- Property 18: Migrations-Rollback stellt Vor-Zustand wieder her
- Validates: Requirements 6.7
-
11.5 Unit-Tests für MigrationEngine
- Teste Migration eines einfachen Repos (Commits, Branches, Tags bewahrt)
- Teste Konflikterkennung (Pfadkollision, Branch-Namenskonflikt)
- Teste Rollback-Wiederherstellung
- Teste inkrementelle Migration (parallel funktionsfähig)
- Requirements: 6.1, 6.4, 6.5, 6.6, 6.7
-
-
12. Orchestrator-Adapter
-
12.1 OrchestratorAdapter-Klasse mit Kontextauflösung implementieren
- Implementiere
OrchestratorAdapterinsrc/monorepo/orchestrator.py - Methode
resolve_context(task: Task) -> str: Ermittelt Arbeitskontext aus Task-Metadaten (Labels/Projektzuordnung) - Methode
create_workspace(task, context) -> Path: Erstellt Arbeitsverzeichnis unter dem korrekten Kontextordner - Methode
build_prompt(task, context) -> str: Erstellt Agenten-Prompt mit Wissenskontext - Fehlerbehandlung: Kein Kontext → Task nicht starten, Fehlermeldung; Out-of-Context-Zugriff → Task abbrechen, protokollieren, Nutzer benachrichtigen
- Requirements: 7.1, 7.2, 7.3, 7.5, 7.6
- Implementiere
-
[-] 12.2 Wissensinjection und Env-Loading im Orchestrator implementieren
- Methode
inject_knowledge(prompt, context) -> str: Abfrage des YAML-Index, relevante Artefakt-Pfade einfügen - Env-Loading: Ausschließlich .env des zugewiesenen Kontexts laden (entschlüsselt via SecretEncryptionManager), keine Umgebungsvariablen anderer Kontexte
- Integration mit bestehender WORKFLOW.md-Konfiguration: workspace_root pro Task
- Requirements: 7.3, 7.4
- Methode
-
[-] 12.3 Multi-Harness-Dispatch implementieren
- Implementiere Harness-Konfiguration: Pro Kontext/Task-Typ den Agent_Harness definieren
- Einheitliche Schnittstelle: Prompt-Injection, Workspace-Verzeichnis, Env-Übergabe, Agent_Erweiterungen
- Harness-spezifische Startsequenz (CLI, API, Prozessstart) aus Konfiguration laden
- Fehlerbehandlung: Harness nicht verfügbar → Task als nicht-ausführbar markieren, Nutzer benachrichtigen
- Requirements: 7.7, 7.8, 7.9, 7.10
-
12.4 Property-Test: Orchestrator-Kontextauflösung (Property 19)
- Property 19: Orchestrator-Kontextauflösung und Workspace-Isolation
- Validates: Requirements 7.1, 7.2, 7.3, 7.6
-
12.5 Property-Test: Orchestrator-Kontextverletzung (Property 20)
- Property 20: Orchestrator-Kontextverletzung bricht Task ab
- Validates: Requirements 7.5
-
12.6 Unit-Tests für OrchestratorAdapter
- Teste Kontextauflösung aus Task-Labels
- Teste Workspace-Erstellung im korrekten Kontextordner
- Teste Env-Isolation (nur eigene .env geladen, via Encryption entschlüsselt)
- Teste Wissensinjektion in Prompt
- Teste Task-Abbruch bei Out-of-Context-Zugriff
- Teste Multi-Harness-Dispatch (Konfiguration, Startsequenz, Fehlerbehandlung)
- Requirements: 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.9, 7.10
-
-
13. Shared Tooling und MCP-Konfiguration
-
13.1 MCP-Konfiguration-Merge und Shared-Tool-Versionierung implementieren
- Implementiere
ConfigMergerinsrc/monorepo/shared_config.py - Methode für MCP-Server-Konfiguration-Merge: Shared als Basis, kontextspezifische Überschreibungen mit Vorrang
- Konflikt-Protokollierung bei Überschreibungskonflikten
- Shared-Tool-Versionierung: Symlink- oder Import-basierter Mechanismus, sodass Kontexte automatisch die aktuelle Version verwenden
- Kiro Powers und Skills zentral im shared-Bereich ablegen, Read-Only-Referenz für alle Kontexte
- Agent-Erweiterungen in harness-unabhängigem Format (Markdown, YAML, Templates) mit Adapter-Mechanismus
- Requirements: 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9
- Implementiere
-
13.2 Property-Test: MCP-Konfiguration-Merge (Property 21)
- Property 21: MCP-Konfiguration-Merge mit Kontext-Vorrang
- Validates: Requirements 8.4, 8.6
-
13.3 Property-Test: Shared-Tool-Versionierung (Property 22)
- Property 22: Shared-Tool-Versionierung ohne manuelle Synchronisation
- Validates: Requirements 8.2
-
-
14. Checkpoint - Orchestrator, Shared Tooling und Migration
- Ensure all tests pass, ask the user if questions arise.
-
15. Federation-Manager (FederationManager)
-
15.1 FederationManager-Basisklasse und SubtreeSyncEngine implementieren
- Implementiere
FederationManagerinsrc/monorepo/federation.py - Implementiere
SubtreeSyncEngineinsrc/monorepo/federation.py - Methode
sync_from_team(context) -> SyncResult: Pull vom Team_Repo via git subtree pull - Methode
sync_to_team(context) -> SyncResult: Push zum Team_Repo via git subtree push - Methode
full_sync(context) -> SyncResult: Bidirektionale Synchronisation mit Konflikt-Erkennung - Methode
detect_conflicts(context) -> list[ConflictInfo]: Erkennt Merge-Konflikte vor Sync - Lade Konfiguration aus
shared/config/team-repos.yaml - Requirements: 10.1, 10.2, 10.3, 10.4, 10.8
- Implementiere
-
15.2 Team-Isolation und Cross-Context-Leakage-Prüfung implementieren
- Methode
verify_isolation(team_repo_path, context) -> IsolationReport: Prüft ob Team_Repo keine Referenzen auf andere Kontexte enthält - Prüfung auf: Pfad-Referenzen, Env-Variablen, Config-Referenzen, Kommentare zu anderen Kontexten
- Methode
prepare_team_repo(context) -> Path: Erzeugt Team_Repo mit nur eigenem Kontext - Secrets-Handling: Team_Repo enthält nur Secrets des eigenen Kontexts (entschlüsselt oder re-keyed mit Team-Schlüssel)
- Integration mit SecretEncryptionManager für kontextspezifische Secret-Filterung
- Requirements: 10.5, 10.9, 10.10
- Methode
-
15.3 Shared-Bereich-Spiegelung und Konflikt-Auflösung implementieren
- Methode
mirror_shared(context, paths) -> MirrorResult: Spiegelt shared-Dateien als Read-Only in Team_Repo - Methode
resolve_conflict(context, strategy) -> ConflictResult: Löst Sync-Konflikte auf (Standard: team-wins) - Methode
onboard_member(context, member_info) -> OnboardingResult: Erteilt Zugang nur zum Team_Repo - Single-Source-of-Truth-Logik: Team_Repo hat bei Konflikten Vorrang
- Konfigurierbare Sync-Frequenz: on-push, hourly, daily, manual
- Requirements: 10.6, 10.7, 10.9, 10.11, 10.12
- Methode
-
15.4 Property-Test: Team-Repos enthalten nur eigenen Kontext (Property 25)
- Property 25: Team-Repos enthalten ausschließlich Inhalte des eigenen Kontexts
- Validates: Requirements 10.5, 10.9, 10.10, 10.12
-
15.5 Property-Test: Bidirektionale Synchronisation (Property 26)
- Property 26: Bidirektionale Synchronisation bewahrt Git-Historie und löst Konflikte korrekt
- Validates: Requirements 10.3, 10.4, 10.6, 10.7, 10.8
-
15.6 Property-Test: Team-Mitglieder-Isolation (Property 27)
- Property 27: Team-Mitglieder können die Existenz anderer Kontexte nicht entdecken
- Validates: Requirements 10.5, 10.9
-
15.7 Unit-Tests für FederationManager
- Teste Subtree-Pull und -Push Operationen
- Teste Konflikt-Erkennung und -Auflösung (team-wins-Strategie)
- Teste Isolation-Check (Leakage-Erkennung für Pfade, Env-Vars, Config-Refs)
- Teste Shared-Mirror als Read-Only
- Teste Onboarding ohne Monorepo-Kenntnis
- Teste Sync-Abbruch bei Merge-Konflikten mit Protokollierung
- Requirements: 10.1, 10.3, 10.5, 10.6, 10.7, 10.9, 10.12
-
-
16. Checkpoint - Föderationsschicht
- Ensure all tests pass, ask the user if questions arise.
-
17. Integration und Verdrahtung
-
17.1 CLI-Tool (
ctx-guard) als Wrapper-Script erstellen- Erstelle CLI-Einstiegspunkt in
shared/tools/monorepo-cli/src/monorepo/cli.py - Kommandos:
init(Monorepo initialisieren),create-project,list-projects,add-repo,sync-repo,migrate,validate,search,encrypt,decrypt,onboard,fed-sync,fed-status - Verdrahte alle Komponenten: StructureManager, ContextGuard, KnowledgeStore, RepoManager, ContextBridge, MigrationEngine, OrchestratorAdapter, SecretEncryptionManager, FederationManager
- Konfiguration aus
monorepo.yamlundshared/config/laden - Requirements: 1.1, 1.2, 4.4, 6.3, 9.6, 10.11
- Erstelle CLI-Einstiegspunkt in
-
17.2 Git-Hooks und Dateisystem-Schutz integrieren
- Pre-commit Hook: Prüft Read-Only-Repos nicht verändert werden, unverschlüsselte Secrets nicht committet werden
- git-crypt-Filter-Integration: Sicherstellt dass Secrets automatisch verschlüsselt/entschlüsselt werden
- Integriere ContextGuard und SecretEncryptionManager in Hook-Chain
- Installationsskript für Hooks bei
init - Requirements: 2.4, 4.2, 4.5, 9.1, 9.9
-
17.3 Encryption-Security-Integration verdrahten
- Integriere SecretEncryptionManager mit ContextGuard: load_env nutzt Entschlüsselung
- Integriere SecretEncryptionManager mit FederationManager: Team_Repos erhalten nur eigene Secrets
- Integriere SecretEncryptionManager mit OrchestratorAdapter: Env-Loading via Encryption
- Requirements: 2.2, 9.3, 9.4, 10.10
-
17.4 Integration-Tests für End-to-End-Workflows
- Teste: Projekt erstellen → Env verschlüsseln → Env laden → Secret-Zugriff prüfen
- Teste: Artefakt erstellen → Indexieren → Suchen → Freigeben → Widerrufen
- Teste: Repo einbinden → Sync → Read-Only-Schutz
- Teste: Migration → Validierung → Rollback
- Teste: Secret verschlüsseln → Maschinenkontext wechseln → Entschlüsselung fehlschlägt
- Teste: Team_Repo vorbereiten → Isolation prüfen → Sync → Konflikt-Auflösung
- Teste: Shared-Mirror in Team_Repo → Read-Only-Prüfung
- Requirements: 1.1, 2.1, 3.2, 4.1, 5.2, 6.1, 9.1, 9.4, 10.3, 10.5, 10.12
-
-
18. Final Checkpoint - Alle Komponenten integriert
- Ensure all tests pass, ask the user if questions arise.
Notes
- Tasks marked with
*are optional and can be skipped for faster MVP - Each task references specific requirements for traceability
- Checkpoints ensure incremental validation
- Property tests validate universal correctness properties from the design document (P1-P27)
- Unit tests validate specific examples and edge cases
- Die ETL-Pipeline wird initial nur mit der Markdown-Quellstrategie implementiert; weitere Strategien (Confluence, PDF, Webseiten, GitLab) können später ergänzt werden
- Die DB-Wissensdatenbank-Integration (Requirement 3.1, 3.15, 4.8) wird über den RepoManager als Upstream-Repo eingebunden; die ETL-Pipeline-Fork-Adaption erfolgt im Wissensspeicher
- Git-Remote-Operationen (Push/Pull/Sync) werden in Integration-Tests mit gemockten Repos getestet
- git-crypt-Operationen (encrypt/decrypt) werden in Integration-Tests mit temporären Repos und Test-Schlüsseln getestet
- Team-Repo-Synchronisation wird mit lokalen Bare-Repos als Test-Remotes getestet
- Die Föderationsschicht (Task 15) baut auf dem SecretEncryptionManager (Task 4) auf und setzt diesen als Abhängigkeit voraus
- Passwort-Manager-Integration (Bitwarden, 1Password, KeePass) ist optional und kann durch lokalen Keyring ersetzt werden
Task Dependency Graph
{
"waves": [
{ "id": 0, "tasks": ["1.1"] },
{ "id": 1, "tasks": ["1.2"] },
{ "id": 2, "tasks": ["2.1", "3.1"] },
{ "id": 3, "tasks": ["2.2", "2.3", "2.4", "3.2", "4.1"] },
{ "id": 4, "tasks": ["3.3", "3.4", "3.5", "4.2"] },
{ "id": 5, "tasks": ["4.3", "4.4", "4.5", "4.6"] },
{ "id": 6, "tasks": ["6.1", "6.2"] },
{ "id": 7, "tasks": ["6.3", "6.4", "6.5"] },
{ "id": 8, "tasks": ["6.6", "6.7", "6.8", "6.9", "6.10"] },
{ "id": 9, "tasks": ["6.11", "6.12", "6.13"] },
{ "id": 10, "tasks": ["8.1", "9.1"] },
{ "id": 11, "tasks": ["8.2", "8.3", "8.4", "8.5", "9.2", "9.3", "9.4"] },
{ "id": 12, "tasks": ["11.1", "12.1"] },
{ "id": 13, "tasks": ["11.2", "11.3", "11.4", "11.5", "12.2", "12.3", "13.1"] },
{ "id": 14, "tasks": ["12.4", "12.5", "12.6", "13.2", "13.3"] },
{ "id": 15, "tasks": ["15.1"] },
{ "id": 16, "tasks": ["15.2", "15.3"] },
{ "id": 17, "tasks": ["15.4", "15.5", "15.6", "15.7"] },
{ "id": 18, "tasks": ["17.1"] },
{ "id": 19, "tasks": ["17.2", "17.3"] },
{ "id": 20, "tasks": ["17.4"] }
]
}