mindnet/docs/99_Archive/WP4d_merge_commit.md

4.0 KiB

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]