Files
git.stella-ops.org/docs/features/checked/plugin/plugin-dependency-resolution.md
2026-02-12 10:27:23 +02:00

8.1 KiB

Plugin Dependency Resolution

Module

Plugin

Status

VERIFIED

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

Verification

Run ID: run-001 Date: 2026-02-10 (UTC)

Implementation Coverage

  • PluginDependencyResolver: 320 lines implementing topological sort with DFS cycle detection, version constraint parsing for 7 operators (>=, >, <=, <, =, ~pessimistic, ^compatible), optional dependency handling
  • DependencyGraph: 225 lines implementing bidirectional graph with AddNode, AddEdge, HasNode, GetDependents, topological traversal support

Test Coverage

  • DependencyResolverTests: 12 tests covering topological sort, circular dependency detection, version constraints, optional dependencies
  • DependencyGraphTests: 7 tests covering graph construction, edge management, dependent retrieval
  • Total: 19 tests, all PASS

Build Status

  • Build: PASS (0 errors, 0 warnings)
  • Tests: PASS (314/314 plugin tests pass)

Verdict

PASS - Plugin dependency resolution verified. Topological sort produces correct load order for dependency chains. Circular dependency detection reports accurate cycle paths via DFS. Version constraint matching works for all 7 operators (>=, >, <=, <, =, ~, ^). Unload order is reverse of load order. Optional dependencies do not block loading when missing.

Recheck (Run-002)

  • Verified: 2026-02-10
  • Method: Tier 2d deterministic integration replay.
  • Tests: PASS (src/Plugin/__Tests/StellaOps.Plugin.Host.Tests: 105/105; module matrix: 314/314).
  • Tier 2 Evidence: docs/qa/feature-checks/runs/plugin/plugin-dependency-resolution/run-002/tier2-integration-check.json
  • Outcome: Dependency resolution/load-order behavior remains stable.

Recheck (Run-003)

  • Verified: 2026-02-10
  • Method: Tier 2d deterministic integration replay (serialized project execution).
  • Tests: PASS (src/Plugin/__Tests/StellaOps.Plugin.Host.Tests: 105/105; module matrix: 314/314).
  • Tier 2 Evidence: docs/qa/feature-checks/runs/plugin/plugin-dependency-resolution/run-003/tier2-integration-check.json
  • Outcome: Dependency resolution/load-order behavior remains stable.

Recheck (Run-004)

  • Verified: 2026-02-10
  • Method: Tier 2d deterministic integration replay (serialized project execution).
  • Tests: PASS (src/Plugin/__Tests/StellaOps.Plugin.Host.Tests: 105/105; module matrix: 314/314).
  • Tier 2 Evidence: docs/qa/feature-checks/runs/plugin/plugin-dependency-resolution/run-004/tier2-integration-check.json
  • Outcome: Dependency graph/load-order behavior remains healthy.

Recheck (Run-005)

  • Verified: 2026-02-10
  • Method: Tier 2d deterministic integration replay (serialized project execution).
  • Tests: PASS (src/Plugin/__Tests/StellaOps.Plugin.Host.Tests: 105/105; module matrix: 314/314).
  • Tier 2 Evidence: docs/qa/feature-checks/runs/plugin/plugin-dependency-resolution/run-005/tier2-integration-check.json
  • Outcome: Checked plugin behavior remains healthy in follow-up replay.

Recheck (Run-006)

  • Verified: 2026-02-10
  • Method: Tier 2d deterministic integration replay (serialized project execution).
  • Tests: PASS (module matrix: 314/314).
  • Tier 2 Evidence: docs/qa/feature-checks/runs/plugin/plugin-dependency-resolution/run-006/tier2-integration-check.json
  • Outcome: Checked plugin behavior remains healthy in continued replay.

