@saulwade/swl-ses 2.2.4 → 2.3.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 +48 -7
- package/README.md +3 -3
- 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 +472 -472
- 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 +479 -479
- package/agentes/backend-python-swl.md +605 -605
- 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 +605 -605
- 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 +2 -2
- package/agentes/implementador-swl.md +328 -328
- package/agentes/investigador-swl.md +432 -432
- package/agentes/investigador-ux-swl.md +505 -505
- package/agentes/llm-apps-swl.md +278 -278
- 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 +918 -918
- package/agentes/observabilidad-swl.md +438 -438
- package/agentes/orquestador-swl.md +1026 -1026
- 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 +1 -1
- package/agentes/release-manager-swl.md +590 -590
- package/agentes/rendimiento-swl.md +713 -713
- package/agentes/resolutor-build-swl.md +245 -245
- package/agentes/revisor-angular-swl.md +278 -278
- package/agentes/revisor-codigo-swl.md +505 -505
- 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 +291 -291
- package/agentes/tdd-qa-swl.md +393 -393
- package/comandos/swl/aprobar-plan.md +146 -141
- package/comandos/swl/briefing.md +119 -119
- package/comandos/swl/contribuir.md +233 -233
- package/comandos/swl/predecir.md +139 -139
- package/comandos/swl/release.md +30 -8
- package/comandos/swl/sesiones.md +1 -1
- package/comandos/swl/status.md +343 -333
- package/gateway/agent-executor.js +1 -1
- package/gateway/lib/event-channel.js +191 -191
- package/habilidades/agent-deep-links/SKILL.md +148 -148
- package/habilidades/agentes-como-servicio/SKILL.md +2 -2
- package/habilidades/angular-moderno/SKILL.md +20 -1
- package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -276
- package/habilidades/backend-async-postgres-testing/SKILL.md +215 -215
- package/habilidades/backend-error-design/SKILL.md +221 -221
- package/habilidades/backend-production-resilience/SKILL.md +288 -288
- package/habilidades/benchmark-memoria/SKILL.md +186 -186
- package/habilidades/calidad-anti-patrones-universales/SKILL.md +368 -368
- package/habilidades/calidad-contract-testing/SKILL.md +165 -165
- package/habilidades/calidad-mutation-testing/SKILL.md +170 -170
- package/habilidades/changelog-generator/scripts/parse-commits.js +367 -367
- package/habilidades/checklist-seguridad/recursos/stride-cobertura.md +60 -60
- package/habilidades/contenedores-docker/SKILL.md +3 -1
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
- package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
- package/habilidades/drift-detection/SKILL.md +179 -179
- package/habilidades/ejecutar-fase/SKILL.md +564 -541
- package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
- package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +1 -1
- package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +57 -57
- package/habilidades/eval-framework/SKILL.md +212 -212
- package/habilidades/extractor-de-aprendizajes/SKILL.md +3 -3
- package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -108
- package/habilidades/harness-claude-code/recursos/disciplina-harness-regla.md +252 -252
- package/habilidades/legacy-code-rescue/SKILL.md +267 -267
- package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
- package/habilidades/perfil-usuario/SKILL.md +200 -200
- package/habilidades/planear-fase/SKILL.md +15 -1
- package/habilidades/prevencion-sobreingenieria/recursos/EXAMPLES.md +580 -580
- package/habilidades/proceso-ddia-fundamentos/SKILL.md +255 -255
- package/habilidades/proceso-ddia-streaming/SKILL.md +231 -231
- package/habilidades/proceso-debate-adversarial/SKILL.md +191 -164
- package/habilidades/proceso-debate-adversarial/recursos/personas.md +105 -105
- package/habilidades/proceso-discovery-machote/SKILL.md +157 -157
- package/habilidades/proceso-dynamic-workflows/SKILL.md +138 -138
- package/habilidades/proceso-dynamic-workflows/recursos/template-adversarial-verify.js +65 -65
- package/habilidades/proceso-dynamic-workflows/recursos/template-triage.js +65 -65
- package/habilidades/proceso-intent-engineering/SKILL.md +269 -269
- package/habilidades/proceso-modular-split/SKILL.md +256 -256
- package/habilidades/prompt-engineering/recursos/patrones-avanzados.md +2 -2
- package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -147
- package/habilidades/structured-outputs/SKILL.md +2 -2
- package/habilidades/swl-claudemd/recursos/contrato-aprender.md +83 -83
- package/habilidades/swl-claudemd/recursos/duplicacion-reglas-globales.md +85 -85
- package/habilidades/swl-claudemd/recursos/plantillas-init.md +94 -94
- package/habilidades/swl-dashboard/SKILL.md +2 -2
- package/habilidades/tdd-workflow/SKILL.md +33 -1
- package/habilidades/tdd-workflow/recursos/gherkin-bdd.md +111 -111
- package/habilidades/validacion-ci-sistema/recursos/validadores-completos.md +1 -1
- package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +1 -1
- package/hooks/captura-acciones-post.js +151 -0
- package/hooks/captura-acciones-session.js +155 -0
- package/hooks/ciclo-evolucion-subagente.js +26 -26
- package/hooks/ciclo-evolucion.js +26 -26
- package/hooks/claudemd-bloat-detector.js +161 -161
- package/hooks/claudemd-duplicacion-detector.js +170 -170
- package/hooks/contexto-iteracion.js +144 -144
- package/hooks/guardrail-modelo.js +1 -1
- package/hooks/lib/agent-routing.js +107 -107
- package/hooks/lib/auto-consolidator.js +335 -335
- package/hooks/lib/autonomia.js +208 -208
- package/hooks/lib/briefing.js +512 -474
- package/hooks/lib/captura-acciones.js +392 -0
- package/hooks/lib/ciclo-evolucion.js +47 -47
- package/hooks/lib/deep-links.js +185 -185
- package/hooks/lib/error-classifier.js +308 -308
- package/hooks/lib/etapa-auto-evolucion.js +701 -701
- package/hooks/lib/etapa-metricas.js +388 -388
- package/hooks/lib/etapa-perfil-usuario.js +376 -376
- package/hooks/lib/loop-telemetry.js +321 -321
- package/hooks/lib/merkle-audit.js +96 -96
- package/hooks/lib/model-router.js +2 -2
- package/hooks/lib/propose-step.js +358 -358
- package/hooks/lib/provenance-tracker.js +191 -191
- package/hooks/lib/rate-limit-tracker.js +253 -253
- package/hooks/lib/resource-quota.js +122 -122
- package/hooks/lib/retry-jitter.js +165 -165
- package/hooks/lib/security-net.js +201 -201
- package/hooks/lib/skill-auditor.js +588 -588
- package/hooks/lib/sync-status.js +228 -228
- package/hooks/lib/taint-tracker.js +107 -107
- package/hooks/lib/text-similarity.js +241 -241
- package/hooks/lib/token-estimator.js +1 -0
- package/hooks/lib/toon-compressor.js +245 -245
- package/hooks/lib/usage-model.js +1 -1
- package/hooks/linea-estado.js +2 -0
- package/hooks/registro-turnos.js +209 -209
- package/hooks/session-briefing.js +98 -98
- package/hooks/spec-gate.js +211 -211
- package/hooks/sugerir-regenerar-inventario.js +170 -170
- package/hooks/tdd-gate.js +241 -241
- package/hooks/telemetria-skill-routing.js +100 -100
- package/hooks/validar-formato-post-subagente.js +140 -140
- package/hooks/validar-intent-spec.js +242 -242
- package/hooks/validar-memoria-hook.js +218 -218
- package/hooks/validar-planning-paths.js +134 -134
- package/instintos/autonomia.yaml +27 -27
- package/instintos/prompt-appendices.yaml +57 -57
- package/llms.txt +2 -2
- package/manifiestos/agent-output-schemas.json +57 -57
- package/manifiestos/canonical-hashes.json +2291 -1637
- package/manifiestos/hooks-config.json +18 -0
- package/manifiestos/modulos.json +4 -0
- package/manifiestos/planning-paths.json +44 -44
- package/manifiestos/skills-lock.json +1282 -1282
- package/package.json +2 -2
- package/plantillas/auditor-veto-template.md +105 -105
- package/plantillas/github-workflows/README.md +47 -47
- package/plantillas/github-workflows/release-please.yml +44 -44
- package/plantillas/github-workflows/swl-ci.yml +107 -107
- package/plantillas/github-workflows/swl-security.yml +51 -51
- package/plugin.json +2 -2
- package/reglas/accesibilidad.md +10 -10
- package/reglas/analisis-previo-tareas-grandes.md +172 -172
- package/reglas/api-diseno.md +9 -9
- package/reglas/arreglar-al-detectar.md +240 -240
- package/reglas/auditorias-documentales-estructurales.md +7 -7
- package/reglas/cloud-infra.md +8 -8
- package/reglas/consultar-vault-primero.md +195 -195
- package/reglas/debatir-antes-de-aceptar.md +158 -158
- package/reglas/fragmentos-compartidos.md +183 -183
- package/reglas/hooks.md +6 -6
- package/reglas/intent-engineering.md +218 -218
- package/reglas/markitdown.md +8 -8
- package/reglas/memoria-consolidada.md +41 -0
- package/reglas/monitor-ci.md +309 -309
- package/reglas/patrones.md +6 -6
- package/reglas/seguridad-agentes.md +66 -0
- package/reglas/sesiones-paralelas.md +180 -180
- package/reglas/sin-duplicacion-reglas-globales.md +182 -182
- package/reglas/skills-estandar.md +6 -6
- package/reglas/testing.md +7 -7
- package/reglas/tests-cleanup.md +224 -224
- package/reglas/usar-code-review-graph.md +155 -155
- package/reglas/usar-context7.md +226 -226
- package/reglas/verificar-citas-normativas.md +548 -548
- package/schemas/agent-frontmatter.schema.json +3 -3
- package/schemas/agent-message.schema.json +73 -73
- package/schemas/agent-output-implementacion.schema.json +114 -114
- package/schemas/agent-output-planificacion.schema.json +150 -150
- package/schemas/agent-output-review.schema.json +98 -98
- package/schemas/diary-entry.schema.json +112 -112
- package/schemas/hook-profiles.schema.json +54 -54
- package/schemas/hooks-config.schema.json +89 -89
- package/schemas/instinct.schema.json +161 -152
- package/schemas/modulos.schema.json +38 -38
- package/schemas/perfiles.schema.json +36 -36
- package/schemas/plugin.schema.json +77 -77
- package/schemas/skill-evals.schema.json +119 -119
- package/schemas/skill-frontmatter.schema.json +245 -245
- package/scripts/audit-tools/audit-history.js +330 -330
- package/scripts/audit-tools/bundle-tracker.js +290 -290
- package/scripts/audit-tools/canary-monitor.js +352 -352
- package/scripts/audit-tools/code-profiler.js +605 -605
- package/scripts/audit-tools/dep-doctor.js +320 -320
- package/scripts/audit-tools/env-validator.js +206 -206
- package/scripts/audit-tools/lib/fs-walk.js +48 -48
- package/scripts/audit-tools/lib/output.js +23 -23
- package/scripts/audit-tools/migration-checker.js +392 -392
- package/scripts/audit-tools/pentest-scanner.js +1436 -1436
- package/scripts/benchmark-memoria.js +167 -167
- package/scripts/bootstrap-instintos.js +25 -7
- package/scripts/cli/aprobar-plan.js +73 -73
- package/scripts/cli/briefing.js +23 -23
- package/scripts/cli/ciclo-evolucion.js +26 -26
- package/scripts/cli/configurar-ci.js +40 -40
- package/scripts/cli/derivar-feature-list.js +25 -25
- package/scripts/cli/detectar-host.js +27 -27
- package/scripts/cli/diary-entry.js +69 -69
- package/scripts/cli/execution-state.js +18 -18
- package/scripts/cli/gateway-notify.js +41 -41
- package/scripts/cli/liberar-fase.js +42 -42
- package/scripts/cli/loop-telemetry.js +125 -125
- package/scripts/cli/mark-evolved.js +56 -56
- package/scripts/cli/metricas-dora.js +26 -26
- package/scripts/cli/near-duplicate.js +55 -55
- package/scripts/cli/notificaciones.js +123 -123
- package/scripts/cli/propose-step.js +29 -29
- package/scripts/cli/schedule-parse.js +19 -19
- package/scripts/cli/sugerir-modelo.js +20 -20
- package/scripts/cli/verificar-plan.js +36 -36
- package/scripts/cli/verificar-trazabilidad.js +35 -35
- package/scripts/configurar-branch-protection.js +418 -418
- package/scripts/detectar-aprendizajes-duplicados.js +151 -151
- package/scripts/field-report.js +199 -199
- package/scripts/generar-checklists-consolidados.js +273 -273
- package/scripts/generar-matriz-lenguajes.js +271 -271
- package/scripts/lib/artefactos-python.js +43 -43
- package/scripts/lib/auditar-invocaciones-comandos.js +104 -104
- package/scripts/lib/benchmark-metrics.js +160 -160
- package/scripts/lib/budget-enforcer.js +252 -252
- package/scripts/lib/ci-reader.js +193 -193
- package/scripts/lib/claude-sessions.js +1 -0
- package/scripts/lib/configurar-ci.js +380 -380
- package/scripts/lib/contadores-inventario.js +217 -217
- package/scripts/lib/detectar-host-swl.js +175 -175
- package/scripts/lib/detectar-stack-detallado.js +307 -307
- package/scripts/lib/detector-autoduplicacion-intra-archivo.js +234 -234
- package/scripts/lib/detector-reglas-duplicadas.js +220 -220
- package/scripts/lib/diary-entry.js +234 -234
- package/scripts/lib/eval-metrics-store.js +218 -218
- package/scripts/lib/eval-quality.js +171 -171
- package/scripts/lib/eval-schemas.js +144 -144
- package/scripts/lib/eval-self-correct.js +106 -106
- package/scripts/lib/eval-validator.js +185 -185
- package/scripts/lib/evidencia-release.js +322 -322
- package/scripts/lib/expandir-targets.js +71 -71
- package/scripts/lib/gate-hooks-requires.js +249 -249
- package/scripts/lib/gate-licencias.js +212 -212
- package/scripts/lib/git-metricas.js +257 -257
- package/scripts/lib/gitignore-manifest.js +44 -11
- package/scripts/lib/jaccard-similarity.js +98 -98
- package/scripts/lib/longmemeval-runner.js +125 -125
- package/scripts/lib/metricas-dora.js +204 -204
- package/scripts/lib/npm-version.js +261 -261
- package/scripts/lib/paquetes-conocidos.js +50 -50
- package/scripts/lib/plan-lock.js +275 -275
- package/scripts/lib/pr-analyzer.js +399 -399
- package/scripts/lib/prompt-builder.js +264 -264
- package/scripts/lib/reglas-globales-conocidas.json +180 -180
- package/scripts/lib/resolver-plan-fase.js +37 -37
- package/scripts/lib/rrf-fusion.js +175 -175
- package/scripts/lib/schema-version.js +164 -164
- package/scripts/lib/scoring-instintos.js +277 -277
- package/scripts/lib/semantic-search.js +252 -252
- package/scripts/lib/skill-metrics.js +41 -1
- package/scripts/lib/toml-merge.js +204 -204
- package/scripts/lib/tool-cost-analyzer.js +1 -0
- package/scripts/limpiar-artefactos-python.js +131 -131
- package/scripts/mcp-server/auth.js +105 -105
- package/scripts/mcp-server/cache.js +106 -106
- package/scripts/migrar-csv-a-array.js +168 -168
- package/scripts/migrar-fase-dominio.js +200 -200
- package/scripts/publicar.js +497 -497
- package/scripts/run-eval.js +141 -141
- package/scripts/tui/componentes/selector-multi.js +189 -189
- package/scripts/tui/componentes/selector-unico.js +158 -158
- package/scripts/tui/ejecutores.js +375 -375
- package/scripts/tui/index.js +162 -162
- package/scripts/tui/lib/colores.js +129 -129
- package/scripts/tui/lib/render.js +264 -264
- package/scripts/tui/lib/teclas.js +113 -113
- package/scripts/tui/pantallas/inspect.js +173 -173
- package/scripts/tui/pantallas/install-wizard.js +334 -334
- package/scripts/tui/pantallas/menu-principal.js +52 -52
- package/scripts/tui/pantallas/progreso.js +274 -274
- package/scripts/tui/pantallas/resumen.js +132 -132
- package/scripts/tui/pantallas/uninstall-wizard.js +208 -208
- package/scripts/tui/pantallas/update-wizard.js +232 -232
- package/scripts/tui/pantallas/welcome.js +187 -187
- package/scripts/validar-userland-vacio.js +110 -110
- package/scripts/verificar-trazabilidad.js +329 -298
|
@@ -1,164 +1,191 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: proceso-debate-adversarial
|
|
3
|
-
description: >
|
|
4
|
-
Protocolo de debate adversarial con jueces ciegos para decisiones técnicas
|
|
5
|
-
subjetivas: dos autores en frío generan candidatos, un crítico forzosamente
|
|
6
|
-
adversarial los ataca, un sintetizador produce un híbrido y un panel de jueces
|
|
7
|
-
ciegos con etiquetas aleatorizadas elige al ganador hasta convergencia.
|
|
8
|
-
Cargar cuando una decisión de arquitectura, diseño o estrategia no tiene
|
|
9
|
-
métrica objetiva y el riesgo de sycophancy (auto-aprobarse) es alto; también
|
|
10
|
-
cuando arquitecto-swl evalúa alternativas o /swl:predecir necesita el
|
|
11
|
-
protocolo de personas en frío.
|
|
12
|
-
version: "1.
|
|
13
|
-
herramientasPermitidas: [Read, Agent, Skill]
|
|
14
|
-
exclusiones:
|
|
15
|
-
- "No cargar para decisiones con métrica objetiva verificable — ahí aplica el loop de autoresearch (Verify numérico), no un debate."
|
|
16
|
-
- "No cargar para revisión de código post-implementación — eso es revisor-codigo-swl / nemesis-auditor-swl."
|
|
17
|
-
- "No cargar para decisiones triviales o de preferencia personal sin impacto técnico — el costo de 5+ invocaciones de agente no se justifica."
|
|
18
|
-
evolvable: true
|
|
19
|
-
---
|
|
20
|
-
# Debate Adversarial con Jueces Ciegos
|
|
21
|
-
|
|
22
|
-
Protocolo para decidir entre alternativas técnicas **sin métrica objetiva**
|
|
23
|
-
eliminando los dos sesgos que arruinan las auto-evaluaciones de un LLM:
|
|
24
|
-
**sycophancy** (el agente aprueba lo que él mismo generó) y **position bias**
|
|
25
|
-
(el juez prefiere la opción presentada primero). Patrón adoptado del análisis
|
|
26
|
-
de autoresearch v2.1 (`reason-judge-protocol`), adaptado al ecosistema SWL.
|
|
27
|
-
|
|
28
|
-
**Principio**: el que genera nunca juzga, el que juzga nunca sabe quién generó.
|
|
29
|
-
|
|
30
|
-
## Cuándo cargar este skill
|
|
31
|
-
|
|
32
|
-
- Decisión de arquitectura con 2+ alternativas viables sin benchmark objetivo
|
|
33
|
-
(ej: event sourcing vs CRUD+audit, monolito modular vs microservicios).
|
|
34
|
-
- `arquitecto-swl` necesita justificar un ADR con alternativas evaluadas de
|
|
35
|
-
forma no sesgada.
|
|
36
|
-
- `/swl:predecir` requiere el protocolo de aislamiento de personas.
|
|
37
|
-
- Decisión de producto/estrategia donde el usuario pide "dame la mejor opción"
|
|
38
|
-
y una sola pasada produciría la primera idea plausible, no la mejor.
|
|
39
|
-
|
|
40
|
-
## Los 5 roles — aislamiento obligatorio (COLD START)
|
|
41
|
-
|
|
42
|
-
| Rol | Recibe | Produce | Regla dura |
|
|
43
|
-
|-----|--------|---------|------------|
|
|
44
|
-
| **Autor-A** | tarea | candidato A | No ve crítica ni candidato B |
|
|
45
|
-
| **Crítico** | tarea + candidato A | ≥3 debilidades con evidencia + qué haría un candidato superior | NUNCA elogia — rol puramente adversarial |
|
|
46
|
-
| **Autor-B** | tarea + candidato A + crítica | candidato B que resuelve la crítica preservando fortalezas de A | No ve al sintetizador |
|
|
47
|
-
| **Sintetizador** | tarea + A + B | candidato híbrido AB | Fusiona lo mejor de ambos, no promedia |
|
|
48
|
-
| **Panel de jueces** (3 default) | tarea + 3 candidatos con **etiquetas aleatorizadas** (X, Y, Z) | ranking 1°/2°/3° + justificación de un párrafo c/u | "Todos están bien" NO es veredicto válido |
|
|
49
|
-
|
|
50
|
-
**COLD START**: cada rol se ejecuta como invocación independiente del Agent
|
|
51
|
-
tool **sin contexto compartido de sesión** — recibe SOLO los insumos de su fila.
|
|
52
|
-
Pasar el historial completo a un juez invalida el protocolo (sabría quién
|
|
53
|
-
escribió qué).
|
|
54
|
-
|
|
55
|
-
**Aleatorización de etiquetas**: antes de invocar a los jueces, mapear
|
|
56
|
-
A/B/AB → X/Y/Z con orden aleatorio distinto por juez. Previene position bias.
|
|
57
|
-
|
|
58
|
-
## El loop de convergencia
|
|
59
|
-
|
|
60
|
-
```
|
|
61
|
-
Ronda N:
|
|
62
|
-
1. Autor-A genera candidato (ronda 1) o presenta al incumbente (ronda N>1)
|
|
63
|
-
2. Crítico ataca → ≥3 debilidades con evidencia
|
|
64
|
-
3. Autor-B genera candidato alternativo
|
|
65
|
-
4. Sintetizador produce híbrido AB
|
|
66
|
-
5. Panel ciego vota → ganador por mayoría (empate → gana el híbrido)
|
|
67
|
-
6. ¿Ganador == incumbente? → convergencia++ ; si no → convergencia = 1,
|
|
68
|
-
el ganador se vuelve incumbente
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
| Condición | Acción |
|
|
72
|
-
|-----------|--------|
|
|
73
|
-
| Mismo incumbente gana 3 rondas consecutivas | **CONVERGIDO** — terminar |
|
|
74
|
-
| Ronda ≥ max (default 8) | **ACOTADO** — reportar mejor candidato actual |
|
|
75
|
-
| Incumbente cambió >5 veces en las últimas 8 rondas | **OSCILACIÓN** — detener y reportar: la tarea está mal planteada o las alternativas son equivalentes |
|
|
76
|
-
|
|
77
|
-
Registrar cada ronda con `hooks/lib/loop-telemetry.js` (tipo `debate`,
|
|
78
|
-
columnas `ronda, timestamp, etiqueta_ganadora, veredicto, convergencia,
|
|
79
|
-
descripcion`) para que la trayectoria sea auditable y `/swl:status metricas` la lea.
|
|
80
|
-
|
|
81
|
-
## Anti-herd check — obligatorio
|
|
82
|
-
|
|
83
|
-
Si TODOS los jueces coinciden en la primera ronda, el sintetizador DEBE
|
|
84
|
-
producir al menos un contraargumento antes de aceptar el consenso. Unanimidad
|
|
85
|
-
inmediata en un debate de alternativas reales es señal de herd bias, no de
|
|
86
|
-
calidad — las alternativas genuinas siempre tienen tradeoffs defendibles.
|
|
87
|
-
|
|
88
|
-
##
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
##
|
|
116
|
-
|
|
117
|
-
|
|
|
118
|
-
|
|
119
|
-
|
|
|
120
|
-
|
|
|
121
|
-
|
|
|
122
|
-
|
|
|
123
|
-
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
-
|
|
158
|
-
|
|
159
|
-
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
1
|
+
---
|
|
2
|
+
name: proceso-debate-adversarial
|
|
3
|
+
description: >
|
|
4
|
+
Protocolo de debate adversarial con jueces ciegos para decisiones técnicas
|
|
5
|
+
subjetivas: dos autores en frío generan candidatos, un crítico forzosamente
|
|
6
|
+
adversarial los ataca, un sintetizador produce un híbrido y un panel de jueces
|
|
7
|
+
ciegos con etiquetas aleatorizadas elige al ganador hasta convergencia.
|
|
8
|
+
Cargar cuando una decisión de arquitectura, diseño o estrategia no tiene
|
|
9
|
+
métrica objetiva y el riesgo de sycophancy (auto-aprobarse) es alto; también
|
|
10
|
+
cuando arquitecto-swl evalúa alternativas o /swl:predecir necesita el
|
|
11
|
+
protocolo de personas en frío.
|
|
12
|
+
version: "1.1.0"
|
|
13
|
+
herramientasPermitidas: [Read, Agent, Skill]
|
|
14
|
+
exclusiones:
|
|
15
|
+
- "No cargar para decisiones con métrica objetiva verificable — ahí aplica el loop de autoresearch (Verify numérico), no un debate."
|
|
16
|
+
- "No cargar para revisión de código post-implementación — eso es revisor-codigo-swl / nemesis-auditor-swl."
|
|
17
|
+
- "No cargar para decisiones triviales o de preferencia personal sin impacto técnico — el costo de 5+ invocaciones de agente no se justifica."
|
|
18
|
+
evolvable: true
|
|
19
|
+
---
|
|
20
|
+
# Debate Adversarial con Jueces Ciegos
|
|
21
|
+
|
|
22
|
+
Protocolo para decidir entre alternativas técnicas **sin métrica objetiva**
|
|
23
|
+
eliminando los dos sesgos que arruinan las auto-evaluaciones de un LLM:
|
|
24
|
+
**sycophancy** (el agente aprueba lo que él mismo generó) y **position bias**
|
|
25
|
+
(el juez prefiere la opción presentada primero). Patrón adoptado del análisis
|
|
26
|
+
de autoresearch v2.1 (`reason-judge-protocol`), adaptado al ecosistema SWL.
|
|
27
|
+
|
|
28
|
+
**Principio**: el que genera nunca juzga, el que juzga nunca sabe quién generó.
|
|
29
|
+
|
|
30
|
+
## Cuándo cargar este skill
|
|
31
|
+
|
|
32
|
+
- Decisión de arquitectura con 2+ alternativas viables sin benchmark objetivo
|
|
33
|
+
(ej: event sourcing vs CRUD+audit, monolito modular vs microservicios).
|
|
34
|
+
- `arquitecto-swl` necesita justificar un ADR con alternativas evaluadas de
|
|
35
|
+
forma no sesgada.
|
|
36
|
+
- `/swl:predecir` requiere el protocolo de aislamiento de personas.
|
|
37
|
+
- Decisión de producto/estrategia donde el usuario pide "dame la mejor opción"
|
|
38
|
+
y una sola pasada produciría la primera idea plausible, no la mejor.
|
|
39
|
+
|
|
40
|
+
## Los 5 roles — aislamiento obligatorio (COLD START)
|
|
41
|
+
|
|
42
|
+
| Rol | Recibe | Produce | Regla dura |
|
|
43
|
+
|-----|--------|---------|------------|
|
|
44
|
+
| **Autor-A** | tarea | candidato A | No ve crítica ni candidato B |
|
|
45
|
+
| **Crítico** | tarea + candidato A | ≥3 debilidades con evidencia + qué haría un candidato superior | NUNCA elogia — rol puramente adversarial |
|
|
46
|
+
| **Autor-B** | tarea + candidato A + crítica | candidato B que resuelve la crítica preservando fortalezas de A | No ve al sintetizador |
|
|
47
|
+
| **Sintetizador** | tarea + A + B | candidato híbrido AB | Fusiona lo mejor de ambos, no promedia |
|
|
48
|
+
| **Panel de jueces** (3 default) | tarea + 3 candidatos con **etiquetas aleatorizadas** (X, Y, Z) | ranking 1°/2°/3° + justificación de un párrafo c/u | "Todos están bien" NO es veredicto válido |
|
|
49
|
+
|
|
50
|
+
**COLD START**: cada rol se ejecuta como invocación independiente del Agent
|
|
51
|
+
tool **sin contexto compartido de sesión** — recibe SOLO los insumos de su fila.
|
|
52
|
+
Pasar el historial completo a un juez invalida el protocolo (sabría quién
|
|
53
|
+
escribió qué).
|
|
54
|
+
|
|
55
|
+
**Aleatorización de etiquetas**: antes de invocar a los jueces, mapear
|
|
56
|
+
A/B/AB → X/Y/Z con orden aleatorio distinto por juez. Previene position bias.
|
|
57
|
+
|
|
58
|
+
## El loop de convergencia
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Ronda N:
|
|
62
|
+
1. Autor-A genera candidato (ronda 1) o presenta al incumbente (ronda N>1)
|
|
63
|
+
2. Crítico ataca → ≥3 debilidades con evidencia
|
|
64
|
+
3. Autor-B genera candidato alternativo
|
|
65
|
+
4. Sintetizador produce híbrido AB
|
|
66
|
+
5. Panel ciego vota → ganador por mayoría (empate → gana el híbrido)
|
|
67
|
+
6. ¿Ganador == incumbente? → convergencia++ ; si no → convergencia = 1,
|
|
68
|
+
el ganador se vuelve incumbente
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
| Condición | Acción |
|
|
72
|
+
|-----------|--------|
|
|
73
|
+
| Mismo incumbente gana 3 rondas consecutivas | **CONVERGIDO** — terminar |
|
|
74
|
+
| Ronda ≥ max (default 8) | **ACOTADO** — reportar mejor candidato actual |
|
|
75
|
+
| Incumbente cambió >5 veces en las últimas 8 rondas | **OSCILACIÓN** — detener y reportar: la tarea está mal planteada o las alternativas son equivalentes |
|
|
76
|
+
|
|
77
|
+
Registrar cada ronda con `hooks/lib/loop-telemetry.js` (tipo `debate`,
|
|
78
|
+
columnas `ronda, timestamp, etiqueta_ganadora, veredicto, convergencia,
|
|
79
|
+
descripcion`) para que la trayectoria sea auditable y `/swl:status metricas` la lea.
|
|
80
|
+
|
|
81
|
+
## Anti-herd check — obligatorio
|
|
82
|
+
|
|
83
|
+
Si TODOS los jueces coinciden en la primera ronda, el sintetizador DEBE
|
|
84
|
+
producir al menos un contraargumento antes de aceptar el consenso. Unanimidad
|
|
85
|
+
inmediata en un debate de alternativas reales es señal de herd bias, no de
|
|
86
|
+
calidad — las alternativas genuinas siempre tienen tradeoffs defendibles.
|
|
87
|
+
|
|
88
|
+
## Voto incompleto ≠ refutado + degradación del fan-out ante rate limit
|
|
89
|
+
|
|
90
|
+
Cuando el fan-out de personas/jueces se ejecuta en paralelo y la API responde
|
|
91
|
+
con rate limit (429) o un juez no completa su veredicto (timeout, error
|
|
92
|
+
terminal), el hallazgo asociado queda **"sin verificar"**, NUNCA "refutado" ni
|
|
93
|
+
"descartado". Conflar "no se pudo verificar" con "verificado falso" descarta
|
|
94
|
+
silenciosamente hallazgos reales — el modo de falla más caro de un panel
|
|
95
|
+
adversarial.
|
|
96
|
+
|
|
97
|
+
Reglas:
|
|
98
|
+
|
|
99
|
+
- Un veredicto que no se emite NO cuenta como voto en contra. El conteo de
|
|
100
|
+
refutación solo suma jueces que **emitieron** un veredicto de refutación
|
|
101
|
+
explícito. `votos_refutan / votos_emitidos`, nunca `/ jueces_lanzados`.
|
|
102
|
+
- Un hallazgo cuyos votos no se completaron se marca `estado: sin-verificar`
|
|
103
|
+
(distinto de `confirmado` y de `refutado`) y se reporta como tal — el usuario
|
|
104
|
+
decide si re-ejecutar ese subconjunto.
|
|
105
|
+
- Ante rate limit en el fan-out: **escalonar** las invocaciones (lanzar por
|
|
106
|
+
lotes con espera entre lotes) o **reducir** el número de jueces/personas a un
|
|
107
|
+
quórum mínimo (≥3) antes de abortar. Degradar el panel con aviso visible es
|
|
108
|
+
preferible a marcar todo lo no votado como refutado (regla
|
|
109
|
+
`seguridad-agentes.md § Anti-fallback silencioso`).
|
|
110
|
+
|
|
111
|
+
Nota de alcance: esto aplica al panel de este skill y a `/swl:predecir`. El
|
|
112
|
+
patrón adversarial-verify del harness de Workflow (built-in de Claude Code) NO
|
|
113
|
+
es editable desde swl-ses; su semántica de votos vive fuera de este repo.
|
|
114
|
+
|
|
115
|
+
## Criterios de juez por dominio
|
|
116
|
+
|
|
117
|
+
| Dominio | Criterios de evaluación |
|
|
118
|
+
|---------|------------------------|
|
|
119
|
+
| Arquitectura de software | escalabilidad, mantenibilidad, rendimiento, seguridad, simplicidad |
|
|
120
|
+
| Estrategia de producto | encaje de mercado, factibilidad, diferenciación, riesgo, tiempos |
|
|
121
|
+
| Decisión de negocio | ROI, riesgo, alineación, recursos requeridos, reversibilidad |
|
|
122
|
+
| Enfoque de seguridad | cobertura, tasa de falsos positivos, practicidad, cumplimiento |
|
|
123
|
+
| Hipótesis de investigación | testabilidad, novedad, soporte de evidencia, poder explicativo |
|
|
124
|
+
|
|
125
|
+
El juez evalúa CADA candidato contra TODOS los criterios del dominio y
|
|
126
|
+
produce ranking con justificación — nunca un score suelto sin comparación.
|
|
127
|
+
|
|
128
|
+
## Personas para análisis predictivo
|
|
129
|
+
|
|
130
|
+
Cuando el objetivo es **predecir problemas de un cambio propuesto** (no
|
|
131
|
+
elegir entre alternativas), usar el modo personas: 5 expertos analizan EN FRÍO
|
|
132
|
+
el mismo cambio y un sintetizador deduplica y rankea. Definiciones completas,
|
|
133
|
+
preguntas guía y red flags por persona en
|
|
134
|
+
[recursos/personas.md](recursos/personas.md). Set default: Arquitecto de
|
|
135
|
+
Software, Analista de Seguridad, Ingeniero de Rendimiento, Ingeniero de
|
|
136
|
+
Confiabilidad, Abogado del Diablo. Set adversarial (`--adversarial`): El
|
|
137
|
+
Rompedor, El Tramposo, El Escalador, El Novato, El Insider Malicioso.
|
|
138
|
+
|
|
139
|
+
Ranking de hallazgos del sintetizador:
|
|
140
|
+
`severidad × confianza promedio × número de personas que coinciden`.
|
|
141
|
+
|
|
142
|
+
## Integración con el ecosistema SWL
|
|
143
|
+
|
|
144
|
+
| Componente | Uso del protocolo |
|
|
145
|
+
|-----------|-------------------|
|
|
146
|
+
| `arquitecto-swl` | Debate para la sección "Alternativas consideradas" de un ADR |
|
|
147
|
+
| `/swl:predecir` | Modo personas pre-implementación |
|
|
148
|
+
| `/swl:nemesis` | El evaluator puede pedir un debate cuando dos remediaciones compiten |
|
|
149
|
+
| `hooks/lib/loop-telemetry.js` | Registro de rondas + handoff para encadenar |
|
|
150
|
+
| `/swl:status metricas` | Lectura de trayectorias de debates en `.planning/loops/` |
|
|
151
|
+
|
|
152
|
+
## Cuándo NO cargar
|
|
153
|
+
|
|
154
|
+
- La decisión tiene métrica objetiva (latencia, cobertura, bundle size) — usar
|
|
155
|
+
el loop autoresearch con Verify numérico; un debate es más caro y menos
|
|
156
|
+
preciso que medir.
|
|
157
|
+
- El usuario ya tomó la decisión y está documentada en ADR/vault — aplicar
|
|
158
|
+
`consultar-vault-primero`, no reabrir con un debate.
|
|
159
|
+
- Hay restricción dura que elimina las alternativas (compliance, presupuesto,
|
|
160
|
+
stack fijo) — verificar restricciones ANTES de armar el debate.
|
|
161
|
+
|
|
162
|
+
## Gotchas / Errores comunes no obvios
|
|
163
|
+
|
|
164
|
+
- **Jueces con contexto contaminado**: invocar a los jueces en la misma
|
|
165
|
+
conversación donde se generaron los candidatos les revela la autoría por el
|
|
166
|
+
historial. Causa: usar el contexto principal en vez del Agent tool con
|
|
167
|
+
prompt acotado. Solución: cada juez es una invocación Agent independiente
|
|
168
|
+
cuyo prompt contiene SOLO tarea + candidatos etiquetados.
|
|
169
|
+
- **Crítico que "equilibra"**: el crítico señala 3 debilidades pero cierra con
|
|
170
|
+
"en general es un buen enfoque" — eso re-introduce sycophancy y debilita al
|
|
171
|
+
Autor-B. Solución: el prompt del crítico prohíbe explícitamente elogios y
|
|
172
|
+
exige proponer qué haría un candidato superior.
|
|
173
|
+
- **Sintetizador que promedia en vez de fusionar**: produce un candidato
|
|
174
|
+
"tibio" que toma la mitad de cada uno y pierde la coherencia interna de
|
|
175
|
+
ambos. Solución: el híbrido debe tener una tesis propia — tomar la
|
|
176
|
+
arquitectura dominante de uno e injertar mecanismos puntuales del otro.
|
|
177
|
+
- **Convergencia falsa por candidatos idénticos**: si Autor-B produce
|
|
178
|
+
esencialmente el mismo candidato que A, el panel "converge" en ronda 2 sin
|
|
179
|
+
exploración real. Solución: el prompt de Autor-B exige divergencia
|
|
180
|
+
estructural, no cosmética; si la crítica fue débil, regenerar la crítica.
|
|
181
|
+
|
|
182
|
+
## Anti-patrones
|
|
183
|
+
|
|
184
|
+
- **Debate de 1 ronda presentado como consenso** — sin convergencia ×3 no hay
|
|
185
|
+
veredicto, hay una primera impresión cara.
|
|
186
|
+
- **Saltarse la aleatorización de etiquetas** "porque los jueces son
|
|
187
|
+
imparciales" — el position bias es estadístico, no intencional.
|
|
188
|
+
- **Usar el debate para decisiones ya cerradas** — teatro de proceso que
|
|
189
|
+
quema tokens para justificar lo decidido.
|
|
190
|
+
- **Panel de 1 juez** — un juez único reintroduce el sesgo individual que el
|
|
191
|
+
panel existe para diluir; mínimo 3, número impar.
|
|
@@ -1,105 +1,105 @@
|
|
|
1
|
-
# Personas para análisis predictivo y debate adversarial
|
|
2
|
-
|
|
3
|
-
Definiciones operativas de las personas que consume `proceso-debate-adversarial`
|
|
4
|
-
(modo personas) y `/swl:predecir`. Cada persona se invoca EN FRÍO (COLD START):
|
|
5
|
-
recibe la descripción del cambio + conocimiento del codebase + sus criterios —
|
|
6
|
-
nunca el análisis de otra persona.
|
|
7
|
-
|
|
8
|
-
Formato de hallazgo obligatorio por persona:
|
|
9
|
-
|
|
10
|
-
```markdown
|
|
11
|
-
| # | Hallazgo | Severidad | Confianza (0-100%) | archivo:línea | Recomendación |
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
Presupuesto: `max_hallazgos_por_persona = presupuesto_total / num_personas`
|
|
15
|
-
(default presupuesto 40 → 8 por persona). Obliga a priorizar, no a enumerar.
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## Set default (análisis predictivo estándar)
|
|
20
|
-
|
|
21
|
-
### 1. Arquitecto de Software
|
|
22
|
-
- **Enfoque**: diseño sistémico, fronteras de componentes, flujo de datos, escalabilidad.
|
|
23
|
-
- **Preguntas guía**: ¿Escala? ¿Los límites entre módulos son limpios? ¿El acoplamiento está minimizado? ¿Sobrevive un crecimiento 10x?
|
|
24
|
-
- **Evidencia exigida**: archivo:línea, grafo de dependencias, métricas de acoplamiento.
|
|
25
|
-
- **Red flags**: god classes, dependencias circulares, abstracciones con fugas, estado mutable compartido.
|
|
26
|
-
|
|
27
|
-
### 2. Analista de Seguridad
|
|
28
|
-
- **Enfoque**: superficies de ataque, autenticación/autorización, protección de datos, vectores de inyección.
|
|
29
|
-
- **Preguntas guía**: ¿Es explotable? ¿Los trust boundaries se aplican? ¿El input se sanitiza? ¿Los secretos están protegidos?
|
|
30
|
-
- **Evidencia exigida**: archivo:línea + escenario de ataque concreto (no especulación teórica).
|
|
31
|
-
- **Red flags**: SQL crudo, authz faltante, secretos hardcodeados, input sin sanitizar.
|
|
32
|
-
|
|
33
|
-
### 3. Ingeniero de Rendimiento
|
|
34
|
-
- **Enfoque**: latencia, throughput, uso de recursos, complejidad algorítmica.
|
|
35
|
-
- **Preguntas guía**: ¿Es suficientemente rápido? ¿Cuál es el peor caso? ¿Dónde están los cuellos de botella? ¿El caching es efectivo?
|
|
36
|
-
- **Evidencia exigida**: archivo:línea, análisis de complejidad, estimaciones de recursos.
|
|
37
|
-
- **Red flags**: queries N+1, loops sin cota, índices faltantes, I/O síncrono en hot paths.
|
|
38
|
-
|
|
39
|
-
### 4. Ingeniero de Confiabilidad
|
|
40
|
-
- **Enfoque**: manejo de errores, modos de falla, observabilidad, recuperación.
|
|
41
|
-
- **Preguntas guía**: ¿Qué pasa cuando falla? ¿Podemos detectarlo? ¿Hay camino de recuperación? ¿Es observable?
|
|
42
|
-
- **Evidencia exigida**: archivo:línea, escenarios de falla, rutas de recuperación.
|
|
43
|
-
- **Red flags**: errores tragados, retries faltantes, sin circuit breakers, fallas silenciosas.
|
|
44
|
-
|
|
45
|
-
### 5. Abogado del Diablo
|
|
46
|
-
- **Enfoque**: asunciones, casos límite, complejidad oculta, mantenibilidad.
|
|
47
|
-
- **Preguntas guía**: ¿Qué asunciones son falsas? ¿Qué rompe esto? ¿Está sobre-ingenierizado?
|
|
48
|
-
- **Evidencia exigida**: contraejemplos concretos, escenarios de caso límite.
|
|
49
|
-
- **Red flags**: diseño solo-happy-path, asunciones sin probar, complejidad sin justificación.
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## Set adversarial (`--adversarial`)
|
|
54
|
-
|
|
55
|
-
Reemplaza al set default cuando el objetivo es estresar el cambio como atacante,
|
|
56
|
-
no como revisor.
|
|
57
|
-
|
|
58
|
-
### 1. El Rompedor
|
|
59
|
-
Intenta crashear o corromper el sistema. Busca: estados imposibles, inputs
|
|
60
|
-
malformados, condiciones de carrera, límites de recursos.
|
|
61
|
-
|
|
62
|
-
### 2. El Tramposo
|
|
63
|
-
Busca formas de saltarse reglas y abusar de features. Busca: validaciones solo
|
|
64
|
-
en frontend, límites evadibles, flujos alternos sin guards.
|
|
65
|
-
|
|
66
|
-
### 3. El Escalador
|
|
67
|
-
Imagina carga 1000x y encuentra qué se rompe primero. Busca: queries sin
|
|
68
|
-
paginación, locks globales, colas sin backpressure, costos lineales ocultos.
|
|
69
|
-
|
|
70
|
-
### 4. El Novato
|
|
71
|
-
Usa mal cada API esperando que funcione. Busca: defaults peligrosos, errores
|
|
72
|
-
crípticos, documentación que asume contexto, footguns de la interfaz.
|
|
73
|
-
|
|
74
|
-
### 5. El Insider Malicioso
|
|
75
|
-
Tiene credenciales válidas y quiere exfiltrar. Busca: permisos excesivos,
|
|
76
|
-
auditoría faltante, datos sensibles accesibles lateralmente.
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Set red-team de seguridad (para `checklist-seguridad` modo cobertura)
|
|
81
|
-
|
|
82
|
-
Rotación de mentalidades para auditoría STRIDE/OWASP iterativa:
|
|
83
|
-
|
|
84
|
-
| Persona | Foco | Mentalidad |
|
|
85
|
-
|---------|------|-----------|
|
|
86
|
-
| Adversario de Seguridad | auth, crypto, inyección | atacante externo con browser + proxy de intercepción |
|
|
87
|
-
| Atacante de Supply Chain | dependencias, CI/CD, build pipeline | comprometer vía código de terceros |
|
|
88
|
-
| Amenaza Interna | acceso a datos, abuso de privilegios, exfiltración | usuario autenticado con intención maliciosa |
|
|
89
|
-
| Atacante de Infraestructura | red, configuración cloud, contenedores | apuntar a misconfigurations de infra |
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
## Protocolo de síntesis (tras el análisis individual)
|
|
94
|
-
|
|
95
|
-
1. **Deduplicar**: mismo archivo:línea + mismo problema → fusionar, conservar la severidad más alta.
|
|
96
|
-
2. **Resolver conflictos**: si dos personas discrepan → registrar el disenso, no silenciarlo.
|
|
97
|
-
3. **Anti-herd check**: si TODAS las personas coinciden → el sintetizador DEBE producir ≥1 contraargumento.
|
|
98
|
-
4. **Rankear**: `severidad × confianza promedio × número de personas que coinciden`.
|
|
99
|
-
|
|
100
|
-
Output del sintetizador:
|
|
101
|
-
|
|
102
|
-
```markdown
|
|
103
|
-
### Consenso — [N hallazgos tras dedup]
|
|
104
|
-
| # | Hallazgo | Severidad | Acuerdo | Personas origen | Acción |
|
|
105
|
-
```
|
|
1
|
+
# Personas para análisis predictivo y debate adversarial
|
|
2
|
+
|
|
3
|
+
Definiciones operativas de las personas que consume `proceso-debate-adversarial`
|
|
4
|
+
(modo personas) y `/swl:predecir`. Cada persona se invoca EN FRÍO (COLD START):
|
|
5
|
+
recibe la descripción del cambio + conocimiento del codebase + sus criterios —
|
|
6
|
+
nunca el análisis de otra persona.
|
|
7
|
+
|
|
8
|
+
Formato de hallazgo obligatorio por persona:
|
|
9
|
+
|
|
10
|
+
```markdown
|
|
11
|
+
| # | Hallazgo | Severidad | Confianza (0-100%) | archivo:línea | Recomendación |
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Presupuesto: `max_hallazgos_por_persona = presupuesto_total / num_personas`
|
|
15
|
+
(default presupuesto 40 → 8 por persona). Obliga a priorizar, no a enumerar.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Set default (análisis predictivo estándar)
|
|
20
|
+
|
|
21
|
+
### 1. Arquitecto de Software
|
|
22
|
+
- **Enfoque**: diseño sistémico, fronteras de componentes, flujo de datos, escalabilidad.
|
|
23
|
+
- **Preguntas guía**: ¿Escala? ¿Los límites entre módulos son limpios? ¿El acoplamiento está minimizado? ¿Sobrevive un crecimiento 10x?
|
|
24
|
+
- **Evidencia exigida**: archivo:línea, grafo de dependencias, métricas de acoplamiento.
|
|
25
|
+
- **Red flags**: god classes, dependencias circulares, abstracciones con fugas, estado mutable compartido.
|
|
26
|
+
|
|
27
|
+
### 2. Analista de Seguridad
|
|
28
|
+
- **Enfoque**: superficies de ataque, autenticación/autorización, protección de datos, vectores de inyección.
|
|
29
|
+
- **Preguntas guía**: ¿Es explotable? ¿Los trust boundaries se aplican? ¿El input se sanitiza? ¿Los secretos están protegidos?
|
|
30
|
+
- **Evidencia exigida**: archivo:línea + escenario de ataque concreto (no especulación teórica).
|
|
31
|
+
- **Red flags**: SQL crudo, authz faltante, secretos hardcodeados, input sin sanitizar.
|
|
32
|
+
|
|
33
|
+
### 3. Ingeniero de Rendimiento
|
|
34
|
+
- **Enfoque**: latencia, throughput, uso de recursos, complejidad algorítmica.
|
|
35
|
+
- **Preguntas guía**: ¿Es suficientemente rápido? ¿Cuál es el peor caso? ¿Dónde están los cuellos de botella? ¿El caching es efectivo?
|
|
36
|
+
- **Evidencia exigida**: archivo:línea, análisis de complejidad, estimaciones de recursos.
|
|
37
|
+
- **Red flags**: queries N+1, loops sin cota, índices faltantes, I/O síncrono en hot paths.
|
|
38
|
+
|
|
39
|
+
### 4. Ingeniero de Confiabilidad
|
|
40
|
+
- **Enfoque**: manejo de errores, modos de falla, observabilidad, recuperación.
|
|
41
|
+
- **Preguntas guía**: ¿Qué pasa cuando falla? ¿Podemos detectarlo? ¿Hay camino de recuperación? ¿Es observable?
|
|
42
|
+
- **Evidencia exigida**: archivo:línea, escenarios de falla, rutas de recuperación.
|
|
43
|
+
- **Red flags**: errores tragados, retries faltantes, sin circuit breakers, fallas silenciosas.
|
|
44
|
+
|
|
45
|
+
### 5. Abogado del Diablo
|
|
46
|
+
- **Enfoque**: asunciones, casos límite, complejidad oculta, mantenibilidad.
|
|
47
|
+
- **Preguntas guía**: ¿Qué asunciones son falsas? ¿Qué rompe esto? ¿Está sobre-ingenierizado?
|
|
48
|
+
- **Evidencia exigida**: contraejemplos concretos, escenarios de caso límite.
|
|
49
|
+
- **Red flags**: diseño solo-happy-path, asunciones sin probar, complejidad sin justificación.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Set adversarial (`--adversarial`)
|
|
54
|
+
|
|
55
|
+
Reemplaza al set default cuando el objetivo es estresar el cambio como atacante,
|
|
56
|
+
no como revisor.
|
|
57
|
+
|
|
58
|
+
### 1. El Rompedor
|
|
59
|
+
Intenta crashear o corromper el sistema. Busca: estados imposibles, inputs
|
|
60
|
+
malformados, condiciones de carrera, límites de recursos.
|
|
61
|
+
|
|
62
|
+
### 2. El Tramposo
|
|
63
|
+
Busca formas de saltarse reglas y abusar de features. Busca: validaciones solo
|
|
64
|
+
en frontend, límites evadibles, flujos alternos sin guards.
|
|
65
|
+
|
|
66
|
+
### 3. El Escalador
|
|
67
|
+
Imagina carga 1000x y encuentra qué se rompe primero. Busca: queries sin
|
|
68
|
+
paginación, locks globales, colas sin backpressure, costos lineales ocultos.
|
|
69
|
+
|
|
70
|
+
### 4. El Novato
|
|
71
|
+
Usa mal cada API esperando que funcione. Busca: defaults peligrosos, errores
|
|
72
|
+
crípticos, documentación que asume contexto, footguns de la interfaz.
|
|
73
|
+
|
|
74
|
+
### 5. El Insider Malicioso
|
|
75
|
+
Tiene credenciales válidas y quiere exfiltrar. Busca: permisos excesivos,
|
|
76
|
+
auditoría faltante, datos sensibles accesibles lateralmente.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Set red-team de seguridad (para `checklist-seguridad` modo cobertura)
|
|
81
|
+
|
|
82
|
+
Rotación de mentalidades para auditoría STRIDE/OWASP iterativa:
|
|
83
|
+
|
|
84
|
+
| Persona | Foco | Mentalidad |
|
|
85
|
+
|---------|------|-----------|
|
|
86
|
+
| Adversario de Seguridad | auth, crypto, inyección | atacante externo con browser + proxy de intercepción |
|
|
87
|
+
| Atacante de Supply Chain | dependencias, CI/CD, build pipeline | comprometer vía código de terceros |
|
|
88
|
+
| Amenaza Interna | acceso a datos, abuso de privilegios, exfiltración | usuario autenticado con intención maliciosa |
|
|
89
|
+
| Atacante de Infraestructura | red, configuración cloud, contenedores | apuntar a misconfigurations de infra |
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Protocolo de síntesis (tras el análisis individual)
|
|
94
|
+
|
|
95
|
+
1. **Deduplicar**: mismo archivo:línea + mismo problema → fusionar, conservar la severidad más alta.
|
|
96
|
+
2. **Resolver conflictos**: si dos personas discrepan → registrar el disenso, no silenciarlo.
|
|
97
|
+
3. **Anti-herd check**: si TODAS las personas coinciden → el sintetizador DEBE producir ≥1 contraargumento.
|
|
98
|
+
4. **Rankear**: `severidad × confianza promedio × número de personas que coinciden`.
|
|
99
|
+
|
|
100
|
+
Output del sintetizador:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
### Consenso — [N hallazgos tras dedup]
|
|
104
|
+
| # | Hallazgo | Severidad | Acuerdo | Personas origen | Acción |
|
|
105
|
+
```
|