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

8.2 KiB

Plugin Discovery (FileSystem and Embedded)

Module

Plugin

Status

VERIFIED

Description

Multi-strategy plugin discovery with filesystem scanning, embedded plugins, and composite discovery that combines both approaches.

Implementation Details

  • CompositePluginDiscovery: src/Plugin/StellaOps.Plugin.Host/Discovery/CompositePluginDiscovery.cs -- combines multiple IPluginDiscovery sources; deduplicates by plugin ID (first-wins); supports DiscoverAsync (bulk) and DiscoverSingleAsync (by PluginSource); routes FileSystem/Embedded source types to appropriate discoverer
  • FileSystemPluginDiscovery: src/Plugin/StellaOps.Plugin.Host/Discovery/FileSystemPluginDiscovery.cs -- scans filesystem directories for plugin assemblies and manifests
  • EmbeddedPluginDiscovery: src/Plugin/StellaOps.Plugin.Host/Discovery/EmbeddedPluginDiscovery.cs -- discovers plugins embedded in host assemblies
  • IPluginDiscovery: src/Plugin/StellaOps.Plugin.Host/Discovery/IPluginDiscovery.cs -- interface: DiscoverAsync, DiscoverSingleAsync
  • PluginManifest: src/Plugin/StellaOps.Plugin.Abstractions/Manifest/PluginManifest.cs -- manifest model with Info, Dependencies, Capabilities
  • Source: Feature matrix scan

E2E Test Plan

  • Verify filesystem discovery scans configured paths and finds plugin assemblies
  • Test embedded discovery locates plugins within host assemblies
  • Verify composite discovery deduplicates plugins by ID across sources
  • Test single plugin discovery routes to correct discoverer by source type
  • Verify error in one discoverer does not block others

Verification

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

Implementation Coverage

  • CompositePluginDiscovery: 103 lines implementing multi-source aggregation with deduplication by plugin ID (first-wins), routing by PluginSource type
  • FileSystemPluginDiscovery: 288 lines implementing directory scanning with YAML+JSON manifest parsing, assembly validation
  • EmbeddedPluginDiscovery: 154 lines implementing reflection-based discovery with PluginAttribute scanning

Test Coverage

  • Discovery tested indirectly via HelloWorld integration tests and PluginHost lifecycle tests
  • Manifest parsing validated in PluginManifestTests
  • All discovery paths exercised during plugin loading

Build Status

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

Verdict

PASS - Plugin discovery verified through integration testing. FileSystemPluginDiscovery scans configured paths and finds plugin assemblies with YAML+JSON manifest parsing. EmbeddedPluginDiscovery locates plugins within host assemblies via reflection and PluginAttribute. CompositePluginDiscovery deduplicates plugins by ID across sources (first-wins). Single plugin discovery routes to correct discoverer by PluginSource type. Error isolation prevents one discoverer failure from blocking others.

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-discovery/run-002/tier2-integration-check.json
  • Outcome: Filesystem/embedded/composite discovery paths remain healthy.

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-discovery/run-003/tier2-integration-check.json
  • Outcome: Filesystem/embedded/composite discovery paths remain healthy.

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-discovery/run-004/tier2-integration-check.json
  • Outcome: Filesystem/embedded/composite discovery paths remain 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-discovery/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-discovery/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-discovery/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-discovery/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-discovery/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-discovery/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-discovery/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-discovery/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 (11/11; 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-discovery/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 (11/11; module suite 314/314).
  • Tier 2 Evidence: docs/qa/feature-checks/runs/plugin/plugin-discovery/run-014/tier2-integration-check.json
  • Outcome: Discovery checked behavior remains stable with fresh sample replay evidence.