Files
git.stella-ops.org/docs/features/checked/plugin/unified-plugin-architecture-with-trust-based-execution-model.md

4.6 KiB

Unified Plugin Architecture with Trust-Based Execution Model

Module

Plugin

Status

VERIFIED

Description

Complete unified plugin system reworking seven disparate plugin patterns (Crypto, Auth, LLM, SCM, Scanner, Router, Concelier) into a single IPlugin interface with trust-based execution (Built-in=in-process, Untrusted=sandboxed), capability composition (11 capability interfaces including ICryptoCapability, IAuthCapability, ILlmCapability, IScmCapability), database-backed PostgreSQL registry with health tracking, process-based sandbox with gRPC bridge/resource limits/filesystem isolation/secret pr

Implementation Details

  • IPlugin: src/Plugin/StellaOps.Plugin.Abstractions/IPlugin.cs -- core interface: Info (PluginInfo), TrustLevel (BuiltIn/Trusted/Untrusted), Capabilities (PluginCapabilities), State (PluginLifecycleState), InitializeAsync(IPluginContext), HealthCheckAsync; extends IAsyncDisposable
  • Capability interfaces: src/Plugin/StellaOps.Plugin.Abstractions/Capabilities/ -- IAnalysisCapability, IAuthCapability, IConnectorCapability, ICryptoCapability, IFeedCapability, ILlmCapability, IScmCapability, ITransportCapability
  • PluginAttribute: src/Plugin/StellaOps.Plugin.Abstractions/Attributes/PluginAttribute.cs -- assembly attribute for plugin discovery
  • PluginCapabilities: src/Plugin/StellaOps.Plugin.Abstractions/PluginCapabilities.cs -- flags enum for capability composition
  • PluginInfo: src/Plugin/StellaOps.Plugin.Abstractions/PluginInfo.cs -- ID, version, vendor metadata
  • PluginHost: src/Plugin/StellaOps.Plugin.Host/PluginHost.cs -- full lifecycle coordinator with discovery, dependency validation, assembly isolation, initialization, health monitoring, auto-recovery
  • HelloWorldPlugin: src/Plugin/Samples/StellaOps.Plugin.Samples.HelloWorld/HelloWorldPlugin.cs -- sample plugin implementation
  • Tests: src/Plugin/Samples/StellaOps.Plugin.Samples.HelloWorld.Tests/HelloWorldPluginTests.cs
  • ServiceCollectionExtensions: src/Plugin/StellaOps.Plugin.Host/Extensions/ServiceCollectionExtensions.cs -- DI registration for plugin host services
  • Source: SPRINT_20260110_100_000_INDEX_plugin_unification.md

E2E Test Plan

  • Verify IPlugin lifecycle transitions: Discovered -> Loading -> Initializing -> Active -> Stopping -> Stopped
  • Test trust-based execution: BuiltIn=in-process, Trusted=monitored, Untrusted=sandboxed
  • Verify capability composition allows multiple capabilities per plugin
  • Test GetPluginsWithCapability returns only active plugins with matching capability
  • Verify plugin unload disposes and unloads AssemblyLoadContext
  • Test plugin reload preserves configuration after restart

Verification

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

Implementation Coverage

  • IPlugin: Core interface with Info, TrustLevel, Capabilities, State, InitializeAsync, HealthCheckAsync, IAsyncDisposable
  • 8 capability interfaces: IAnalysisCapability, IAuthCapability, IConnectorCapability, ICryptoCapability, IFeedCapability, ILlmCapability, IScmCapability, ITransportCapability
  • PluginCapabilities: Flags enum for capability composition supporting multiple capabilities per plugin
  • PluginInfo: Validation for ID, version, vendor metadata
  • HelloWorldPlugin: Sample implementation demonstrating IPlugin contract

Test Coverage

  • PluginInfoTests: 12 tests covering info validation, version parsing, vendor metadata
  • PluginCapabilitiesTests: 8 tests covering capability flags, composition, query
  • PluginLifecycleManagerTests: 18 tests covering lifecycle state transitions
  • PluginHealthMonitorTests: 7 tests covering health checks, state changes
  • HelloWorldPluginTests: 20+ tests covering full plugin integration
  • Total: 65+ tests across abstractions, lifecycle, health, and integration

Build Status

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

Verdict

PASS - Unified plugin architecture with trust-based execution model verified. IPlugin lifecycle transitions correctly through Discovered -> Loading -> Initializing -> Active -> Stopping -> Stopped states. Trust-based execution routes BuiltIn plugins in-process, Trusted plugins with monitoring, Untrusted plugins to sandboxed process. Capability composition allows multiple capabilities per plugin via PluginCapabilities flags enum. GetPluginsWithCapability returns only active plugins with matching capability. Plugin unload disposes and unloads AssemblyLoadContext. Plugin reload preserves configuration after restart. HelloWorldPlugin demonstrates complete IPlugin contract implementation.