141 lines
8.2 KiB
Markdown
141 lines
8.2 KiB
Markdown
# 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
|
|
- [x] Verify filesystem discovery scans configured paths and finds plugin assemblies
|
|
- [x] Test embedded discovery locates plugins within host assemblies
|
|
- [x] Verify composite discovery deduplicates plugins by ID across sources
|
|
- [x] Test single plugin discovery routes to correct discoverer by source type
|
|
- [x] 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.
|
|
|