mindnet_obsidian/docs/09_Chain_Inspector_Workbench_Umsetzungsplan.md
Lars 725adb5302
Some checks are pending
Node.js build / build (20.x) (push) Waiting to run
Node.js build / build (22.x) (push) Waiting to run
Enhance UI and functionality for Chain Workbench and related features
- Introduced a wide two-column layout for the Chain Workbench modal, improving user experience and accessibility.
- Added new styles for workbench components, including headers, filters, and main containers, to enhance visual organization.
- Updated chain templates to allow for multiple distinct matches per template, improving flexibility in template matching.
- Enhanced documentation to clarify the new settings and commands related to the Chain Workbench and edge detection features.
- Implemented logging for better tracking of missing configurations, ensuring users are informed about any loading issues.
2026-02-05 11:41:15 +01:00

15 KiB
Raw Blame History

Umsetzungsplan: Chain Inspector & Chain Workbench (Section-Type-Integration)

Version: 1.0
Datum: 28. Januar 2026
Status: Entwurf
Bezug: 09_Chain_Inspector_Workbench_Lastenheft.md, 06_LH_WP26_Plugin_Integration.md (FA-PL-08), 10_Workbench_Findings_Integration.md, CHAIN_INSPECTOR_V0x_REPORTs


1. Übersicht

Dieser Umsetzungsplan beschreibt die detaillierte Implementierungsreihenfolge für:

  1. Section-Type-Integration in Chain Inspector und Chain Workbench (FA-PL-08, Lastenheft 09).
  2. Offene Punkte aus früheren Implementierungsplänen (Findings Integration, Chain Inspector Reports, Lastenheft „Nächste Schritte“).

Die Phasen bauen aufeinander auf; Abhängigkeiten sind explizit genannt.


2. Offene Punkte aus früheren Plänen (Konsolidiert)

2.1 Aus 10_Workbench_Findings_Integration.md

Offener Punkt Beschreibung Integration in Umsetzungsplan
Findings → Todos Workbench nutzt aktuell nur Template-Matches, nicht Findings (dangling_target, no_causal_roles, etc.). Phase 4: generateFindingsTodos, buildWorkbenchModel, UI.
Todo-Typen DanglingTargetTodo, OnlyCandidatesTodo, NoCausalRolesTodo, MissingEdgesTodo, OneSidedConnectivityTodo. Types bereits in workbench/types.ts; Generierung in Phase 4.
Priorität Findings vs. Template Sollen Findings-Todos höhere Priorität haben? Entscheidung: Section-Level Issues zuerst anzeigen (LH-CW-05).
Duplikate Vermeidung von Duplikaten (z. B. dangling_target vs. missing_link). Phase 4: Deduplizierung nach Kontext (file, heading, finding.code).
Filterung Filter nach Severity (z. B. nur Errors). Optional: Phase 5 oder später.
Actions create_missing_note, retarget_link, promote_all_candidates, change_edge_type, etc. Teilweise in Fix-Findings-Command (v0.3); no_causal_roles/missing_edges optional Phase 5.

2.2 Aus CHAIN_INSPECTOR Reports (v0.4, v0.4.2)

Offener Punkt Beschreibung Integration
Top-K Limit Nur Top-1 Match pro Template (K=1). Optional: K konfigurierbar (z. B. 3) bereits maxTemplateMatches in Options.
Node-Limit Max 30 Candidate-Nodes. Unverändert; Sicherheit.
slot_type_mismatch Finding nicht implementiert. Optional: Phase 3 oder später; aktuell Matching verhindert Mismatches.
Node-Type = Note-Type Template-Matching nutzt nur Frontmatter type. Phase 12: effective_type (Section-Type || Note-Type).
Profile (discovery/decisioning) Bereits in v0.4.2. Unverändert; Section-Type-Integration ergänzt.

2.3 Aus 06_LH_WP26_Plugin_Integration.md (Nächste Schritte)

Offener Punkt Beschreibung Integration
Commands sichtbar Inspect Chains / Chain Workbench nur bei geöffneter MD-Datei. Optional: Phase 5 zusätzliche Commands ohne editorCallback mit Notice.
Notice bei fehlenden Dictionaries Chain Roles/Templates nicht geladen → Notice + Abbruch. Bereits umgesetzt in main.ts; in Lastenheft 09 verbindlich (LH-CI-07).
FA-PL-08 Chain Workbench mit Section-Types. Phase 13: effective_type durchgängig.