Recheck (Run-007)

  • Verified: 2026-02-10
  • Method: Tier 2d deterministic integration replay (serialized project execution).
  • Tests: PASS (module matrix: 314/314).
  • Tier 2 Evidence: docs/qa/feature-checks/runs/plugin/plugin-dependency-resolution/run-007/tier2-integration-check.json
  • Outcome: Checked plugin behavior remains healthy in continued replay.

Recheck (Run-008)

  • Verified: 2026-02-10
  • Method: Tier 2d deterministic integration replay (serialized module matrix).
  • Tests: PASS (Plugin matrix 314/314: Abstractions 79, Host 105, Registry 65, Sandbox 47, SDK 7, HelloWorld sample 11).
  • Tier 2 Evidence: docs/qa/feature-checks/runs/plugin/plugin-dependency-resolution/run-008/tier2-integration-check.json
  • Outcome: Checked Plugin behavior remains healthy in continued replay.

Recheck (Run-009)

  • Verified: 2026-02-10
  • Method: Tier 2d deterministic integration replay (serialized module matrix).
  • Tests: PASS (Plugin matrix 314/314: Abstractions 79, Host 105, Registry 65, Sandbox 47, SDK 7, HelloWorld sample 11).
  • Tier 2 Evidence: docs/qa/feature-checks/runs/plugin/plugin-dependency-resolution/run-009/tier2-integration-check.json
  • Outcome: Checked Plugin behavior remains healthy in continued replay.

Recheck (Run-010)

  • Verified: 2026-02-10
  • Method: Tier 2d deterministic integration replay.
  • Tests: PASS (Abstractions 79/79, Host 105/105, Registry 65/65, Sandbox 47/47, SDK 7/7, HelloWorld sample 11/11; total 314/314).
  • Tier 2 Evidence: docs/qa/feature-checks/runs/plugin/plugin-dependency-resolution/run-010/tier2-integration-check.json
  • Outcome: Checked plugin behavior remains healthy in continued replay.

Recheck (Run-011)

  • Verified: 2026-02-10
  • Method: Tier 2d deterministic integration replay.
  • Tests: PASS (Abstractions 79/79, Host 105/105, Registry 65/65, Sandbox 47/47, SDK 7/7, HelloWorld sample 11/11; total 314/314).
  • Tier 2 Evidence: docs/qa/feature-checks/runs/plugin/plugin-dependency-resolution/run-011/tier2-integration-check.json
  • Outcome: Checked plugin behavior remains healthy in continued replay.

Recheck (Run-012)

  • Verified: 2026-02-10
  • Method: Tier 2d serialized plugin replay.
  • Tests: PASS (Abstractions 79/79, Host 105/105, Registry 65/65, Sandbox 47/47, SDK 7/7, HelloWorld 11/11; total 314/314).
  • Tier 2 Evidence: docs/qa/feature-checks/runs/plugin/plugin-dependency-resolution/run-012/tier2-integration-check.json
  • Outcome: Checked plugin behavior remains healthy in continued replay.

Recheck (Run-013)

  • Verified: 2026-02-10
  • Method: Tier 2d deterministic integration replay with fresh command-output evidence.
  • Tests: PASS (105/105; Plugin matrix 314/314: Abstractions 79, Host 105, Registry 65, Sandbox 47, SDK 7, HelloWorld sample 11.)
  • Tier 2 Evidence: docs/qa/feature-checks/runs/plugin/plugin-dependency-resolution/run-013/tier2-integration-check.json
  • Outcome: Checked Plugin behavior remains healthy in continued replay.

Recheck (Run-014)

  • Verified: 2026-02-11
  • Method: Tier 2d deterministic integration replay with fresh per-feature command evidence + full suite replay.
  • Tests: PASS (105/105; module suite 314/314).
  • Tier 2 Evidence: docs/qa/feature-checks/runs/plugin/plugin-dependency-resolution/run-014/tier2-integration-check.json
  • Outcome: Dependency resolution checked behavior remains stable with fresh host replay evidence.