Skip to content

Commit 0dca51d

Browse files
committed
Migrate Shell libraries from local source to NuGet packages
- Replaced local ProjectReference to Ums.Shell.* with NuGet PackageReference - Namespace transformation: Ums.Shell.* → BeyondNetCode.Shell.* - Updated 4 csproj files (Domain, Application, Infrastructure, Presentation) - Updated all C# files with new namespaces (97 references) - Removed local Shell source directories (libs/shell/aop, bootstrapper, ddd, factory) - Updated solution file to remove Shell project entries - Updated all documentation (40+ files) to reflect NuGet package model Packages consumed from github.com/beyondnetcode/Shell.*: - BeyondNetCode.Shell.Ddd + Shell.Ddd.ValueObjects - BeyondNetCode.Shell.Factory + Shell.DI - BeyondNetCode.Shell.Aop + Shell.DispatchProxy + Shell.Aspects + Shell.Logger.Serilog - BeyondNetCode.Shell.Bootstrapper + Shell.DI + Shell.Observability Build: 0 errors | Tests: 1,191 passed
1 parent bd2325e commit 0dca51d

340 files changed

Lines changed: 608 additions & 13228 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/architecture/adrs/0054-shell-library-isolation.es.md

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
**Estado:** Aceptado
44
**Fecha:** 2026-05-15
5-
**Enmendado:** 2026-05-24 — grafo de dependencias corregido; alcance extendido para incluir `Ums.Shell.Aop` y `Ums.Shell.Bootstrapper`
5+
**Enmendado:** 2026-05-24 — grafo de dependencias corregido; alcance extendido para incluir `BeyondNetCode.Shell.Aop` y `BeyondNetCode.Shell.Bootstrapper`
66
**Responsable de Decisión:** Arquitectura
77
**Relacionados:**
88
- [ADR-0060: Estrategia de Concerns Cross-Cutting AOP](./0060-aop-cross-cutting-concern-strategy.md)
@@ -14,24 +14,24 @@
1414

1515
UMS incluye librerías de infraestructura reutilizables bajo `src/libs/shell`. Estas librerías se originaron de fuentes externas o de referencia, pero UMS no debe exponer namespaces upstream ni convenciones de repositorio en código de aplicación.
1616

17-
El ADR-0029 anterior describía "Primitivas DDD nativas de C# (sin librería externa)". Esa redacción ya no es precisa: la posición correcta es que UMS **posee su superficie de dependencia de dominio** a través de las shell libraries `Ums.Shell.*`. Las capas de aplicación consumen la abstracción shell de UMS, no la identidad fuente upstream.
17+
El ADR-0029 anterior describía "Primitivas DDD nativas de C# (sin librería externa)". Esa redacción ya no es precisa: la posición correcta es que UMS **posee su superficie de dependencia de dominio** a través de las shell libraries `BeyondNetCode.Shell.*`. Las capas de aplicación consumen la abstracción shell de UMS, no la identidad fuente upstream.
1818

1919
A partir de 2026-05-24, la capa shell incluye cuatro grupos de librerías:
2020

2121
| Grupo | Proyectos | Capas consumidoras |
2222
|---|---|---|
23-
| `Ums.Shell.Ddd` | `Ums.Shell.Ddd` · `Ums.Shell.Ddd.ValueObjects` | Domain (directo) |
24-
| `Ums.Shell.Factory` | `Ums.Shell.Factory` · `Ums.Shell.Factory.Installer` | Domain (transitivo vía Ddd) · Infrastructure (directo) |
25-
| `Ums.Shell.Aop` | `Ums.Shell.Aop` · `Ums.Shell.Aop.DispatchProxy` · `Ums.Shell.Aop.Aspects` · `Ums.Shell.Aop.Aspects.Logger.Serilog` · `Ums.Shell.Aop.Microsoft.Extensions.DependencyInjection.Aspects.Installer` | Application (contrato de atributos) · Infrastructure (wiring DI + adapters) |
26-
| `Ums.Shell.Bootstrapper` | `Ums.Shell.Bootstrapper` · `Ums.Shell.Bootstrapper.DependencyInjection` · `Ums.Shell.Bootstrapper.AutoMapper` · `Ums.Shell.Bootstrapper.Observability` | Infrastructure · Presentation (startup) |
23+
| `BeyondNetCode.Shell.Ddd` | `BeyondNetCode.Shell.Ddd` · `BeyondNetCode.Shell.Ddd.ValueObjects` | Domain (directo) |
24+
| `BeyondNetCode.Shell.Factory` | `BeyondNetCode.Shell.Factory` · `BeyondNetCode.Shell.DI` | Domain (transitivo vía Ddd) · Infrastructure (directo) |
25+
| `BeyondNetCode.Shell.Aop` | `BeyondNetCode.Shell.Aop` · `BeyondNetCode.Shell.DispatchProxy` · `BeyondNetCode.Shell.Aspects` · `BeyondNetCode.Shell.Logger.Serilog` · `BeyondNetCode.Shell.DI` | Application (contrato de atributos) · Infrastructure (wiring DI + adapters) |
26+
| `BeyondNetCode.Shell.Bootstrapper` | `BeyondNetCode.Shell.Bootstrapper` · `BeyondNetCode.Shell.DI` · `BeyondNetCode.Shell.AutoMapper` · `BeyondNetCode.Shell.Observability` | Infrastructure · Presentation (startup) |
2727