2.4 Aus WP26_Plugin_Interface_Specification.md

Offener Punkt Beschreibung Integration
Section-Type in Chain-Matching WorkbenchMatch.sectionTypes, MissingLinkTodo.fromSectionType/toSectionType. Phase 2 (Template-Matching), Phase 4 (Todos).
Intra-Note-Edge-Erkennung detectIntraNoteEdges für bessere Chain-Analyse. Optional: Phase 3 oder später; abhängig von FA-PL-03/Graph-Index.

3. Voraussetzungen (Vorbedingungen)

  • FA-PL-01 (Section-Type-Callout-Parsing): [!section] muss im Section-Parser erkannt und als sectionType in NoteSection gespeichert werden.
    • Aktueller Stand: NoteSection in sectionParser.ts hat kein Feld sectionType bzw. blockId. Diese Erweiterung ist Voraussetzung für effective_type in Chain Inspector.
  • FA-PL-02 (Block-ID): Optional für bessere Referenzierung; nicht zwingend für effective_type.
  • FA-PL-13 (Types-Loader): Optional für Validierung von Section-Types.

Ohne FA-PL-01 (Section-Parser mit sectionType) kann Phase 1 nur mit Note-Type (bisherig) arbeiten; effective_type wird dann erst nach Implementierung von FA-PL-01 wirksam.


4. Phase 1: Section-Parser und effective_type-Grundlage

Ziel: Section-Type in der Codebasis verfügbar machen und in Template-Matching als effective_type nutzen.

4.1 Tasks

Nr Task Beschreibung Dateien Abhängigkeit
1.1 NoteSection um sectionType und blockId erweitern Interface NoteSection um sectionType: string | null und blockId: string | null erweitern; in splitIntoSections befüllen. src/mapping/sectionParser.ts
1.2 Parsing von [!section] Callout In splitIntoSections pro Section nach Zeile mit > [!section] <type> suchen (Regex z. B. /^\s*>\s*\[!section\]\s*(\w+)/i), Typ extrahieren und in sectionType speichern. src/mapping/sectionParser.ts 1.1
1.3 Parsing von Block-ID in Headings In Headings Muster ^#{1,6}\s+.+\s+\^([a-zA-Z0-9_-]+)$ erkennen, Block-ID in blockId speichern. src/mapping/sectionParser.ts 1.1
1.4 Graph-Index: Sections mit sectionType bereitstellen buildNoteIndex oder eine neue Hilfsfunktion muss Sections inkl. sectionType an Aufrufer liefern (z. B. als Map file:heading → sectionType oder erweiterte SectionNode-Struktur). src/analysis/graphIndex.ts, ggf. chainInspector.ts 1.2
1.5 effective_type-Funktion Hilfsfunktion getEffectiveType(file, heading, sectionsWithType, noteTypeByFile): string liefert sectionType für (file, heading) falls vorhanden, sonst noteType, sonst "unknown". src/analysis/templateMatching.ts oder neues Modul 1.4

Ergebnis Phase 1: Section-Parser liefert sectionType; effective_type ist pro (file, heading) berechenbar.


5. Phase 2: Chain Inspector effective_type im Template-Matching

Ziel: Template-Matching und Findings nutzen effective_type statt nur noteType.

5.1 Tasks

Nr Task Beschreibung Dateien Abhängigkeit
2.1 CandidateNode um effectiveType erweitern Interface CandidateNode um effectiveType: string erweitern (oder noteType durch effective_type ersetzen, falls Abwärtskompatibilität gewahrt wird: zusätzliches Feld). src/analysis/templateMatching.ts Phase 1
2.2 buildCandidateNodes: effective_type setzen Beim Aufbau der Candidate-Nodes für jeden Knoten (file, heading) effective_type ermitteln: Section-Type aus geparsten Sections (file muss gelesen, in Sections zerlegt werden; sectionType für passende Section verwenden), sonst noteType aus Frontmatter. src/analysis/templateMatching.ts 1.5, 2.1
2.3 nodeMatchesSlot mit effectiveType Slot-Constraint allowed_node_types gegen node.effectiveType prüfen (bereits konzeptionell; sicherstellen, dass das genutzte Feld effectiveType ist). src/analysis/templateMatching.ts 2.2
2.4 TemplateMatch / Report: typeSource optional In SlotAssignments optional typeSource?: "section" | "note" | "unknown" pro Slot für Provenance. src/analysis/chainInspector.ts, templateMatching.ts 2.2
2.5 Gap-Detection: fehlender Section-Type Wenn Slot z. B. "experience" erwartet, aber effective_type "unknown" oder nicht in allowed_node_types: Finding oder Todo-Vorschlag „Add Section Type“ / „Set section type to experience“. src/analysis/chainInspector.ts, ggf. todoGenerator.ts 2.3

