Merge _configs/ into config/ for single configuration directory. Update all path references. Changes: - Move _configs/* to config/ - Update .gitignore for new patterns - No code references to _configs/ found Impact: -1 root directory (layout_conventions.md compliance)
8.1 KiB
🎯 EL PROBLEMA REAL: provctl vs project-provisioning
Fecha: 2025-11-20 Propósito: Entender por qué hay dos proyectos y cuál es el problema a resolver Estado: Análisis crítico
🏗️ Los Dos Proyectos
Proyecto 1: project-provisioning
Ubicación: /Users/Akasha/project-provisioning
Propósito: Infraestructura y configuración de provisioning
Contiene:
- ✅ Definiciones KCL para infraestructura (orquestación, auth, DNS, etc)
- ✅ Módulo
provctl-bridgeconcatalog.rs - ✅ TOML catalog de servicios (
services-catalog.toml) - ✅ Generadores de IaC (Docker, K8s, Terraform)
- ✅ Scripts de instalación y configuración
Scope: "Cómo se provisiona la infraestructura"
Proyecto 2: provctl
Ubicación: /Users/Akasha/Development/provctl
Propósito: Orquestación de máquinas y control de servicios
Contiene:
- ✅ CLI para control local de servicios (systemd, launchd, PID files)
- ✅ SSH-based machine orchestration
- ✅ Deployment strategies (rolling, blue-green, canary)
- ✅ Health checks y monitoring
- ✅ REST API y Leptos dashboard
- ✅ 332+ tests pasando
Scope: "Cómo se orquestan máquinas y se controlan servicios"
🔴 EL PROBLEMA REAL
El Problema Identificado
Pregunta que planteas:
"Por qué se ha creado provctl si ya existe provisioning?"
Respuesta: Resuelven problemas DIFERENTES
project-provisioning:
¿QUÉ INSTALAR? (definiciones, configuración)
provctl:
¿CÓMO EJECUTAR LO QUE INSTALÉ? (control, orquestación, monitoreo)
Ejemplo:
project-provisioning te dice:
"El servicio syntaxis-api debe correr con 2 replicas, puerto 3000, con estas vars env"
provctl te dice:
"Para ejecutar eso, corre: systemctl start syntaxis-api"
"Y si falla, reintenta con exponential backoff"
"Y si sigue fallando, alertame"
Lo Que FALTA
Ambos proyectos existen pero NO hablan entre sí:
┌─────────────────────────────────────────────┐
│ project-provisioning │
│ ├─ Sabe QUÉ instalar (catalog.toml) │
│ ├─ Genera IaC (Docker, K8s, Terraform) │
│ ├─ Configura servicios (vars, ports, etc) │
│ └─ Expone via catalog-cli.rs │
└─────────────────────────────────────────────┘
↓ (¿cómo??)
FALTA CONEXIÓN
↓
┌─────────────────────────────────────────────┐
│ provctl │
│ ├─ Sabe CÓMO ejecutar servicios │
│ ├─ Maneja ciclo de vida (start/stop/restart)
│ ├─ Monitorea health │
│ ├─ Orquesta múltiples máquinas │
│ └─ Expone via API + CLI │
└─────────────────────────────────────────────┘
RESULTADO: Dos sistemas independientes
🎯 El Plan que Mencionas
"Plan: Enhanced syntaxis Installer con integración provctl"
Objetivos:
- ✅ Detección inteligente de provctl
- ✅ Sistema de presets (local, dev, staging, production)
- ✅ Generación de config declarativa
- ✅ Fallback cuando provctl no está disponible
- ✅ Templates de provisioning para diferentes contextos
Esto SIGNIFICA:
syntaxis installer
↓
"¿Quieres gestionar servicios automáticamente?"
├─ SÍ: usar provctl
│ ├─ Detectar provctl
│ ├─ Generar config para provctl
│ ├─ Orchestrar servicios
│ └─ Monitorear
│
└─ NO: Manual
├─ Mostrar guía
├─ Generar scripts
└─ Usuario hace todo a mano
🔗 La Conexión Que Falta
HOY (Desconectado)
syntaxis/configs/services-catalog.toml
└─ Define: 6 servicios
catalog-cli (provctl-bridge)
└─ Lee: services-catalog.toml
└─ Genera: Docker/K8s/Terraform
provctl CLI
└─ Ignora: services-catalog.toml
└─ Sabe: cómo ejecutar servicios (local)
syntaxis installer
└─ No sabe: de provctl
└─ No sabe: de servicios
LO QUE SE NECESITA
syntaxis installer
↓
Leer: services-catalog.toml
├─ "¿Provctl está disponible?"
│ ├─ SÍ:
│ │ ├─ Generar config provctl
│ │ ├─ Llamar: provctl config apply
│ │ └─ Resultado: servicios gestionados
│ │
│ └─ NO:
│ ├─ Mostrar guía manual
│ ├─ Generar scripts
│ └─ Usuario los ejecuta manualmente
│
└─ Generar presets:
├─ local: CLI solo
├─ dev: CLI + TUI + API + SurrealDB
├─ staging: API + Dashboard + SurrealDB
└─ production: API + SurrealDB + NATS + HA
📊 Visión Actual vs Propuesta
ACTUAL (Hoy)
El TOML catalog existe pero:
✗ syntaxis core NO lo usa
✗ provctl NO lo sabe
✓ provisioning tools lo leen (catalog-cli)
✓ NuShell scripts lo exploran
Resultado: Catalog es documentación, no fuente de verdad operativa
PROPUESTA (Plan)
El TOML catalog sería:
✓ syntaxis installer lo leería
✓ provctl lo consumiría (para orchestration)
✓ provisioning tools lo generan
✓ Presets definidos en él
Resultado: Catalog es fuente de verdad para
- QUÉ instalar (project-provisioning)
- CÓMO ejecutar (provctl)
- QUÉ presets usar (syntaxis installer)
🚨 Las Preguntas Correctas
1. ¿Cuál es el propósito del catalog?
Opciones:
- A) Documentación (está bien como está)
- B) Definición de presets (para sintaxis installer)
- C) Fuente de verdad para provctl
- D) Todo lo anterior
2. ¿Debería provctl leer el catalog?
Si SÍ:
provctl config apply --from-catalog syntaxis-dev
↓
Lee services-catalog.toml
↓
Genera configuración local
↓
Inicia servicios
Si NO:
provctl config apply --from-file my-services.toml
↓
Usuario copia servicios a archivo separado
↓
Duplicación de definiciones
3. ¿Debería syntaxis installer usar provctl?
Si SÍ:
syntaxis-installer --preset dev
↓
Detecta provctl disponible
↓
Usa provctl para orchestration automática
↓
Servicios se inician automáticamente
Si NO:
syntaxis-installer --preset dev
↓
Muestra guía manual
↓
Usuario corre comandos manualmente
💡 Propuesta de Solución
Fase 1: Clarificar
Responder:
- ¿Es el catalog TOML la fuente de verdad?
- ¿Provctl debe consumirlo?
- ¿Sintaxis installer debe usar provctl?
Fase 2: Conectar
Si respuestas son SÍ:
- Extender
catalog.rspara exportar formato que provctl entienda - Integrar lectura de catalog en provctl CLI
- Agregar soporte en syntaxis installer para detectar/usar provctl
Fase 3: Validar
Tests de integración:
# Generar config desde catalog
provctl config --from-catalog syntaxis-dev
# Validar configuración
provctl config validate
# Aplicar y monitorear
provctl config apply
provctl status --all
📝 Resumen
El problema REAL es:
Tenemos dos herramientas potentes (project-provisioning y provctl) pero desconectadas. El catalog TOML podría ser el puente pero:
- ❌ No está claro cuál es su propósito
- ❌ provctl no lo consume
- ❌ syntaxis installer no sabe de él
- ❌ No hay "fuente de verdad" única
La solución REAL requiere:
Decidir si el catalog es "fuente de verdad" y si es así:
- ✅ Conectar project-provisioning → catalog
- ✅ Conectar provctl → catalog
- ✅ Conectar syntaxis installer → catalog
- ✅ Crear "presets" como combinaciones de servicios
Lo que NO es el problema:
- ❌ KCL vs TOML
- ❌ REST API para catalog (puede ser util pero no es el problema)
- ❌ Multi-lenguaje support (util pero no core)
- ❌ Recompilación (no ocurre)
PRÓXIMA DECISIÓN: ¿El catalog TOML es la fuente de verdad para todo, o solo documentación?