2828
---
2929

3030
## Decisión
3131

3232
UMS adopta una estrategia de **Aislamiento de Shell Libraries** para todos los patrones compartidos de infraestructura:
3333

34-
1. Todos los ensamblados shell usan el namespace y convención de naming `Ums.Shell.*`.
34+
1. Todos los ensamblados shell usan el namespace y convención de naming `BeyondNetCode.Shell.*`.
3535
2. Las capas de aplicación no deben referenciar namespaces upstream como `BeyondNet.*` o nombres de repositorio fuente como `csdevlib.*`.
3636
3. Las shell libraries deben compilar cross-platform y apuntar al baseline .NET estable actual usado por la API (`net10.0`).
3737
4. La dirección de dependencias es estrictamente enforce como se describe abajo.
@@ -46,31 +46,31 @@ Ums.Presentation
4646
Ums.Infrastructure
4747
├── Ums.Application
4848
├── Ums.Domain
49-
├── Ums.Shell.Aop.Microsoft.Extensions.DependencyInjection.Aspects.Installer
50-
│ └── Ums.Shell.Aop.Aspects (transitivo)
51-
│ └── Ums.Shell.Aop (transitivo)
52-
│ └── Ums.Shell.Aop.DispatchProxy (transitivo)
53-
└── Ums.Shell.Aop.Aspects.Logger.Serilog (transitivo vía installer)
49+
├── BeyondNetCode.Shell.DI
50+
│ └── BeyondNetCode.Shell.Aspects (transitivo)
51+
│ └── BeyondNetCode.Shell.Aop (transitivo)
52+
│ └── BeyondNetCode.Shell.DispatchProxy (transitivo)
53+
└── BeyondNetCode.Shell.Logger.Serilog (transitivo vía installer)
5454
5555
Ums.Application
5656
├── Ums.Domain
57-
└── Ums.Shell.Aop.Aspects ← contrato de atributos solo (sin DI, sin proxy runtime)
57+
└── BeyondNetCode.Shell.Aspects ← contrato de atributos solo (sin DI, sin proxy runtime)
5858
5959
Ums.Domain
60-
├── Ums.Shell.Ddd
61-
│ └── Ums.Shell.Factory (transitivo vía Ddd)
62-
└── Ums.Shell.Ddd.ValueObjects
63-
└── Ums.Shell.Ddd (transitivo)
60+
├── BeyondNetCode.Shell.Ddd
61+
│ └── BeyondNetCode.Shell.Factory (transitivo vía Ddd)
62+
└── BeyondNetCode.Shell.Ddd.ValueObjects
63+
└── BeyondNetCode.Shell.Ddd (transitivo)
6464
```
6565

66-
> **Corrección del ADR original (2026-05-15):** `Ums.Domain.csproj` previamente listaba una `<ProjectReference>` directa a `Ums.Shell.Factory`. Esto era una referencia redundante — `Ums.Shell.Ddd` ya depende de `Ums.Shell.Factory`, haciéndola disponible transitivamente. La referencia directa fue removida el 2026-05-24. El código de Domain debe acceder a abstracciones de factory solo a través de la capa shell DDD, no importando directamente el namespace de Factory.
66+
> **Corrección del ADR original (2026-05-15):** `Ums.Domain.csproj` previamente listaba una `<ProjectReference>` directa a `BeyondNetCode.Shell.Factory`. Esto era una referencia redundante — `BeyondNetCode.Shell.Ddd` ya depende de `BeyondNetCode.Shell.Factory`, haciéndola disponible transitivamente. La referencia directa fue removida el 2026-05-24. El código de Domain debe acceder a abstracciones de factory solo a través de la capa shell DDD, no importando directamente el namespace de Factory.
6767
6868
### Reglas por capa
6969

7070
| Capa | Puede referenciar | NO puede referenciar |
7171
|---|---|---|
72-
| `Ums.Domain` | `Ums.Shell.Ddd`, `Ums.Shell.Ddd.ValueObjects` | Cualquier `Ums.Shell.Aop.*`, `Ums.Shell.Factory` (directo), `Ums.Shell.Bootstrapper.*` |
73-
| `Ums.Application` | `Ums.Domain`, `Ums.Shell.Aop.Aspects` (contrato de atributos) | `Ums.Shell.Aop.DispatchProxy`, `Ums.Shell.Aop.*.Installer`, `Ums.Shell.Factory`, `Ums.Shell.Bootstrapper.*` |
72+
| `Ums.Domain` | `BeyondNetCode.Shell.Ddd`, `BeyondNetCode.Shell.Ddd.ValueObjects` | Cualquier `BeyondNetCode.Shell.Aop.*`, `BeyondNetCode.Shell.Factory` (directo), `BeyondNetCode.Shell.Bootstrapper.*` |
73+
| `Ums.Application` | `Ums.Domain`, `BeyondNetCode.Shell.Aspects` (contrato de atributos) | `BeyondNetCode.Shell.DispatchProxy`, `BeyondNetCode.Shell.Aop.*.Installer`, `BeyondNetCode.Shell.Factory`, `BeyondNetCode.Shell.Bootstrapper.*` |
7474
| `Ums.Infrastructure` | Todo lo anterior + AOP installer + Bootstrapper ||
7575
| `Ums.Presentation` | Todas las capas + Bootstrapper para startup ||
7676

@@ -82,15 +82,15 @@ Ums.Domain
8282

8383
- UMS tiene una superficie de dependencia interna estable para patrones tácticos de DDD, Factory, AOP, y Bootstrapper.
8484
- El código de Domain es puro de todas las preocupaciones de infraestructura — sin imports de AOP, DI, o logging.
85-
- `Ums.Application` referencia solo el **contrato de atributo** de AOP (`Ums.Shell.Aop.Aspects`) — los handlers declaran intención cross-cutting vía atributos sin acoplamiento a la infraestructura de proxy.
85+
- `Ums.Application` referencia solo el **contrato de atributo** de AOP (`BeyondNetCode.Shell.Aspects`) — los handlers declaran intención cross-cutting vía atributos sin acoplamiento a la infraestructura de proxy.
8686
- Cambios de fuente upstream pueden ser absorbidos dentro de `src/libs/shell` sin tocar las capas de aplicación.
8787
- El patrón `IMelLogger` (interfaz marker en Application, adapter concreto en Infrastructure) demuestra cómo aplicar el mismo principio de aislamiento a adapters cross-cutting.
8888

8989
### Trade-offs
9090

9191
- La capa shell es una dependencia arquitectónica real y debe ser versionada y revisada correspondientemente.
9292
- Alertas de seguridad y warnings de paquetes de dependencias shell (ej., CVE de `OpenTelemetry.Api` en Bootstrapper) afectan la salud del build de UMS.
93-
- `Ums.Shell.Ddd` depende de `Ums.Shell.Factory` — este acoplamiento es intencional (la construcción DDD puede usar abstracciones de factory internamente) pero significa que agregar una dependencia de Factory a Domain es suficiente para arrastrar Factory a todas partes donde Domain es referenciado.
93+
- `BeyondNetCode.Shell.Ddd` depende de `BeyondNetCode.Shell.Factory` — este acoplamiento es intencional (la construcción DDD puede usar abstracciones de factory internamente) pero significa que agregar una dependencia de Factory a Domain es suficiente para arrastrar Factory a todas partes donde Domain es referenciado.
9494

9595
---
9696

@@ -103,15 +103,15 @@ Las siguientes verificaciones son obligatorias después de cualquier cambio en l
103103
dotnet build src/apps/ums.api/Ums.sln
104104

105105
# 2. Ejecutar todos los test suites de shell libraries
106-
dotnet test src/libs/shell/aop/src/Ums.Shell.Aop.Tests/Ums.Shell.Aop.Tests.csproj --verbosity minimal
107-
dotnet test src/libs/shell/factory/src/Ums.Shell.Factory.Test/Ums.Shell.Factory.Test.csproj --verbosity minimal
106+
dotnet test src/libs/shell/aop/src/BeyondNetCode.Shell.Aop.Tests/BeyondNetCode.Shell.Aop.Tests.csproj --verbosity minimal
107+
dotnet test src/libs/shell/factory/src/BeyondNetCode.Shell.Factory.Test/BeyondNetCode.Shell.Factory.Test.csproj --verbosity minimal
108108

109109
# 3. Verificar pureza del Domain (sin refs AOP en Domain)
110-
grep -r "Ums.Shell.Aop" src/apps/ums.api/Ums.Domain/ --include="*.csproj"
110+
grep -r "BeyondNetCode.Shell.Aop" src/apps/ums.api/Ums.Domain/ --include="*.csproj"
111111
# Esperado: sin output
112112

113113
# 4. Verificar que no hay ref directa a Factory en Domain (debe ser solo transitiva)
114-
grep "Ums.Shell.Factory" src/apps/ums.api/Ums.Domain/Ums.Domain.csproj
114+
grep "BeyondNetCode.Shell.Factory" src/apps/ums.api/Ums.Domain/Ums.Domain.csproj
115115
# Esperado: sin output
116116
```
117117

