Skip to content

Especificación CLI (v0.1)

La Interfaz de Línea de Comandos (CLI) de RIGOR es un componente normativo y constitutivo del protocolo. Actúa como el guardián oficial del estándar, asegurando la integridad estructural, el formateo canónico y la generación determinística de artefactos.

1. Naturaleza y Principios

El CLI de RIGOR está diseñado para la automatización determinística y el cumplimiento formal.

Principios Fundamentales:

  • Determinístico: Mismo input → mismo output. Los códigos de salida son estables.
  • Idempotente: Re-ejecutar operaciones sobre la misma entrada no produce efectos secundarios adicionales.
  • Sin Estado Implícito: El CLI no depende de configuración oculta o estado global del entorno a menos que se declare explícitamente.
  • Offline-First: Todas las operaciones centrales deben funcionar sin acceso a la red externa.
  • Independiente de la Implementación: No ejecuta lógica de negocio, código generado ni resuelve dependencias de tiempo de ejecución externas.
  • Legible por Máquina: Soporta salida estructurada (JSON) para todos los comandos.

2. Arquitectura Modular

El CLI se compone de tres módulos formales e independientes:

CLI
 ├── Validador (Cumplimiento Estructural y Semántico)
 ├── Generador (Derivación de Artefactos e Implementación)
 └── Formateador (Representación Canónica)

3. Módulo 1: Validador

El Validador asegura que un documento del protocolo se adhiera estrictamente a la gramática, tipos, reglas semánticas e invariantes de RIGOR Core v0.1.

3.1 Niveles de Validación

  1. Sintáctico: Estructura correcta, tokens válidos y secciones obligatorias.
  2. Semántico: Resolución de referencias, compatibilidad de tipos y ausencia de ambigüedad.
  3. Estructural: Jerarquía correcta y cardinalidad válida.
  4. Reglas de Dominio: Adhesión a restricciones explícitas e invariantes del protocolo.

3.2 Comandos

bash
rigor validate <archivo|directorio> [opciones]

Opciones:

  • --strict: Trata las advertencias como errores.
  • --json: Emite un informe de validación legible por máquina.
  • --fail-on-warning: Retorna un código de salida no nulo si se encuentran advertencias.
  • --no-color: Desactiva la salida de color en la terminal.

3.3 Códigos de Salida (v0.1 Contractuales)

El CLI utiliza un conjunto estable y congelado de códigos de salida para la automatización e integración CI/CD.

CódigoSignificadoDescripción
0ÉxitoLa operación se completó exitosamente.
1Error de ValidaciónLa especificación viola reglas estructurales o semánticas.
2Uso Incorrecto (CLI)Sintaxis de comando inválida, flags desconocidas o argumentos faltantes.
3Error InternoFallo inesperado dentro del motor de RIGOR o la herramienta CLI.

3.4 Modos de Validación y Cumplimiento

El comando validate opera en dos modos definidos por la Matriz de Validación:

  1. Modo Estándar: Comportamiento por defecto. Verifica integridad estructural y referencial.
  2. Modo Estricto (--strict): Verifica cumplimiento completo del protocolo, incluyendo invariantes semánticos y seguridad de evolución.

Modelo de Severidad

  • ERROR: Resulta en código de salida 1. La especificación no es conforme.
  • WARNING: En Modo Estándar, son informativos. En Modo Estricto, los warnings semánticos y de invariantes escalan a ERROR.

El cumplimiento formal del protocolo solo se certifica cuando rigor validate --strict retorna código 0.


4. Módulo 2: Generador

El Generador transforma un documento de protocolo válido en artefactos concretos y determinísticos.

4.1 Principios Fundamentales

  • Sin Comportamiento Implícito: El generador no debe "inventar" comportamiento que no esté definido explícitamente en el protocolo.
  • Reproducibilidad: La misma especificación y versión de objetivo deben producir archivos idénticos.
  • Salida Atómica: La generación de artefactos debe tratarse como una única unidad de trabajo.

4.2 Comandos

bash
rigor generate <objetivo> --from <archivo|directorio> [opciones]

