@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
|
@@ -1,250 +1,56 @@
|
|
|
1
1
|
# Regla: Consolidación de memoria — dónde va cada dato
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
regla clara, un mismo dato puede terminar en el lugar incorrecto o duplicado.
|
|
7
|
-
|
|
8
|
-
---
|
|
3
|
+
OBLIGATORIA para todo agente, skill o comando que escribe conocimiento persistente.
|
|
4
|
+
SWL tiene 5 canales de memoria; sin asignación clara, un dato termina en el canal
|
|
5
|
+
incorrecto o duplicado.
|
|
9
6
|
|
|
10
7
|
## Los 5 canales de memoria
|
|
11
8
|
|
|
12
|
-
| # | Canal |
|
|
13
|
-
|---|-------|---------|---------------------|
|
|
14
|
-
| 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 |
|
|
15
|
-
| 2 | **`.planning/APRENDIZAJES.md`** | Markdown con entradas `### [YYYY-MM-DD] Título` agrupadas por sección | Conocimiento del dominio (anti-patrones, patrones, decisiones, gotchas) |
|
|
16
|
-
| 3 | **`instintos/proyecto.yaml` / `global.yaml` / `perfil-usuario.yaml`** | YAML estructurado con confidence, scope, evidence_count | Patrones aprendidos inductivamente, con promoción/degradación |
|
|
17
|
-
| 4 | **`.planning/sessions/search-index.json`** | Índice FTS de sesiones pasadas | Búsqueda histórica de trabajo (qué se hizo, cuándo) |
|
|
18
|
-
| 5 | **`.planning/evolution/*`** | JSONL (nudges, agentes) + JSON (métricas, alertas, evoluciones) | Estado del ciclo de auto-evolución |
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Eje cognitivo de memoria (semantic | episodic | procedural)
|
|
23
|
-
|
|
24
|
-
Los 5 canales de arriba clasifican el conocimiento por **dónde se almacena**. El
|
|
25
|
-
eje cognitivo lo clasifica por **qué tipo de memoria es** — y es **ORTOGONAL**: un
|
|
26
|
-
dato vive en exactamente un canal (regla de no-duplicación abajo) y PUEDE
|
|
27
|
-
etiquetarse con exactamente un tipo cognitivo. No reemplaza a los canales; los
|
|
28
|
-
enriquece para mejorar la relevancia del recall.
|
|
29
|
-
|
|
30
|
-
Origen: análisis "Self-Learning for Agents" (3 capas) —
|
|
31
|
-
`.planning/knowledge/outputs/analisis-self-learning-agents-3-capas-2026-06-27.md`.
|
|
32
|
-
Un agente que se auto-mejora necesita las tres clases; la mayoría de los sistemas
|
|
33
|
-
solo tiene `semantic`.
|
|
34
|
-
|
|
35
|
-
| Tipo | Qué es | Ejemplo | Cuándo usarlo |
|
|
36
|
-
|------|--------|---------|---------------|
|
|
37
|
-
| **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 |
|
|
38
|
-
| **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 |
|
|
39
|
-
| **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 |
|
|
40
|
-
|
|
41
|
-
### Dónde se materializa
|
|
42
|
-
|
|
43
|
-
- **instintos** (`schemas/instinct.schema.json`): campo OPCIONAL `tipo_memoria`
|
|
44
|
-
(enum `semantic|episodic|procedural`). Backward-compatible: instintos sin el
|
|
45
|
-
campo siguen válidos. `scripts/bootstrap-instintos.js` lo infiere por sección de
|
|
46
|
-
origen (heurístico declarado, no autoritativo):
|
|
47
|
-
- `decisión` / `arquitectura` / `gotcha` / `regla-proyecto` → **semantic**
|
|
48
|
-
- `patrón` / `anti-patrón` → **procedural**
|
|
49
|
-
- **episodic** NO se infiere del bootstrap (nace de registros de sesión, canal 4,
|
|
50
|
-
no de APRENDIZAJES).
|
|
51
|
-
- **APRENDIZAJES.md** (canal 2): convención OPCIONAL — una entrada puede anotar
|
|
52
|
-
`tipo_memoria:` en su cuerpo cuando el tipo no sea evidente por la sección.
|
|
53
|
-
|
|
54
|
-
### Anti-patrones del eje cognitivo
|
|
55
|
-
|
|
56
|
-
- Tratar el tipo cognitivo como un sexto canal de almacenamiento (no lo es: es una
|
|
57
|
-
etiqueta ortogonal sobre el dato que ya vive en su canal).
|
|
58
|
-
- Forzar `episodic` en un instinto bootstrapeado de APRENDIZAJES (episodic viene de
|
|
59
|
-
sesiones, no de conocimiento de dominio destilado).
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## Regla de asignación — dónde va CADA tipo de dato
|
|
64
|
-
|
|
65
|
-
### A. Información del usuario
|
|
66
|
-
|
|
67
|
-
| Tipo de dato | Canal correcto | NO va a |
|
|
68
|
-
|---|---|---|
|
|
69
|
-
| Rol profesional, años de experiencia | 1 (memoria `user`) + 3 (perfil-usuario.yaml) | APRENDIZAJES, sessions, proyecto.yaml |
|
|
70
|
-
| Stack preferido del usuario | 3 (perfil-usuario.yaml) | APRENDIZAJES |
|
|
71
|
-
| Corrección explícita del usuario ("prefiero X", "nunca Y") | 1 (memoria `feedback`) + 3 (perfil-usuario.yaml vía perfilador-usuario-swl) | APRENDIZAJES |
|
|
72
|
-
| Preferencia de idioma, formalidad, longitud | 3 (perfil-usuario.yaml) | — |
|
|
73
|
-
| Límites explícitos ("no guardes X") | 3 (perfil-usuario.yaml `limites_explicitos`) | — |
|
|
74
|
-
|
|
75
|
-
### B. Conocimiento del dominio (aplicable al proyecto o transversal)
|
|
76
|
-
|
|
77
|
-
| Tipo de dato | Canal correcto | NO va a |
|
|
9
|
+
| # | Canal | Fuente de verdad de |
|
|
78
10
|
|---|---|---|
|
|
79
|
-
|
|
|
80
|
-
|
|
|
81
|
-
|
|
|
82
|
-
|
|
|
83
|
-
|
|
84
|
-
### C. Estado del sistema y observabilidad
|
|
85
|
-
|
|
86
|
-
| Tipo de dato | Canal correcto |
|
|
87
|
-
|---|---|
|
|
88
|
-
| Nudge emitido por un hook | 5 (`.planning/evolution/nudges.jsonl`) |
|
|
89
|
-
| Evento de subagente terminado | 5 (`.planning/auto-evolution/agentes.jsonl`) |
|
|
90
|
-
| Evolución aplicada/revertida a skill | 5 (`.planning/evolution/evoluciones.jsonl`) |
|
|
91
|
-
| Alerta persistente (nudges ignorados) | 5 (`.planning/evolution/alertas-persistentes.json`) |
|
|
92
|
-
| Métricas agregadas (health score) | 5 (`.planning/evolution/metricas.json`) |
|
|
93
|
-
| Traza de ejecución de agente | `.planning/traces/` (OTLP-lite) |
|
|
94
|
-
| Audit trail inmutable | `.planning/audit.jsonl` + Merkle |
|
|
11
|
+
| 1 | Memoria nativa de Claude Code (`~/.claude/projects/.../memory/`, frontmatter `user`/`feedback`/`project`/`reference`) | Perfil del usuario y del proyecto, auto-gestionado por el harness |
|
|
12
|
+
| 2 | `.planning/APRENDIZAJES.md` (entradas `### [YYYY-MM-DD]` por sección) | Conocimiento del dominio: anti-patrones, patrones, decisiones, gotchas |
|
|
13
|
+
| 3 | `instintos/proyecto.yaml` / `global.yaml` / `perfil-usuario.yaml` (YAML con confidence) | Patrones aprendidos inductivamente, con promoción/degradación |
|
|
14
|
+
| 4 | `.planning/sessions/search-index.json` (índice FTS) | Búsqueda histórica de trabajo (qué se hizo, cuándo) |
|
|
15
|
+
| 5 | `.planning/evolution/*` (JSONL + JSON) | Estado del ciclo de auto-evolución (nudges, métricas, alertas, evoluciones) |
|
|
95
16
|
|
|
96
|
-
|
|
17
|
+
## Regla de oro de asignación
|
|
97
18
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
### E. Búsqueda histórica
|
|
106
|
-
|
|
107
|
-
| Tipo de dato | Canal correcto |
|
|
108
|
-
|---|---|
|
|
109
|
-
| "¿Qué hicimos la semana pasada en X?" | 4 (sessions/search-index.json) — vía `habilidades/memoria-busqueda` |
|
|
110
|
-
| Sesión completa archivada | `.planning/sessions/*.json` |
|
|
111
|
-
|
|
112
|
-
---
|
|
19
|
+
- **Información del usuario** (rol, stack, preferencias, límites, corrección explícita "prefiero X") → 3 (`perfil-usuario.yaml`); las correcciones también a 1 (memoria `feedback`). NUNCA a APRENDIZAJES.
|
|
20
|
+
- **Conocimiento del dominio** (anti-patrón, patrón reutilizable, decisión, gotcha de librería) → 2 (APRENDIZAJES.md). NUNCA al perfil ni a instintos sin consolidar primero vía `/swl:aprender`.
|
|
21
|
+
- **Estado del sistema / métricas / telemetría** → 5 (`.planning/evolution/*`); trazas a `.planning/traces/`, audit trail inmutable a `.planning/audit.jsonl`.
|
|
22
|
+
- **Patrón inductivo con confidence** → 3 (draft <0.5 en proyecto.yaml; activo con ≥0.5 y evidence ≥3; a global.yaml SOLO con confidence >0.8 validado cross-proyecto; contradicho ≥3 veces → `degraded` o borrado).
|
|
23
|
+
- **Búsqueda histórica** ("¿qué hicimos en X?") → 4, vía `habilidades/memoria-busqueda`.
|
|
24
|
+
- Eje cognitivo (`semantic|episodic|procedural`): etiqueta ORTOGONAL opcional sobre el dato en su canal — NO es un sexto canal; `episodic` nace de sesiones, no del bootstrap de APRENDIZAJES.
|
|
113
25
|
|
|
114
26
|
## Precedencia en caso de conflicto
|
|
115
27
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
CLAUDE.md (regla explícita)
|
|
120
|
-
> Memoria nativa tipo feedback del usuario (corrección explícita)
|
|
121
|
-
> instintos con confidence ≥ 0.9
|
|
122
|
-
> APRENDIZAJES.md (si es tipo Decisión)
|
|
123
|
-
> perfil-usuario.yaml
|
|
124
|
-
> instintos con confidence < 0.9
|
|
125
|
-
> sesiones pasadas
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
---
|
|
28
|
+
`CLAUDE.md` > memoria nativa `feedback` > instintos con confidence ≥0.9 > APRENDIZAJES (tipo Decisión) > `perfil-usuario.yaml` > instintos <0.9 > sesiones pasadas.
|
|
129
29
|
|
|
130
30
|
## Reglas de no-duplicación
|
|
131
31
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
usuario va al perfil; un anti-patrón técnico va a APRENDIZAJES.
|
|
137
|
-
|
|
138
|
-
3. **instintos/proyecto.yaml bootstrap desde APRENDIZAJES.md** es válido
|
|
139
|
-
(hace `scripts/bootstrap-instintos.js`), pero la fuente de verdad post-bootstrap
|
|
140
|
-
es `instintos/proyecto.yaml`. Nuevos APRENDIZAJES no deben entrar a instintos
|
|
141
|
-
automáticamente — primero se promueven con `/swl:aprender` (tipo C).
|
|
142
|
-
|
|
143
|
-
4. **La memoria nativa del harness no se sobreescribe** con contenido de SWL.
|
|
144
|
-
El flujo es al revés: señales del usuario pueden alimentar ambos canales
|
|
145
|
-
(native + perfil SWL), pero ninguno es copia del otro.
|
|
146
|
-
|
|
147
|
-
5. **Cuando detectes duplicación cross-canal**, registrarla como anti-patrón
|
|
148
|
-
en APRENDIZAJES.md y corregir con `scripts/validar-memoria.js`.
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## Validación automática
|
|
153
|
-
|
|
154
|
-
El script `scripts/validar-memoria.js` detecta duplicaciones y violaciones
|
|
155
|
-
de esta regla. Se ejecuta:
|
|
156
|
-
|
|
157
|
-
- Manualmente: `node scripts/validar-memoria.js`
|
|
158
|
-
- Automáticamente dentro de `scripts/validar.js` (parte del pipeline CI)
|
|
159
|
-
|
|
160
|
-
Reporta: duplicación cross-canal, canal incorrecto para un tipo de dato
|
|
161
|
-
conocido, datos en canales deprecados.
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
## Anti-patrones a detectar
|
|
166
|
-
|
|
167
|
-
- **Corrección del usuario escrita a APRENDIZAJES.md** → debe ir al perfil
|
|
168
|
-
- **Anti-patrón técnico escrito al perfil del usuario** → debe ir a APRENDIZAJES
|
|
169
|
-
- **Métrica persistida en APRENDIZAJES.md** → debe ir a `.planning/evolution/`
|
|
170
|
-
- **Secreto/credencial en cualquier canal** → bloqueo inmediato (`privacy-memoria`)
|
|
171
|
-
- **Dato duplicado en proyecto.yaml y global.yaml** → uno debe borrarse
|
|
172
|
-
(promover a global SOLO cuando confidence > 0.8 Y validado cross-proyecto)
|
|
173
|
-
- **Instinto activo con `last_validated` antiguo (>180 días) sin feedback**
|
|
174
|
-
→ el `effective_confidence` ya está bajo `0.25`. Re-validar manualmente o
|
|
175
|
-
marcar `status: archived`.
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
## Scoring de instintos: decay exponencial + maturity
|
|
180
|
-
|
|
181
|
-
El campo `confidence` en instintos es **estático** (asignado al crear). El valor
|
|
182
|
-
**efectivo** se computa dinámicamente con dos factores:
|
|
183
|
-
|
|
184
|
-
1. **Decay temporal**: la confianza decae exponencialmente desde `last_validated_at`.
|
|
185
|
-
Half-life por defecto: 90 días. Tras 1 half-life → confianza × 0.5; tras 2 → × 0.25.
|
|
186
|
-
2. **Penalización por feedback dañino**: si `harmful_count / (helpful_count + harmful_count) > 0.3`
|
|
187
|
-
con al menos 3 eventos, el instinto se propone para `status: degraded`.
|
|
188
|
-
|
|
189
|
-
Implementación pura en `scripts/lib/scoring-instintos.js`:
|
|
190
|
-
|
|
191
|
-
```js
|
|
192
|
-
const { effectiveConfidence, maturityState, applyFeedback } = require('./scoring-instintos');
|
|
193
|
-
|
|
194
|
-
// Lectura
|
|
195
|
-
const eff = effectiveConfidence(instinto, new Date());
|
|
196
|
-
const maturity = maturityState(instinto, new Date());
|
|
197
|
-
// → 'candidate' | 'established' | 'proven' | 'deprecated'
|
|
198
|
-
|
|
199
|
-
// Escritura (pure)
|
|
200
|
-
const conFeedback = applyFeedback(instinto, 'helpful');
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
**Cuándo recomputar**:
|
|
204
|
-
- `/swl:status salud` reporta instintos con `effective_confidence < 0.3` para revisión.
|
|
205
|
-
- `hooks/degradacion-instintos.js` puede marcar `status_proposed: degraded`
|
|
206
|
-
cuando `shouldAutoDeprecate(instinto)` devuelve `true`.
|
|
207
|
-
- `bootstrap-instintos.js` emite los nuevos instintos con `decay_half_life_days: 90`,
|
|
208
|
-
`helpful_count: 0`, `harmful_count: 0` por defecto.
|
|
209
|
-
|
|
210
|
-
**Backward compat**: instintos antiguos sin los campos nuevos siguen siendo
|
|
211
|
-
válidos. `effectiveConfidence` cae a `confidence * decay` cuando no hay feedback,
|
|
212
|
-
y `last_validated` (sin `_at`) se usa como fallback.
|
|
213
|
-
|
|
214
|
-
---
|
|
215
|
-
|
|
216
|
-
## Source tracing en instintos y APRENDIZAJES
|
|
217
|
-
|
|
218
|
-
Cada instinto puede declarar la **evidencia que lo respalda** mediante:
|
|
219
|
-
|
|
220
|
-
- `source_sessions: ["sess-abc", "sess-def"]` — sesiones que lo generaron o validaron
|
|
221
|
-
- `source_agents: ["orquestador-swl", "implementador-swl"]` — agentes que lo aplicaron exitosamente
|
|
222
|
-
- `evidence_count: N` — total numérico (compatibilidad legacy)
|
|
32
|
+
- Un dato vive en exactamente UN canal; para citarlo desde otro, puntero/path — nunca copia.
|
|
33
|
+
- `perfil-usuario.yaml` NUNCA duplica APRENDIZAJES: corrección del usuario → perfil; anti-patrón técnico → APRENDIZAJES.
|
|
34
|
+
- El bootstrap APRENDIZAJES→instintos (`scripts/bootstrap-instintos.js`) es válido; post-bootstrap la fuente de verdad es `instintos/proyecto.yaml`. La memoria nativa del harness no se sobreescribe con contenido SWL.
|
|
35
|
+
- Duplicación cross-canal detectada → registrarla como anti-patrón en APRENDIZAJES y corregir con `scripts/validar-memoria.js` (corre también dentro de `scripts/validar.js` en CI).
|
|
223
36
|
|
|
224
|
-
|
|
37
|
+
## Scoring de instintos
|
|
225
38
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
2. Para promover de `instintos/proyecto.yaml` a `instintos/global.yaml`, el
|
|
229
|
-
instinto debe tener `source_agents.length ≥ 2` o `source_sessions.length ≥ 3`
|
|
230
|
-
— un solo punto de evidencia no es suficiente para impacto cross-proyecto.
|
|
231
|
-
3. El campo `source_sessions` referencia IDs de `.planning/sessions/`. No copiar
|
|
232
|
-
el contenido — usar el ID como puntero.
|
|
233
|
-
4. `addSource()` en `scripts/lib/scoring-instintos.js` mantiene unicidad
|
|
234
|
-
automática. NUNCA editar manualmente con duplicados.
|
|
39
|
+
- `confidence` es estático; el valor efectivo aplica decay exponencial (half-life 90 días desde `last_validated_at`) y degradación por feedback dañino (`harmful/(helpful+harmful) > 0.3` con ≥3 eventos → proponer `degraded`). Implementación pura: `scripts/lib/scoring-instintos.js`.
|
|
40
|
+
- Source tracing: instinto con confidence ≥0.7 exige ≥1 entrada en `source_sessions`/`source_agents`; promover a global exige `source_agents ≥ 2` o `source_sessions ≥ 3`; sesiones referenciadas por ID (puntero), nunca copiadas.
|
|
235
41
|
|
|
236
|
-
|
|
237
|
-
`source_agents: []` — la cifra es opaca, no se puede auditar de dónde viene.
|
|
42
|
+
## Anti-patrones
|
|
238
43
|
|
|
239
|
-
|
|
44
|
+
- Corrección del usuario en APRENDIZAJES.md → debe ir al perfil.
|
|
45
|
+
- Anti-patrón técnico en el perfil del usuario → debe ir a APRENDIZAJES.
|
|
46
|
+
- Métrica persistida en APRENDIZAJES.md → debe ir a `.planning/evolution/`.
|
|
47
|
+
- Secreto/credencial en cualquier canal → bloqueo inmediato (`privacy-memoria`).
|
|
48
|
+
- Dato duplicado en proyecto.yaml y global.yaml → uno debe borrarse.
|
|
49
|
+
- Instinto sin feedback con `last_validated` >180 días (effective ya <0.25) → re-validar o `status: archived`.
|
|
240
50
|
|
|
241
51
|
## Checklist antes de escribir a memoria
|
|
242
52
|
|
|
243
|
-
|
|
53
|
+
¿Es dato de usuario, dominio, estado del sistema, patrón inductivo o búsqueda histórica? → identifica el canal correcto según la asignación de arriba.
|
|
54
|
+
¿Ya existe en otro canal? → actualiza ese, no dupliques. ¿Contiene PII/secretos? → cargar `privacy-memoria`. ¿Viene de texto del usuario? → escanear con `prompt-injection-scanner`.
|
|
244
55
|
|
|
245
|
-
|
|
246
|
-
un **patrón inductivo**, o **búsqueda histórica**? → identifica canal A-E.
|
|
247
|
-
2. ¿El canal elegido es el correcto según la tabla de asignación?
|
|
248
|
-
3. ¿El dato ya existe en otro canal? Si sí, actualiza ese, no dupliques.
|
|
249
|
-
4. ¿El dato contiene PII, secretos o contenido sensible? → cargar `privacy-memoria`.
|
|
250
|
-
5. ¿El dato viene de texto del usuario? → escanear con `prompt-injection-scanner`.
|
|
56
|
+
Detalle extendido (tablas de asignación A-E completas, eje cognitivo desarrollado, scoring con código, source tracing, validación automática): `Skill("meta-reglas-extendido")` → `recursos/memoria-consolidada.md`.
|
package/reglas/performance.md
CHANGED
package/reglas/pruebas.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.py"
|
|
4
|
+
- "**/*.ts"
|
|
5
|
+
- "**/*.tsx"
|
|
6
|
+
- "**/*.js"
|
|
7
|
+
- "**/tests/**"
|
|
8
|
+
- "**/test/**"
|
|
9
|
+
- "**/__tests__/**"
|
|
10
|
+
- "**/*.test.*"
|
|
11
|
+
- "**/*.spec.*"
|
|
12
|
+
---
|
|
1
13
|
# Regla: Pruebas
|
|
2
14
|
|
|
3
15
|
Los tests no son opcionales. Son parte de la definición de "terminado" para
|