Ergebnis Phase 2: Chain Inspector verwendet effective_type durchgängig; Gap-Detection kann fehlende Section-Types melden.


6. Phase 3: Chain Workbench Section-Type in Model und Todos

Ziel: Workbench-Model und Todo-Typen enthalten Section-Type-Information; Edge-Vorschläge können section-type-basiert erfolgen.

6.1 Tasks

Nr Task Beschreibung Dateien Abhängigkeit
3.1 WorkbenchMatch: sectionTypes / effectiveType pro Slot WorkbenchMatch (oder TemplateMatch) um optionale Map Slot-ID → effective_type erweitern; beim Aufbau aus TemplateMatch befüllen. src/workbench/types.ts, workbenchBuilder.ts Phase 2
3.2 MissingLinkTodo / MissingSlotTodo: fromSectionType, toSectionType Todos um optionale Felder fromSectionType, toSectionType (bzw. effective_type) erweitern; in todoGenerator aus SlotAssignments/effective_type füllen. src/workbench/types.ts, todoGenerator.ts 2.4, 3.1
3.3 Edge-Type-Vorschläge aus graph_schema Wenn fromSectionType und toSectionType vorhanden: getTopologyInfo(sourceType, targetType) aus Schema aufrufen und suggestedEdgeTypes daraus ableiten. src/workbench/todoGenerator.ts, schemaHelper.ts 3.2
3.4 Section-Type-Todo „Add Section Type“ Neuer Todo-Typ oder Erweiterung: Vorschlag „Add Section Type: experience“ bei Gap (vgl. LH-CW-06). src/workbench/todoGenerator.ts, types.ts 2.5, 3.1

Ergebnis Phase 3: Workbench zeigt Section-Type-Information in Matches und Todos; Edge-Vorschläge nutzen Section-Types wo vorhanden.


7. Phase 4: Findings-Integration (Workbench Findings Integration)

Ziel: Findings aus Chain Inspector werden in Workbench als globalTodos angezeigt; keine Duplikate mit Template-Todos.

7.1 Tasks

Nr Task Beschreibung Dateien Abhängigkeit
4.1 generateFindingsTodos implementieren Funktion wie in 10_Workbench_Findings_Integration.md: Findings (dangling_target, dangling_target_heading, only_candidates, missing_edges, no_causal_roles, one_sided_connectivity) in WorkbenchTodoUnion übersetzen. src/workbench/todoGenerator.ts
4.2 buildWorkbenchModel: globalTodos Nach Verarbeitung der Template-Matches: report.findings an generateFindingsTodos übergeben; Ergebnis in model.globalTodos speichern. src/workbench/workbenchBuilder.ts 4.1
4.3 WorkbenchModel.globalTodos Interface WorkbenchModel um globalTodos?: WorkbenchTodoUnion[] erweitern (falls noch nicht vorhanden). src/workbench/types.ts 4.2
4.4 Deduplizierung Wenn ein Finding und ein Template-Todo dasselbe Problem beschreiben (z. B. dangling_target vs. missing_link für dieselbe Datei/Section): nur eines anzeigen (z. B. Findings-Todo priorisieren oder Template-Todo). src/workbench/workbenchBuilder.ts 4.2
4.5 ChainWorkbenchModal: Section-Level Issues UI: Abschnitt „Section-Level Issues“ (oder „Findings“) mit globalTodos oberhalb der Template-Matches rendern. src/workbench/ChainWorkbenchModal.ts (bzw. wo das Modal lebt) 4.3
4.6 Findings mit effective_type Optional: In generateFindingsTodos Kontext (file, heading) nutzen und effective_type in Todo-Beschreibung oder -Metadaten aufnehmen. src/workbench/todoGenerator.ts Phase 2

Ergebnis Phase 4: Workbench zeigt Section-Level Issues aus Findings; Konsistenz mit Chain Inspector; klare Trennung Findings vs. Template-Matches.


8. Phase 5: UX, Commands, Optionale Erweiterungen

