8f6958f856
Registra los nuevos issues pendientes en el indice y excluye la carpeta worktrees/ del control de versiones. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
113 lines
3.9 KiB
Markdown
113 lines
3.9 KiB
Markdown
# 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.
|