docs/architecture/adrs/0054-shell-library-isolation.md

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
**Status:** Accepted
44
**Date:** 2026-05-15
5-
**Amended:** 2026-05-24 — dependency graph corrected; scope extended to include `Ums.Shell.Aop` and `Ums.Shell.Bootstrapper`
5+
**Amended:** 2026-05-24 — dependency graph corrected; scope extended to include `BeyondNetCode.Shell.Aop` and `BeyondNetCode.Shell.Bootstrapper`
66
**Decision Owner:** Architecture
77
**Related:**
88
- [ADR-0060: AOP Cross-Cutting Concern Strategy](./0060-aop-cross-cutting-concern-strategy.md)
@@ -14,24 +14,24 @@
1414

1515
UMS includes reusable infrastructure libraries under `src/libs/shell`. These libraries originated from external or reference sources, but UMS must not expose upstream namespaces or repository conventions in application code.
1616

17-
The previous ADR-0029 described "C# Native DDD Primitives (no external library)". That wording is no longer precise: the correct position is that UMS **owns its domain dependency surface** through `Ums.Shell.*` shell libraries. Application layers consume the UMS shell abstraction, not the upstream source identity.
17+
The previous ADR-0029 described "C# Native DDD Primitives (no external library)". That wording is no longer precise: the correct position is that UMS **owns its domain dependency surface** through `BeyondNetCode.Shell.*` shell libraries. Application layers consume the UMS shell abstraction, not the upstream source identity.
1818

