@saulwade/swl-ses 2.4.3 → 2.5.1
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 -241
- package/README.md +600 -597
- package/agentes/_intent-spec.md +73 -73
- package/agentes/_propose-step.md +90 -90
- package/agentes/abogado-diablo-swl.md +145 -0
- package/agentes/accesibilidad-wcag-swl.md +690 -690
- package/agentes/arquitecto-swl.md +267 -267
- package/agentes/auto-evolucion-swl.md +908 -908
- package/agentes/backend-api-swl.md +1 -1
- package/agentes/backend-csharp-swl.md +420 -420
- package/agentes/backend-go-swl.md +390 -390
- package/agentes/backend-java-swl.md +281 -281
- package/agentes/backend-node-swl.md +1 -1
- package/agentes/backend-python-swl.md +1 -1
- package/agentes/backend-rust-swl.md +364 -364
- package/agentes/backend-workers-swl.md +482 -482
- package/agentes/cloud-infra-swl.md +509 -509
- package/agentes/consolidador-swl.md +541 -541
- package/agentes/datos-swl.md +1 -1
- package/agentes/depurador-swl.md +352 -352
- package/agentes/devops-ci-swl.md +400 -400
- package/agentes/disenador-ui-swl.md +569 -569
- package/agentes/documentador-swl.md +345 -345
- package/agentes/frontend-angular-swl.md +621 -621
- package/agentes/frontend-css-swl.md +716 -716
- package/agentes/frontend-react-swl.md +692 -692
- package/agentes/frontend-swl.md +496 -496
- package/agentes/frontend-tailwind-swl.md +826 -826
- package/agentes/gh-fix-ci-swl.md +6 -1
- package/agentes/implementador-swl.md +1 -1
- package/agentes/investigador-swl.md +432 -432
- package/agentes/investigador-ux-swl.md +505 -505
- package/agentes/llm-apps-swl.md +1 -1
- package/agentes/migrador-swl.md +442 -442
- package/agentes/mobile-android-swl.md +511 -511
- package/agentes/mobile-cross-swl.md +541 -541
- package/agentes/mobile-ios-swl.md +502 -502
- package/agentes/mobile-testing-swl.md +302 -302
- package/agentes/nemesis-auditor-swl.md +285 -285
- package/agentes/notificador-swl.md +1 -1
- package/agentes/observabilidad-swl.md +438 -438
- package/agentes/pagos-swl.md +310 -310
- package/agentes/perfilador-usuario-swl.md +321 -321
- package/agentes/planificador-swl.md +399 -399
- package/agentes/producto-prd-swl.md +589 -589
- package/agentes/red-team-swl.md +218 -218
- package/agentes/release-manager-swl.md +590 -590
- package/agentes/rendimiento-swl.md +713 -713
- package/agentes/resolutor-build-swl.md +10 -1
- package/agentes/revisor-angular-swl.md +278 -278
- package/agentes/revisor-codigo-swl.md +1 -1
- package/agentes/revisor-csharp-swl.md +264 -264
- package/agentes/revisor-go-swl.md +259 -259
- package/agentes/revisor-java-swl.md +257 -257
- package/agentes/revisor-kotlin-swl.md +273 -273
- package/agentes/revisor-nextjs-swl.md +281 -281
- package/agentes/revisor-php-swl.md +271 -271
- package/agentes/revisor-react-swl.md +278 -278
- package/agentes/revisor-rust-swl.md +346 -346
- package/agentes/revisor-seguridad-swl.md +399 -399
- package/agentes/revisor-swift-swl.md +268 -268
- package/agentes/revisor-typescript-swl.md +346 -346
- package/agentes/sre-swl.md +1 -1
- package/agentes/tdd-qa-swl.md +393 -393
- package/bin/lib/bot-comandos.js +1 -1
- package/bin/swl-ses.js +6 -0
- package/comandos/swl/adoptar-proyecto.md +14 -2
- package/comandos/swl/configurar-ci.md +8 -1
- package/comandos/swl/deuda-codigo.md +97 -97
- package/comandos/swl/discutir-fase.md +22 -118
- package/comandos/swl/fix.md +118 -0
- package/comandos/swl/nuevo-proyecto.md +54 -3
- package/comandos/swl/predecir.md +32 -2
- package/comandos/swl/seguridad.md +189 -0
- package/comandos/swl/status.md +5 -3
- package/habilidades/aprendizaje-continuo/SKILL.md +3 -1
- package/habilidades/discutir-fase/SKILL.md +84 -81
- package/habilidades/discutir-fase/recursos/plantilla-contexto.md +136 -0
- package/habilidades/doc-sync/SKILL.md +3 -1
- package/habilidades/doubt-driven-review/SKILL.md +15 -1
- package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
- package/habilidades/estructura-proyecto-claude/SKILL.md +11 -2
- package/habilidades/harness-claude-code/SKILL.md +3 -1
- package/habilidades/instalar-sistema/SKILL.md +3 -1
- package/habilidades/meta-reglas-extendido/SKILL.md +92 -0
- package/habilidades/meta-reglas-extendido/recursos/analisis-previo-tareas-grandes.md +186 -0
- package/habilidades/meta-reglas-extendido/recursos/analizar-directorios-antes-de-escribir.md +235 -0
- package/habilidades/meta-reglas-extendido/recursos/api-diseno.md +413 -0
- package/habilidades/meta-reglas-extendido/recursos/arquitectura.md +491 -0
- package/habilidades/meta-reglas-extendido/recursos/arreglar-al-detectar.md +264 -0
- package/habilidades/meta-reglas-extendido/recursos/debatir-antes-de-aceptar.md +152 -0
- package/habilidades/meta-reglas-extendido/recursos/git-workflow.md +259 -0
- package/habilidades/meta-reglas-extendido/recursos/gobernanza.md +291 -0
- package/habilidades/meta-reglas-extendido/recursos/memoria-consolidada.md +263 -0
- package/habilidades/meta-reglas-extendido/recursos/seguridad-agentes.md +443 -0
- package/habilidades/meta-reglas-extendido/recursos/sesiones-paralelas.md +190 -0
- package/habilidades/meta-reglas-extendido/recursos/sin-duplicacion-reglas-globales.md +179 -0
- package/habilidades/meta-reglas-extendido/recursos/skills-estandar.md +394 -0
- package/habilidades/meta-reglas-extendido/recursos/usar-code-review-graph.md +156 -0
- package/habilidades/meta-reglas-extendido/recursos/usar-context7.md +236 -0
- package/habilidades/meta-reglas-extendido/recursos/usar-sistema-swl.md +253 -0
- package/habilidades/meta-reglas-extendido/recursos/verificar-citas-normativas.md +527 -0
- package/habilidades/meta-skills-estandar/SKILL.md +3 -1
- package/habilidades/nuevo-proyecto/SKILL.md +20 -3
- package/habilidades/php-experto/SKILL.md +10 -3
- package/habilidades/{filament-admin/SKILL.md → php-experto/recursos/filament-admin.md} +23 -39
- package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -166
- package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -85
- package/habilidades/proceso-debate-adversarial/recursos/personas.md +5 -4
- package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -0
- package/hooks/check-update.js +19 -10
- package/hooks/contexto-subagente.js +68 -68
- package/hooks/degradacion-instintos.js +1 -1
- package/hooks/extraccion-aprendizajes.js +2 -2
- package/hooks/lib/briefing.js +3 -3
- package/hooks/lib/nudge-tracker.js +1 -1
- package/hooks/lib/otlp-exporter.js +1 -1
- package/hooks/lib/webhook-dedup.js +1 -1
- package/hooks/session-briefing.js +1 -1
- package/llms.txt +6 -6
- package/manifiestos/canonical-hashes.json +713 -52
- package/manifiestos/hooks-config.json +469 -469
- package/manifiestos/invariantes-criticos.json +30 -30
- package/manifiestos/modulos.json +168 -135
- package/manifiestos/perfiles.json +0 -2
- package/manifiestos/skills-lock.json +49 -56
- package/package.json +7 -5
- package/plantillas/github-workflows/README.md +15 -1
- package/plantillas/github-workflows/swl-devsecops.yml +70 -0
- package/plugin.json +5 -5
- package/reglas/analisis-previo-tareas-grandes.md +30 -156
- package/reglas/analizar-directorios-antes-de-escribir.md +30 -211
- package/reglas/api-diseno.md +28 -398
- package/reglas/arquitectura.md +35 -456
- package/reglas/arreglar-al-detectar.md +30 -230
- package/reglas/debatir-antes-de-aceptar.md +30 -143
- package/reglas/docs.md +7 -0
- package/reglas/estilo-codigo.md +9 -0
- package/reglas/fragmentos-compartidos.md +6 -0
- package/reglas/git-workflow.md +44 -240
- package/reglas/gobernanza.md +23 -262
- package/reglas/memoria-consolidada.md +34 -228
- package/reglas/performance.md +8 -0
- package/reglas/pruebas.md +12 -0
- package/reglas/seguridad-agentes.md +37 -418
- package/reglas/seguridad.md +12 -0
- package/reglas/sesiones-paralelas.md +29 -162
- package/reglas/sin-duplicacion-reglas-globales.md +25 -166
- package/reglas/skills-estandar.md +23 -373
- package/reglas/usar-code-review-graph.md +31 -140
- package/reglas/usar-context7.md +30 -208
- package/reglas/usar-sistema-swl.md +47 -242
- package/reglas/verificar-citas-normativas.md +47 -537
- package/scripts/actualizar.js +253 -253
- package/scripts/audit-tools/auditar-relleno-inventario.js +145 -0
- package/scripts/auditar-clases-conocidas.js +106 -0
- package/scripts/bootstrap-instintos.js +2 -2
- package/scripts/canario-hooks.js +166 -0
- package/scripts/cli/configurar-ci.js +2 -1
- package/scripts/evidencia-valor.js +93 -0
- package/scripts/field-report.js +1 -1
- package/scripts/generar-comandos.js +143 -0
- package/scripts/generar-inventario.js +236 -23
- package/scripts/generar-matriz-lenguajes.js +1 -1
- package/scripts/instalador.js +15 -1
- package/scripts/lib/configurar-ci.js +10 -3
- package/scripts/lib/diary-entry.js +3 -1
- package/scripts/lib/drift-detector.js +1 -1
- package/scripts/lib/evidencia-valor.js +189 -0
- package/scripts/lib/expandir-targets.js +71 -71
- package/scripts/lib/frontmatter-md.js +63 -0
- package/scripts/lib/parsear-opciones.js +2 -0
- package/scripts/lib/prune-componentes.js +180 -0
- package/scripts/lib/reglas-globales-conocidas.json +16 -2
- package/scripts/lib/scoring-instintos.js +2 -2
- package/scripts/lib/toml-merge.js +204 -204
- package/scripts/lib/transformadores/claude.js +1 -1
- package/scripts/lib/transformadores/codex.js +1 -1
- package/scripts/lib/transformadores/copilot.js +1 -1
- package/scripts/lib/transformadores/cursor.js +1 -1
- package/scripts/lib/transformadores/gemini.js +22 -2
- package/scripts/lib/transformadores/opencode.js +1 -1
- package/scripts/mcp-server/auth.js +105 -105
- package/scripts/mcp-server/cache.js +106 -106
- package/scripts/prune.js +102 -0
- package/scripts/publicar.js +18 -2
- package/scripts/tui/pantallas/inspect.js +175 -175
- package/scripts/tui/pantallas/uninstall-wizard.js +210 -210
- package/scripts/tui/pantallas/update-wizard.js +234 -234
- package/scripts/tui/pantallas/welcome.js +189 -189
- package/habilidades/paid-media-tracking/SKILL.md +0 -269
- package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +0 -220
- package/habilidades/paid-media-tracking/recursos/google-ads-api.md +0 -215
- package/habilidades/tracking-measurement/SKILL.md +0 -239
- package/habilidades/tracking-measurement/recursos/consent-mode.md +0 -231
- package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +0 -216
- package/habilidades/tracking-measurement/recursos/meta-capi.md +0 -262
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
# Gobernanza — extendido
|
|
2
|
+
|
|
3
|
+
> Extendido de `reglas/gobernanza.md` (Fase D ola 2, dieta de contexto). El núcleo
|
|
4
|
+
> instalado en `~/.claude/rules/` es la norma vigente; aquí viven los formatos de
|
|
5
|
+
> log, tablas de mapeo a agentes SWL, plantillas, veto items con detalle,
|
|
6
|
+
> ejemplos y checklists.
|
|
7
|
+
|
|
8
|
+
## Índice
|
|
9
|
+
|
|
10
|
+
- [Políticas de aprobación](#políticas-de-aprobación)
|
|
11
|
+
- [Auditoría](#auditoría)
|
|
12
|
+
- [Separación revisor / ejecutor](#separación-revisor--ejecutor)
|
|
13
|
+
- [Veto items y cap enforcement (auditor-class pattern)](#veto-items-y-cap-enforcement-auditor-class-pattern)
|
|
14
|
+
- [Control de cambios del sistema](#control-de-cambios-del-sistema)
|
|
15
|
+
- [Plugins de terceros](#plugins-de-terceros)
|
|
16
|
+
- [Checklist de gobernanza antes de release](#checklist-de-gobernanza-antes-de-release)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Políticas de aprobación
|
|
21
|
+
|
|
22
|
+
### Cambios de alto riesgo
|
|
23
|
+
|
|
24
|
+
Los siguientes cambios requieren aprobación explícita del líder técnico antes
|
|
25
|
+
de incorporarse al sistema activo. "Aprobación explícita" significa una revisión
|
|
26
|
+
deliberada (no automática) con evidencia documentada en `.planning/AUDITORIA.md`.
|
|
27
|
+
|
|
28
|
+
Cambios que requieren aprobación:
|
|
29
|
+
|
|
30
|
+
- Modificación de reglas de seguridad (`reglas/seguridad.md`)
|
|
31
|
+
- Cambios en umbrales de risk scoring en `manifiestos/hooks-config.json`
|
|
32
|
+
- Adición de hooks con `blocking: true`
|
|
33
|
+
- Modificación de agentes con `nivelRiesgo: ALTO`
|
|
34
|
+
- Cambios en manifiestos de instalación (`manifiestos/modulos.json`, `manifiestos/perfiles.json`)
|
|
35
|
+
- Eliminación de reglas o agentes del sistema base
|
|
36
|
+
|
|
37
|
+
### Skills generados automáticamente
|
|
38
|
+
|
|
39
|
+
Los skills generados por `auto-evolucion-swl` o `/swl:evolucionar`:
|
|
40
|
+
|
|
41
|
+
- Se instalan primero en `_userland/plugins/` como período de prueba.
|
|
42
|
+
NUNCA se incorporan directamente al sistema base sin revisión.
|
|
43
|
+
- Requieren validación en al menos 3 sesiones de trabajo independientes
|
|
44
|
+
antes de ser promovidos al perfil `completo`.
|
|
45
|
+
- Deben pasar la verificación de `/swl:status salud` sin degradar el score actual.
|
|
46
|
+
- **Gate G8 — evidencia de calidad obligatoria**: antes de mover un skill
|
|
47
|
+
desde `_userland/plugins/` a `habilidades/`, ejecutar
|
|
48
|
+
`/swl:evaluar-skill <nombre>` y exigir badge ≥ **Plata** (score ≥ 70).
|
|
49
|
+
Skills con Bronce o sin badge se devuelven a `_userland/` con feedback
|
|
50
|
+
de qué dimensiones bajan el score. Detalle del flujo en
|
|
51
|
+
`agentes/auto-evolucion-swl.md` sección "Gate G8". Origen ADR 0013
|
|
52
|
+
sección 3C.
|
|
53
|
+
- La promoción se registra en `.planning/AUDITORIA.md` con justificación
|
|
54
|
+
Y en `.planning/evolution/evoluciones.jsonl` con evento
|
|
55
|
+
`tipo: "promocion-skill"` y `score`.
|
|
56
|
+
|
|
57
|
+
### Reglas nuevas obligatorias
|
|
58
|
+
|
|
59
|
+
Una regla nueva que se declare obligatoria para todos los agentes es un cambio
|
|
60
|
+
`MAJOR` del sistema (ver sección de versionado). Requiere:
|
|
61
|
+
|
|
62
|
+
1. Propuesta documentada: qué problema resuelve y por qué es obligatoria.
|
|
63
|
+
2. Período de revisión de al menos 48 horas antes de activarse.
|
|
64
|
+
3. Comunicación al equipo con tiempo suficiente para adaptarse.
|
|
65
|
+
4. Entrada en el CHANGELOG con descripción del impacto.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Auditoría
|
|
70
|
+
|
|
71
|
+
### Log de operaciones de alto riesgo
|
|
72
|
+
|
|
73
|
+
Toda operación marcada como `nivelRiesgo: ALTO` debe registrarse en
|
|
74
|
+
`.planning/AUDITORIA.md` con el siguiente formato:
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
## [YYYY-MM-DD HH:MM] <tipo-de-operacion>
|
|
78
|
+
|
|
79
|
+
**Agente**: nombre-agente-swl
|
|
80
|
+
**Operación**: descripción breve de qué se hizo
|
|
81
|
+
**Justificación**: por qué fue necesario
|
|
82
|
+
**Aprobado por**: nombre o "individual" si es proyecto personal
|
|
83
|
+
**Archivos afectados**: lista de rutas modificadas
|
|
84
|
+
**Estado**: completado / revertido
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
El hook `risk-scoring` genera entradas automáticas para operaciones detectadas.
|
|
88
|
+
Las operaciones manuales de alto riesgo deben registrarse manualmente.
|
|
89
|
+
|
|
90
|
+
### Supresión de verificaciones
|
|
91
|
+
|
|
92
|
+
Cuando se necesita suprimir un hook (via `SWL_DISABLED_HOOKS` u otro mecanismo):
|
|
93
|
+
|
|
94
|
+
- Usar el scope más estrecho posible: archivo o directorio específico,
|
|
95
|
+
no desactivación global del hook.
|
|
96
|
+
- Documentar en `.planning/AUDITORIA.md`:
|
|
97
|
+
- Fecha y duración de la supresión
|
|
98
|
+
- Razón técnica por la que fue necesario
|
|
99
|
+
- Alcance exacto (qué hook, qué archivos)
|
|
100
|
+
- Plan de reactivación
|
|
101
|
+
|
|
102
|
+
Una supresión sin documentación en AUDITORIA.md se considera deuda de gobernanza
|
|
103
|
+
que debe resolverse antes del próximo release.
|
|
104
|
+
|
|
105
|
+
### Retención de logs
|
|
106
|
+
|
|
107
|
+
- `.planning/AUDITORIA.md` es un archivo append-only. NUNCA borrar entradas antiguas.
|
|
108
|
+
- Los instintos degradados por `degradacion-instintos.js` se registran
|
|
109
|
+
automáticamente en el log de instintos, no en AUDITORIA.md.
|
|
110
|
+
- Revisar AUDITORIA.md mensualmente para identificar patrones de operaciones de riesgo.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Separación revisor / ejecutor
|
|
115
|
+
|
|
116
|
+
Un agente que ejecuta cambios NUNCA verifica su propio trabajo. La verificación
|
|
117
|
+
cruzada entre roles distintos reduce hallucaciones y errores de confirmación.
|
|
118
|
+
|
|
119
|
+
### Principio
|
|
120
|
+
|
|
121
|
+
| Rol | Permisos | Responsabilidad |
|
|
122
|
+
|-----|----------|-----------------|
|
|
123
|
+
| **Ejecutor** | Write, Edit, Bash | Implementa cambios según el plan. NO se auto-revisa. |
|
|
124
|
+
| **Revisor** | Read, Grep, Glob, Bash (solo lectura) | Emite veredictos estructurados. NO ejecuta correcciones. |
|
|
125
|
+
|
|
126
|
+
### Reglas obligatorias
|
|
127
|
+
|
|
128
|
+
- El ejecutor NUNCA emite un veredicto de aprobación sobre su propio trabajo.
|
|
129
|
+
Si termina una fase, reporta completitud — el revisor valida.
|
|
130
|
+
- El revisor NUNCA modifica código de producción. Si detecta un problema,
|
|
131
|
+
emite un veredicto `Fail` con instrucciones concretas en `nextStep.instructions`.
|
|
132
|
+
El ejecutor aplica las correcciones.
|
|
133
|
+
- En el flujo del orquestador, el revisor y el ejecutor son agentes distintos
|
|
134
|
+
o invocaciones independientes con contexto separado.
|
|
135
|
+
- Las instrucciones del revisor son específicas: archivo, línea, qué cambiar.
|
|
136
|
+
"Mejorar el código" no es una instrucción válida.
|
|
137
|
+
- El ejecutor sigue las instrucciones del revisor sin inventar mejoras adicionales
|
|
138
|
+
no solicitadas. No crea un plan nuevo — ejecuta lo indicado.
|
|
139
|
+
|
|
140
|
+
### Mapeo a agentes SWL
|
|
141
|
+
|
|
142
|
+
| Fase | Ejecutor | Revisor |
|
|
143
|
+
|------|----------|---------|
|
|
144
|
+
| Implementación | implementador-swl, backend-*-swl, frontend-*-swl | revisor-codigo-swl, revisor-*-swl |
|
|
145
|
+
| Seguridad | (cualquier implementador) | revisor-seguridad-swl |
|
|
146
|
+
| Testing | tdd-qa-swl (escribe tests) | (el test runner es el revisor) |
|
|
147
|
+
| Verificación de fase | (agente que implementó) | verificar-trabajo (skill) |
|
|
148
|
+
|
|
149
|
+
### Anti-patrones
|
|
150
|
+
|
|
151
|
+
- Un agente que dice "revisé mi propio código y se ve bien" — viola la separación.
|
|
152
|
+
- Un revisor que aplica un fix directamente en lugar de emitir instrucciones.
|
|
153
|
+
- Un ejecutor que ignora el veredicto del revisor y marca la tarea como completada.
|
|
154
|
+
- Un loop de reparación infinito — máximo 2 intentos antes de escalar a humano.
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Veto items y cap enforcement (auditor-class pattern)
|
|
159
|
+
|
|
160
|
+
Algunos hallazgos son **no negociables**: violaciones de reglas globales del
|
|
161
|
+
sistema cuya presencia debe bloquear la aprobación independientemente de qué
|
|
162
|
+
tan limpio esté el resto del trabajo. El patrón "veto items + cap enforcement"
|
|
163
|
+
formaliza este criterio para todos los revisores SWL.
|
|
164
|
+
|
|
165
|
+
### Principio
|
|
166
|
+
|
|
167
|
+
Un revisor declara una **lista finita y específica de veto items** asociados a
|
|
168
|
+
su dominio. Si detecta CUALQUIER veto item:
|
|
169
|
+
|
|
170
|
+
- El **score máximo** del reporte queda CAP a un valor de "no aprobado"
|
|
171
|
+
(ejemplo: `60/100` para reportes en escala 0-100, `6.0/10` para reportes
|
|
172
|
+
por dimensión).
|
|
173
|
+
- El **veredicto automático** pasa a `RECHAZADO` o `APROBADO CON CORRECCIONES`,
|
|
174
|
+
nunca `APROBADO` limpio.
|
|
175
|
+
- 2+ veto items → cap más estricto (ej. `30/100` o `3.0/10`).
|
|
176
|
+
|
|
177
|
+
El cap NO se compensa con scores altos en otras dimensiones. La presencia de un
|
|
178
|
+
veto item indica violación de una regla global no opcional.
|
|
179
|
+
|
|
180
|
+
### Reglas
|
|
181
|
+
|
|
182
|
+
1. **Cada revisor declara explícitamente sus veto items** en su agente
|
|
183
|
+
(sección dedicada en el `.md` del agente, antes del formato de reporte).
|
|
184
|
+
2. **Los veto items mapean a reglas del sistema** (`reglas/seguridad.md`,
|
|
185
|
+
`reglas/estilo-codigo.md`, `reglas/arquitectura.md`, etc.). NO son criterios
|
|
186
|
+
inventados ad-hoc por el revisor.
|
|
187
|
+
3. **El reporte muestra los veto items detectados** al inicio, antes de la
|
|
188
|
+
tabla de scores, en bloque dedicado:
|
|
189
|
+
```
|
|
190
|
+
### VETO ITEMS DETECTADOS
|
|
191
|
+
- [VI-1] <descripción del veto>: `archivo.py:42`
|
|
192
|
+
- [VI-3] <descripción del veto>: `app/util.py:88`
|
|
193
|
+
→ score CAP a X/Y (N veto items). Veredicto: RECHAZADO.
|
|
194
|
+
```
|
|
195
|
+
Si no hay: `### VETO ITEMS DETECTADOS\n- Ninguno`.
|
|
196
|
+
4. **El cap no se levanta por negociación**. Solo se levanta cuando se
|
|
197
|
+
demuestra remediación (commit + test que prueba la corrección) y el revisor
|
|
198
|
+
re-ejecuta la auditoría.
|
|
199
|
+
5. **Un veto item siempre referencia una regla global**. Si el revisor cree
|
|
200
|
+
que algo "debería ser veto" pero no hay regla que lo respalde, primero
|
|
201
|
+
actualiza la regla, luego agrega el veto.
|
|
202
|
+
|
|
203
|
+
### Aplicabilidad
|
|
204
|
+
|
|
205
|
+
Revisores SWL que DEBEN implementar veto items:
|
|
206
|
+
|
|
207
|
+
- `revisor-seguridad-swl` (10 veto items: secret hardcodeado, SQL injection,
|
|
208
|
+
eval con input, path traversal, CVE crítico, etc.)
|
|
209
|
+
- `revisor-codigo-swl` (10 veto items: función >100 líneas, complejidad >15,
|
|
210
|
+
console.log en prod, dependencia circular, DRY mayor, etc.)
|
|
211
|
+
|
|
212
|
+
Revisores específicos de lenguaje (`revisor-typescript-swl`, `revisor-react-swl`,
|
|
213
|
+
`revisor-rust-swl`, etc.) PUEDEN agregar veto items adicionales propios de su
|
|
214
|
+
dominio, pero deben heredar los del revisor base correspondiente.
|
|
215
|
+
|
|
216
|
+
Plantilla reusable: `plantillas/auditor-veto-template.md`.
|
|
217
|
+
|
|
218
|
+
### Anti-patrones
|
|
219
|
+
|
|
220
|
+
- **Veto inventado sin regla**: "código feo" no es veto válido — necesita
|
|
221
|
+
regla global que lo prohíba.
|
|
222
|
+
- **Veto suavizado por presión de entrega**: bajar de "veto" a "menor" porque
|
|
223
|
+
el equipo dispute es invalidación del sistema.
|
|
224
|
+
- **Veto sin evidencia**: cada veto item reportado debe citar archivo:línea.
|
|
225
|
+
- **Veto que no se persiste**: si el cap se levanta sin re-revisión y commit
|
|
226
|
+
de corrección, el sistema pierde su valor.
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Control de cambios del sistema
|
|
231
|
+
|
|
232
|
+
### Versionado
|
|
233
|
+
|
|
234
|
+
Todo cambio al sistema SWL sigue SemVer estricto:
|
|
235
|
+
|
|
236
|
+
| Tipo de cambio | Versión |
|
|
237
|
+
|----------------|---------|
|
|
238
|
+
| Regla nueva marcada como obligatoria | MAJOR |
|
|
239
|
+
| Cambio breaking en schema de agentes o skills | MAJOR |
|
|
240
|
+
| Agente nuevo, skill nuevo, comando nuevo | MINOR |
|
|
241
|
+
| Feature en agente o skill existente | MINOR |
|
|
242
|
+
| Bug fix, corrección de typo, actualización de ejemplo | PATCH |
|
|
243
|
+
| Mejora de descripción sin cambio de comportamiento | PATCH |
|
|
244
|
+
|
|
245
|
+
El comando `/swl:release` maneja el versionado automáticamente.
|
|
246
|
+
|
|
247
|
+
### Rollback
|
|
248
|
+
|
|
249
|
+
Ante un cambio que degrada el sistema:
|
|
250
|
+
|
|
251
|
+
- La versión anterior debe permanecer disponible (via git) por al menos 1 semana
|
|
252
|
+
antes de considerarse obsoleta.
|
|
253
|
+
- Los hooks nuevos pueden desactivarse individualmente via variable de entorno
|
|
254
|
+
`SWL_DISABLED_HOOKS=nombre-hook` sin afectar el resto del sistema.
|
|
255
|
+
- Los agentes nuevos NO reemplazan a los existentes sin un período de transición
|
|
256
|
+
documentado. Durante la transición, ambas versiones coexisten.
|
|
257
|
+
- Si `/swl:status salud` baja su score tras un cambio: revertir antes de continuar.
|
|
258
|
+
|
|
259
|
+
### Freeze de cambios pre-release
|
|
260
|
+
|
|
261
|
+
Durante las 24 horas previas a un release:
|
|
262
|
+
|
|
263
|
+
- Solo se permiten bug fixes críticos (PATCH).
|
|
264
|
+
- No se agregan features ni reglas nuevas.
|
|
265
|
+
- El comando `/swl:status salud` debe pasar sin advertencias antes de publicar.
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Plugins de terceros
|
|
270
|
+
|
|
271
|
+
Los plugins instalados via `/swl:plugins install` tienen restricciones adicionales:
|
|
272
|
+
|
|
273
|
+
- No pueden modificar componentes del sistema base (`agentes/`, `habilidades/`,
|
|
274
|
+
`reglas/`, `hooks/` en la raíz).
|
|
275
|
+
- Sus hooks con `blocking: true` requieren revisión explícita antes de activarse.
|
|
276
|
+
- Si un plugin no recibe actualizaciones en 6 meses y tiene issues conocidos:
|
|
277
|
+
marcarlo como deprecado en `.planning/PLUGINS.md`.
|
|
278
|
+
- Los plugins de fuentes no verificadas no se instalan sin auditoría de su código.
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Checklist de gobernanza antes de release
|
|
283
|
+
|
|
284
|
+
- [ ] Todos los cambios de alto riesgo tienen aprobación documentada en AUDITORIA.md
|
|
285
|
+
- [ ] Los skills auto-generados fueron validados en al menos 3 sesiones
|
|
286
|
+
- [ ] Ninguna supresión de hook activa sin justificación documentada
|
|
287
|
+
- [ ] El CHANGELOG.md está actualizado con todos los cambios observables
|
|
288
|
+
- [ ] Los schemas de validación pasan para todos los manifiestos modificados
|
|
289
|
+
- [ ] El comando `/swl:status salud` pasa sin errores ni advertencias críticas
|
|
290
|
+
- [ ] La versión en `package.json` refleja el tipo de cambio realizado
|
|
291
|
+
- [ ] Los plugins de terceros instalados siguen siendo compatibles con la versión nueva
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
# Consolidación de memoria — extendido
|
|
2
|
+
|
|
3
|
+
> Extendido de `reglas/memoria-consolidada.md` (Fase D, dieta de contexto). El
|
|
4
|
+
> núcleo instalado es la norma; aquí viven las tablas de asignación completas,
|
|
5
|
+
> el eje cognitivo desarrollado, el scoring de instintos con código y los
|
|
6
|
+
> anti-patrones detallados.
|
|
7
|
+
|
|
8
|
+
## Índice
|
|
9
|
+
|
|
10
|
+
- [Los 5 canales de memoria](#los-5-canales-de-memoria)
|
|
11
|
+
- [Eje cognitivo de memoria (semantic | episodic | procedural)](#eje-cognitivo-de-memoria-semantic--episodic--procedural)
|
|
12
|
+
- [Regla de asignación — dónde va CADA tipo de dato](#regla-de-asignación--dónde-va-cada-tipo-de-dato)
|
|
13
|
+
- [Precedencia en caso de conflicto](#precedencia-en-caso-de-conflicto)
|
|
14
|
+
- [Reglas de no-duplicación](#reglas-de-no-duplicación)
|
|
15
|
+
- [Validación automática](#validación-automática)
|
|
16
|
+
- [Anti-patrones a detectar](#anti-patrones-a-detectar)
|
|
17
|
+
- [Scoring de instintos: decay exponencial + maturity](#scoring-de-instintos-decay-exponencial--maturity)
|
|
18
|
+
- [Source tracing en instintos y APRENDIZAJES](#source-tracing-en-instintos-y-aprendizajes)
|
|
19
|
+
- [Checklist antes de escribir a memoria](#checklist-antes-de-escribir-a-memoria)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Los 5 canales de memoria
|
|
24
|
+
|
|
25
|
+
| # | Canal | Formato | Fuente de verdad de |
|
|
26
|
+
|---|-------|---------|---------------------|
|
|
27
|
+
| 1 | **Memoria nativa de Claude Code** (`~/.claude/projects/.../memory/`) | Archivos `.md` con frontmatter `user`/`feedback`/`project`/`reference` | Perfil general del usuario y del proyecto, auto-gestionado por el harness |
|
|
28
|
+
| 2 | **`.planning/APRENDIZAJES.md`** | Markdown con entradas `### [YYYY-MM-DD] Título` agrupadas por sección | Conocimiento del dominio (anti-patrones, patrones, decisiones, gotchas) |
|
|
29
|
+
| 3 | **`instintos/proyecto.yaml` / `global.yaml` / `perfil-usuario.yaml`** | YAML estructurado con confidence, scope, evidence_count | Patrones aprendidos inductivamente, con promoción/degradación |
|
|
30
|
+
| 4 | **`.planning/sessions/search-index.json`** | Índice FTS de sesiones pasadas | Búsqueda histórica de trabajo (qué se hizo, cuándo) |
|
|
31
|
+
| 5 | **`.planning/evolution/*`** | JSONL (nudges, agentes) + JSON (métricas, alertas, evoluciones) | Estado del ciclo de auto-evolución |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Eje cognitivo de memoria (semantic | episodic | procedural)
|
|
36
|
+
|
|
37
|
+
Los 5 canales de arriba clasifican el conocimiento por **dónde se almacena**. El
|
|
38
|
+
eje cognitivo lo clasifica por **qué tipo de memoria es** — y es **ORTOGONAL**: un
|
|
39
|
+
dato vive en exactamente un canal (regla de no-duplicación abajo) y PUEDE
|
|
40
|
+
etiquetarse con exactamente un tipo cognitivo. No reemplaza a los canales; los
|
|
41
|
+
enriquece para mejorar la relevancia del recall.
|
|
42
|
+
|
|
43
|
+
Origen: análisis "Self-Learning for Agents" (3 capas) —
|
|
44
|
+
`.planning/knowledge/outputs/analisis-self-learning-agents-3-capas-2026-06-27.md`.
|
|
45
|
+
Un agente que se auto-mejora necesita las tres clases; la mayoría de los sistemas
|
|
46
|
+
solo tiene `semantic`.
|
|
47
|
+
|
|
48
|
+
| Tipo | Qué es | Ejemplo | Cuándo usarlo |
|
|
49
|
+
|------|--------|---------|---------------|
|
|
50
|
+
| **semantic** | Hechos, decisiones, vocabulario, gotchas-como-hecho | "El proyecto usa repository pattern"; "la API de CFDI devuelve 200 en errores" | Conocimiento estable que se consulta como referencia |
|
|
51
|
+
| **episodic** | Experiencia pasada de una sesión concreta (qué pasó, cuándo) | "En la sesión X el revert del commit Y resolvió el bug Z" | Recordar un caso vivido para no repetir el camino |
|
|
52
|
+
| **procedural** | Cómo manejar un caso (cómo hacer / qué evitar) | "Paralelizar agentes solo sin dependencias de datos"; "no usar `display:initial` para re-mostrar celdas" | Guía de acción ante una situación recurrente |
|
|
53
|
+
|
|
54
|
+
### Dónde se materializa
|
|
55
|
+
|
|
56
|
+
- **instintos** (`schemas/instinct.schema.json`): campo OPCIONAL `tipo_memoria`
|
|
57
|
+
(enum `semantic|episodic|procedural`). Backward-compatible: instintos sin el
|
|
58
|
+
campo siguen válidos. `scripts/bootstrap-instintos.js` lo infiere por sección de
|
|
59
|
+
origen (heurístico declarado, no autoritativo):
|
|
60
|
+
- `decisión` / `arquitectura` / `gotcha` / `regla-proyecto` → **semantic**
|
|
61
|
+
- `patrón` / `anti-patrón` → **procedural**
|
|
62
|
+
- **episodic** NO se infiere del bootstrap (nace de registros de sesión, canal 4,
|
|
63
|
+
no de APRENDIZAJES).
|
|
64
|
+
- **APRENDIZAJES.md** (canal 2): convención OPCIONAL — una entrada puede anotar
|
|
65
|
+
`tipo_memoria:` en su cuerpo cuando el tipo no sea evidente por la sección.
|
|
66
|
+
|
|
67
|
+
### Anti-patrones del eje cognitivo
|
|
68
|
+
|
|
69
|
+
- Tratar el tipo cognitivo como un sexto canal de almacenamiento (no lo es: es una
|
|
70
|
+
etiqueta ortogonal sobre el dato que ya vive en su canal).
|
|
71
|
+
- Forzar `episodic` en un instinto bootstrapeado de APRENDIZAJES (episodic viene de
|
|
72
|
+
sesiones, no de conocimiento de dominio destilado).
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Regla de asignación — dónde va CADA tipo de dato
|
|
77
|
+
|
|
78
|
+
### A. Información del usuario
|
|
79
|
+
|
|
80
|
+
| Tipo de dato | Canal correcto | NO va a |
|
|
81
|
+
|---|---|---|
|
|
82
|
+
| Rol profesional, años de experiencia | 1 (memoria `user`) + 3 (perfil-usuario.yaml) | APRENDIZAJES, sessions, proyecto.yaml |
|
|
83
|
+
| Stack preferido del usuario | 3 (perfil-usuario.yaml) | APRENDIZAJES |
|
|
84
|
+
| Corrección explícita del usuario ("prefiero X", "nunca Y") | 1 (memoria `feedback`) + 3 (perfil-usuario.yaml vía perfilador-usuario-swl) | APRENDIZAJES |
|
|
85
|
+
| Preferencia de idioma, formalidad, longitud | 3 (perfil-usuario.yaml) | — |
|
|
86
|
+
| Límites explícitos ("no guardes X") | 3 (perfil-usuario.yaml `limites_explicitos`) | — |
|
|
87
|
+
|
|
88
|
+
### B. Conocimiento del dominio (aplicable al proyecto o transversal)
|
|
89
|
+
|
|
90
|
+
| Tipo de dato | Canal correcto | NO va a |
|
|
91
|
+
|---|---|---|
|
|
92
|
+
| Anti-patrón descubierto (ej: bug recurrente) | 2 (APRENDIZAJES.md sección "Anti-patrones") | perfil-usuario, instintos directamente |
|
|
93
|
+
| Patrón exitoso reutilizable | 2 (APRENDIZAJES.md) → eventual skill nuevo (tipo C) | perfil-usuario |
|
|
94
|
+
| Decisión de arquitectura tomada | 2 (APRENDIZAJES.md sección "Decisiones") + eventualmente CLAUDE.md | perfil-usuario, instintos sin consolidar primero |
|
|
95
|
+
| Gotcha específico de una librería | 2 (APRENDIZAJES.md) o skill existente | perfil-usuario |
|
|
96
|
+
|
|
97
|
+
### C. Estado del sistema y observabilidad
|
|
98
|
+
|
|
99
|
+
| Tipo de dato | Canal correcto |
|
|
100
|
+
|---|---|
|
|
101
|
+
| Nudge emitido por un hook | 5 (`.planning/evolution/nudges.jsonl`) |
|
|
102
|
+
| Evento de subagente terminado | 5 (`.planning/auto-evolution/agentes.jsonl`) |
|
|
103
|
+
| Evolución aplicada/revertida a skill | 5 (`.planning/evolution/evoluciones.jsonl`) |
|
|
104
|
+
| Alerta persistente (nudges ignorados) | 5 (`.planning/evolution/alertas-persistentes.json`) |
|
|
105
|
+
| Métricas agregadas (health score) | 5 (`.planning/evolution/metricas.json`) |
|
|
106
|
+
| Traza de ejecución de agente | `.planning/traces/` (OTLP-lite) |
|
|
107
|
+
| Audit trail inmutable | `.planning/audit.jsonl` + Merkle |
|
|
108
|
+
|
|
109
|
+
### D. Patrones consolidados (inductivos, con confidence)
|
|
110
|
+
|
|
111
|
+
| Tipo de dato | Canal correcto |
|
|
112
|
+
|---|---|
|
|
113
|
+
| Patrón observado ≥1 vez con confidence < 0.5 | 3 (instintos/proyecto.yaml como draft) |
|
|
114
|
+
| Patrón consolidado (confidence ≥ 0.5, evidence_count ≥ 3) | 3 (instintos/proyecto.yaml activo) |
|
|
115
|
+
| Patrón validado cross-proyecto (confidence > 0.8) | 3 (instintos/global.yaml tras promoción) |
|
|
116
|
+
| Patrón contradicho (degradado ≥3 veces) | 3 (instintos/proyecto.yaml status `degraded`) o borrado |
|
|
117
|
+
|
|
118
|
+
### E. Búsqueda histórica
|
|
119
|
+
|
|
120
|
+
| Tipo de dato | Canal correcto |
|
|
121
|
+
|---|---|
|
|
122
|
+
| "¿Qué hicimos la semana pasada en X?" | 4 (sessions/search-index.json) — vía `habilidades/memoria-busqueda` |
|
|
123
|
+
| Sesión completa archivada | `.planning/sessions/*.json` |
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Precedencia en caso de conflicto
|
|
128
|
+
|
|
129
|
+
Si un mismo dato aparece en múltiples canales, la prioridad de verdad es:
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
CLAUDE.md (regla explícita)
|
|
133
|
+
> Memoria nativa tipo feedback del usuario (corrección explícita)
|
|
134
|
+
> instintos con confidence ≥ 0.9
|
|
135
|
+
> APRENDIZAJES.md (si es tipo Decisión)
|
|
136
|
+
> perfil-usuario.yaml
|
|
137
|
+
> instintos con confidence < 0.9
|
|
138
|
+
> sesiones pasadas
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Reglas de no-duplicación
|
|
144
|
+
|
|
145
|
+
1. **Un dato vive en exactamente un canal** (salvo referencias explícitas).
|
|
146
|
+
Si necesitas citarlo desde otro, usa un puntero/path, no copies el contenido.
|
|
147
|
+
|
|
148
|
+
2. **perfil-usuario.yaml NUNCA duplica APRENDIZAJES.md.** Una corrección del
|
|
149
|
+
usuario va al perfil; un anti-patrón técnico va a APRENDIZAJES.
|
|
150
|
+
|
|
151
|
+
3. **instintos/proyecto.yaml bootstrap desde APRENDIZAJES.md** es válido
|
|
152
|
+
(hace `scripts/bootstrap-instintos.js`), pero la fuente de verdad post-bootstrap
|
|
153
|
+
es `instintos/proyecto.yaml`. Nuevos APRENDIZAJES no deben entrar a instintos
|
|
154
|
+
automáticamente — primero se promueven con `/swl:aprender` (tipo C).
|
|
155
|
+
|
|
156
|
+
4. **La memoria nativa del harness no se sobreescribe** con contenido de SWL.
|
|
157
|
+
El flujo es al revés: señales del usuario pueden alimentar ambos canales
|
|
158
|
+
(native + perfil SWL), pero ninguno es copia del otro.
|
|
159
|
+
|
|
160
|
+
5. **Cuando detectes duplicación cross-canal**, registrarla como anti-patrón
|
|
161
|
+
en APRENDIZAJES.md y corregir con `scripts/validar-memoria.js`.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Validación automática
|
|
166
|
+
|
|
167
|
+
El script `scripts/validar-memoria.js` detecta duplicaciones y violaciones
|
|
168
|
+
de esta regla. Se ejecuta:
|
|
169
|
+
|
|
170
|
+
- Manualmente: `node scripts/validar-memoria.js`
|
|
171
|
+
- Automáticamente dentro de `scripts/validar.js` (parte del pipeline CI)
|
|
172
|
+
|
|
173
|
+
Reporta: duplicación cross-canal, canal incorrecto para un tipo de dato
|
|
174
|
+
conocido, datos en canales deprecados.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Anti-patrones a detectar
|
|
179
|
+
|
|
180
|
+
- **Corrección del usuario escrita a APRENDIZAJES.md** → debe ir al perfil
|
|
181
|
+
- **Anti-patrón técnico escrito al perfil del usuario** → debe ir a APRENDIZAJES
|
|
182
|
+
- **Métrica persistida en APRENDIZAJES.md** → debe ir a `.planning/evolution/`
|
|
183
|
+
- **Secreto/credencial en cualquier canal** → bloqueo inmediato (`privacy-memoria`)
|
|
184
|
+
- **Dato duplicado en proyecto.yaml y global.yaml** → uno debe borrarse
|
|
185
|
+
(promover a global SOLO cuando confidence > 0.8 Y validado cross-proyecto)
|
|
186
|
+
- **Instinto activo con `last_validated` antiguo (>180 días) sin feedback**
|
|
187
|
+
→ el `effective_confidence` ya está bajo `0.25`. Re-validar manualmente o
|
|
188
|
+
marcar `status: archived`.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Scoring de instintos: decay exponencial + maturity
|
|
193
|
+
|
|
194
|
+
El campo `confidence` en instintos es **estático** (asignado al crear). El valor
|
|
195
|
+
**efectivo** se computa dinámicamente con dos factores:
|
|
196
|
+
|
|
197
|
+
1. **Decay temporal**: la confianza decae exponencialmente desde `last_validated_at`.
|
|
198
|
+
Half-life por defecto: 90 días. Tras 1 half-life → confianza × 0.5; tras 2 → × 0.25.
|
|
199
|
+
2. **Penalización por feedback dañino**: si `harmful_count / (helpful_count + harmful_count) > 0.3`
|
|
200
|
+
con al menos 3 eventos, el instinto se propone para `status: degraded`.
|
|
201
|
+
|
|
202
|
+
Implementación pura en `scripts/lib/scoring-instintos.js`:
|
|
203
|
+
|
|
204
|
+
```js
|
|
205
|
+
const { effectiveConfidence, maturityState, applyFeedback } = require('./scoring-instintos');
|
|
206
|
+
|
|
207
|
+
// Lectura
|
|
208
|
+
const eff = effectiveConfidence(instinto, new Date());
|
|
209
|
+
const maturity = maturityState(instinto, new Date());
|
|
210
|
+
// → 'candidate' | 'established' | 'proven' | 'deprecated'
|
|
211
|
+
|
|
212
|
+
// Escritura (pure)
|
|
213
|
+
const conFeedback = applyFeedback(instinto, 'helpful');
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
**Cuándo recomputar**:
|
|
217
|
+
- `/swl:status salud` reporta instintos con `effective_confidence < 0.3` para revisión.
|
|
218
|
+
- `hooks/degradacion-instintos.js` puede marcar `status_proposed: degraded`
|
|
219
|
+
cuando `shouldAutoDeprecate(instinto)` devuelve `true`.
|
|
220
|
+
- `bootstrap-instintos.js` emite los nuevos instintos con `decay_half_life_days: 90`,
|
|
221
|
+
`helpful_count: 0`, `harmful_count: 0` por defecto.
|
|
222
|
+
|
|
223
|
+
**Backward compat**: instintos antiguos sin los campos nuevos siguen siendo
|
|
224
|
+
válidos. `effectiveConfidence` cae a `confidence * decay` cuando no hay feedback,
|
|
225
|
+
y `last_validated` (sin `_at`) se usa como fallback.
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Source tracing en instintos y APRENDIZAJES
|
|
230
|
+
|
|
231
|
+
Cada instinto puede declarar la **evidencia que lo respalda** mediante:
|
|
232
|
+
|
|
233
|
+
- `source_sessions: ["sess-abc", "sess-def"]` — sesiones que lo generaron o validaron
|
|
234
|
+
- `source_agents: ["orquestador-swl", "implementador-swl"]` — agentes que lo aplicaron exitosamente
|
|
235
|
+
- `evidence_count: N` — total numérico (compatibilidad legacy)
|
|
236
|
+
|
|
237
|
+
**Reglas**:
|
|
238
|
+
|
|
239
|
+
1. Un instinto con `confidence ≥ 0.7` debe tener al menos 1 entrada en
|
|
240
|
+
`source_sessions` o `source_agents` para justificar la confianza.
|
|
241
|
+
2. Para promover de `instintos/proyecto.yaml` a `instintos/global.yaml`, el
|
|
242
|
+
instinto debe tener `source_agents.length ≥ 2` o `source_sessions.length ≥ 3`
|
|
243
|
+
— un solo punto de evidencia no es suficiente para impacto cross-proyecto.
|
|
244
|
+
3. El campo `source_sessions` referencia IDs de `.planning/sessions/`. No copiar
|
|
245
|
+
el contenido — usar el ID como puntero.
|
|
246
|
+
4. `addSource()` en `scripts/lib/scoring-instintos.js` mantiene unicidad
|
|
247
|
+
automática. NUNCA editar manualmente con duplicados.
|
|
248
|
+
|
|
249
|
+
**Anti-patrón**: instinto con `evidence_count: 10` pero `source_sessions: []` y
|
|
250
|
+
`source_agents: []` — la cifra es opaca, no se puede auditar de dónde viene.
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Checklist antes de escribir a memoria
|
|
255
|
+
|
|
256
|
+
Antes de que cualquier agente, skill o hook persista un dato, debe responder:
|
|
257
|
+
|
|
258
|
+
1. ¿Es información del **usuario**, del **dominio**, de **estado del sistema**,
|
|
259
|
+
un **patrón inductivo**, o **búsqueda histórica**? → identifica canal A-E.
|
|
260
|
+
2. ¿El canal elegido es el correcto según la tabla de asignación?
|
|
261
|
+
3. ¿El dato ya existe en otro canal? Si sí, actualiza ese, no dupliques.
|
|
262
|
+
4. ¿El dato contiene PII, secretos o contenido sensible? → cargar `privacy-memoria`.
|
|
263
|
+
5. ¿El dato viene de texto del usuario? → escanear con `prompt-injection-scanner`.
|