WP4d #16

Merged
Lars merged 33 commits from WP4d into main 2025-12-30 12:25:33 +01:00
Owner

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]


# 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] ```
Lars added 33 commits 2025-12-30 12:25:14 +01:00
Lars merged commit cd5056d4c9 into main 2025-12-30 12:25:33 +01:00
Lars deleted branch WP4d 2025-12-30 12:25:33 +01:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Lars/mindnet#16
No description provided.