Objetivos (Targets):

  • schema: Genera esquemas JSON para el contexto.
  • typescript: Genera interfaces tipadas y esqueletos de procesos.
  • openapi: Genera contratos de API.
  • migrations: Genera scripts de migración estructural entre versiones.

Opciones:

  • --out <dir>: Directorio de salida objetivo.
  • --stdout: Emite el contenido a la salida estándar.
  • --overwrite: Permite sobrescribir archivos existentes.
  • --dry-run: Simula la generación sin escribir en el disco.

5. Módulo 3: Formateador

El Formateador garantiza una representación única y canónica de los documentos RIGOR.

5.1 Objetivos

  • Normalización: Reordena claves, estandariza la sangría y elimina la ambigüedad de los espacios en blanco.
  • Determinismo: Asegura que cualquier especificación válida tenga exactamente una representación textual válida.
  • Puente IA-Humano: Permite que el código generado por IA (potencialmente desordenado) se normalice instantáneamente para la revisión humana.

5.2 Comandos

bash
rigor format <archivo|directorio> [opciones]

Opciones:

  • --check: Retorna el código de salida 1 si el archivo no tiene el formato canónico.
  • --write: Sobrescribe el archivo con el formato canónico.

6. Gramática Formal (CLI v0.1)

La estructura de comandos del CLI se rige por la siguiente gramática EBNF para asegurar un análisis no ambiguo por parte de humanos y máquinas.

ebnf
cli             ::= "rigor" SP action

action          ::= validate
                  | format
                  | generate

validate        ::= "validate" SP path validate_opts?
format          ::= "format" SP path format_opts?
generate        ::= "generate" SP target SP path generate_opts?

validate_opts   ::= (SP validate_opt)*
format_opts     ::= (SP format_opt)*
generate_opts   ::= (SP generate_opt)*

validate_opt    ::= "--strict"
                  | format_option

format_opt      ::= "--write"
                  | "--check"

generate_opt    ::= output_option
                  | "--dry-run"

format_option   ::= "--format=" format_type
output_option   ::= "--output=" path

format_type     ::= "json"
                  | "text"

target          ::= "schema"
                  | "types"
                  | "json-schema"
                  | "openapi"

path            ::= STRING
SP              ::= " "

6.1 Reglas Sintácticas (Normativas)

  • Orden Obligatorio: rigor → acción → argumentos → flags.
  • Formato de Flags: Todas las flags deben usar el formato --nombre-largo. No se admiten alias cortos (ej., -s).
  • Asignación de Valores: Las flags con valores deben usar el signo igual (ej., --format=json). El uso de espacios (ej., --format json) es inválido.
  • Exclusividad: Ciertas flags pueden ser mutuamente excluyentes (ej., --write y --check).
  • Manejo de Errores: Flags desconocidas o argumentos faltantes resultan en una salida inmediata con código 2.

7. Flujo de Integración con IA

El CLI es el guardián formal en el ciclo de vida del desarrollo asistido por IA:

  1. Generación por IA: Un agente de IA produce un archivo .rigor.
  2. Revisión Humana: Un arquitecto humano revisa las reglas de negocio y restricciones.
  3. Validación: rigor validate asegura que el documento sea técnicamente sólido.
  4. Formateo: rigor format --write normaliza la representación.
  5. Generación: rigor generate produce los artefactos de implementación.

8. Modo Legible por Máquina (--json)

Para la integración con IDEs, CI/CD y agentes de IA, el CLI debe emitir errores estructurados:

json
{
  "file": "user.rigor",
  "line": 12,
  "column": 5,
  "code": "E_TYPE_MISMATCH",
  "message": "Expected integer but got string",
  "severity": "ERROR"
}

9. Configuración y Versionado

9.1 Configuración (rigor.config.json)

Permite definir valores predeterminados para el proyecto:

  • Objetivos de generación predeterminados.
  • Niveles de estrictez.
  • Rutas de salida.

9.2 Versionado

El CLI debe informar la versión del protocolo que soporta.

bash
rigor version

10. Extensibilidad Futura (Fase 2)

Las iteraciones futuras pueden incluir soporte para complementos (plugins), generadores y hooks personalizados. Estos no forman parte de la especificación normativa v0.1.

Protocolo de Restricción de IA