Skip to content

Arquitectura del Sistema (v0.1) ​

1. Objetivos Arquitectónicos ​

Una implementación compatible de RIGOR DEBE:

  1. Ser completamente determinista
  2. Aislar etapas de procesamiento
  3. Operar sobre un Grafo Canónico
  4. Soportar flujos de trabajo de diff y evolución
  5. Ser testeable a nivel de módulo
  6. Mantener contratos estables entre motores

La arquitectura DEBE prevenir dependencias implícitas entre capas.


2. Arquitectura de Sistema de Alto Nivel ​

El sistema está compuesto por motores independientes organizados en un pipeline por capas.

text
                    ┌──────────────────────┐
                    │    Interfaz CLI       │
                    └──────────┬───────────┘
                               │
                    ┌──────────▼───────────┐
                    │    API de Aplicación │
                    └──────────┬───────────┘
                               │
  ┌─────────────────────────────────────────────────────────┐
  │                   Procesamiento Core                     │
  │                                                          │
  │  Parser → Constructor de Grafo → Canonicalización →     │
  │                                   Validación             │
  │                                   │                      │
  │                                   ▼                      │
  │                    Diff → Versionado → Migraciones      │
  └─────────────────────────────────────────────────────────┘

Cada módulo DEBE exponer entradas y salidas explícitas.


3. Descomposición de Módulos ​

La arquitectura consiste en 13 módulos lógicos.

3.1 Parser & Loader ​

Responsabilidad:

  • Parsear YAML
  • Validar sintaxis
  • Normalizar estructuras básicas
  • Detectar violaciones estructurales tempranas

Entrada: Texto YAML raw

Salida: Representación intermedia (IR) parseada

Restricciones:

  • Sin validación semántica
  • Sin construcción de grafo
  • Sin mutación de datos de entrada

3.2 Constructor de Grafo Canónico ​

Responsabilidad:

  • Transformar IR a Grafo Canónico
  • Resolver referencias
  • Forzar unicidad de identidad
  • Construir estructuras de nodos y aristas

Entrada: IR parseada

Salida: Grafo Canónico

Restricciones:

  • Ordenamiento determinista
  • Construcción inmutable de nodos
  • Sin efectos secundarios de validación

3.3 Motor de Canonicalización ​

Responsabilidad:

  • Normalizar ordenamiento
  • Remover ruido irrelevante
  • Producir estructura estable
  • Calcular hash estructural (opcional)

Entrada: Grafo Canónico

Salida: Grafo Canónico (normalizado)

Garantías: Dos specs semánticamente equivalentes DEBEN producir representaciones canónicas idénticas.

3.4 Motor de Validación ​

Responsabilidad:

  • Validación estructural
  • Validación semántica
  • Validación de proceso
  • Validación de evento
  • Validación de versión

Entrada: Grafo Canónico

Salida: Reporte de Validación

Restricciones:

  • No debe mutar el grafo
  • Debe acumular errores determinísticamente
  • No debe ejecutar lógica de diff

3.5 Motor de Restricciones ​

Responsabilidad:

  • Evaluar restricciones declaradas
  • Componer restricciones
  • Cortocircuitar cuando sea requerido
  • Producir violaciones estructuradas

Entrada: Grafo Canónico, Contexto de validación

Salida: Violaciones de restricciones

3.6 Motor de Diff ​

Responsabilidad:

  • Comparar dos Grafos Canónicos
  • Detectar diferencias estructurales
  • Generar ChangeSet
  • Clasificar cambios

Entrada: Grafo Canónico antiguo, Grafo Canónico nuevo

Salida: ChangeSet determinista

Garantías: Entradas idénticas DEBEN producir ChangeSets idénticos.

3.7 Motor de Versionado ​

Responsabilidad:

  • Analizar ChangeSet
  • Determinar cambios rompedores
  • Validar cumplimiento de versión semántica
  • Forzar reglas de incremento

Entrada: ChangeSet, Versiones declaradas

Salida: Resultado de validación de versión

3.8 Motor de Migraciones ​

Responsabilidad:

  • Aplicar ChangeSet
  • Transformar Grafo Canónico
  • Validar resultado
  • Asegurar idempotencia

Entrada: Grafo Canónico, ChangeSet

Salida: Nuevo Grafo Canónico

3.9 Motor de Resolución de Eventos ​

Responsabilidad:

  • Validar declaraciones de eventos
  • Validar tipos de payload de eventos
  • Enlazar eventos a transiciones
  • Asegurar coherencia entre specs

