- Introduced final validation gate for edges with candidate: prefix. - Enabled automatic generation of mirror edges for explicit connections. - Added support for Note-Scope zones to facilitate global connections. - Enhanced section-based links in the multigraph system for improved edge handling. - Updated documentation and added new ENV variables for configuration. - Ensured no breaking changes for end users, maintaining full backward compatibility.
4.9 KiB
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)