orquestador/specs/PROGRESS.md

15 KiB
Raw Blame History

Seguimiento de implementación

Actualizado: 2026-10-26. T01 y T02 DONE. Siguiente tarea: T03 (PostgreSQL/Flyway). El motor y endpoints de negocio no están implementados.

Estados permitidos: PENDING, IN_PROGRESS, BLOCKED, DONE. No más de una tarea principal IN_PROGRESS. Consultar IMPLEMENTATION_PLAN para subtareas y criterios.

ID Estado Dependencias Archivos Comandos/checks Resultado Bloqueo Siguiente paso
T01 DONE — pom.xml, mvnw*, .mvn, configuración, DeploymentSmokeCheck.java, ADR-001/004 E09: clean verify con JDK 21 y deployment-smoke BUILD SUCCESS; 5 pruebas, 0 fallos, 0 errores, 0 omitidas Ninguno para T01 Iniciar T02: OpenAPI y JSON Schema
T02 DONE T01 DONE contracts/openapi.yaml, schemas/*.schema.json, examples/contracts, ContractValidationTest.java, ADR-005 E10: clean verify con Java 21 BUILD SUCCESS; 92 comprobaciones, 0 fallos/errores/omisiones Ninguno para T02 Iniciar T03: migraciones PostgreSQL y Testcontainers
T03 PENDING T02 DONE db/migration/, pruebas *IT E11 verifica conexión/arranque 9.6; migraciones pendientes Compatibilidad inicial aprobada; modelo no implementado Falta entorno aislado para pruebas de migraciones Crear DDL compatible con PostgreSQL 9.6 según ADR-006
T04 PENDING T02,T03 flow/, request/, execution/, decision/, action/ Pendiente: Pruebas de dominio y dependencias entre capas No ejecutado Dependencias sin completar Definir records y errores estables
T05 PENDING T04 decision/, pruebas de AST Pendiente: JUnit parametrizado: 71/70/61/60, tipos y solapamientos No ejecutado Dependencias sin completar Implementar operadores/JSON Pointer/BigDecimal
T06 PENDING T03,T04,T05 flow/, admin_audit, pruebas *IT Pendiente: Pruebas PostgreSQL de carreras publicación/activación/retiro No ejecutado Dependencias sin completar Validar grafo, mappings, roles y capacidades
T07 PENDING T04 shared/infrastructure/security/, autorización por capacidad Pendiente: Tokens firmados válidos/expirados, otro issuer/audience, scope/rol ajenos No ejecutado Dependencias sin completar Validar JWT real (firma/issuer/audience/exp)
T08 PENDING T06,T07 request/, repositorios y API Pendiente: IT creación repetida/conflictiva y activación concurrente No ejecutado Dependencias sin completar Resolver y fijar flujo activo
T09 PENDING T08 execution/api, aceptación, auditoría Pendiente: IT duplicados, conflictos, concurrencia y rollback No ejecutado Dependencias sin completar Bloquear solicitud
T10 PENDING T09 execution/infrastructure, worker y repositorios Pendiente: IT dos workers, lease vencido y checkpoint; no @Async en memoria No ejecutado Dependencias sin completar Reclamar con SKIP LOCKED
T11 PENDING T10 action/, integration/, mocks, compose.yaml Pendiente: Mocks de cliente encontrado/no encontrado, timeout y salida inválida No ejecutado Dependencias sin completar Implementar catálogo confiable y REGISTER_DOCUMENT/INVOKE_INTEGRATION/NO_OP sólo simulación
T12 PENDING T11 execution/, endpoint resolve, pruebas *IT Pendiente: Fault injection antes/después de envío, checkpoint y commit No ejecutado Dependencias sin completar Limitar intentos/backoff/jitter
T13 PENDING T11,T12 document/, request/available-events Pendiente: Documento ajeno/inválido, ejecución activa y payload con score No ejecutado Dependencias sin completar Verificar pertenencia/tipo/MIME/tamaño/checksum/antimalware
T14 PENDING T05,T06,T13 examples/flows/, examples/http/ Pendiente: Recorridos completos de v1/v2, licencia válida/inválida y fronteras No ejecutado Dependencias sin completar Crear crédito v1, crédito v2 con licencia y compra v1 completos
T15 PENDING T09,T10,T11,T12,T13,T14 audit/, métricas, logs, health Pendiente: Rollback/auditoría, acceso a historial, métricas y apagado No ejecutado Dependencias sin completar Completar consultas paginadas/filtradas
T16 PENDING T15 src/test/, CI, matriz A01–A20 Pendiente: ./mvnw clean verify con Docker, sin skips de integración No ejecutado Dependencias sin completar Automatizar A01–A20
T17 PENDING T16 Dockerfile, compose.yaml, README, RUNBOOK, examples/http, CI Pendiente: Build de imagen, compose, verify y demo completa de sección 16 No ejecutado Dependencias sin completar Construir imagen y Compose completos

E11 — Adaptación PostgreSQL 9.6.2 — 2026-10-26 13:23 (America/Mexico_City)

  • Solicitud del usuario: utilizar el PostgreSQL disponible. ADR-006 documenta la modificación del objetivo PostgreSQL 17 al entorno 9.6.2 actual.
  • Configuración: perfil Spring postgres96, Hibernate PostgreSQLLegacyDialect (community-dialects 7.4.13.Final), Compose selecciona ese perfil por defecto. .env.example apunta a server02:30432/orquestador y no incluye contraseña.
  • .\mvnw.cmd --batch-mode --no-transfer-progress clean verify con Java 21: BUILD SUCCESS, 92 tests aprobados (16.074 s).
  • .\mvnw.cmd --batch-mode --no-transfer-progress failsafe:integration-test failsafe:verify -Ppostgres96-check, con DB/JWT en variables de proceso: BUILD SUCCESS, 1 prueba compuesta aprobada (12.696 s). Reporte: target/failsafe-reports/com.organizacion.compatibility.Postgres96CompatibilityProbe.txt.
  • Evidencia: conexión real 9.6.2, dialecto PostgreSQLLegacyDialect, default_transaction_read_only=on, validación Flyway 12.4.0 de 0 migraciones, health/readiness/liveness HTTP 200 UP y ruta protegida HTTP 401. Servicio local detenido al terminar.
  • Sin cambios a datos, schemas o historial de migraciones. El inicializador automático Flyway y SQL init se desactivaron únicamente en la prueba; la configuración normal conserva Flyway. No se desplegó el JAR en server02.
  • La revisión automática rechazó el primer diseño por posible migración; la alternativa explícitamente read-only fue aprobada y ejecutada. No queda bloqueo de aprobación para esta adaptación.
  • T03 sigue PENDING: faltan tablas, migraciones y pruebas de restricciones/concurrencia. La conexión disponible permite diseñar para 9.6, pero no sustituye un entorno aislado de pruebas ni prueba soporte completo del motor.

E10 — Cierre T02 — 2026-10-26 11:58 (America/Mexico_City)

  • Estado: DONE. 14 operaciones REST OpenAPI 3.1.0, DTOs, schema DSL 2020-12, ejemplos de resultados normalizados y fixtures contractuales completos para esta fase.
  • Comando: .\mvnw.cmd --batch-mode --no-transfer-progress clean verify con JAVA_HOME=.tools/jdk21/jdk-21.0.12.1+1, Maven Wrapper 3.9.12 y Enforcer habilitado.
  • Resultado: BUILD SUCCESS (11.969 s); ContractValidationTest: 92 comprobaciones, 0 fallos, 0 errores, 0 omitidas. Reportes en target/surefire-reports/com.organizacion.orchestrator.ContractValidationTest.txt y TEST-com.organizacion.orchestrator.ContractValidationTest.xml.
  • Cobertura: schema oficial OpenAPI 3.1, parseo Swagger, meta-schema 2020-12, resolución de todos los $ref locales, 52 fixtures (29 válidos/23 inválidos), ejemplos embebidos, rutas/seguridad/cabeceras, aridad de condiciones, límites estructurales, UUID, claves JSON duplicadas y rechazo de inyección de datos de proveedor según inputSchema.
  • Corrección durante la tarea: primera ejecución tuvo 91/92 aprobadas; Swagger Parser expandía el schema recursivo hasta exceder profundidad. Se corrigió con resolve=false, manteniendo verificación independiente de referencias y validación real de ejemplos. Segunda ejecución aprobó todo; no hubo tests omitidos.
  • Dependencias sólo test: networknt 1.5.9 y swagger-parser-v3 2.1.35; API Jackson 2 gestionada por BOM. Inspección del JAR con zipfile confirmó ausencia de validadores/Swagger y Jackson 2 databind/YAML en BOOT-INF/lib.
  • Dockerfile/.dockerignore incluyen contracts, schemas y examples/contracts en build para ejecutar estas pruebas; no se construyó una imagen en esta sesión (Docker no disponible en este equipo). No se modificó ni redesplegó server02.
  • Archivos principales: contracts/openapi.yaml, contracts/validation/openapi-3.1.schema.json, schemas/{flow-definition,api,integration-results}.schema.json, examples/contracts/manifest.json y fixtures, examples/http/contracts.http, pom.xml, ContractValidationTest.java, README/documentación y ADR-005.
  • Alcance: validación de contratos y datos, sin endpoints, base, providers ni motor. La evaluación de scoring/AST, validación semántica de grafo, permisos efectivos y A01–A20 corresponden a tareas posteriores; no se declaran aprobados. El smoke remoto de T01 no se repitió por no haber cambios de runtime.
  • Siguiente tarea: T03 (PENDING), dependencias satisfechas; requiere entorno Docker/PostgreSQL para Testcontainers.

E09 — Cierre T01 — 2026-10-26 11:20 (America/Mexico_City)

  • Estado final: DONE. Esta evidencia supera los bloqueos históricos de T01 descritos abajo; no cierra T07/T16/T17.
  • JDK: Eclipse Temurin 21.0.12.1+1, instalado sólo en .tools/jdk21/jdk-21.0.12.1+1 (ignorado en Git). Descarga oficial mediante API Adoptium, SHA256 comprobado: f9d6e191ab098c0d416e7d588a24420a8621cd2f4720dab2459b8b7b2d2d8b4e.
  • Maven Wrapper: 3.9.12. mvnw.cmd -version confirmó JDK 21.0.12.1. Enforcer validó Java y Maven; no se omitió ninguna regla.
  • Comando: .\mvnw.cmd --batch-mode --no-transfer-progress clean verify -Pdeployment-smoke '-Dsmoke.baseUrl=http://server02:8787', con JAVA_HOME apuntando al JDK anterior sólo en esa sesión.
  • Resultado: BUILD SUCCESS (29.285 s); 5 pruebas ejecutadas, 0 fallos, 0 errores, 0 omitidas. Compilación release 21 y JAR ejecutable generado.
  • Pruebas: health/readiness/liveness HTTP 200 y JSON status UP; ruta de solicitudes sin token HTTP 401 y challenge Bearer; token malformado HTTP 401.
  • Reportes: target/failsafe-reports/com.organizacion.orchestrator.DeploymentSmokeCheck.txt y TEST-com.organizacion.orchestrator.DeploymentSmokeCheck.xml. Son artefactos locales; este registro conserva el resumen sin copiar propiedades del entorno.
  • JAR: target/orquestador-nmp-0.1.0-SNAPSHOT.jar, SHA256 BA94B68388E26575F3CB6370E360B7E1D2C859853359CEE1D2D4C931D884B030.
  • Archivos: pom.xml, src/test/java/com/organizacion/orchestrator/DeploymentSmokeCheck.java, README de pruebas, README.md, specs/RUNBOOK.md, specs/IMPLEMENTATION_PLAN.md, specs/DECISIONS.md y este registro.
  • Alcance: build local con Java 21 más smoke del despliegue en red local con PostgreSQL externo, documentado en ADR-004. No hubo redeploy ni prueba de JWT válido, roles, endpoints funcionales o persistencia de negocio. La salud no certifica versión del runtime remoto ni identidad de su JAR.
  • Siguiente tarea habilitada: T02 (PENDING, sin bloqueo de dependencias).

Evidencias históricas — 2026-10-26

  • E01: java -version y mvn -version: Java 17.0.12 y Maven 3.9.12. Se encontró también Corretto 24; no JDK 21 en las ubicaciones revisadas. Get-Command docker no encontró Docker en PATH.
  • E02: mvn -B -N org.apache.maven.plugins:maven-wrapper-plugin:3.3.4:wrapper '-Dmaven=3.9.12' '-Dtype=only-script': BUILD SUCCESS. Wrapper oficial creado con distribución 3.9.12. Se corrigió una primera invocación cuya propiedad sin comillas fue fragmentada por PowerShell.
  • E03: con JAVA_HOME apuntando temporalmente a Corretto 24, .\mvnw.cmd -B '-Denforcer.skip=true' package: BUILD SUCCESS; JAR ejecutable generado con compilación release 21. Fue una comprobación limitada; no equivale a build/runtime con JDK 21. No modificar Enforcer ni CI para omitir el requisito. No había pruebas ejecutables en esta comprobación.
  • E04: POM/BOM Boot 4.1.2 y dependencias resueltos desde Maven Central. Arranque, health, Compose, Testcontainers y A01–A20 NO ejecutados. La imagen PostgreSQL fijada está pendiente de pull.
  • E05: .\mvnw.cmd -B --no-transfer-progress validate con Java 17: rechazo esperado de Enforcer, mensaje Configura JAVA_HOME con JDK 21. La regla impide compilar accidentalmente con el runtime incorrecto.
  • E06: .\mvnw.cmd -B --no-transfer-progress dependency:tree '-Dincludes=org.junit.jupiter:*,org.junit.platform:*': BUILD SUCCESS; Jupiter 5.13.4 y Platform 1.13.4 confirmados.
  • E07: lectura XML del POM y comprobación de IDs: T01–T17 presentes en plan/seguimiento. Cabecera binaria de OrchestratorApplication.class: major 65 (Java 21). La inspección inicial con javap quedó impedida por acceso del sandbox a java.security; la lectura directa de la cabecera confirmó el bytecode.

Próxima sesión

E08 — Prueba del servicio remoto (2026-10-26)

Comprobación ejecutada con Invoke-WebRequest -UseBasicParsing -TimeoutSec 10 contra http://server02:8787:

GET HTTP Resultado
/actuator/health 200 status UP
/actuator/health/readiness 200 status UP
/actuator/health/liveness 200 status UP
/api/v1/requests, sin token 401 Protección sin autenticación confirmada

Con la configuración del repositorio, readiness incluye PostgreSQL. Esta prueba confirma salud remota y rechazo sin token; no acredita la existencia del endpoint de solicitudes, validación de JWT real, versión del runtime remoto ni la suite clean verify. El intento anterior contra serer02 falló por nombre incorrecto y se corrigió a server02. Las limitaciones de arranque remoto registradas anteriormente quedan superadas por esta evidencia; T01 conserva pendiente el cierre reproducible con Java 21.

Preparación Docker solicitada — 2026-10-26

  • Archivos: Dockerfile, .dockerignore, compose.yaml, .env.example, README.md, RUNBOOK.md y ADR-003.
  • Entregado: imagen multietapa Java 21, usuario no root, healthcheck y un único servicio conectado a PostgreSQL externo. No se incluyó PostgreSQL en Compose. No se modificó ningún .env del usuario.
  • Verificación: análisis con PyYAML 6.0.3 y comprobaciones estáticas aprobaron YAML, servicio único, ausencia de volúmenes/dependencias locales, seis variables obligatorias, puerto interno y mapeo al anfitrión. Herramienta temporal en .tools, fuera de Git y del contexto Docker.
  • Bloqueo: Docker no disponible en PATH ni en la ubicación habitual de Docker Desktop; no se ejecutaron docker build, compose config ni arranque/conexión a PostgreSQL externo. Esta comprobación estática no sustituye esas pruebas.
  • Siguiente paso: completar .env, ejecutar docker compose config --quiet y docker compose up --build -d; comprobar readiness y logs. T01 continúa BLOCKED y T17 PENDING hasta satisfacer sus criterios completos.
  1. Leer este registro, especificación y cambios del repositorio.
  2. T01/T02 DONE. Preparar T03: migraciones desde cero, constraints, índices, triggers y entorno PostgreSQL/Testcontainers.
  3. Registrar evidencia de T03 y mantener una única tarea principal IN_PROGRESS. No repetir verificaciones aprobadas sin cambios o fallos que lo justifiquen.

Plantilla de evidencia adicional

Fecha | ID | Archivos | Comando/check exacto | Resultado y reporte | Bloqueo | Próximo paso