Navegación Bilingüe: English · Español (este documento)
Este documento sirve como el Hub de Decisiones Arquitectónicas Locales para Evolith Tracker. Documenta las decisiones y desviaciones específicas de este producto satélite frente al Core.
Nota: Las decisiones universales se heredan del Upstream Base (evolith_arch32).
- Upstream base:
https://github.com/beyondnetcode/evolith_arch32 - Última clasificación:
2026-06-11
| ID | Título | Operación | Ref Upstream | ADR Local | Notas |
|---|---|---|---|---|---|
| T-001 | Orquestación de Monorepo con Nx | Adoptar | ADR-0001 | — | Inicializado en src/ utilizando npm workspaces con Nx para projects discretos |
| T-002 | Adopción de Microfrontends en Fase 1 | Sobrescribir | N/A | T-002 | Desviación de la topología base de Fase 1 para permitir escalabilidad concurrente de UI |
| T-003 | Arquitectura Hexagonal (Ports & Adapters) | Adoptar | ADR-0002 (Core Node.js) | — | Capa de dominio sin imports de NestJS, ORM ni SDKs externos |
| T-004 | TypeScript estricto como lenguaje primario | Adoptar | ADR-0003 | — | strict: true habilitado; imports sin usar prohibidos |
| T-005 | TypeORM como ORM (Data Mapper pattern) | Adoptar | ADR-0043 | — | Data Mapper elegido sobre Active Record; no se usa Prisma |
| T-006 | React con Vite como base del frontend | Adoptar | ADR-0044 | — | React + Vite como tecnología base; topología de microfrontends por T-002/T-002 |
| T-007 | Zustand + TanStack Query para state management | Adoptar | ADR-0045 | — | Zustand para estado de cliente; TanStack Query para estado de servidor |
| T-008 | Convención de nombres de schema PostgreSQL tracker_<context> |
Definir | N/A | — | Canónico: tracker_discovery, tracker_design, tracker_construction, tracker_qa, tracker_release, tracker_governance, tracker_artifacts, tracker_metrics, tracker_integration, tracker_audit. Resuelve conflicto C4/TAD (FINDING-002). |
| T-009 | REST + OpenAPI 3.0 como única superficie API en Fase 1 | Definir | N/A | — | GraphQL queda fuera de alcance en Fase 1 (FINDING-003). Su adopción en Fase 2 requerirá ADR formal y gobernanza híbrida (R-18). |
| T-010 | Framework de agentes configurable por tenant | Extender | N/A | T-010 | BMAD es orquestación; el tenant elige el framework de agentes (bmad, spec-kit, custom) por fase. |
| T-011 | Estándar de numeración para épicas e historias | Extender | N/A | T-011 | Extiende upstream US-\d{3} a US-{MOD}-{NNN} con códigos de módulo de 3 letras. Épicas: EPIC-{NNN}. |
| T-012 | Contratos de eventos de dominio en libs/shared/ | Definir | N/A | — | Eventos compartidos (DriftDetectedEvent, ExternalCheckpointRegisteredEvent) se definen como contratos TypeScript en libs/shared/src/domain/events/. Pact tests pendientes (Phase 0). |
| T-013 | Value Object canónico ExternalReference en Shared Kernel | Definir | N/A | — | Unifica shapes dispares en 6 contextos. ExternalReference con system, externalId, url, type, linkedAt, label, metadata. Ubicado en libs/shared/src/domain/external-reference.vo.ts. |
| T-014 | UC-005 dividido en UC-005a y UC-005b | Definir | N/A | — | Plan Release y Authorize Deployment son operaciones distintas con distintos actores y precondiciones. UC-005a (Planning), UC-005b (Execution). |
| T-015 | Core BFF Gateway como único canal de comunicación | Adoptar | ADR-0008/0030/0075 | — | El Tracker se comunica exclusivamente con Evolith Core a través del BFF Gateway (Tier 1 Kong → Tier 2 NestJS BFF). Se prohíben llamadas directas a servicios internos de Core. El Tracker usa el patrón B2B API Gateway (API key). |