fix: filter domain assembly scans to Default ALC to prevent type identity mismatches

Plugin assemblies loaded via PluginHost into isolated AssemblyLoadContexts
produce distinct types even from the same DLL. When AppDomain.GetAssemblies()
returns both Default and plugin-ALC copies, DI registration and IOptions<T>
resolution silently fail (e.g. ValkeyTransportOptions defaulting to localhost).

Applied AssemblyLoadContext.Default filter to all 7 assembly discovery sites:
- MessagingServiceCollectionExtensions (transport plugin scan)
- StellaRouterIntegrationHelper (transport plugin loader)
- Gateway.WebService Program.cs (startup transport scan)
- GeneratedEndpointDiscoveryProvider (endpoint provider scan)
- ReflectionEndpointDiscoveryProvider (endpoint attribute scan)
- ServiceCollectionExtensions (schema provider scan)
- MigrationModulePluginDiscovery (migration plugin scan)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
master
2026-03-04 14:01:12 +02:00
parent aaad8104cb
commit 7bafcc3eef
27 changed files with 32 additions and 634 deletions

View File

@@ -0,0 +1,52 @@
# Cartographer Module
**Status:** Implemented
**Source:** `src/Cartographer/`
## Purpose
The Cartographer service materializes immutable SBOM property graphs, precomputes layout tiles, and hydrates policy and VEX overlays so other services (API, UI, CLI) can navigate and reason about dependency relationships with context.
Boundary note: Cartographer is not the source of truth for environment topology
or promotion lanes; those are owned by Release Orchestrator ENVMGR/PROMOT.
## Components
**Services:**
- **StellaOps.Cartographer** - Core graph materialization, overlay management, and tile serving
## Key Features
- **Graph Materialization** - Convert normalized SBOMs (CycloneDX/SPDX) into immutable, versioned graph snapshots
- **Property Graph Generation** - Build dependency relationship graphs with context-aware nodes and edges
- **Overlay Hydration** - Merge Policy Engine findings and VEX metadata onto graph nodes and edges
- **Layout Tiles** - Precomputed viewport tiles for efficient UI navigation
- **Path Relevance** - Compute path importance within the dependency graph
- **Graph Diffing** - Compare SBOM versions to track changes
- **Tenant-Aware Storage** - Per-tenant graph isolation and versioning
## API Capabilities
- Viewport tile serving for large graphs (≥50k nodes)
- Path exploration and filtering
- Graph export and simulation overlays
- RBAC-enforced access control via Authority
## Dependencies
- **PostgreSQL** - Graph and overlay storage
- **Policy Engine** - Effective findings computation
- **SBom Service** - Normalized SBOM projections
- **Excititor** - VEX metadata ingestion
- **Authority** - Authentication and RBAC enforcement (scopes: `graph:*`, `sbom:read`, `findings:read`)
- **Scheduler** - Overlay update coordination
## Related Documentation
- **Architecture Charter:** See `src/Cartographer/StellaOps.Cartographer/AGENTS.md` for charter and responsibilities
- **Sprint Plan:** Check `docs/implplan/SPRINT_*.md` for current development status
- **Tasks:** Completed tasks documented in `src/Cartographer/StellaOps.Cartographer/TASKS.completed.md`
## Current Status
Active development. Materializes immutable SBOM property graphs with overlay hydration, deterministic snapshots, and optimized tile serving for dependency navigation.