1919
As of 2026-05-24, the shell layer includes four library groups:
2020

2121
| Group | Projects | Consumer layers |
2222
|---|---|---|
23-
| `Ums.Shell.Ddd` | `Ums.Shell.Ddd` · `Ums.Shell.Ddd.ValueObjects` | Domain (direct) |
24-
| `Ums.Shell.Factory` | `Ums.Shell.Factory` · `Ums.Shell.Factory.Installer` | Domain (transitive via Ddd) · Infrastructure (direct) |
25-
| `Ums.Shell.Aop` | `Ums.Shell.Aop` · `Ums.Shell.Aop.DispatchProxy` · `Ums.Shell.Aop.Aspects` · `Ums.Shell.Aop.Aspects.Logger.Serilog` · `Ums.Shell.Aop.Microsoft.Extensions.DependencyInjection.Aspects.Installer` | Application (attribute contract) · Infrastructure (DI wiring + adapters) |
26-
| `Ums.Shell.Bootstrapper` | `Ums.Shell.Bootstrapper` · `Ums.Shell.Bootstrapper.DependencyInjection` · `Ums.Shell.Bootstrapper.AutoMapper` · `Ums.Shell.Bootstrapper.Observability` | Infrastructure · Presentation (startup) |
23+
| `BeyondNetCode.Shell.Ddd` | `BeyondNetCode.Shell.Ddd` · `BeyondNetCode.Shell.Ddd.ValueObjects` | Domain (direct) |
24+
| `BeyondNetCode.Shell.Factory` | `BeyondNetCode.Shell.Factory` · `BeyondNetCode.Shell.DI` | Domain (transitive via Ddd) · Infrastructure (direct) |
25+
| `BeyondNetCode.Shell.Aop` | `BeyondNetCode.Shell.Aop` · `BeyondNetCode.Shell.DispatchProxy` · `BeyondNetCode.Shell.Aspects` · `BeyondNetCode.Shell.Logger.Serilog` · `BeyondNetCode.Shell.DI` | Application (attribute contract) · Infrastructure (DI wiring + adapters) |
26+
| `BeyondNetCode.Shell.Bootstrapper` | `BeyondNetCode.Shell.Bootstrapper` · `BeyondNetCode.Shell.DI` · `BeyondNetCode.Shell.AutoMapper` · `BeyondNetCode.Shell.Observability` | Infrastructure · Presentation (startup) |
2727