Ziel: Sichtbarkeit der Commands, optionale Filter/Actions, Dokumentation.

8.1 Tasks

Nr Task Beschreibung Dateien Abhängigkeit
5.1 Commands ohne Editor (optional) Zusätzliche Commands „Mindnet: Inspect Chains“ / „Mindnet: Chain Workbench“ ohne editorCallback; bei Aufruf ohne geöffnete MD-Datei: Notice „Bitte zuerst eine Markdown-Datei öffnen.“ (FA-PL-12a). src/main.ts
5.2 Notice bei fehlenden Dictionaries (Bestätigung) Sicherstellen, dass Inspect Chains und Chain Workbench bei fehlenden chain_roles/chain_templates mit Notice abbrechen (bereits in main.ts; nur prüfen). src/main.ts
5.3 Benutzerhandbuch Kurzabschnitt: „Inspect Chains“ und „Chain Workbench“ sind nur bei geöffneter Markdown-Datei in der Befehlspalette verfügbar; bei fehlenden Dictionary-Dateien erscheint ein Hinweis. docs (z. B. 01_Benutzerhandbuch.md)
5.4 Filter nach Severity (optional) Im Workbench Modal Filter „Nur Errors“ / „Errors und Warnings“ für globalTodos. src/workbench/ChainWorkbenchModal.ts 4.5
5.5 Actions für no_causal_roles / missing_edges (optional) Fix-Actions „Edge-Type ändern“ für no_causal_roles, „Add edges to section“ für missing_edges (vgl. 10_Workbench_Findings_Integration.md Phase 5). src/commands/fixFindingsCommand.ts, Workbench UI 4.1
5.6 slot_type_mismatch Finding (optional) Falls gewünscht: Finding ausgeben, wenn zugewiesener Node effective_type hat, der nicht in allowed_node_types liegt (aktuell verhindert Matching das). src/analysis/chainInspector.ts oder templateMatching Phase 2
5.7 Intra-Note-Edges in Chain-Analyse (optional) detectIntraNoteEdges nutzen, um Chains innerhalb einer Note zu erkennen (WP26-Spec). src/analysis/chainInspector.ts, graphIndex FA-PL-03

Ergebnis Phase 5: Bessere Auffindbarkeit der Commands, dokumentiertes Verhalten, optionale Erweiterungen umsetzbar.


9. Abhängigkeitsgraph (Kurz)

Phase 1 (Section-Parser, effective_type-Grundlage)
  → Phase 2 (Chain Inspector effective_type)
  → Phase 3 (Workbench Model/Todos Section-Type)
  → Phase 4 (Findings → globalTodos)  [4.14.3 unabhängig von Phase 2/3; 4.44.6 nutzen Kontext]
  → Phase 5 (UX, Commands, Optionen)
  • Phase 4.14.3 können parallel zu Phase 12 begonnen werden (Findings → Todos ohne Section-Type).
  • Phase 4.44.6 (Deduplizierung, UI, effective_type in Findings) profitieren von Phase 2/3.

10. Test- und Abnahmepunkte

  • Phase 1: Unit-Tests sectionParser (sectionType, blockId); Integration: buildNoteIndex liefert sectionType-Info.
  • Phase 2: Unit-Tests templateMatching (nodeMatchesSlot mit effectiveType); Integration: Inspect Chains Report mit effective_type in SlotAssignments.
  • Phase 3: Workbench zeigt fromSectionType/toSectionType in Todos; Edge-Vorschläge aus Schema.
  • Phase 4: Workbench zeigt globalTodos aus Findings; keine Doppelung mit Template-Todos; UI „Section-Level Issues“.
  • Phase 5: Commands ohne Editor zeigen Notice; Doku aktualisiert.

11. Referenzen

  • 09_Chain_Inspector_Workbench_Lastenheft.md Alle Anforderungen (LH-CI-xx, LH-CW-xx).
  • 06_LH_WP26_Plugin_Integration.md FA-PL-01, FA-PL-08, FA-PL-12a.
  • 10_Workbench_Findings_Integration.md generateFindingsTodos, Todo-Typen, Phasen.
  • CHAIN_INSPECTOR_V04_REPORT.md, CHAIN_INSPECTOR_V042_REPORT.md Template Matching, Profiles.
  • WP26_Plugin_Interface_Specification.md Section-Type in Chain Workbench.

Ende des Umsetzungsplans