From f9f192041b223a1c8bf429e99e9b84fe8d38c051 Mon Sep 17 00:00:00 2001 From: Enmanuel Date: Wed, 8 Apr 2026 23:02:33 +0000 Subject: [PATCH] docs: cerrar issue 0027 Mover issue 0027-prune-config-schema a completed/ y actualizar indice. Todas las tareas implementadas: schema podado, template simplificado, configs de agentes limpiados, tests de parsing agregados. Co-Authored-By: Claude Opus 4.6 (1M context) --- dev/issues/README.md | 1 + .../completed/0027-prune-config-schema.md | 112 ++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 dev/issues/completed/0027-prune-config-schema.md diff --git a/dev/issues/README.md b/dev/issues/README.md index 235ad36..653568e 100644 --- a/dev/issues/README.md +++ b/dev/issues/README.md @@ -36,3 +36,4 @@ afectados y notas de implementacion. | 24b | Security loader: shell/security/ | [0024b-security-loader.md](completed/0024b-security-loader.md) | completado | | 24c | Security integration + cleanup | [0024c-security-integration.md](completed/0024c-security-integration.md) | completado | | 25 | Catálogo cron + scaffolder | [0025-cron-scaffolder.md](completed/0025-cron-scaffolder.md) | completado | +| 27 | Limpiar config schema | [0027-prune-config-schema.md](completed/0027-prune-config-schema.md) | completado | diff --git a/dev/issues/completed/0027-prune-config-schema.md b/dev/issues/completed/0027-prune-config-schema.md new file mode 100644 index 0000000..63e7995 --- /dev/null +++ b/dev/issues/completed/0027-prune-config-schema.md @@ -0,0 +1,112 @@ +# 0027 — Limpiar config schema: eliminar codigo muerto + +## Objetivo + +Eliminar las secciones del config schema (`internal/config/schema.go`) que no estan implementadas ni referenciadas en el codebase. Reducir de 560 lineas / 61 structs a solo lo que realmente se usa. + +## Contexto + +- `internal/config/schema.go` tiene 560 lineas y 61 tipos struct +- Secciones **nunca referenciadas** en ningun archivo `.go`: + - `ObservabilityCfg` (metrics, tracing, health) — 0 usos + - `ResilienceCfg` (circuit breaker, retry, queue) — 0 usos + - `AgentsCfg` (peers, delegation, protocol) — 0 usos + - `PersonalityCfg.Communication` (18 campos: humor, quirks, catchphrases) — 0 usos +- El template `_template/config.yaml` tiene 414 lineas cuando un agente real necesita ~40 +- Esto complica el onboarding y crea confusion sobre que es funcional vs especulativo + +## Arquitectura + +``` +internal/config/schema.go → eliminar structs muertos (~180 lineas) +agents/_template/config.yaml → reducir a lo esencial (~60 lineas) +``` + +### Patron pure core / impure shell + +- `pkg/` — sin cambios +- `shell/` — sin cambios +- `agents/` — template simplificado +- `internal/config/` — poda de tipos + +## Tareas + +### Fase 1: Auditar uso real + +- [ ] **1.1** Grep cada struct/campo del schema contra todo el codebase para confirmar cuales tienen 0 referencias +- [ ] **1.2** Documentar en este issue la lista final de tipos a eliminar + +### Fase 2: Podar schema.go + +- [ ] **2.1** Eliminar `ObservabilityCfg` y todos sus sub-structs (LoggingCfg, MetricsCfg, HealthCfg, TracingCfg) +- [ ] **2.2** Eliminar `ResilienceCfg` y sub-structs (CircuitBreakerCfg, RetryCfg, ShutdownCfg, QueueCfg) +- [ ] **2.3** Eliminar `AgentsCfg` y sub-structs (PeerCfg, DelegationCfg) +- [ ] **2.4** Eliminar campos no usados de `PersonalityCfg` (Communication, Humor, Quirks, etc.) +- [ ] **2.5** Verificar que los campos eliminados no rompen el parsing YAML (yaml.v3 ignora campos extra por defecto) + +### Fase 3: Simplificar template + +- [ ] **3.1** Reescribir `agents/_template/config.yaml` con solo los campos funcionales (~60 lineas) +- [ ] **3.2** Añadir comentarios explicativos en el template para cada seccion + +### Fase 4: Tests + +- [ ] **4.1** Verificar que los configs existentes (`assistant-bot`, `asistente-2`, `meteorologo`) siguen parseando correctamente +- [ ] **4.2** `go build -tags goolm ./...` compila +- [ ] **4.3** `go test -tags goolm ./...` pasa + +### Fase 5: Cleanup + +- [ ] **5.1** Actualizar `CLAUDE.md` si se mencionan secciones eliminadas +- [ ] **5.2** Si algun config YAML existente usa campos eliminados, limpiar esas lineas + +--- + +## Ejemplo de uso + +Antes (template 414 lineas): +```yaml +personality: + tone: friendly + communication: + formality: informal # nunca se usa + humor: light # nunca se usa + quirks: ["dice 'vale'"] # nunca se usa +observability: # nunca se usa + logging: ... + metrics: ... +resilience: # nunca se usa + circuit_breaker: ... +``` + +Despues (template ~60 lineas): +```yaml +agent: + id: mi-agente + description: "Descripcion" +personality: + tone: friendly + language: es +llm: + primary: + provider: openai + model: gpt-4o +matrix: + threads: + enabled: true +``` + +## Decisiones de diseno + +- **Eliminar, no comentar**: codigo muerto se borra, no se comenta con "// TODO: implement" +- **Si se necesita en el futuro, se re-añade**: Git tiene historial. No mantener especulacion. +- **yaml.v3 es tolerante**: campos extra en YAML no causan error, asi que eliminar structs no rompe configs existentes que tengan esos campos + +## Prerequisitos + +- Ninguno + +## Riesgos + +- **Falso negativo en grep**: algun campo podria usarse via reflection o string matching. Mitigacion: buscar tambien por nombre de campo en strings +- **Configs de usuarios existentes**: si alguien tiene un config con `observability:`, no rompera (yaml.v3 ignora), pero el campo sera silenciosamente ignorado. Esto ya era el caso.