- Directorios: PascalCase (p2601_dasuten → P2601_Dasuten) - Planes: numeración pura (P2601_6.1.A → P2601.06.01) - Sin caracteres especiales en nombres de archivo - 07_proyectos.md: convención RFC-ADN-01 integrada, P2604/P2605 agregados - evento:listar: nueva opción --detalle para descripciones completas
8.9 KiB
P2604 - Mejoras al ADN
Menos es Más + Mejora Continua + Armonía Integral
Enfoque
Mejoras atómicas, incrementales y reutilizables. Una herramienta por vez.
Diagnóstico Integral
Archivos Analizados
tools/run(punto de entrada)tools/cli/*.rb(18 subcomandos)tools/core/*.rb(10 módulos)tools/db/**/*.rb(importers, exporters, core)Gemfile,.bundle/config
Problemas Identificados
| # | Problema | Archivo(s) | Principio | Severidad |
|---|---|---|---|---|
| 1 | Sin tests para módulos core | core/*.rb |
Menos es Más | Alta |
| 2 | Banner DEPRECATED incompleto | cli/validador.rb |
Armonía | Media |
| 3 | core/validador.rb sin deprecation | core/validador.rb |
Armonía | Media |
| 4 | Constantes de colores hardcodeadas | core/colores.rb |
Menos es Más | Baja |
| 5 | Sin handler de errores global | run |
Armonía | Alta |
| 6 | db/exporters sin tests | db/exporters/*.rb |
Menos es Más | Media |
| 7 | Logger sin rotación | core/logger.rb |
Mejora Cont. | Baja |
| 8 | Help inconsistente entre CLI | cli/*.rb |
Armonía | Baja |
Plan de Mejoras (8 Fases)
Fase 1: Tests Core (Menos es Más)
Objetivo: Coverage progresivo, un módulo a la vez.
| ID | Módulo | Tests | Estado |
|---|---|---|---|
| T1 | spec/db/evento_spec.rb |
3 | ✅ |
| T2 | spec/core/colores_spec.rb |
6 | ✅ |
| T3 | spec/core/validador_spec.rb |
6 | ✅ |
| T4 | spec/cli/help_spec.rb |
0 | 📍 |
Total tests: 15 passing
Fase 2: Deprecation Banners (Armonía)
| ID | Archivo | Acción | Estado |
|---|---|---|---|
| D1 | cli/validador.rb |
Banner agregado | ✅ |
| D2 | core/validador.rb |
Revisar - útil para validaciones | ⏸️ |
| D3 | db/exporters/md_exporter.rb |
Banner agregado | ✅ |
Fase 3: Manejo de Errores (Armonía)
Objetivo: Consistencia en manejo de excepciones.
| ID | Mejora | Estado |
|---|---|---|
| E1 | Agregar rescue global en run |
✅ |
| E2 | Estandarizar mensajes de error | ✅ |
| E3 | Logging de excepciones no manejadas | ✅ |
Herramientas creadas:
core/error_handler.rb- helper reutilizable- Excepciones personalizadas en
core/constants.rb:ADN::Error,ADN::DBError,ADN::ValidationError
Fase 4: Constantes y Config (Menos es Más)
| ID | Mejora | Estado |
|---|---|---|
| C1 | Documentar constantes en constants.rb | ✅ |
| C2 | Agregar constantes reutilizables (estados, modos) | ✅ |
| C3 | Validar constantes al inicio | ✅ |
Mejoras:
constants.rbahora incluye: estados (⏳✅❌⚠️⏸️📍), modos (P/R), DB config, excepciones
Fase 5: Logger Mejorado (Mejora Continua)
| ID | Mejora | Estado |
|---|---|---|
| L1 | Agregar rotación de logs | ✅ |
| L2 | Niveles de log configurables | ✅ |
| L3 | Output JSON estructurado | ✅ |
Mejoras: Rotación por tamaño (>10MB), mantiene 7 archivos, nivel mínimo configurable
Fase 6: Help Consistente (Armonía)
| ID | CLI | Mejora | Estado |
|---|---|---|---|
| H1 | Todos | HelpFormatter helper | ✅ |
Herramienta creada: core/help_formatter.rb
Fase 7: Documentación Técnica
| ID | Documento | Contenido | Estado |
|---|---|---|---|
| DOC1 | docs/tecnica/adn_cli.md |
Referencia CLI | ✅ |
| DOC2 | docs/tecnica/adn_core.md |
Módulos core | ✅ |
| DOC3 | docs/tecnica/adn_tests.md |
Guía de testing | ✅ |
Fase 8: CI/CD (Futuro)
| ID | Mejora | Estado |
|---|---|---|
| CI1 | GitHub Actions para tests | ✅ |
| CI2 | Lint automatizado | ✅ |
Archivos creados:
.github/workflows/test.yml.github/workflows/lint.ymladn/tools/.rubocop.yml
Extensión P2604: Integración MSP (Marzo 2026)
Objetivo: Integrar NotebookLM MSPs con el flujo de trabajo ADN
Fase 9: Integración MSP (Armonía Integral)
| ID | Mejora | Herramienta | Estado |
|---|---|---|---|
| M1 | Auditoría de MSPs | CLI msp:auditar |
✅ |
| M2 | Registro de MSPs en BD | CLI msp:registrar |
✅ |
| M3 | Listado de MSPs disponibles | CLI msp:listar |
✅ |
| M4 | Documentación de integración | docs/mcps/MSPs-ADN.md |
✅ |
| M5 | Reutilizar NodosInfo en CLI | nodos.rb, contexto.rb |
✅ |
Fase 10: Saneamiento y Consolidación (Armonía + Menos es Más)
Objetivo: Un solo punto de verdad (
adn/README.md) y un solo plan (P2604). Eliminar código muerto, archivos obsoletos y duplicaciones.
| ID | Mejora | Tipo | Estado |
|---|---|---|---|
| S1 | Eliminar when 'triggers' duplicado en run |
Fix bug | ✅ |
| S2 | Eliminar cli/commit.rb (truncado, sin uso) |
Limpieza | ✅ |
| S3 | Eliminar cli/inicio.rb y cli/cierre.rb (legacy, reemplazados por jornada.rb) |
Limpieza | ✅ |
| S4 | Mover planes obsoletos de docs/plan/ a docs/_hist/ |
Consolidación | ✅ |
| S5 | Mover docs técnicos duplicados (docs/tecnica/) a docs/_hist/ |
Consolidación | ✅ |
| S6 | Eliminar manifiesto vacío docs/proyectos/P2604_proyecto_p2604.md |
Limpieza | ✅ |
| S7 | Corregir referencia a plan obsoleto en run |
Fix | ✅ |
| S8 | Dejar de cargar core/validador.rb obsoleto en run |
Limpieza | ✅ |
| S9 | Limpiar progreso duplicado en este plan | Doc | ✅ |
| S10 | Migrar SubcomandoSalud al namespace ADN:: |
Refactor | ✅ |
| S11 | Crear CLI ssh — ejecución remota reutilizable via candados + EjecutorRemoto |
Herramienta | ✅ |
| S12 | Refactorizar ssh.rb — leer datos de fichas via NodosInfo, eliminar hash hardcodeado |
Refactor | ✅ |
| S13 | Consolidar core/ — mover lógica de dominio a submódulos CLI (nodos_info→nodos/, etc.) |
Arquitectura | ✅ |
| S14 | Agregar subcomando nodos info <nodo> — exponer metadata de fichas como herramienta CLI |
Herramienta | ✅ |
| S15 | Actualizar README.md — estructura real de tools/, nuevos subcomandos, directiva submódulos |
Doc | ✅ |
Extensión P2604: Bitácora Web + Mejoras Eventos (Marzo 2026)
Objetivo: Mejorar la experiencia de usuario en la bitácora web y la consistencia en el CLI de eventos.
Fase 11: Bitácora Web (Mejora Continua)
| ID | Mejora | Herramienta | Estado |
|---|---|---|---|
| B1 | Auto-refresh cada 30 segundos | React App.tsx | ✅ |
| B2 | Refresh al recuperar foco (visibility change) | React App.tsx | ✅ |
| B3 | Smart refresh - solo actualizar si hay cambios (comparando max_id) | Backend + Frontend | ✅ |
| B4 | Documentar en README.md | adn/README.md |
📍 |
Fase 12: Consistencia de Eventos (Menos es Más)
El estado y modo deben ser valores derivados, no ingresados manualmente.
| ID | Mejora | Archivo | Estado |
|---|---|---|---|
| E1 | Estado calculado automáticamente desde hora_fin (si tiene → ✅, si no → ⏳) |
cli/db/evento.rb |
✅ |
| E2 | Modo resuelto automáticamente desde la última jornada del día | cli/db/evento.rb |
✅ |
| E3 | Estado automático también al actualizar evento con --fin |
cli/db/evento.rb |
✅ |
| E4 | Actualizar ayuda y documentación | adn/README.md |
📍 |
Comportamiento:
- Al crear evento sin especificar
--estado:- Si tiene
--fin→ estado = "✅" (completado) - Si NO tiene
--fin→ estado = "⏳" (en proceso)
- Si tiene
- Al crear evento sin especificar
--modo:- Busca la última entrada que contenga "inicio de jornada" y usa su modo
- Si no hay jornada → usa default "P" (Presencial)
- Al actualizar evento con
--finsin especificar--estado:- Automatically set to "✅"
Progreso
Fase 1: ██████████ 100% (T1-T3: 15 tests)
Fase 2: ██████░░░░ 67% (D1, D3 done)
Fase 3: ██████████ 100% (E1-E3: error handler)
Fase 4: ██████████ 100% (C1-C3: constants.rb)
Fase 5: ██████████ 100% (L1-L3: logger.rb)
Fase 6: ██████████ 100% (H1: HelpFormatter)
Fase 7: ██████████ 100% (DOC1-DOC3: docs/tecnica/)
Fase 8: ██████████ 100% (CI1-CI2: GitHub Actions)
Fase 9: ██████████ 100% (M1-M5: MSP CLI)
Fase 10: ██████████ 100% (S1-S15 done ✔)
Fase 11: ██████████ 100% (B1-B3 done)
Fase 12: ████████░░ 67% (E1-E3 done)
Métricas Totales
| Métrica | Valor |
|---|---|
| Tests pasando | 15 |
| Archivos creados | 12 |
| Archivos modificados | 10 |
| Archivos limpiados/movidos | 20+ |
| Fases completadas | 11/12 (92%) |
| Documentos técnicos | Consolidados en adn/README.md |
Próxima Acción
B3 + E4: Actualizar adn/README.md con las nuevas funcionalidades (auto-refresh, estado/modo calculado)
Referencias
- Punto de verdad:
adn/README.md - ADN IA:
05_ia.md - Bitácoras: ID 1054-1056, 1073, 1106, 1112
- Planes históricos movidos a:
docs/_hist/plan/