[P2604-S10,S15] SubcomandoSalud→ADN:: + README actualizado

S10: Migrar SubcomandoSalud al namespace ADN:: (consistencia)
S15: Actualizar README.md con estructura real de tools/
  - Tabla de subcomandos: nodos info, ssh --listar
  - Estructura cli/: submódulos (nodos/, ssh/, triggers/, backup/)
  - core/ limpio: solo infraestructura genuina
  - Directiva 5 actualizada: submódulos CLI en vez de core/
  - Eliminados archivos obsoletos del árbol (cierre.rb, inicio.rb)

Fase 10: 100% completada (S1-S15)
- 15 tests, 0 failures
- Evento 1080 (17:32→17:36)
This commit is contained in:
Ricardo Monla
2026-03-15 17:35:08 -03:00
parent 4ff2dc5e8e
commit f608924c6a
4 changed files with 33 additions and 24 deletions
+26 -20
View File
@@ -139,9 +139,10 @@ referencia canónica y exclusiva de las directivas que un agente IA debe seguir.
| `jornada cerrar [modo] [HH:MM]` | Registrar cierre de jornada laboral en DB | DB-First |
| `jornada estado` | Ver estado de la jornada actual desde DB | DB-First |
| `contexto <nodo> [--cmd]` | Obtener contexto topológico y SSH de un nodo | Consulta DB |
| `nodos agrupar [--servidor SRV]` | Agrupar VMs por servidor anfitrión | Consulta DB |
| `nodos listar [--tipo TIPO]` | Listar nodos desde base de datos | DB-First |
| `nodos buscar <término>` | Buscar nodos en base de datos | DB-First |
| `nodos info <nodo>` | Mostrar metadata completa de un nodo (IP, SSH, auth) | Consulta Fichas |
| `nodos agrupar [--servidor SRV]` | Agrupar VMs por servidor anfitrión | Consulta Fichas |
| `nodos listar [--tipo TIPO]` | Listar nodos desde fichas | Consulta Fichas |
| `nodos buscar <término>` | Buscar nodos por nombre o contenido | Consulta Fichas |
| `salud [--dashboard] [--json]` | Ver salud general del sistema ADN | Incluye DB |
| `backup <nodo> [--mode MODO]` | Ejecutar backup seguro de un nodo | Registra en DB |
| `triggers [--listar/--registrar]` | Gestión del motor de triggers | Sincroniza DB |
@@ -153,7 +154,8 @@ referencia canónica y exclusiva de las directivas que un agente IA debe seguir.
| `generar proyecto <código>` | Generar manifiesto de proyecto en DB | DB-First |
| `conocimiento asimilar <archivo>` | Asimilar documentación al ADN | Almacena en DB |
| `msp <subcomando>` | Gestión de MSPs NotebookLM (auditar, registrar, listar) | Integración MCP |
| `ssh <nodo> <comando>` | Ejecución remota segura via SSH + Candados | Registra en DB |
| `ssh <nodo> <comando>` | Ejecución remota segura via SSH + Candados (lee fichas) | Via NodosInfo |
| `ssh --listar` | Listar nodos con SSH configurado | Consulta Fichas |
| `ayuda [subcomando]` | Mostrar ayuda detallada | - |
| `validador [--watch] [--fix]` | ⚠️ **OBSOLETO** - Validación MD-First antigua | MD-First (evitar) |
@@ -232,7 +234,7 @@ referencia canónica y exclusiva de las directivas que un agente IA debe seguir.
2. **Usar subcomandos `db`**: Para cualquier operación CRUD, usar `./adn/tools/run db <subcomando>`.
3. **Auto-Registro en DB**: Toda acción autónoma de la IA DEBE registrarse como entrada en la bitácora del día usando `db evento:crear`.
4. **Ruby como lenguaje de desarrollo**: Todos los componentes nuevos deben escribirse en Ruby, siguiendo principios "Menos es Más" (atómicos, reutilizables).
5. **Reutilizar módulos core**: Antes de crear nueva lógica, verificar si existe módulo en `core/` (ej: `NodosInfo`, `HelpFormatter`, `ErrorHandler`). Duplicar código está prohibido.
5. **Reutilizar submódulos CLI**: Antes de crear nueva lógica, verificar si existe submódulo en `cli/<comando>/` (ej: `nodos/info.rb`, `ssh/ejecutor.rb`). Duplicar código está prohibido. Infraestructura genuina vive en `core/` (colores, constants, logger, error_handler).
6. **Validador obsoleto**: NO usar `validador` (orientado a MD-First). En su lugar, validar coherencia mediante consultas a la base de datos.
6. **Secretos en bóveda**: NUNCA exponer contraseñas en texto plano. Usar `candados` (`eval $(ruby adn/tools/seguridad/candados.rb load <clave>)`).
7. **Topología primero**: Antes de conectarte a un nodo, consultar `./adn/tools/run contexto <nodo>` para entender su ubicación en la red.
@@ -247,33 +249,37 @@ referencia canónica y exclusiva de las directivas que un agente IA debe seguir.
```
adn/tools/
├── run ← Entry point CLI (ejecutable Ruby)
├── cli/ ← Subcomandos CLI (1 archivo por subcomando)
├── cli/ ← Subcomandos CLI (1 archivo + submódulos por comando)
│ ├── ayuda.rb ← Documentación interna de la herramienta
│ ├── backup.rb ← Backup seguro de nodos
├── cierre.rb ← Cierre de jornada (DB-First)
│ └── backup/configurador.rb ← Carga de configuración YAML
│ ├── conocimiento.rb ← Asimilación de documentación
│ ├── contexto.rb ← Contexto topológico de nodos (usa NodosInfo)
│ ├── contexto.rb ← Contexto topológico de nodos (usa nodos/info)
│ ├── db.rb ← Dispatcher de subcomandos DB
── db/ ← Subcomandos específicos de DB (evento, bitacora, nodo, etc.)
│ └── db/ ← Subcomandos DB (evento, bitacora, nodo, etc.)
│ ├── estados.rb ← Tareas en proceso (⏳) desde DB
│ ├── generar.rb ← Generación de bitácoras, nodos y proyectos
│ ├── inicio.rb ← Inicio de jornada (DB-First)
│ ├── jornada.rb ← Inicio/cierre de jornada (DB-First)
│ ├── msp.rb ← Gestión de MSPs NotebookLM
│ ├── nodos.rb ← Agrupación de nodos por servidor (usa NodosInfo)
│ ├── nodos.rb ← Gestión de nodos (info, listar, agrupar, buscar)
│ │ └── nodos/info.rb ← Extracción de metadata de fichas .md
│ ├── plan.rb ← Gestión de planes y progreso
│ ├── proceso.rb ← Procesos técnicos automatizados
│ ├── salud.rb ← Métricas de salud del ADN
│ ├── ssh.rb ← Ejecución remota segura via SSH + Candados
│ │ └── ssh/ejecutor.rb ← Abstracción de ejecución remota
│ ├── tailscale.rb ← Gestión de Tailscale (nodos, status)
│ ├── triggers.rb ← Gestión del motor de triggers
└── validador.rb ← Validación de cumplimiento ADN
├── core/ ← Módulos centrales reutilizables
│ ├── triggers/motor.rb ← Motor de triggers (reacción automática)
│ │ └── triggers/eventos.rb ← Bus de eventos (pub/sub desacoplado)
│ └── validador.rb ← ⚠️ OBSOLETO (MD-First)
├── core/ ← Infraestructura genuina (solo utilidades compartidas)
│ ├── colores.rb ← Constantes de color para terminal
│ ├── conciliador.rb ← Saneamiento preventivo de pendientes
│ ├── configurador.rb ← Carga de configuración YAML
│ ├── constants.rb ← Constantes globales (rutas, estados)
│ ├── error_handler.rb ← Helper para mensajes de error estandarizados
│ ├── eventos.rb ← Bus de eventos (pub/sub desacoplado)
── help_formatter.rb ← Formateador de ayuda estandarizado
│ ├── logger.rb ← Logger estructurado (JSON)
│ ├── nodos_info.rb ← Utilidades para extracción de metadatos de fichas
│ ├── triggers.rb ← Motor de triggers (reacción automática)
│ └── validador.rb ← Validador de formato ADN
│ ├── help_formatter.rb ← Formateador de ayuda estandarizado
── logger.rb ← Logger estructurado (JSON)
├── db/ ← Capa de acceso a datos (PostgreSQL)
│ ├── core/ ← bitacora_db.rb (CRUD principal), buscadores
│ ├── cli/ ← Scripts CLI para exportación masiva
+3 -1
View File
@@ -4,7 +4,8 @@ require 'optparse'
require 'json'
require_relative '../core/colores'
class SubcomandoSalud
module ADN
class SubcomandoSalud
def initialize(args, logger)
@args = args
@logger = logger
@@ -119,3 +120,4 @@ class SubcomandoSalud
errores
end
end
end
+1 -1
View File
@@ -95,7 +95,7 @@ class ADNCLI
when 'contexto'
SubcomandoContexto.new(args, @logger).ejecutar
when 'salud'
SubcomandoSalud.new(args, @logger).ejecutar
ADN::SubcomandoSalud.new(args, @logger).ejecutar
when 'generar'
SubcomandoGenerar.new(args, @logger).ejecutar
when 'nodos'