2828
---
2929

3030
## Decision
3131

3232
UMS adopts a **Shell Library Isolation** strategy for all shared infrastructure patterns:
3333

34-
1. All shell assemblies use the `Ums.Shell.*` namespace and project naming convention.
34+
1. All shell assemblies use the `BeyondNetCode.Shell.*` namespace and project naming convention.
3535
2. Application layers must not reference upstream namespaces such as `BeyondNet.*` or source repository names such as `csdevlib.*`.
3636
3. Shell libraries must compile cross-platform and target the current stable .NET baseline used by the API (`net10.0`).
3737
4. Dependency direction is strictly enforced as described below.
@@ -46,31 +46,31 @@ Ums.Presentation
4646
Ums.Infrastructure
4747
├── Ums.Application
4848
├── Ums.Domain
49-
├── Ums.Shell.Aop.Microsoft.Extensions.DependencyInjection.Aspects.Installer
50-
│ └── Ums.Shell.Aop.Aspects (transitive)
51-
│ └── Ums.Shell.Aop (transitive)
52-
│ └── Ums.Shell.Aop.DispatchProxy (transitive)
53-
└── Ums.Shell.Aop.Aspects.Logger.Serilog (transitive via installer)
49+
├── BeyondNetCode.Shell.DI
50+
│ └── BeyondNetCode.Shell.Aspects (transitive)
51+
│ └── BeyondNetCode.Shell.Aop (transitive)
52+
│ └── BeyondNetCode.Shell.DispatchProxy (transitive)
53+
└── BeyondNetCode.Shell.Logger.Serilog (transitive via installer)
5454
5555
Ums.Application
5656
├── Ums.Domain
57-
└── Ums.Shell.Aop.Aspects ← attribute contract only (no DI, no runtime proxy)
57+
└── BeyondNetCode.Shell.Aspects ← attribute contract only (no DI, no runtime proxy)
5858
5959
Ums.Domain
60-
├── Ums.Shell.Ddd
61-
│ └── Ums.Shell.Factory (transitive via Ddd)
62-
└── Ums.Shell.Ddd.ValueObjects
63-
└── Ums.Shell.Ddd (transitive)
60+
├── BeyondNetCode.Shell.Ddd
61+
│ └── BeyondNetCode.Shell.Factory (transitive via Ddd)
62+
└── BeyondNetCode.Shell.Ddd.ValueObjects
63+
└── BeyondNetCode.Shell.Ddd (transitive)
6464
```
6565

66-
> **Correction from original ADR (2026-05-15):** `Ums.Domain.csproj` previously listed a direct `<ProjectReference>` to `Ums.Shell.Factory`. This was a redundant reference — `Ums.Shell.Ddd` already depends on `Ums.Shell.Factory`, making it available transitively. The direct reference was removed on 2026-05-24. Domain code must access factory abstractions only through the DDD shell layer, not by directly importing the Factory namespace.
66+
> **Correction from original ADR (2026-05-15):** `Ums.Domain.csproj` previously listed a direct `<ProjectReference>` to `BeyondNetCode.Shell.Factory`. This was a redundant reference — `BeyondNetCode.Shell.Ddd` already depends on `BeyondNetCode.Shell.Factory`, making it available transitively. The direct reference was removed on 2026-05-24. Domain code must access factory abstractions only through the DDD shell layer, not by directly importing the Factory namespace.
6767
6868
### Rules per layer
6969

7070
| Layer | May reference | May NOT reference |
7171
|---|---|---|
72-
| `Ums.Domain` | `Ums.Shell.Ddd`, `Ums.Shell.Ddd.ValueObjects` | Any `Ums.Shell.Aop.*`, `Ums.Shell.Factory` (direct), `Ums.Shell.Bootstrapper.*` |
73-
| `Ums.Application` | `Ums.Domain`, `Ums.Shell.Aop.Aspects` (attr contract) | `Ums.Shell.Aop.DispatchProxy`, `Ums.Shell.Aop.*.Installer`, `Ums.Shell.Factory`, `Ums.Shell.Bootstrapper.*` |
72+
| `Ums.Domain` | `BeyondNetCode.Shell.Ddd`, `BeyondNetCode.Shell.Ddd.ValueObjects` | Any `BeyondNetCode.Shell.Aop.*`, `BeyondNetCode.Shell.Factory` (direct), `BeyondNetCode.Shell.Bootstrapper.*` |
73+
| `Ums.Application` | `Ums.Domain`, `BeyondNetCode.Shell.Aspects` (attr contract) | `BeyondNetCode.Shell.DispatchProxy`, `BeyondNetCode.Shell.Aop.*.Installer`, `BeyondNetCode.Shell.Factory`, `BeyondNetCode.Shell.Bootstrapper.*` |
7474
| `Ums.Infrastructure` | All of the above + AOP installer + Bootstrapper ||
7575
| `Ums.Presentation` | All layers + Bootstrapper for startup ||
7676

@@ -82,15 +82,15 @@ Ums.Domain
8282

8383
- UMS has a stable internal dependency surface for tactical DDD, Factory, AOP, and Bootstrapper patterns.
8484
- Domain code is pure of all infrastructure concerns — no AOP, no DI, no logging imports.
85-
- `Ums.Application` references only the AOP **attribute contract** (`Ums.Shell.Aop.Aspects`) — handlers declare cross-cutting intent via attributes without coupling to the proxy infrastructure.
85+
- `Ums.Application` references only the AOP **attribute contract** (`BeyondNetCode.Shell.Aspects`) — handlers declare cross-cutting intent via attributes without coupling to the proxy infrastructure.
8686
- Upstream source changes can be absorbed inside `src/libs/shell` without touching application layers.
8787
- The `IMelLogger` pattern (marker interface in Application, concrete adapter in Infrastructure) demonstrates how to apply the same isolation principle to cross-cutting adapters.
8888

8989
### Trade-offs
9090

9191
- The shell layer is a real architectural dependency and must be versioned and reviewed accordingly.
9292
- Security and package warnings from shell dependencies (e.g., `OpenTelemetry.Api` CVE in Bootstrapper) affect the UMS build health.
93-
- `Ums.Shell.Ddd` depends on `Ums.Shell.Factory` — this coupling is intentional (DDD construction can use factory abstractions internally) but means that adding a Factory dependency to Domain is sufficient to pull in Factory everywhere Domain is referenced.
93+
- `BeyondNetCode.Shell.Ddd` depends on `BeyondNetCode.Shell.Factory` — this coupling is intentional (DDD construction can use factory abstractions internally) but means that adding a Factory dependency to Domain is sufficient to pull in Factory everywhere Domain is referenced.
9494

9595
---
9696

@@ -103,15 +103,15 @@ The following checks are mandatory after any change to the shell library referen
103103
dotnet build src/apps/ums.api/Ums.sln
104104

105105
# 2. Run all shell library test suites
106-
dotnet test src/libs/shell/aop/src/Ums.Shell.Aop.Tests/Ums.Shell.Aop.Tests.csproj --verbosity minimal
107-
dotnet test src/libs/shell/factory/src/Ums.Shell.Factory.Test/Ums.Shell.Factory.Test.csproj --verbosity minimal
106+
dotnet test src/libs/shell/aop/src/BeyondNetCode.Shell.Aop.Tests/BeyondNetCode.Shell.Aop.Tests.csproj --verbosity minimal
107+
dotnet test src/libs/shell/factory/src/BeyondNetCode.Shell.Factory.Test/BeyondNetCode.Shell.Factory.Test.csproj --verbosity minimal
108108

109109
# 3. Verify Domain purity (no AOP refs in Domain)
110-
grep -r "Ums.Shell.Aop" src/apps/ums.api/Ums.Domain/ --include="*.csproj"
110+
grep -r "BeyondNetCode.Shell.Aop" src/apps/ums.api/Ums.Domain/ --include="*.csproj"
111111
# Expected: no output
112112

113113
# 4. Verify no direct Factory ref in Domain (must be transitive only)
114-
grep "Ums.Shell.Factory" src/apps/ums.api/Ums.Domain/Ums.Domain.csproj
114+
grep "BeyondNetCode.Shell.Factory" src/apps/ums.api/Ums.Domain/Ums.Domain.csproj
115115
# Expected: no output
116116
```
117117

0 commit comments

Comments
 (0)