# Branch Merge Commit Message: WP4d ``` feat: Section-basierte Links, Atomic Section Chunking & Registry-First Profiling (v2.9.1) ## Graph Topology & Edge Management ### Section-basierte Links (Multigraph-Support) - Split `[[Note#Section]]` Links in `target_id="Note"` und `target_section="Section"` - Edge-ID enthält nun `variant` (Section), ermöglicht mehrere Kanten zwischen denselben Knoten - Semantische Deduplizierung basiert auf `src->tgt:kind@sec` Key - Behebt "Phantom-Knoten" durch korrekte Trennung von Note-Name und Abschnitt **Geänderte Dateien:** - `app/core/graph/graph_utils.py`: `parse_link_target()` für Section-Extraktion - `app/core/graph/graph_derive_edges.py`: `target_section` in Edge-Payload - `app/core/database/qdrant.py`: Keyword-Index für `target_section` - `app/core/database/qdrant_points.py`: Explizites Durchreichen von `target_section` - `app/models/dto.py`: `EdgeDTO` mit `target_section` Feld ### Extraction & Parsing Verbesserungen - Multi-line Callout-Blocks korrekt verarbeitet (stop-check logic) - Robuster Fallback für "headless" Blocks (split chunks) - Liberalisierte Regex für Umlaute und Sonderzeichen in Targets **Geänderte Dateien:** - `app/core/graph/graph_extractors.py`: Multi-line Callout-Parser, erweiterte Regex ## Chunking & Ingestion (v3.9.9 / v2.13.12) ### Atomic Section Logic (v3.9.9) - Vollständige Implementierung des "Pack-and-Carry-Over" Verfahrens (Regel 1-3) - Sektions-Überschriften und Inhalte bleiben atomar in Chunks - H1-Context Preservation: Dokumenttitel als Breadcrumb in Embedding-Fenster - Signature Alignment: Parameter-Synchronisierung (`context_prefix` statt `doc_title`) **Geänderte Dateien:** - `app/core/chunking/chunking_strategies.py`: Atomic Section Logic implementiert ### Format-agnostische De-Duplizierung - Prüfung auf vorhandene Kanten basiert auf Ziel (`target`), nicht String-Match - Verhindert Dopplung von Kanten, die bereits via `[!edge]` Callout vorhanden sind - Global Pool Integration für unzugeordnete Kanten **Geänderte Dateien:** - `app/core/chunking/chunking_propagation.py`: Ziel-basierte Prüfung ### Registry-First Profiling (v2.13.12) - Korrekte Hierarchie: Frontmatter > types.yaml Typ-Config > Global Defaults - Hard-Fallback auf `sliding_standard` nur wenn keine Konfiguration existiert - Automatische Anwendung korrekter Profile basierend auf Note-Typ ### Deterministic Hashing - `full`-Hash inkludiert strategische Parameter (`split_level`, `strict_heading_split`) - Konfigurationsänderungen im Frontmatter lösen zwingend Re-Import aus **Geänderte Dateien:** - `app/core/ingestion/ingestion_processor.py`: Registry-First Profiling, Deterministic Hashing ## Impact & Breaking Changes ### Migration erforderlich **WICHTIG:** Vollständiger Re-Import erforderlich für bestehende Vaults: ```bash python3 -m scripts.import_markdown --vault ./vault --prefix "mindnet" --apply --force ``` **Grund:** - Behebt "Phantom-Knoten" durch korrekte Aufteilung von `[[Note#Section]]` Links - Konsolidiert Edge-Struktur mit `target_section` Feld - Aktualisiert Chunking basierend auf neuen Strategien ### Fixes - ✅ Resolves: Mehrere Links zur gleichen Note in einem Callout-Block wurden zu einer Kante gemergt - ✅ Resolves: "Phantom-Knoten" durch Einbeziehung des Anchors in `target_id` - ✅ Resolves: Redundante `[[rel:...]]` Links in Chunks - ✅ Resolves: Inkonsistente Metadaten in Qdrant durch Registry-First Profiling ## Dokumentation Alle relevanten Dokumente aktualisiert: - `03_tech_data_model.md`: Edge Payload Schema mit `target_section` - `02_concept_graph_logic.md`: Section-basierte Links & Multigraph-Support - `03_tech_ingestion_pipeline.md`: Chunking-Strategien, Registry-First Profiling - `03_tech_api_reference.md`: EdgeDTO mit `target_section` - `01_knowledge_design.md`: Deep-Links dokumentiert - `00_glossary.md`: Neue Begriffe ergänzt - `04_admin_operations.md`: Migration-Hinweis ## Versionen - Graph Topology: v2.9.1 - Chunking Strategies: v3.9.9 - Ingestion Processor: v2.13.12 - API DTO: v0.6.7 Closes #[issue-number] ```