mindnet/docs/05_Development/Obsidian/lint_regeln_Kausalität.md

137 lines
4.9 KiB
Markdown
Raw Permalink Normal View History

<!-- DOCUMENT 2: checklist_lint_regeln_mindnet_assistant.md -->
---
id: checklist_lint_regeln_mindnet_assistant
title: Checkliste – Lint-Regeln für Mindnet Causal Assistant
type: specification
status: draft
created: 2026-01-13
lang: de
---
# Checkliste – Lint-Regeln für Mindnet Causal Assistant
## Severity Levels
- **ERROR**: bricht Traversal/Indexer oder erzeugt falsche Nodes
- **WARN**: wahrscheinlich falsche Semantik / schlechter Retrieval-Impact
- **INFO**: Optimierung / Empfehlung
---
## A. Graph-Integrität & Naming
### L1 (ERROR) Missing Target Note
**Wenn:** Edge target `[[X]]` existiert nicht als Datei im Vault
**Dann:** Finding `missing_target`
**Fix:** „Create Stub Note“ (default `type: open_question`) oder remove edge
### L2 (ERROR) Node Splitting durch Schreibvarianten
**Wenn:** mehrere Targets im Vault sind ähnlich (slug distance), oder in Edges mehrere Varianten vorkommen
**Dann:** Finding `node_split_candidate`
**Fix:** Vorschlag canonical slug + bulk replace links
### L3 (ERROR) Invalid Filename Policy
**Wenn:** Dateiname enthält Zeichen außerhalb `[a-z0-9_]`
**Dann:** Finding `invalid_filename`
**Fix:** Rename file + update all backlinks
---
## B. Edge-Formale Regeln
### L4 (ERROR) Unknown Edge Type / Unmapped Alias
**Wenn:** raw edge type nicht im Vokabular (alias→canonical)
**Dann:** Finding `unknown_edge_type`
**Fix:** Edge type ersetzen durch best guess oder user selection
### L5 (WARN) Alias not normalized
**Wenn:** raw edge type ist Alias, canonical bekannt, aber Note enthält Alias
**Dann:** Finding `alias_not_normalized`
**Fix:** Replace raw with canonical (optional config)
### L6 (WARN) Missing Inverse Edge (optional strict mode)
**Wenn:** Edge A->B existiert, inverse nach Vokabular fehlt in B
**Dann:** Finding `missing_inverse`
**Fix:** Add inverse edge to target note (review + diff)
---
## C. Semantik: Kausalität vs Chronologie
### L7 (WARN) Chronology used as Causality
**Wenn:** Knoten/Target wirkt wie Prozessschritt („warten“, „gehen“, „ankommen“) und Edge type ist `resulted_in`
**Dann:** Finding `chronology_as_causality`
**Fix:** Vorschlag `followed_by` (inverse `preceeded_by`)
### L8 (INFO) Kausalität ohne Brücken (Gap)
**Wenn:** Pfad springt von Ereignis direkt zu Entscheidung, aber intermediäre Knoten fehlen (heuristisch)
**Dann:** Finding `missing_bridge_node`
**Fix:** Vorschlag „Create open_question bridge“ (z.B. „Was war der konkrete Auslöser…?“)
---
## D. Node-Type Regeln
### L9 (ERROR) Causal edges from open_question/hypothesis/white_spot
**Wenn:** node.type in `{open_question, hypothesis, white_spot}` und Edge type in `{caused_by, resulted_in, impacts, derived_from}`
**Dann:** Finding `invalid_causal_edge_from_uncertain`
**Fix:** Replace with `related_to` oder remove edge
### L10 (WARN) Hub/Insight Note trägt Kausalität
**Wenn:** node.type == `insight` (oder Hub-Pattern) und hat `caused_by/resulted_in`
**Dann:** Finding `hub_has_causality`
**Fix:** Replace edges with `related_to` und verschiebe Kausalität in atomare Notes
### L11 (WARN) Principle uses caused_by for origin
**Wenn:** node.type == `principle` und enthält `caused_by` zu Erlebnissen
**Dann:** Finding `principle_origin_edge`
**Fix:** Vorschlag `derived_from` oder `based_on`
### L12 (INFO) Decision without caused_by
**Wenn:** node.type == `decision` und hat keine `caused_by`-Kanten
**Dann:** Finding `decision_without_causes`
**Fix:** Wizard: „Was war der Auslöser?“ → create open_question or add edges
---
## E. Redundanz & Zyklen
### L13 (WARN) Duplicate Edges
**Wenn:** identische canonical edge mehrfach gesetzt (src,type,dst)
**Dann:** Finding `duplicate_edge`
**Fix:** remove duplicates
### L14 (WARN) Cycles in pure causality subgraph
**Wenn:** Zyklus ausschließlich über `{caused_by,resulted_in,derived_from,source_of}`
**Dann:** Finding `causal_cycle`
**Fix:** Markiere zur Review; oft ist eine Kante falsch gerichtet
---
## F. Traversal-Optimierung (Retrieval-Wirkung)
### L15 (INFO) Overuse of related_to
**Wenn:** Note enthält nur `related_to` und keine spezifischeren Kanten
**Dann:** Finding `weak_semantics`
**Fix:** Vorschlag: präzisere Beziehungstypen setzen
### L16 (INFO) Missing type metadata
**Wenn:** Frontmatter `type` fehlt
**Dann:** Finding `missing_type`
**Fix:** Prompt user to choose type; set via template
### L17 (INFO) Missing date on experience
**Wenn:** node.type == `experience` und kein Datum/Zeitraum vorhanden
**Dann:** Finding `missing_date_experience`
**Fix:** Prompt: „Wann ungefähr?“ → set `date` oder `time_range`
---
## Suggested Implementation Notes
- Jede Regel liefert:
- `ruleId`, `severity`, `message`, `location`, `evidence`, `quickFixes[]`
- QuickFixes sind Patch-Operationen:
- replaceText(range, text)
- insertBlock(atLine, block)
- createFile(path, content)
- renameFile(old, new) + updateLinks(glob)