24 lines
1.4 KiB
Markdown
24 lines
1.4 KiB
Markdown
# Plugin Dependency Resolution
|
|
|
|
## Module
|
|
Plugin
|
|
|
|
## Status
|
|
IMPLEMENTED
|
|
|
|
## Description
|
|
Plugin dependency resolution with resolver service, interface, and comprehensive tests.
|
|
|
|
## Implementation Details
|
|
- **PluginDependencyResolver**: `src/Plugin/StellaOps.Plugin.Host/Dependencies/PluginDependencyResolver.cs` -- topological sorting of plugin manifests for load order; cycle detection via DFS with CircularDependencyError reporting; version constraint parsing (>=, >, <=, <, =, ~pessimistic, ^compatible); AreDependenciesSatisfied/GetMissingDependencies for optional dependency support; reverse load order for unload sequence
|
|
- **IPluginDependencyResolver**: `src/Plugin/StellaOps.Plugin.Host/Dependencies/IPluginDependencyResolver.cs` -- interface: ResolveLoadOrder, ResolveUnloadOrder, AreDependenciesSatisfied, GetMissingDependencies, ValidateDependencyGraph
|
|
- **DependencyGraph**: `src/Plugin/StellaOps.Plugin.Host/Dependencies/DependencyGraph.cs` -- graph data structure with AddNode, AddEdge, HasNode, GetDependents
|
|
- **Source**: Feature matrix scan
|
|
|
|
## E2E Test Plan
|
|
- [ ] Verify topological sort produces correct load order for a dependency chain
|
|
- [ ] Test circular dependency detection reports correct cycle paths
|
|
- [ ] Verify version constraint matching for all operators (>=, >, <=, <, =, ~, ^)
|
|
- [ ] Test unload order is reverse of load order
|
|
- [ ] Verify optional dependencies do not block loading when missing
|