- Introduced new workflows for Chain Workbench and Vault Triage, enhancing user capabilities for managing template matches and identifying chain gaps. - Added commands for opening the Chain Workbench and scanning the vault for chain gaps, improving the overall functionality of the plugin. - Updated documentation to include detailed instructions for the new workflows, ensuring users can effectively utilize the features. - Enhanced the UI for both the Chain Workbench and Vault Triage Scan, providing a more intuitive user experience. - Implemented tests for the new functionalities to ensure reliability and accuracy in various scenarios.
11 KiB
Chain Workbench - Analyse-Basis und Erweiterungen
Version: 0.5.x
Stand: 2025-01-XX
Zielgruppe: Entwickler, Architekten
Übersicht
Die Chain Workbench (0.5.x) basiert hauptsächlich auf den Analysen aus Chain Inspector (0.4.x), erweitert diese aber um zusätzliche Heuristiken und granularere Todo-Generierung.
Basis: Chain Inspector 0.4.x Analysen
Template Matching (0.4.x)
Die Workbench nutzt direkt die Template Matches aus Chain Inspector:
TemplateMatchInterface:templateName: Name des Templatesscore: Match-Score (+10 pro Link, +2 pro Slot, -5 pro fehlendem required Link)slotAssignments: Map von Slot-ID → Node-ReferenzmissingSlots: Array von fehlenden Slot-IDssatisfiedLinks: Anzahl erfüllter LinksrequiredLinks: Anzahl erforderlicher LinksroleEvidence: Array von Edge-Role-EvidenceslotsComplete: BooleanlinksComplete: Booleanconfidence: "confirmed" | "plausible" | "weak"
Quelle: src/analysis/chainInspector.ts → inspectChains() → matchTemplates()
Findings aus 0.4.x (aktuell NICHT verwendet, aber sollten integriert werden)
Status: Die Findings aus Chain Inspector werden aktuell nicht in der Workbench verwendet, obwohl sie aufwendig getestet wurden und wertvolle Informationen liefern.
Findings aus 0.4.x:
missing_edges- Section hat Content aber keine Edgesone_sided_connectivity- Nur incoming oder nur outgoing edgesonly_candidates- Nur Candidate-Edges, keine explizitendangling_target- Target-Datei existiert nichtdangling_target_heading- Target-Heading existiert nichtno_causal_roles- Section hat Edges aber keine kausalen Rollenmissing_slot_<slotId>- Template-basiert: Slot fehlt (aggregiert)missing_link_constraints- Template-basiert: Links fehlen (aggregiert)weak_chain_roles- Template-basiert: Nur non-causal Rollen (aggregiert)
Warum aktuell nicht verwendet?
- Die Workbench fokussiert sich aktuell nur auf Template-basierte Todos
- Findings sind teilweise aggregiert (z.B. "missing_slot_trigger" für alle Matches)
- Workbench benötigt granulare Todos pro Match (z.B. "missing_slot_trigger" für jeden Match einzeln)
- Workbench benötigt konkrete Actions (z.B.
insert_edge_forward,create_note_via_interview)
Sollten integriert werden: Die Findings könnten als zusätzliche Todos integriert werden:
dangling_target→ Todo mit Actioncreate_missing_noteoderretarget_linkdangling_target_heading→ Todo mit Actioncreate_missing_headingoderretarget_to_existing_headingonly_candidates→ Todo mit Actionpromote_all_candidatesodercreate_explicit_edgesmissing_edges→ Todo mit Actionadd_edges_to_sectionno_causal_roles→ Todo ähnlich wieweak_roles, aber section-weit (nicht template-basiert)one_sided_connectivity→ Informatives Todo (keine Action, nur Hinweis)
Vorteil der Integration:
- Nutzung der getesteten Heuristiken aus 0.4.x
- Vollständigere Analyse (nicht nur Template-basiert)
- Konsistenz zwischen Chain Inspector und Workbench
Neue Analysen in 0.5.x
1. Status-Berechnung (statusCalculator.ts)
Neu in 0.5.x: Berechnet MatchStatus basierend auf Slot/Link-Erfüllung:
complete:slotsFilled == slotsTotal && linksSatisfied == linksRequirednear_complete:slotsFilled == slotsTotal && (linksRequired - linksSatisfied) in {1,2}- ODER
(slotsTotal - slotsFilled) == 1 && linksSatisfied == linksRequired
weak: Match vorhanden, aber nur structural/temporal Rollen (keine causal)partial: Sonstige Fälle mit mindestens einer Lücke
Basis: TemplateMatch aus 0.4.x, aber neue Heuristik für Status-Kategorisierung.
2. Granulare Todo-Generierung (todoGenerator.ts)
Neu in 0.5.x: Generiert konkrete Todos pro Match:
missing_slot Todo
- Basis:
match.missingSlotsaus TemplateMatch - Erweiterung:
- Pro Slot ein Todo (nicht aggregiert)
- Enthält
allowedNodeTypesfür Interview-Filterung - Enthält Actions:
["link_existing", "create_note_via_interview"]
missing_link Todo
- Basis: Template-Links aus
template.links+match.slotAssignments - Erweiterung:
- Prüft, ob beide Slots gefüllt sind, aber Link fehlt
- Enthält
fromNodeRefundtoNodeRef(konkrete Referenzen) - Enthält
suggestedEdgeTypesauschain_roles.yaml - Enthält Actions:
["insert_edge_forward", "insert_edge_inverse", "choose_target_anchor"]
weak_roles Todo
- Basis:
match.roleEvidenceaus TemplateMatch - Erweiterung:
- Prüft, ob alle Rollen structural/temporal sind (keine causal)
- Enthält Liste von
edgesmitcurrentRoleundsuggestedRoles - Enthält Actions:
["change_edge_type"]
candidate_cleanup Todo (NEU)
- Basis: Candidate-Edges aus
graphIndex+missing_linkTodos - Vollständig neu:
- Findet Candidate-Edges, die zu
missing_linkRequirements passen - Relation-Equality-Check: Prüft, ob bereits ein confirmed Edge für dieselbe Relation existiert
- Wenn ja → kein Todo (verhindert Duplikate)
- Wenn nein → Todo mit
promote_candidateAction
- Findet Candidate-Edges, die zu
Relation-Equality-Logik:
// Prüft:
// 1. Direction match (from → to)
// 2. Node-Refs match (file + heading)
// 3. Canonical Edge-Type match (via edge_vocabulary.md)
3. Effective Required Links Resolution
Neu in 0.5.x: Resolved required_links Flag mit Priorität:
template.matching?.required_links(höchste Priorität)profile.required_linksdefaults.matching?.required_links- Fallback:
false
Basis: TemplateMatch nutzt bereits requiredLinks, aber Workbench benötigt explizite Resolution für UI-Darstellung.
Vergleich: Findings vs. Todos
| Aspekt | Chain Inspector 0.4.x (Findings) | Chain Workbench 0.5.x (Todos) |
|---|---|---|
| Granularität | Aggregiert (pro Template-Typ) | Granular (pro Match, pro Slot/Link) |
| Format | Finding Interface (code, severity, message) |
WorkbenchTodoUnion Interface (type, actions, refs) |
| Actions | Keine (nur Informativ) | Konkrete Actions (insert_edge_forward, etc.) |
| Basis | Template Matches + Gap-Heuristiken | Template Matches + zusätzliche Analysen |
| Verwendung | Console-Output, Fix Findings Command | Workbench UI, interaktive Bearbeitung |
Abhängigkeiten
Direkte Abhängigkeiten (0.4.x)
-
TemplateMatchauschainInspector.ts- Wird direkt verwendet für Status-Berechnung und Todo-Generierung
-
ChainTemplatesConfigausdictionary/types.ts- Wird verwendet für Slot/Link-Definitionen und
allowed_node_types
- Wird verwendet für Slot/Link-Definitionen und
-
ChainRolesConfigausdictionary/types.ts- Wird verwendet für
suggestedEdgeTypesinmissing_linkTodos
- Wird verwendet für
-
EdgeVocabularyausvocab/types.ts- Wird verwendet für Canonical-Type-Resolution (Relation-Equality)
-
IndexedEdge[]ausgraphIndex.ts- Wird verwendet für Candidate/Confirmed-Edge-Trennung
Indirekte Abhängigkeiten
-
Template Matching Algorithmus (0.4.x)
- Backtracking-Algorithmus für Slot-Assignment
- Scoring-Mechanismus (+10 pro Link, +2 pro Slot, -5 pro fehlendem required Link)
-
Edge-Role-Mapping (0.4.x)
chain_roles.yaml→ Edge-Types → Roles- Wird verwendet für
weak_rolesDetection
Neue Heuristiken (nicht in 0.4.x)
1. Relation-Equality-Check
Zweck: Verhindert Duplikate bei Candidate-Cleanup.
Logik:
- Prüft, ob bereits ein confirmed Edge für dieselbe Relation existiert
- Relation = (fromNodeRef, toNodeRef, canonicalEdgeType)
- Wenn ja → kein
candidate_cleanupTodo
Implementierung: todoGenerator.ts → checkRelationExists()
2. Status-Kategorisierung
Zweck: Priorisierung von Matches in Workbench UI.
Logik:
complete→ höchste Priorität (grün)near_complete→ hohe Priorität (gelb)partial→ mittlere Priorität (orange)weak→ niedrige Priorität (rot)
Implementierung: statusCalculator.ts → calculateMatchStatus()
3. Effective Required Links Resolution
Zweck: Korrekte Darstellung von Link-Requirements in UI.
Logik:
- Resolved
required_linksFlag mit Priorität (template > profile > defaults) - Beeinflusst, ob
missing_linkTodos generiert werden
Implementierung: statusCalculator.ts → getEffectiveRequiredLinks()
Zusammenfassung
Basierend auf 0.4.x
✅ Template Matches - Direkt verwendet
✅ Slot-Assignments - Direkt verwendet
✅ Missing Slots - Direkt verwendet
✅ Role Evidence - Direkt verwendet
✅ Edge-Role-Mapping - Direkt verwendet
✅ Canonical Edge Types - Direkt verwendet
Neu in 0.5.x
🆕 Status-Berechnung - Neue Heuristik
🆕 Granulare Todos - Pro Match, pro Slot/Link
🆕 Candidate-Cleanup - Relation-Equality-Check
🆕 Effective Required Links - Prioritäts-Resolution
🆕 Action-System - Konkrete Actions pro Todo
Nicht verwendet aus 0.4.x (sollten integriert werden)
⚠️ Findings - Werden aktuell nicht verwendet, sollten aber integriert werden
⚠️ Gap-Heuristiken - Werden aktuell nicht verwendet, sollten aber integriert werden
⚠️ Dangling Target Checks - Werden aktuell nicht verwendet, sollten aber integriert werden
Empfehlung: Die Findings sollten als zusätzliche Todos in die Workbench integriert werden, um die getesteten Heuristiken zu nutzen und eine vollständigere Analyse zu bieten.
Fazit
Die Chain Workbench (0.5.x) basiert hauptsächlich auf den Template Matches aus Chain Inspector (0.4.x), erweitert diese aber um:
- Granulare Todo-Generierung (pro Match, pro Slot/Link)
- Status-Kategorisierung (complete, near_complete, partial, weak)
- Candidate-Cleanup-Heuristik (Relation-Equality-Check)
- Action-System (konkrete Actions pro Todo)
Aktueller Stand: Die Workbench verwendet aktuell nur die Template Matches aus 0.4.x, nicht die Findings. Dies ermöglicht eine interaktive Bearbeitung mit konkreten Actions.
Empfohlene Erweiterung: Die Findings aus 0.4.x sollten als zusätzliche Todos integriert werden, um:
- Die getesteten Heuristiken zu nutzen
- Eine vollständigere Analyse zu bieten (nicht nur Template-basiert)
- Konsistenz zwischen Chain Inspector und Workbench zu gewährleisten
Nächste Schritte:
- Findings aus
report.findingsinbuildWorkbenchModeleinlesen - Findings zu Todos konvertieren (mit entsprechenden Actions)
- Findings-Todos zu den Template-basierten Todos hinzufügen
- UI erweitern, um beide Todo-Typen anzuzeigen
Letzte Aktualisierung: 2025-01-XX
Version: 0.5.x