Entrada: Grafo Canónico

Salida: Resultado de validación de eventos

3.10 Modelo de Errores ​

Responsabilidad:

  • Definir estructura de errores
  • Garantizar códigos de error estables
  • Proporcionar formatos de serialización
  • Mantener ordenamiento determinista

Salida: Objetos de error estructurados

3.11 API de Aplicación ​

Responsabilidad:

  • Exponer interfaz programática
  • Orquestar motores
  • Proporcionar capa de integración estable

Esta API DEBE:

  • Ser stateless
  • Aceptar entradas explícitas
  • Retornar salidas estructuradas

3.12 Interfaz CLI ​

Responsabilidad:

  • Parsear argumentos CLI
  • Invocar API de Aplicación
  • Formatear salida
  • Establecer códigos de salida

CLI NO DEBE:

  • Contener lógica de negocio
  • Implementar reglas de validación
  • Implementar lógica de diff

3.13 Capa de Rendimiento y Testing ​

Responsabilidad:

  • Forzar límites de complejidad
  • Definir benchmarks de rendimiento
  • Proporcionar hooks de testing de regresión
  • Validar determinismo

4. Contratos de Flujo de Datos ​

Cada motor DEBE respetar contratos de datos estrictos.

4.1 Contrato de Grafo Canónico ​

El Grafo Canónico DEBE:

  • Ser inmutable
  • Tener IDs de nodo estables
  • Proporcionar rutas canónicas
  • Exponer orden de iteración determinista

Ningún motor puede depender del ordenamiento YAML.

4.2 Contrato de ChangeSet ​

ChangeSet DEBE:

  • Contener cambios atómicos ordenados
  • Clasificar cada cambio
  • Incluir rutas canónicas
  • Ser reproducible

4.3 Contrato de Reporte de Validación ​

Reporte de Validación DEBE:

  • Incluir lista de errores ordenada
  • Incluir severidad
  • Incluir ruta canónica
  • Incluir código de error
  • Ser serializable a JSON

5. Reglas de Interacción de Motores ​

Interacciones permitidas:

  • Parser → Constructor de Grafo
  • Constructor de Grafo → Canonicalización
  • Canonicalización → Validación
  • Validación → CLI
  • Canonicalización → Diff
  • Diff → Versionado
  • Diff → Migración

Interacciones prohibidas:

  • CLI mutando directamente el Grafo
  • Validación invocando Diff implícitamente
  • Migración modificando la instancia original del Grafo
  • Diff leyendo YAML raw

6. Requisitos de Ordenamiento Determinista ​

El sistema DEBE asegurar ordenamiento determinista para:

  • Entidades
  • Propiedades
  • Procesos
  • Estados
  • Transiciones
  • Eventos
  • Errores
  • Entradas de ChangeSet

El ordenamiento DEBE ser lexicográficamente estable a menos que se defina lo contrario.


7. Modelo de Concurrencia ​

A menos que esté explícitamente implementado:

  • El motor DEBERÍA operar en un solo hilo.
  • La paralelización NO DEBE romper el determinismo.
  • El estado mutable compartido está prohibido.

8. Límites de Extensibilidad ​

Las extensiones PUEDEN incluir:

  • Nuevas reglas de validación
  • Nuevos tipos de restricciones
  • Nuevos generadores de artefactos
  • Nuevos comandos CLI

Las extensiones NO DEBEN:

  • Alterar la semántica del Grafo Canónico
  • Modificar códigos de error existentes
  • Cambiar reglas de clasificación de diff

9. Objetivos No Incluidos ​

La arquitectura NO define:

  • Implementación de persistencia
  • Ejecución runtime de lógica de negocio
  • Generación de esquema de base de datos
  • Estrategia de despliegue

Estos son externos al motor RIGOR.


10. Requisitos de Cumplimiento ​

Una implementación es compatible si:

  1. Todos los módulos existen lógicamente (aunque estén combinados físicamente)
  2. Los contratos de datos son respetados
  3. El determinismo está garantizado
  4. El Grafo Canónico es inmutable
  5. Diff y Versionado se integran correctamente

La organización física del código PUEDE variar, pero la separación lógica DEBE existir.


11. Resumen ​

La arquitectura de RIGOR es:

  • Por capas
  • Determinista
  • Centrada en grafos
  • Consciente de la evolución
  • Estrictamente modular

Los documentos subsiguientes definen cada módulo en profundidad técnica.

Protocolo de Restricción de IA