Commit 79f8b84
docs(arch): BMAD Architect analysis — Shell Libraries (Factory, Aop, Bootstrapper)
Complete technical documentation covering:
- Ums.Shell.Factory
Decision: KEEP & adopt (Sprint 5+)
Unique value: predicate-based selector that native .NET Keyed Services do not provide.
Relevant for EP-06 MFA factor selection and EP-07 notification channel routing.
Action: move project reference from Ums.Domain → Ums.Infrastructure.
- Ums.Shell.Aop
Decision: ADOPT ACTIVELY (Sprint 2-3)
Highest value of the three. DispatchProxy-based AOP, zero IL weaving.
Detailed logging decorator proposal with [Log] attribute, LoggingAspect,
async Task unwrapping pattern, and aspect ordering conventions (Tracing 10 →
Authorization 20 → Validation 30 → Idempotency 40 → Logging 50 → Metrics 60 →
Transaction 70). Cross-cutting concerns catalogue for 9 concern types.
Action: fix async proxy gap in OnMethodBoundaryAspect before production use.
- Ums.Shell.Bootstrapper
Decision: KEEP, use selectively
Thin library — IBootstrapper + Composite pattern. Mostly replaced by
IHostedService in modern .NET. Adopt CompositeBootstrapperAsync only if
Program.cs startup grows beyond current complexity.
Also documents:
- Domain layer coupling risk (Factory ref in Ums.Domain.csproj)
- 4-phase incremental adoption plan
- Comparison tables: Factory vs Keyed Services, AOP vs alternatives
- Pre-existing issues to fix before adoption
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent 35a474a commit 79f8b84
1 file changed
Lines changed: 546 additions & 0 deletions
0 commit comments