Cada módulo funcional tendrá un composition root explícito: construye sus dependencias y devuelve únicamente las APIs necesarias para sus consumidores.
Usar constructor injection. No usar Service Locator, contenedores DI, decoradores ni resolución implícita.
No copiar el registro dinámico del ERP: esta aplicación todavía no necesita esa capacidad.
Las rutas reciben dependencias ya construidas. No construyen repositorios, servicios de Application ni mappers de dominio.
Cuando sea necesario distinguir superficies:
- services: servicios públicos consumidos por otros módulos.
- internal: dependencias privadas necesarias para las rutas del propio módulo.
No exportar repositorios ni modelos ORM a otros módulos. No crear contratos públicos sin consumidores.