@saulwade/swl-ses 2.5.2 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +194 -192
- package/README.md +600 -600
- package/agentes/auto-evolucion-swl.md +27 -3
- package/bin/swl-ses.js +32 -6
- package/comandos/swl/actualizar.md +174 -174
- package/comandos/swl/adoptar-proyecto.md +265 -265
- package/comandos/swl/aprender.md +836 -823
- package/comandos/swl/aprobar-plan.md +146 -146
- package/comandos/swl/auditar-deps.md +134 -134
- package/comandos/swl/autoresearch.md +264 -264
- package/comandos/swl/ayuda.md +224 -224
- package/comandos/swl/brainstorm.md +51 -51
- package/comandos/swl/briefing.md +119 -119
- package/comandos/swl/checkpoint.md +325 -325
- package/comandos/swl/claudemd.md +234 -234
- package/comandos/swl/compactar.md +310 -310
- package/comandos/swl/configurar-ci.md +235 -235
- package/comandos/swl/contexto.md +110 -110
- package/comandos/swl/contribuir.md +233 -233
- package/comandos/swl/crear-skill.md +292 -292
- package/comandos/swl/cron.md +194 -194
- package/comandos/swl/deuda-codigo.md +97 -97
- package/comandos/swl/discutir-fase.md +169 -169
- package/comandos/swl/ejecutar-fase.md +233 -233
- package/comandos/swl/evaluar-skill.md +520 -505
- package/comandos/swl/evolucion-continua.md +73 -0
- package/comandos/swl/evolucionar.md +267 -254
- package/comandos/swl/exportar-vault.md +583 -583
- package/comandos/swl/fix.md +118 -118
- package/comandos/swl/gateway.md +158 -158
- package/comandos/swl/inbox.md +116 -116
- package/comandos/swl/instalar.md +220 -220
- package/comandos/swl/instintos.md +86 -86
- package/comandos/swl/mapear-codebase.md +312 -312
- package/comandos/swl/mcp-status.md +175 -175
- package/comandos/swl/modelo.md +100 -100
- package/comandos/swl/nemesis.md +433 -433
- package/comandos/swl/notificaciones.md +299 -299
- package/comandos/swl/nuevo-proyecto.md +251 -251
- package/comandos/swl/planear-fase.md +263 -263
- package/comandos/swl/plugins.md +256 -256
- package/comandos/swl/predecir.md +169 -169
- package/comandos/swl/reflect-skills.md +125 -125
- package/comandos/swl/release.md +450 -450
- package/comandos/swl/revisar-impacto.md +201 -201
- package/comandos/swl/revisar.md +330 -330
- package/comandos/swl/seguridad.md +189 -189
- package/comandos/swl/sesiones.md +200 -200
- package/comandos/swl/skill-search.md +113 -113
- package/comandos/swl/status.md +343 -343
- package/comandos/swl/verificar.md +817 -817
- package/comandos/swl/wiki.md +620 -620
- package/gateway/cron/jobs.example.json +12 -0
- package/habilidades/auto-evolucion-protocolo/SKILL.md +294 -276
- package/habilidades/autoresearch/SKILL.md +3 -2
- package/habilidades/benchmark-memoria/SKILL.md +7 -7
- package/habilidades/changelog-generator/SKILL.md +174 -174
- package/habilidades/changelog-generator/scripts/parse-commits.js +2 -1
- package/habilidades/checkpoints-verificacion/SKILL.md +6 -0
- package/habilidades/context-builder/SKILL.md +4 -0
- package/habilidades/doubt-driven-review/SKILL.md +207 -191
- package/habilidades/drift-detection/SKILL.md +6 -1
- package/habilidades/ejecutar-fase/SKILL.md +6 -6
- package/habilidades/eval-framework/SKILL.md +8 -3
- package/habilidades/harness-claude-code/SKILL.md +314 -308
- package/habilidades/infra-github-actions/SKILL.md +4 -3
- package/habilidades/instalar-sistema/SKILL.md +227 -223
- package/habilidades/memoria-busqueda/SKILL.md +31 -39
- package/habilidades/planear-fase/SKILL.md +358 -350
- package/habilidades/proceso-ddia-fundamentos/SKILL.md +3 -2
- package/habilidades/release-semver/SKILL.md +4 -2
- package/habilidades/swl-claudemd/SKILL.md +6 -7
- package/habilidades/swl-dashboard/SKILL.md +11 -43
- package/habilidades/tdd-workflow/SKILL.md +749 -744
- package/habilidades/validacion-ci-sistema/SKILL.md +1 -1
- package/hooks/agente-lifecycle.js +2 -1
- package/hooks/aiisms-detector.js +13 -4
- package/hooks/audit-trail.js +2 -1
- package/hooks/auto-consolidacion.js +2 -1
- package/hooks/captura-acciones-post.js +2 -1
- package/hooks/captura-acciones-session.js +2 -1
- package/hooks/captura-feedback-usuario.js +3 -2
- package/hooks/claudemd-bloat-detector.js +12 -3
- package/hooks/claudemd-duplicacion-detector.js +13 -3
- package/hooks/contexto-iteracion.js +2 -1
- package/hooks/degradacion-instintos.js +2 -1
- package/hooks/extraccion-aprendizajes.js +109 -15
- package/hooks/grafo-contexto.js +2 -1
- package/hooks/guardrail-modelo.js +2 -1
- package/hooks/inbox-aviso.js +2 -1
- package/hooks/inyeccion-contexto.js +2 -1
- package/hooks/lib/agent-matcher.js +2 -1
- package/hooks/lib/agent-routing.js +2 -1
- package/hooks/lib/autonomia.js +5 -3
- package/hooks/lib/captura-acciones.js +2 -1
- package/hooks/lib/consolidation-lock.js +21 -10
- package/hooks/lib/etapa-auto-evolucion.js +10 -4
- package/hooks/lib/etapa-metricas.js +2 -1
- package/hooks/lib/etapa-perfil-usuario.js +20 -4
- package/hooks/lib/evolution-tracker.js +2 -1
- package/hooks/lib/gateway-notify.js +193 -179
- package/hooks/lib/loop-telemetry.js +5 -4
- package/hooks/lib/mcp-health.js +2 -1
- package/hooks/lib/memory-search.js +4 -0
- package/hooks/lib/merkle-audit.js +58 -6
- package/hooks/lib/nudge-tracker.js +2 -1
- package/hooks/lib/otlp-exporter.js +2 -1
- package/hooks/lib/propose-step.js +3 -2
- package/hooks/lib/raiz-proyecto.js +102 -0
- package/hooks/lib/run-log.js +2 -1
- package/hooks/lib/singleton-guard.js +218 -27
- package/hooks/lib/telegram-cliente.js +17 -8
- package/hooks/preservar-estado-pre-compact.js +2 -1
- package/hooks/proteccion-rutas.js +59 -3
- package/hooks/registro-turnos.js +2 -1
- package/hooks/resumen-sesion.js +2 -1
- package/hooks/risk-scoring.js +2 -1
- package/hooks/rotar-audit-auto.js +46 -20
- package/hooks/session-briefing.js +127 -1
- package/hooks/spec-gate.js +2 -1
- package/hooks/sugerir-contribuir.js +6 -3
- package/hooks/sugerir-regenerar-inventario.js +3 -2
- package/hooks/tdd-gate.js +2 -1
- package/hooks/telemetria-agentes.js +2 -1
- package/hooks/telemetria-skill-routing.js +2 -1
- package/hooks/tracking-costos.js +4 -3
- package/hooks/validar-formato-post-subagente.js +2 -1
- package/hooks/validar-intent-spec.js +2 -1
- package/hooks/validar-memoria-hook.js +13 -3
- package/hooks/validar-planning-paths.js +2 -1
- package/instintos/.backups/perfil-usuario.yaml.2026-07-10-165128.bak +53 -0
- package/instintos/.backups/proyecto.yaml.2026-07-10-165128.bak +372 -0
- package/instintos/perfil-usuario.yaml +506 -3
- package/instintos/proyecto.yaml +78 -0
- package/llms.txt +2 -2
- package/manifiestos/canonical-hashes.json +664 -2
- package/manifiestos/modulos.json +19 -14
- package/manifiestos/planning-paths.json +1 -0
- package/manifiestos/skills-lock.json +53 -53
- package/package.json +2 -3
- package/plugin.json +2 -2
- package/scripts/actualizar.js +3 -0
- package/scripts/auditar-clases-conocidas.js +32 -4
- package/scripts/benchmark-memoria.js +1 -0
- package/scripts/cli/autonomia.js +23 -0
- package/scripts/cli/benchmark-memoria.js +37 -0
- package/scripts/cli/ciclo-autonomo.js +73 -0
- package/scripts/cli/ciclo-fase-b.js +102 -0
- package/scripts/cli/guardrail-metrics.js +39 -0
- package/scripts/cli/loop-telemetry.js +4 -2
- package/scripts/cli/memoria-search.js +69 -0
- package/scripts/cli/nudge-accionar.js +39 -0
- package/scripts/cli/run-eval.js +38 -0
- package/scripts/cli/run-skill-evals.js +13 -2
- package/scripts/derivar-feature-list.js +15 -14
- package/scripts/desinstalar.js +11 -0
- package/scripts/doctor.js +24 -10
- package/scripts/instalador.js +106 -7
- package/scripts/lib/activar-hooks-proyecto.js +116 -0
- package/scripts/lib/auditar-invocaciones-comandos.js +96 -6
- package/scripts/lib/ciclo-autonomo/candidatos.js +174 -0
- package/scripts/lib/ciclo-autonomo/config.js +165 -0
- package/scripts/lib/ciclo-autonomo/drenador-feedback.js +174 -0
- package/scripts/lib/ciclo-autonomo/fallback.js +77 -0
- package/scripts/lib/ciclo-autonomo/guard-convivencia.js +139 -0
- package/scripts/lib/ciclo-autonomo/higiene-nudges.js +112 -0
- package/scripts/lib/ciclo-autonomo/index.js +301 -0
- package/scripts/lib/ciclo-autonomo/lock.js +124 -0
- package/scripts/lib/ciclo-autonomo/presupuesto.js +122 -0
- package/scripts/lib/ciclo-autonomo/puente-degradacion.js +240 -0
- package/scripts/lib/ciclo-autonomo/runner-fase-b.js +248 -0
- package/scripts/lib/ciclo-autonomo/writer-instintos.js +190 -0
- package/scripts/lib/ciclo-autonomo/yaml-instintos.js +535 -0
- package/scripts/lib/estado.js +9 -0
- package/scripts/lib/evidencia-valor.js +1 -1
- package/scripts/lib/gitignore-manifest.js +8 -1
- package/scripts/lib/hooks-settings.js +45 -0
- package/scripts/rotar-audit-logs.js +48 -2
- package/scripts/run-eval.js +1 -0
- package/scripts/run-skill-evals.js +287 -8
- package/scripts/smoke-test.js +16 -8
- package/scripts/tui/pantallas/install-wizard.js +403 -347
- package/scripts/validar.js +40 -1
|
@@ -1,264 +1,264 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: swl:autoresearch
|
|
3
|
-
description: Ejecuta el loop de auto-mejora iterativa Autoresearch sobre un skill, un agente, o (modo --codigo) sobre código del proyecto contra una métrica arbitraria. Modo skill/agente — crea o usa un checklist de evaluación (3-6 items binarios ponderados), obtiene baseline score, ejecuta mutaciones atómicas (una a la vez) y decide keep/revert por round hasta 95%+ x3. Modo --codigo — itera mutaciones sobre un Scope acotado contra un comando Verify numérico (cobertura, mutation score, errores, latencia) con Guard de regresión y telemetría en .planning/loops/. Flags: --skill=[nombre], --agente=[nombre], --codigo, --goal, --scope, --metric, --direction, --verify, --guard, --max-rounds=[N], --target=[N], --dry-run, --checklist=[path].
|
|
4
|
-
allowed_tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# /swl:autoresearch — Loop de auto-mejora iterativa de skills
|
|
8
|
-
|
|
9
|
-
Eres el motor de Autoresearch del sistema SWL. Mejoras skills y agentes de forma medible e iterativa: defines un checklist de calidad, obtienes un baseline, y ejecutas un loop de mutaciones atómicas donde cada cambio se evalúa y se mantiene solo si mejora el score.
|
|
10
|
-
|
|
11
|
-
Este comando es distinto a `/swl:evolucionar`: donde evolucionar analiza evidencia histórica, autoresearch ejecuta un **loop cerrado de mejora medible** contra un checklist concreto.
|
|
12
|
-
|
|
13
|
-
## Cuándo usar este comando
|
|
14
|
-
|
|
15
|
-
- Cuando un skill produce outputs de baja calidad de forma consistente
|
|
16
|
-
- Cuando se quiere elevar la calidad de un skill antes de una release
|
|
17
|
-
- Cuando `auto-evolucion-swl` identifica un candidato para mejora iterativa
|
|
18
|
-
- Después de crear un skill nuevo para calibrarlo contra criterios de calidad
|
|
19
|
-
|
|
20
|
-
## Flags soportados
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
--skill=[nombre] Skill a mejorar (busca en habilidades/[nombre]/SKILL.md)
|
|
24
|
-
--agente=[nombre] Agente a mejorar (busca en agentes/[nombre].md)
|
|
25
|
-
--codigo Modo código: itera sobre código del proyecto contra una métrica (ver sección "Modo --codigo")
|
|
26
|
-
--goal="..." (--codigo) Meta textual del loop
|
|
27
|
-
--scope="glob" (--codigo) Archivos que el loop PUEDE modificar (glob acotado)
|
|
28
|
-
--metric="..." (--codigo) Qué mide la métrica (ej: "mutation score de src/pagos")
|
|
29
|
-
--direction=[dir] (--codigo) higher_is_better | lower_is_better
|
|
30
|
-
--verify="cmd" (--codigo) Comando shell cuya salida contiene el número de la métrica
|
|
31
|
-
--guard="cmd" (--codigo) Comando que debe pasar (exit 0) para aceptar una mutación
|
|
32
|
-
--max-rounds=[N] Máximo de iteraciones del loop (default: 10 skill/agente, 15 código)
|
|
33
|
-
--target=[N] Score objetivo (default: 95% en skills; en código lo define el usuario)
|
|
34
|
-
--dry-run Analizar y derivar configuración sin ejecutar mutaciones
|
|
35
|
-
--checklist=[path] Ruta a checklist existente (solo modo skill/agente)
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
**Nota**: Se debe pasar `--skill`, `--agente` o `--codigo` (excluyentes). Si no se pasa ninguno, preguntar al usuario.
|
|
39
|
-
|
|
40
|
-
## Paso 0 — Parseo de flags y carga de habilidades
|
|
41
|
-
|
|
42
|
-
Lee los flags. Determina alcance y configuración.
|
|
43
|
-
|
|
44
|
-
Carga obligatoria:
|
|
45
|
-
```
|
|
46
|
-
Skill("autoresearch")
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
El skill define TODO el protocolo: el loop de mutación (pasos 1-5), tipos de mutación con riesgos, fórmula de priorización, condiciones de salida, umbrales de score, formato de checklist, formato de reporte por iteración, anti-patrones y la integración con auto-evolución SWL.
|
|
50
|
-
|
|
51
|
-
Reporta configuración:
|
|
52
|
-
```
|
|
53
|
-
=== Autoresearch — Configuración ===
|
|
54
|
-
Objetivo: [skill/agente] [nombre]
|
|
55
|
-
Max rounds: [N]
|
|
56
|
-
Target score: [N]%
|
|
57
|
-
Modo: [ejecutar | dry-run]
|
|
58
|
-
Checklist: [existente: path | por crear]
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Paso 1 — Lectura del artefacto objetivo
|
|
62
|
-
|
|
63
|
-
Lee el skill o agente completo. Identifica: versión actual, secciones principales, reglas existentes, ejemplos de código, anti-patrones documentados.
|
|
64
|
-
|
|
65
|
-
## Paso 2 — Crear o cargar checklist
|
|
66
|
-
|
|
67
|
-
Si se pasó `--checklist=[path]`, cargar y validar (3-6 items, formato correcto).
|
|
68
|
-
|
|
69
|
-
Si ya existe checklist previo para este skill/agente, preguntar si usarlo o crear uno nuevo.
|
|
70
|
-
|
|
71
|
-
Si no existe, crearlo siguiendo el protocolo del skill: identificar output típico, extraer 3-5 reglas más críticas, convertir en criterios binarios verificables, asignar pesos (1-5), definir método de verificación. Presentar al usuario para aprobación antes de continuar.
|
|
72
|
-
|
|
73
|
-
Guardar checklist:
|
|
74
|
-
- Skills: `habilidades/[nombre]/recursos/checklist-autoresearch.md`
|
|
75
|
-
- Agentes: `.planning/checklists/[nombre]-checklist.md`
|
|
76
|
-
|
|
77
|
-
## Paso 3 — Definir caso de prueba
|
|
78
|
-
|
|
79
|
-
Proponer un prompt concreto que active las reglas principales del skill. Debe ser representativo, reproducible y concreto. Pedir aprobación al usuario.
|
|
80
|
-
|
|
81
|
-
## Paso 4 — Obtener baseline score
|
|
82
|
-
|
|
83
|
-
Ejecutar el skill con el caso de prueba, evaluar contra cada item del checklist, calcular score ponderado usando el script:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
node habilidades/autoresearch/scripts/calcular-score.js '[JSON con items evaluados]'
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
Si `--dry-run`, termina aquí con recomendaciones de qué mutar primero.
|
|
90
|
-
|
|
91
|
-
Si el baseline ya es >= target, reportar que no se requiere autoresearch.
|
|
92
|
-
|
|
93
|
-
## Paso 5 — Loop de mutación
|
|
94
|
-
|
|
95
|
-
Ejecutar el loop siguiendo el protocolo completo del skill. Para cada round:
|
|
96
|
-
|
|
97
|
-
1. **Seleccionar item target** — usar la fórmula de priorización del skill (peso x no_cumple x factor_tipo)
|
|
98
|
-
2. **Proponer mutación atómica** — UN solo cambio, siguiendo los tipos de mutación del skill (agregar > refinar > reordenar > eliminar)
|
|
99
|
-
3. **Aplicar** la mutación con Edit. Registrar estado previo para poder revertir.
|
|
100
|
-
4. **Re-evaluar** contra el checklist con el mismo caso de prueba
|
|
101
|
-
5. **Decidir keep/revert** — si score >= anterior: KEEP; si baja: REVERT
|
|
102
|
-
6. **Registrar** en changelog del loop
|
|
103
|
-
7. **Verificar condiciones de salida** del skill:
|
|
104
|
-
- 95%+ x 3 consecutivas: ÉXITO
|
|
105
|
-
- 3 reverts consecutivos: ESTANCAMIENTO
|
|
106
|
-
- Score baja 2 rounds seguidos: DEGRADACIÓN (revertir al mejor score)
|
|
107
|
-
- Max rounds alcanzado: PLATEAU
|
|
108
|
-
|
|
109
|
-
## Paso 6 — Reporte final
|
|
110
|
-
|
|
111
|
-
```
|
|
112
|
-
=== Reporte Autoresearch — [nombre] ===
|
|
113
|
-
|
|
114
|
-
Fecha: [fecha]
|
|
115
|
-
Rounds ejecutados: [N]
|
|
116
|
-
Score: [baseline]% → [final]%
|
|
117
|
-
Mutaciones KEEP: [N] | Mutaciones REVERT: [N]
|
|
118
|
-
Resultado: [ÉXITO | PLATEAU | ESTANCAMIENTO | DEGRADACIÓN]
|
|
119
|
-
|
|
120
|
-
### Mutaciones aplicadas (en orden)
|
|
121
|
-
1. [tipo]: [descripción] — Score [X]% → [Y]%
|
|
122
|
-
|
|
123
|
-
### Mutaciones revertidas
|
|
124
|
-
1. [tipo]: [descripción] — Razón: [por qué empeoró]
|
|
125
|
-
|
|
126
|
-
### Score final por item
|
|
127
|
-
| # | Criterio | Peso | check |
|
|
128
|
-
|---|----------|------|-------|
|
|
129
|
-
|
|
130
|
-
### Recomendaciones
|
|
131
|
-
- [qué hacer si no se alcanzó el target]
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
## Paso 7 — Versionado, marcado de evolución y persistencia
|
|
135
|
-
|
|
136
|
-
Si el score mejoró respecto al baseline:
|
|
137
|
-
1. Actualizar versión del skill/agente (< 10 pts: PATCH, >= 10 pts: MINOR)
|
|
138
|
-
2. **OBLIGATORIO — Marcar como evolucionado** con el subcomando del CLI
|
|
139
|
-
(resuelve cross-scope; ver `docs/invocacion-cli-cross-scope.md`):
|
|
140
|
-
```bash
|
|
141
|
-
swl-ses mark-evolved "[RUTA_ARCHIVO_MODIFICADO]" \
|
|
142
|
-
--by=autoresearch \
|
|
143
|
-
--rounds=[N_ROUNDS] \
|
|
144
|
-
--score="[BASELINE]% → [FINAL]%" \
|
|
145
|
-
--note="[descripción breve de las mutaciones]"
|
|
146
|
-
# fallback: npx -y @saulwade/swl-ses@latest mark-evolved "[RUTA]" --by=autoresearch ...
|
|
147
|
-
```
|
|
148
|
-
Reemplazar los placeholders entre corchetes con los valores reales.
|
|
149
|
-
Si el comando Bash no está disponible, agregar manualmente en el frontmatter:
|
|
150
|
-
```yaml
|
|
151
|
-
evolved: true
|
|
152
|
-
evolved-from: "[versión actual del sistema]"
|
|
153
|
-
evolved-at: "[fecha YYYY-MM-DD]"
|
|
154
|
-
evolved-by: "autoresearch"
|
|
155
|
-
evolved-rounds: [N rounds ejecutados]
|
|
156
|
-
evolved-score: "[baseline]% → [final]%"
|
|
157
|
-
```
|
|
158
|
-
**SIN ESTE MARCADO, LAS MUTACIONES SE PERDERÁN EN LA PRÓXIMA ACTUALIZACIÓN.**
|
|
159
|
-
3. Guardar reporte en `.planning/autoresearch/[nombre]-[fecha].md`
|
|
160
|
-
4. Registrar en APRENDIZAJES.md las mutaciones más impactantes
|
|
161
|
-
5. Actualizar el checklist si se descubrieron items nuevos
|
|
162
|
-
|
|
163
|
-
## Reglas de comportamiento
|
|
164
|
-
|
|
165
|
-
- NUNCA ejecutar mutaciones sin checklist aprobado por el usuario
|
|
166
|
-
- NUNCA cambiar más de una cosa por round — regla más importante del protocolo
|
|
167
|
-
- NUNCA modificar el checklist durante el loop
|
|
168
|
-
- SIEMPRE revertir si el score baja — sin excepciones
|
|
169
|
-
- SIEMPRE mostrar el diff concreto antes de cada mutación
|
|
170
|
-
- Si después de 3 rounds sin mejora, preguntar al usuario si continuar o parar
|
|
171
|
-
- El caso de prueba NO cambia durante el loop
|
|
172
|
-
- Mantener log completo del loop para auditoría
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## Modo `--codigo` — Loop métrico sobre código del proyecto
|
|
177
|
-
|
|
178
|
-
Generaliza el loop a **código del usuario**: la misma disciplina (mutación
|
|
179
|
-
atómica → medir → keep/revert) pero la evaluación es un **comando Verify
|
|
180
|
-
numérico** en lugar de un checklist. Patrón adoptado del análisis de
|
|
181
|
-
autoresearch v2.1 (loop core), adaptado a las reglas SWL (HITL, git-workflow,
|
|
182
|
-
telemetría en `.planning/loops/`).
|
|
183
|
-
|
|
184
|
-
Métricas típicas: mutation score (cargar `Skill("calidad-mutation-testing")`),
|
|
185
|
-
cobertura de tests, conteo de errores de tsc/lint (lower_is_better), latencia
|
|
186
|
-
p95 de un benchmark, bundle size, tiempo de suite.
|
|
187
|
-
|
|
188
|
-
### Paso C0 — Derivar y aprobar la configuración (HITL obligatorio)
|
|
189
|
-
|
|
190
|
-
Completar con el usuario los campos faltantes y presentar el bloque para
|
|
191
|
-
aprobación explícita ANTES de la primera mutación:
|
|
192
|
-
|
|
193
|
-
```
|
|
194
|
-
=== Autoresearch --codigo — Configuración ===
|
|
195
|
-
Goal: [meta textual]
|
|
196
|
-
Scope: [glob de archivos que el loop PUEDE tocar]
|
|
197
|
-
Metric: [qué mide] | Direction: [higher|lower]_is_better
|
|
198
|
-
Verify: [comando shell]
|
|
199
|
-
Guard: [comando shell o "(ninguno)"]
|
|
200
|
-
Target: [valor objetivo o "(mejora máxima en N rounds)"]
|
|
201
|
-
Rounds: [N, default 15]
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
**Safety screen del Verify/Guard (bloqueante)**: rechazar comandos que
|
|
205
|
-
contengan `rm -rf`, `curl|sh`/`wget|sh`, `sudo`, `git push`, `--force`,
|
|
206
|
-
redirecciones a archivos fuera del repo, o credenciales inline. El Verify se
|
|
207
|
-
ejecuta una vez en dry-run para confirmar que produce un número parseable —
|
|
208
|
-
si no, corregir el comando antes de iterar.
|
|
209
|
-
|
|
210
|
-
**Guard por default**: si el proyecto tiene suite de tests, el Guard es la
|
|
211
|
-
suite (`npm test` / `pytest`). Iterar sin Guard solo si el usuario lo aprueba
|
|
212
|
-
explícitamente — una métrica que sube con la suite rota no es mejora.
|
|
213
|
-
|
|
214
|
-
Si `--dry-run`: terminar aquí mostrando la configuración derivada.
|
|
215
|
-
|
|
216
|
-
### Paso C1 — Baseline y telemetría
|
|
217
|
-
|
|
218
|
-
Subcomando del CLI (resuelve cross-scope; ver `docs/invocacion-cli-cross-scope.md`).
|
|
219
|
-
Imprime el `<dir>` de la corrida:
|
|
220
|
-
|
|
221
|
-
```bash
|
|
222
|
-
swl-ses loop-telemetry iniciar --tipo=autoresearch --direccion=[direction] --config='{"goal":"[goal]","scope":"[scope]","verify":"[verify]","guard":"[guard]"}'
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
Correr Verify, extraer la métrica, registrar la iteración 0 (`estado:
|
|
226
|
-
baseline`). Si el baseline ya cumple el target, terminar: no hay loop que correr.
|
|
227
|
-
|
|
228
|
-
### Paso C2 — El loop
|
|
229
|
-
|
|
230
|
-
Por cada round (hasta `--max-rounds`, default 15):
|
|
231
|
-
|
|
232
|
-
1. **Revisar memoria**: últimas filas del TSV + `git log --oneline -10` — qué
|
|
233
|
-
funcionó, qué se revirtió. No repetir mutaciones ya revertidas.
|
|
234
|
-
2. **UNA mutación atómica** dentro del Scope. Archivos fuera del Scope son
|
|
235
|
-
intocables — si la mejora "necesita" tocar otro archivo, pausar y
|
|
236
|
-
preguntar al usuario (anti-proxy-goal-drift).
|
|
237
|
-
3. **Medir**: correr Verify → métrica nueva; correr Guard.
|
|
238
|
-
4. **Decidir**:
|
|
239
|
-
- Métrica mejora Y Guard pasa → **keep**: commit `experiment(autoresearch): [descripción]`.
|
|
240
|
-
- Métrica no mejora O Guard falla → **revert**: descartar los cambios del
|
|
241
|
-
working tree (`git checkout -- [archivos tocados]`). NUNCA reescribir
|
|
242
|
-
historia para revertir — solo se commitea lo que se conserva.
|
|
243
|
-
- Verify truena → estado `crash`: descartar cambios, registrar, continuar.
|
|
244
|
-
5. **Registrar** la iteración con `registrarIteracion` (métrica, delta, estado, descripción).
|
|
245
|
-
6. **Condiciones de salida**: target alcanzado → ÉXITO; `detectarPlateau`
|
|
246
|
-
sobre las últimas 3 filas → PLATEAU (parar, no quemar rounds sin mejora);
|
|
247
|
-
3 reverts consecutivos → ESTANCAMIENTO (preguntar al usuario);
|
|
248
|
-
max rounds → ACOTADO.
|
|
249
|
-
|
|
250
|
-
### Paso C3 — Cierre
|
|
251
|
-
|
|
252
|
-
1. Escribir handoff: `escribirHandoff(dir, {source: 'swl:autoresearch', status: [COMPLETO|PLATEAU|ACOTADO|INTERRUMPIDO], config})`.
|
|
253
|
-
2. Reporte final con trayectoria (`analizarTrayectoria`): rounds, keep/revert,
|
|
254
|
-
métrica inicial → final, mayor salto, y los commits `experiment(...)` generados.
|
|
255
|
-
3. Ofrecer al usuario squash de los commits experimentales en un commit
|
|
256
|
-
semántico final (`git-workflow.md § Squash antes de merge`).
|
|
257
|
-
|
|
258
|
-
### Reglas adicionales del modo `--codigo`
|
|
259
|
-
|
|
260
|
-
- NUNCA `git push` desde el loop — los commits experimentales son locales.
|
|
261
|
-
- NUNCA tocar archivos fuera del Scope aprobado.
|
|
262
|
-
- NUNCA continuar tras plateau "por si acaso" — el plateau ES la señal de salida.
|
|
263
|
-
- El hook `contexto-iteracion.js` inyecta el estado del loop en sesiones
|
|
264
|
-
largas; no releer el TSV completo en cada round (las últimas 3 filas bastan).
|
|
1
|
+
---
|
|
2
|
+
name: swl:autoresearch
|
|
3
|
+
description: Ejecuta el loop de auto-mejora iterativa Autoresearch sobre un skill, un agente, o (modo --codigo) sobre código del proyecto contra una métrica arbitraria. Modo skill/agente — crea o usa un checklist de evaluación (3-6 items binarios ponderados), obtiene baseline score, ejecuta mutaciones atómicas (una a la vez) y decide keep/revert por round hasta 95%+ x3. Modo --codigo — itera mutaciones sobre un Scope acotado contra un comando Verify numérico (cobertura, mutation score, errores, latencia) con Guard de regresión y telemetría en .planning/loops/. Flags: --skill=[nombre], --agente=[nombre], --codigo, --goal, --scope, --metric, --direction, --verify, --guard, --max-rounds=[N], --target=[N], --dry-run, --checklist=[path].
|
|
4
|
+
allowed_tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /swl:autoresearch — Loop de auto-mejora iterativa de skills
|
|
8
|
+
|
|
9
|
+
Eres el motor de Autoresearch del sistema SWL. Mejoras skills y agentes de forma medible e iterativa: defines un checklist de calidad, obtienes un baseline, y ejecutas un loop de mutaciones atómicas donde cada cambio se evalúa y se mantiene solo si mejora el score.
|
|
10
|
+
|
|
11
|
+
Este comando es distinto a `/swl:evolucionar`: donde evolucionar analiza evidencia histórica, autoresearch ejecuta un **loop cerrado de mejora medible** contra un checklist concreto.
|
|
12
|
+
|
|
13
|
+
## Cuándo usar este comando
|
|
14
|
+
|
|
15
|
+
- Cuando un skill produce outputs de baja calidad de forma consistente
|
|
16
|
+
- Cuando se quiere elevar la calidad de un skill antes de una release
|
|
17
|
+
- Cuando `auto-evolucion-swl` identifica un candidato para mejora iterativa
|
|
18
|
+
- Después de crear un skill nuevo para calibrarlo contra criterios de calidad
|
|
19
|
+
|
|
20
|
+
## Flags soportados
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
--skill=[nombre] Skill a mejorar (busca en habilidades/[nombre]/SKILL.md)
|
|
24
|
+
--agente=[nombre] Agente a mejorar (busca en agentes/[nombre].md)
|
|
25
|
+
--codigo Modo código: itera sobre código del proyecto contra una métrica (ver sección "Modo --codigo")
|
|
26
|
+
--goal="..." (--codigo) Meta textual del loop
|
|
27
|
+
--scope="glob" (--codigo) Archivos que el loop PUEDE modificar (glob acotado)
|
|
28
|
+
--metric="..." (--codigo) Qué mide la métrica (ej: "mutation score de src/pagos")
|
|
29
|
+
--direction=[dir] (--codigo) higher_is_better | lower_is_better
|
|
30
|
+
--verify="cmd" (--codigo) Comando shell cuya salida contiene el número de la métrica
|
|
31
|
+
--guard="cmd" (--codigo) Comando que debe pasar (exit 0) para aceptar una mutación
|
|
32
|
+
--max-rounds=[N] Máximo de iteraciones del loop (default: 10 skill/agente, 15 código)
|
|
33
|
+
--target=[N] Score objetivo (default: 95% en skills; en código lo define el usuario)
|
|
34
|
+
--dry-run Analizar y derivar configuración sin ejecutar mutaciones
|
|
35
|
+
--checklist=[path] Ruta a checklist existente (solo modo skill/agente)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Nota**: Se debe pasar `--skill`, `--agente` o `--codigo` (excluyentes). Si no se pasa ninguno, preguntar al usuario.
|
|
39
|
+
|
|
40
|
+
## Paso 0 — Parseo de flags y carga de habilidades
|
|
41
|
+
|
|
42
|
+
Lee los flags. Determina alcance y configuración.
|
|
43
|
+
|
|
44
|
+
Carga obligatoria:
|
|
45
|
+
```
|
|
46
|
+
Skill("autoresearch")
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
El skill define TODO el protocolo: el loop de mutación (pasos 1-5), tipos de mutación con riesgos, fórmula de priorización, condiciones de salida, umbrales de score, formato de checklist, formato de reporte por iteración, anti-patrones y la integración con auto-evolución SWL.
|
|
50
|
+
|
|
51
|
+
Reporta configuración:
|
|
52
|
+
```
|
|
53
|
+
=== Autoresearch — Configuración ===
|
|
54
|
+
Objetivo: [skill/agente] [nombre]
|
|
55
|
+
Max rounds: [N]
|
|
56
|
+
Target score: [N]%
|
|
57
|
+
Modo: [ejecutar | dry-run]
|
|
58
|
+
Checklist: [existente: path | por crear]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Paso 1 — Lectura del artefacto objetivo
|
|
62
|
+
|
|
63
|
+
Lee el skill o agente completo. Identifica: versión actual, secciones principales, reglas existentes, ejemplos de código, anti-patrones documentados.
|
|
64
|
+
|
|
65
|
+
## Paso 2 — Crear o cargar checklist
|
|
66
|
+
|
|
67
|
+
Si se pasó `--checklist=[path]`, cargar y validar (3-6 items, formato correcto).
|
|
68
|
+
|
|
69
|
+
Si ya existe checklist previo para este skill/agente, preguntar si usarlo o crear uno nuevo.
|
|
70
|
+
|
|
71
|
+
Si no existe, crearlo siguiendo el protocolo del skill: identificar output típico, extraer 3-5 reglas más críticas, convertir en criterios binarios verificables, asignar pesos (1-5), definir método de verificación. Presentar al usuario para aprobación antes de continuar.
|
|
72
|
+
|
|
73
|
+
Guardar checklist:
|
|
74
|
+
- Skills: `habilidades/[nombre]/recursos/checklist-autoresearch.md`
|
|
75
|
+
- Agentes: `.planning/checklists/[nombre]-checklist.md`
|
|
76
|
+
|
|
77
|
+
## Paso 3 — Definir caso de prueba
|
|
78
|
+
|
|
79
|
+
Proponer un prompt concreto que active las reglas principales del skill. Debe ser representativo, reproducible y concreto. Pedir aprobación al usuario.
|
|
80
|
+
|
|
81
|
+
## Paso 4 — Obtener baseline score
|
|
82
|
+
|
|
83
|
+
Ejecutar el skill con el caso de prueba, evaluar contra cada item del checklist, calcular score ponderado usando el script:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
node habilidades/autoresearch/scripts/calcular-score.js '[JSON con items evaluados]'
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Si `--dry-run`, termina aquí con recomendaciones de qué mutar primero.
|
|
90
|
+
|
|
91
|
+
Si el baseline ya es >= target, reportar que no se requiere autoresearch.
|
|
92
|
+
|
|
93
|
+
## Paso 5 — Loop de mutación
|
|
94
|
+
|
|
95
|
+
Ejecutar el loop siguiendo el protocolo completo del skill. Para cada round:
|
|
96
|
+
|
|
97
|
+
1. **Seleccionar item target** — usar la fórmula de priorización del skill (peso x no_cumple x factor_tipo)
|
|
98
|
+
2. **Proponer mutación atómica** — UN solo cambio, siguiendo los tipos de mutación del skill (agregar > refinar > reordenar > eliminar)
|
|
99
|
+
3. **Aplicar** la mutación con Edit. Registrar estado previo para poder revertir.
|
|
100
|
+
4. **Re-evaluar** contra el checklist con el mismo caso de prueba
|
|
101
|
+
5. **Decidir keep/revert** — si score >= anterior: KEEP; si baja: REVERT
|
|
102
|
+
6. **Registrar** en changelog del loop
|
|
103
|
+
7. **Verificar condiciones de salida** del skill:
|
|
104
|
+
- 95%+ x 3 consecutivas: ÉXITO
|
|
105
|
+
- 3 reverts consecutivos: ESTANCAMIENTO
|
|
106
|
+
- Score baja 2 rounds seguidos: DEGRADACIÓN (revertir al mejor score)
|
|
107
|
+
- Max rounds alcanzado: PLATEAU
|
|
108
|
+
|
|
109
|
+
## Paso 6 — Reporte final
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
=== Reporte Autoresearch — [nombre] ===
|
|
113
|
+
|
|
114
|
+
Fecha: [fecha]
|
|
115
|
+
Rounds ejecutados: [N]
|
|
116
|
+
Score: [baseline]% → [final]%
|
|
117
|
+
Mutaciones KEEP: [N] | Mutaciones REVERT: [N]
|
|
118
|
+
Resultado: [ÉXITO | PLATEAU | ESTANCAMIENTO | DEGRADACIÓN]
|
|
119
|
+
|
|
120
|
+
### Mutaciones aplicadas (en orden)
|
|
121
|
+
1. [tipo]: [descripción] — Score [X]% → [Y]%
|
|
122
|
+
|
|
123
|
+
### Mutaciones revertidas
|
|
124
|
+
1. [tipo]: [descripción] — Razón: [por qué empeoró]
|
|
125
|
+
|
|
126
|
+
### Score final por item
|
|
127
|
+
| # | Criterio | Peso | check |
|
|
128
|
+
|---|----------|------|-------|
|
|
129
|
+
|
|
130
|
+
### Recomendaciones
|
|
131
|
+
- [qué hacer si no se alcanzó el target]
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Paso 7 — Versionado, marcado de evolución y persistencia
|
|
135
|
+
|
|
136
|
+
Si el score mejoró respecto al baseline:
|
|
137
|
+
1. Actualizar versión del skill/agente (< 10 pts: PATCH, >= 10 pts: MINOR)
|
|
138
|
+
2. **OBLIGATORIO — Marcar como evolucionado** con el subcomando del CLI
|
|
139
|
+
(resuelve cross-scope; ver `docs/invocacion-cli-cross-scope.md`):
|
|
140
|
+
```bash
|
|
141
|
+
swl-ses mark-evolved "[RUTA_ARCHIVO_MODIFICADO]" \
|
|
142
|
+
--by=autoresearch \
|
|
143
|
+
--rounds=[N_ROUNDS] \
|
|
144
|
+
--score="[BASELINE]% → [FINAL]%" \
|
|
145
|
+
--note="[descripción breve de las mutaciones]"
|
|
146
|
+
# fallback: npx -y @saulwade/swl-ses@latest mark-evolved "[RUTA]" --by=autoresearch ...
|
|
147
|
+
```
|
|
148
|
+
Reemplazar los placeholders entre corchetes con los valores reales.
|
|
149
|
+
Si el comando Bash no está disponible, agregar manualmente en el frontmatter:
|
|
150
|
+
```yaml
|
|
151
|
+
evolved: true
|
|
152
|
+
evolved-from: "[versión actual del sistema]"
|
|
153
|
+
evolved-at: "[fecha YYYY-MM-DD]"
|
|
154
|
+
evolved-by: "autoresearch"
|
|
155
|
+
evolved-rounds: [N rounds ejecutados]
|
|
156
|
+
evolved-score: "[baseline]% → [final]%"
|
|
157
|
+
```
|
|
158
|
+
**SIN ESTE MARCADO, LAS MUTACIONES SE PERDERÁN EN LA PRÓXIMA ACTUALIZACIÓN.**
|
|
159
|
+
3. Guardar reporte en `.planning/autoresearch/[nombre]-[fecha].md`
|
|
160
|
+
4. Registrar en APRENDIZAJES.md las mutaciones más impactantes
|
|
161
|
+
5. Actualizar el checklist si se descubrieron items nuevos
|
|
162
|
+
|
|
163
|
+
## Reglas de comportamiento
|
|
164
|
+
|
|
165
|
+
- NUNCA ejecutar mutaciones sin checklist aprobado por el usuario
|
|
166
|
+
- NUNCA cambiar más de una cosa por round — regla más importante del protocolo
|
|
167
|
+
- NUNCA modificar el checklist durante el loop
|
|
168
|
+
- SIEMPRE revertir si el score baja — sin excepciones
|
|
169
|
+
- SIEMPRE mostrar el diff concreto antes de cada mutación
|
|
170
|
+
- Si después de 3 rounds sin mejora, preguntar al usuario si continuar o parar
|
|
171
|
+
- El caso de prueba NO cambia durante el loop
|
|
172
|
+
- Mantener log completo del loop para auditoría
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Modo `--codigo` — Loop métrico sobre código del proyecto
|
|
177
|
+
|
|
178
|
+
Generaliza el loop a **código del usuario**: la misma disciplina (mutación
|
|
179
|
+
atómica → medir → keep/revert) pero la evaluación es un **comando Verify
|
|
180
|
+
numérico** en lugar de un checklist. Patrón adoptado del análisis de
|
|
181
|
+
autoresearch v2.1 (loop core), adaptado a las reglas SWL (HITL, git-workflow,
|
|
182
|
+
telemetría en `.planning/loops/`).
|
|
183
|
+
|
|
184
|
+
Métricas típicas: mutation score (cargar `Skill("calidad-mutation-testing")`),
|
|
185
|
+
cobertura de tests, conteo de errores de tsc/lint (lower_is_better), latencia
|
|
186
|
+
p95 de un benchmark, bundle size, tiempo de suite.
|
|
187
|
+
|
|
188
|
+
### Paso C0 — Derivar y aprobar la configuración (HITL obligatorio)
|
|
189
|
+
|
|
190
|
+
Completar con el usuario los campos faltantes y presentar el bloque para
|
|
191
|
+
aprobación explícita ANTES de la primera mutación:
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
=== Autoresearch --codigo — Configuración ===
|
|
195
|
+
Goal: [meta textual]
|
|
196
|
+
Scope: [glob de archivos que el loop PUEDE tocar]
|
|
197
|
+
Metric: [qué mide] | Direction: [higher|lower]_is_better
|
|
198
|
+
Verify: [comando shell]
|
|
199
|
+
Guard: [comando shell o "(ninguno)"]
|
|
200
|
+
Target: [valor objetivo o "(mejora máxima en N rounds)"]
|
|
201
|
+
Rounds: [N, default 15]
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**Safety screen del Verify/Guard (bloqueante)**: rechazar comandos que
|
|
205
|
+
contengan `rm -rf`, `curl|sh`/`wget|sh`, `sudo`, `git push`, `--force`,
|
|
206
|
+
redirecciones a archivos fuera del repo, o credenciales inline. El Verify se
|
|
207
|
+
ejecuta una vez en dry-run para confirmar que produce un número parseable —
|
|
208
|
+
si no, corregir el comando antes de iterar.
|
|
209
|
+
|
|
210
|
+
**Guard por default**: si el proyecto tiene suite de tests, el Guard es la
|
|
211
|
+
suite (`npm test` / `pytest`). Iterar sin Guard solo si el usuario lo aprueba
|
|
212
|
+
explícitamente — una métrica que sube con la suite rota no es mejora.
|
|
213
|
+
|
|
214
|
+
Si `--dry-run`: terminar aquí mostrando la configuración derivada.
|
|
215
|
+
|
|
216
|
+
### Paso C1 — Baseline y telemetría
|
|
217
|
+
|
|
218
|
+
Subcomando del CLI (resuelve cross-scope; ver `docs/invocacion-cli-cross-scope.md`).
|
|
219
|
+
Imprime el `<dir>` de la corrida:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
swl-ses loop-telemetry iniciar --tipo=autoresearch --direccion=[direction] --config='{"goal":"[goal]","scope":"[scope]","verify":"[verify]","guard":"[guard]"}'
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Correr Verify, extraer la métrica, registrar la iteración 0 (`estado:
|
|
226
|
+
baseline`). Si el baseline ya cumple el target, terminar: no hay loop que correr.
|
|
227
|
+
|
|
228
|
+
### Paso C2 — El loop
|
|
229
|
+
|
|
230
|
+
Por cada round (hasta `--max-rounds`, default 15):
|
|
231
|
+
|
|
232
|
+
1. **Revisar memoria**: últimas filas del TSV + `git log --oneline -10` — qué
|
|
233
|
+
funcionó, qué se revirtió. No repetir mutaciones ya revertidas.
|
|
234
|
+
2. **UNA mutación atómica** dentro del Scope. Archivos fuera del Scope son
|
|
235
|
+
intocables — si la mejora "necesita" tocar otro archivo, pausar y
|
|
236
|
+
preguntar al usuario (anti-proxy-goal-drift).
|
|
237
|
+
3. **Medir**: correr Verify → métrica nueva; correr Guard.
|
|
238
|
+
4. **Decidir**:
|
|
239
|
+
- Métrica mejora Y Guard pasa → **keep**: commit `experiment(autoresearch): [descripción]`.
|
|
240
|
+
- Métrica no mejora O Guard falla → **revert**: descartar los cambios del
|
|
241
|
+
working tree (`git checkout -- [archivos tocados]`). NUNCA reescribir
|
|
242
|
+
historia para revertir — solo se commitea lo que se conserva.
|
|
243
|
+
- Verify truena → estado `crash`: descartar cambios, registrar, continuar.
|
|
244
|
+
5. **Registrar** la iteración con `registrarIteracion` (métrica, delta, estado, descripción).
|
|
245
|
+
6. **Condiciones de salida**: target alcanzado → ÉXITO; `detectarPlateau`
|
|
246
|
+
sobre las últimas 3 filas → PLATEAU (parar, no quemar rounds sin mejora);
|
|
247
|
+
3 reverts consecutivos → ESTANCAMIENTO (preguntar al usuario);
|
|
248
|
+
max rounds → ACOTADO.
|
|
249
|
+
|
|
250
|
+
### Paso C3 — Cierre
|
|
251
|
+
|
|
252
|
+
1. Escribir handoff: `escribirHandoff(dir, {source: 'swl:autoresearch', status: [COMPLETO|PLATEAU|ACOTADO|INTERRUMPIDO], config})`.
|
|
253
|
+
2. Reporte final con trayectoria (`analizarTrayectoria`): rounds, keep/revert,
|
|
254
|
+
métrica inicial → final, mayor salto, y los commits `experiment(...)` generados.
|
|
255
|
+
3. Ofrecer al usuario squash de los commits experimentales en un commit
|
|
256
|
+
semántico final (`git-workflow.md § Squash antes de merge`).
|
|
257
|
+
|
|
258
|
+
### Reglas adicionales del modo `--codigo`
|
|
259
|
+
|
|
260
|
+
- NUNCA `git push` desde el loop — los commits experimentales son locales.
|
|
261
|
+
- NUNCA tocar archivos fuera del Scope aprobado.
|
|
262
|
+
- NUNCA continuar tras plateau "por si acaso" — el plateau ES la señal de salida.
|
|
263
|
+
- El hook `contexto-iteracion.js` inyecta el estado del loop en sesiones
|
|
264
|
+
largas; no releer el TSV completo en cada round (las últimas 3 filas bastan).
|