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) <noreply@anthropic.com>
This commit is contained in:
@@ -37,7 +37,7 @@ afectados y notas de implementacion.
|
|||||||
| 24c | Security integration + cleanup | [0024c-security-integration.md](completed/0024c-security-integration.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 |
|
| 25 | Catálogo cron + scaffolder | [0025-cron-scaffolder.md](completed/0025-cron-scaffolder.md) | completado |
|
||||||
| 26 | Refactorizar runtime.go | [0026-split-runtime.md](0026-split-runtime.md) | pendiente |
|
| 26 | Refactorizar runtime.go | [0026-split-runtime.md](0026-split-runtime.md) | pendiente |
|
||||||
| 27 | Limpiar config schema | [0027-prune-config-schema.md](0027-prune-config-schema.md) | pendiente |
|
| 27 | Limpiar config schema | [0027-prune-config-schema.md](completed/0027-prune-config-schema.md) | completado |
|
||||||
| 28 | Desacoplar launcher | [0028-decouple-launcher.md](0028-decouple-launcher.md) | pendiente |
|
| 28 | Desacoplar launcher | [0028-decouple-launcher.md](0028-decouple-launcher.md) | pendiente |
|
||||||
| 29 | Tests para runtime y config | [0029-core-tests.md](0029-core-tests.md) | pendiente |
|
| 29 | Tests para runtime y config | [0029-core-tests.md](0029-core-tests.md) | pendiente |
|
||||||
| 30 | Separacion Robot vs Agente | [0030-robot-vs-agent.md](0030-robot-vs-agent.md) | pendiente |
|
| 30 | Separacion Robot vs Agente | [0030-robot-vs-agent.md](0030-robot-vs-agent.md) | pendiente |
|
||||||
|
|||||||
@@ -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.
|
||||||
Reference in New Issue
Block a user