orquestador/specs/DECISIONS.md

4.1 KiB
Raw Blame History

Decisiones técnicas

ADR-001 — Base reproducible (2026-10-26)

Estado: seleccionada; verificación de runtime JDK 21 y PostgreSQL pendiente en T01.

Componente Selección Motivo
Java 21, release=21, Enforcer [21,22) Versión requerida por la especificación
Spring Boot / BOM 4.1.2 / spring-boot-dependencies 4.1.2 Release estable verificada en documentación oficial y Maven Central; compatible con Java 21
Maven 3.9.12 Wrapper oficial con distribución fija
Maven Wrapper 3.3.4, only-script Scripts oficiales, sin JAR de wrapper en el repositorio
PostgreSQL 17.11-bookworm Major 17 requerido y parche fijo; imagen pendiente de pull/verificación con Docker
JUnit 5.13.4 Mantener JUnit 5 requerido; sobrescribir junit-jupiter.version del BOM
Surefire / Failsafe 3.5.4 Separar pruebas unitarias de integración; verify ejecuta ambas
Maven Enforcer 3.6.2 Fallar explícitamente si el JDK no es 21

MVC, Security, Hibernate, Flyway, JDBC PostgreSQL y demás dependencias se resuelven desde el BOM fijado. No declarar versiones dinámicas ni snapshots de dependencias. 0.1.0-SNAPSHOT es la versión de desarrollo de este proyecto, no una dependencia externa.

Spring Boot 4 usa starters modulares: webmvc, security-oauth2-resource-server y flyway. No se añade springdoc hasta validar compatibilidad en T02. OpenAPI será contractual. Testcontainers y servidor de mocks se fijarán y verificarán al incorporarse en T03/T11. No adoptar automáticamente dependencias de test de Boot que cambien JUnit 5; comprobar integración con Spring Test al introducirla.

Fuentes consultadas el 2026-10-26:

Alternativa: Boot 3.5, compatible con Java 21, pero se prefiere la línea estable actual para un proyecto nuevo. No cambia la semántica del motor. La compatibilidad de bibliotecas futuras se verificará antes de incorporarlas.

ADR-002 — Alcance de esta entrega

El pedido actual comprende arquetipo, plan y seguimiento. Se prepara T01 y se documenta T02–T17; no se implementan anticipadamente el dominio, contratos incompletos ni endpoints con respuestas simuladas. Las tareas se cierran con sus verificaciones, no por existencia de carpetas.

La configuración local conserva JWT y exige parámetros externos. No se incluye issuer falso ni contraseña predeterminada. El Compose actual es exclusivamente de desarrollo; no es un despliegue productivo.

ADR-003 — Docker del servicio con PostgreSQL externo (2026-10-26)

Por instrucción expresa del usuario se adelanta el empaquetado del arquetipo: Compose contiene sólo orquestador y sustituye el anterior servicio PostgreSQL. No administra base ni volúmenes externos. T17 no se considera terminado: la demo integral sigue pendiente de sus dependencias.

Dockerfile multietapa con Temurin 21.0.12.1_1 (JDK para construir, JRE para ejecutar), tags verificados en el catálogo oficial. Runtime no root y healthcheck de readiness. Maven Wrapper construye con package y ejecuta pruebas unitarias; verify con integración permanece en CI. El contexto permite sólo fuentes, POM y Wrapper; excluye .env, target y archivos del IDE.

Compose exige DB_URL/usuario/contraseña y parámetros JWT, conserva el puerto interno 8080 y publica localhost:8080 por defecto. Se incluye host-gateway para PostgreSQL en el anfitrión. La construcción y conexión real están pendientes de un entorno Docker y valores externos. Referencias: build multietapa e interpolación de Compose.