@saulwade/swl-ses 1.4.1 → 1.4.2
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 +1 -1
- package/README.md +1 -1
- package/agentes/nemesis-auditor-swl.md +161 -161
- package/bin/swl-mcp-server.js +187 -187
- package/comandos/swl/.evolved.json +22 -22
- package/comandos/swl/contribuir.md +233 -233
- package/comandos/swl/nemesis.md +122 -122
- package/gateway/lib/event-channel.js +191 -191
- package/habilidades/backend-production-resilience/SKILL.md +288 -288
- package/habilidades/benchmark-memoria/SKILL.md +186 -186
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
- package/habilidades/doubt-driven-review/SKILL.md +171 -171
- package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
- package/habilidades/eval-framework/SKILL.md +212 -212
- package/habilidades/feynman-auditor-swl/SKILL.md +123 -123
- package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -108
- package/habilidades/harness-claude-code/SKILL.md +299 -299
- package/habilidades/infra-github-actions/SKILL.md +166 -166
- package/habilidades/legacy-code-rescue/SKILL.md +267 -267
- package/habilidades/manejo-errores/.evolved.json +8 -8
- package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
- package/habilidades/patrones-python/SKILL.md +229 -229
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
- package/habilidades/planear-fase/SKILL.md +319 -319
- package/habilidades/release-semver/.evolved.json +8 -8
- package/habilidades/state-inconsistency-auditor-swl/SKILL.md +166 -166
- package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -147
- package/habilidades/testing-python/SKILL.md +340 -340
- package/habilidades/web-fetcher-routing/SKILL.md +75 -75
- package/hooks/claudemd-bloat-detector.js +161 -161
- package/hooks/lib/agent-routing.js +107 -107
- package/hooks/lib/auto-consolidator.js +335 -335
- package/hooks/lib/error-classifier.js +308 -308
- package/hooks/lib/merkle-audit.js +96 -96
- 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/toon-compressor.js +245 -245
- package/hooks/registro-turnos.js +209 -209
- package/hooks/sugerir-regenerar-inventario.js +170 -170
- package/hooks/validar-formato-post-subagente.js +140 -140
- package/hooks/validar-memoria-hook.js +218 -218
- package/instintos/prompt-appendices.yaml +57 -57
- package/manifiestos/agent-output-schemas.json +57 -57
- package/manifiestos/modulos.json +11 -6
- package/manifiestos/perfiles.json +2 -1
- package/manifiestos/skills-lock.json +1114 -1114
- package/package.json +1 -1
- 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 +9 -1
- package/reglas/analisis-previo-tareas-grandes.md +172 -172
- package/reglas/arreglar-al-detectar.md +147 -147
- package/reglas/fragmentos-compartidos.md +152 -152
- package/reglas/harness-claude-code.md +213 -213
- package/reglas/usar-context7.md +226 -226
- package/schemas/diary-entry.schema.json +80 -80
- 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/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-inventario.js +420 -420
- package/scripts/generar-matriz-lenguajes.js +271 -271
- package/scripts/lib/artefactos-python.js +43 -43
- package/scripts/lib/benchmark-metrics.js +160 -160
- package/scripts/lib/budget-enforcer.js +252 -252
- package/scripts/lib/configurar-ci.js +380 -380
- package/scripts/lib/contadores-inventario.js +217 -217
- package/scripts/lib/detectar-stack-detallado.js +307 -307
- 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/jaccard-similarity.js +98 -98
- package/scripts/lib/longmemeval-runner.js +125 -125
- package/scripts/lib/manifiestos.js +42 -1
- package/scripts/lib/npm-version.js +261 -261
- package/scripts/lib/paquetes-conocidos.js +50 -50
- package/scripts/lib/prompt-builder.js +264 -264
- package/scripts/lib/rrf-fusion.js +175 -175
- package/scripts/lib/scoring-instintos.js +277 -277
- package/scripts/lib/semantic-search.js +252 -252
- package/scripts/limpiar-artefactos-python.js +131 -131
- package/scripts/mcp-server/README.md +128 -128
- package/scripts/mcp-server/handlers.js +206 -206
- package/scripts/migrar-csv-a-array.js +168 -168
- package/scripts/migrar-fase-dominio.js +201 -201
- package/scripts/publicar.js +511 -511
- package/scripts/run-eval.js +141 -141
- package/scripts/validar-manifest.js +231 -195
- package/scripts/validar-userland-vacio.js +110 -110
|
@@ -1,171 +1,171 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: doubt-driven-review
|
|
3
|
-
description: >
|
|
4
|
-
Adversarial peer review de decisiones técnicas antes de comprometerlas.
|
|
5
|
-
Cuestiona supuestos, fuerza la articulación de alternativas descartadas y
|
|
6
|
-
detecta confianza injustificada. Cargar antes de decidir arquitecturas
|
|
7
|
-
irreversibles, elegir un framework crítico, definir un contrato de API
|
|
8
|
-
público o aprobar un PR de alto impacto. NO cubre adversarial review de
|
|
9
|
-
memoria (eso lo hace red-team-swl) ni de seguridad de código (eso lo hace
|
|
10
|
-
revisor-seguridad-swl) — este skill se especializa en decisiones técnicas
|
|
11
|
-
con costo de cambio alto.
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# Doubt-Driven Review
|
|
15
|
-
|
|
16
|
-
## Cuándo cargar
|
|
17
|
-
|
|
18
|
-
- Antes de aprobar un ADR que toma una decisión irreversible.
|
|
19
|
-
- Antes de comprometer un contrato público de API o un schema de BD que afecta integraciones externas.
|
|
20
|
-
- Antes de elegir un framework, librería o patrón con costo de migración alto.
|
|
21
|
-
- Antes de fusionar un PR cuyo blast radius incluye módulos críticos.
|
|
22
|
-
- Cuando el equipo o el agente exhibe **alta confianza con baja evidencia** sobre una decisión técnica.
|
|
23
|
-
|
|
24
|
-
## Cuándo NO cargar
|
|
25
|
-
|
|
26
|
-
- Para revisar código por calidad — eso es `revisor-codigo-swl` con `Skill("checklist-calidad")`.
|
|
27
|
-
- Para revisar seguridad — eso es `revisor-seguridad-swl` con `Skill("checklist-seguridad")`.
|
|
28
|
-
- Para validar memoria contra prompt injection o privacidad — eso es `red-team-swl`.
|
|
29
|
-
- Para discutir alcances con el usuario — eso es `Skill("brainstorming")` o `swl:discutir-fase`.
|
|
30
|
-
- Para fixes triviales o decisiones reversibles en menos de 10 minutos.
|
|
31
|
-
|
|
32
|
-
## Principio
|
|
33
|
-
|
|
34
|
-
> Una decisión cuya alternativa no se ha articulado, no es una decisión:
|
|
35
|
-
> es una preferencia. Toda decisión técnica con costo de cambio alto debe
|
|
36
|
-
> sobrevivir a un round adversarial antes de comprometerse.
|
|
37
|
-
|
|
38
|
-
El skill ejecuta un protocolo en 5 pasos. Cada paso produce evidencia en
|
|
39
|
-
texto. La salida del skill NO aprueba ni rechaza — produce un reporte que
|
|
40
|
-
el agente o usuario humano usa para decidir.
|
|
41
|
-
|
|
42
|
-
## Protocolo
|
|
43
|
-
|
|
44
|
-
### Paso 1 — Articular la decisión y su irreversibilidad
|
|
45
|
-
|
|
46
|
-
Pedir explícitamente:
|
|
47
|
-
|
|
48
|
-
- **Qué se decide**: 1-3 oraciones, sin jerga ambigua.
|
|
49
|
-
- **Qué se descarta**: la decisión opuesta concreta.
|
|
50
|
-
- **Costo de revertir**: estimación en turnos / archivos / horas si en 3 meses se concluye que fue incorrecta.
|
|
51
|
-
|
|
52
|
-
Si el costo de revertir es < 4 horas y < 5 archivos: la decisión NO es candidata
|
|
53
|
-
a doubt-driven review. Cerrar el skill y proceder.
|
|
54
|
-
|
|
55
|
-
### Paso 2 — Forzar 3 alternativas descartadas
|
|
56
|
-
|
|
57
|
-
El agente o usuario debe articular las 3 alternativas más fuertes que NO se eligieron, con:
|
|
58
|
-
|
|
59
|
-
- Por qué cada una es plausible (≥ 1 razón concreta).
|
|
60
|
-
- Qué tradeoff la hace inferior a la elegida (sin frase genérica como "menos flexible").
|
|
61
|
-
|
|
62
|
-
Si la persona/agente no puede articular 3 alternativas: **señal de decisión bajo-evidencia**.
|
|
63
|
-
Reportar: "Decisión propuesta sin alternativas articuladas. Riesgo de selección por inercia."
|
|
64
|
-
|
|
65
|
-
### Paso 3 — Buscar contraevidencia activamente
|
|
66
|
-
|
|
67
|
-
Para la decisión propuesta:
|
|
68
|
-
|
|
69
|
-
- Listar 3 escenarios donde la decisión **fallaría** o produciría costos no anticipados.
|
|
70
|
-
- Listar 1 caso histórico (dentro o fuera del proyecto) donde una decisión similar resultó incorrecta.
|
|
71
|
-
- Identificar 1 supuesto de la decisión que NO está validado con evidencia (corre el riesgo de ser falso).
|
|
72
|
-
|
|
73
|
-
Si los 3 escenarios de falla son improbables Y el supuesto está validado: la decisión gana robustez.
|
|
74
|
-
Si ≥ 1 escenario tiene probabilidad ≥ 30%: documentar el riesgo en el reporte.
|
|
75
|
-
|
|
76
|
-
### Paso 4 — Detectar confianza injustificada
|
|
77
|
-
|
|
78
|
-
Patrones a marcar como red flags:
|
|
79
|
-
|
|
80
|
-
- "Es la mejor práctica" sin citar fuente o caso.
|
|
81
|
-
- "Siempre se hace así" sin verificar el contexto del proyecto actual.
|
|
82
|
-
- "Es lo que recomienda <autoridad>" sin verificar que la recomendación aplica al stack/escala/dominio.
|
|
83
|
-
- "No hay otra opción razonable" cuando el paso 2 ya forzó 3 alternativas.
|
|
84
|
-
- Cita de un blog post o tweet como evidencia única.
|
|
85
|
-
- Argumentos de tipo "todo el mundo lo usa" sin métrica concreta.
|
|
86
|
-
|
|
87
|
-
Por cada red flag detectado: 1 línea en el reporte con cita textual del argumento.
|
|
88
|
-
|
|
89
|
-
### Paso 5 — Trigger de reversión
|
|
90
|
-
|
|
91
|
-
Toda decisión que pase doubt-driven review debe incluir:
|
|
92
|
-
|
|
93
|
-
- **Trigger de reversión**: condición observable que, de cumplirse, obliga a reabrir la decisión.
|
|
94
|
-
Ejemplos válidos: "p95 de latencia > 800ms en producción durante 7 días",
|
|
95
|
-
"≥3 reportes de bugs relacionados con la limitación X en 30 días", "vendor X
|
|
96
|
-
publica deprecation notice", "costo mensual de infra excede $Y".
|
|
97
|
-
- **Fecha de reevaluación automática**: 6-12 meses desde la fecha de decisión.
|
|
98
|
-
|
|
99
|
-
Si la decisión NO puede tener trigger observable: es una decisión **basada en preferencia**,
|
|
100
|
-
no en hipótesis falsable. Documentarla como tal en el reporte.
|
|
101
|
-
|
|
102
|
-
## Formato del reporte
|
|
103
|
-
|
|
104
|
-
```markdown
|
|
105
|
-
## Doubt-Driven Review — [decisión] — [fecha]
|
|
106
|
-
|
|
107
|
-
### Decisión articulada
|
|
108
|
-
- Qué se decide: [...]
|
|
109
|
-
- Qué se descarta: [...]
|
|
110
|
-
- Costo de revertir: [estimación]
|
|
111
|
-
|
|
112
|
-
### Alternativas articuladas
|
|
113
|
-
1. [alt-1]: plausible porque [...]; descartada porque [tradeoff concreto]
|
|
114
|
-
2. [alt-2]: ...
|
|
115
|
-
3. [alt-3]: ...
|
|
116
|
-
|
|
117
|
-
### Contraevidencia
|
|
118
|
-
- Escenario de falla 1 [prob: alta/media/baja]: [...]
|
|
119
|
-
- Escenario de falla 2 [prob: ...]: [...]
|
|
120
|
-
- Escenario de falla 3 [prob: ...]: [...]
|
|
121
|
-
- Caso histórico relevante: [...]
|
|
122
|
-
- Supuesto sin validar: [...]
|
|
123
|
-
|
|
124
|
-
### Red flags detectados
|
|
125
|
-
- [línea N: cita textual del argumento débil]
|
|
126
|
-
- [...]
|
|
127
|
-
- (o "Ninguno")
|
|
128
|
-
|
|
129
|
-
### Trigger de reversión
|
|
130
|
-
- Condición: [observable falsable]
|
|
131
|
-
- Fecha de reevaluación: [YYYY-MM-DD]
|
|
132
|
-
|
|
133
|
-
### Veredicto
|
|
134
|
-
- ROBUSTA — pasó los 5 pasos sin red flags y con trigger claro
|
|
135
|
-
- ACEPTABLE — pasó con 1-2 red flags documentados y trigger claro
|
|
136
|
-
- BAJO-EVIDENCIA — falla en pasos 2, 4 o 5; reabrir antes de comprometer
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
## Anti-patrones del skill
|
|
140
|
-
|
|
141
|
-
- **Auto-revisión**: el agente que tomó la decisión ejecuta el skill sobre sí mismo.
|
|
142
|
-
Pierde el efecto adversarial. Cargar el skill desde un agente distinto al
|
|
143
|
-
decisor (ej: `arquitecto-swl` decidió → `revisor-codigo-swl` ejecuta el skill
|
|
144
|
-
con foco en la decisión).
|
|
145
|
-
- **Trigger inverificable**: "cuando el sistema deje de escalar" no es trigger.
|
|
146
|
-
Debe ser una métrica observable con valor numérico o evento concreto.
|
|
147
|
-
- **Alternativas de paja**: las 3 alternativas no pueden ser opciones triviales
|
|
148
|
-
inferiores a propósito. Si las 3 son obviamente peores, el skill perdió su valor
|
|
149
|
-
— pedir 3 alternativas reales o aceptar que la decisión es bajo-evidencia.
|
|
150
|
-
- **Convertirlo en proceso burocrático**: aplicar doubt-driven a decisiones
|
|
151
|
-
reversibles es overhead. El paso 1 filtra esto explícitamente.
|
|
152
|
-
|
|
153
|
-
## Relación con otras capacidades del sistema
|
|
154
|
-
|
|
155
|
-
- `red-team-swl`: cubre adversarial review de **memoria del sistema** (perfil-usuario,
|
|
156
|
-
instintos, APRENDIZAJES). Doubt-driven cubre **decisiones técnicas**. NO duplicación.
|
|
157
|
-
- `arquitecto-swl`: produce ADRs. Doubt-driven se carga ANTES de aceptar el ADR.
|
|
158
|
-
- `revisor-codigo-swl`: revisa calidad de código ya escrito. Doubt-driven revisa
|
|
159
|
-
decisiones ANTES de escribir código.
|
|
160
|
-
- `Skill("verificar-trabajo")`: verificación goal-backward del resultado.
|
|
161
|
-
Doubt-driven es goal-backward del **diseño**, no del resultado.
|
|
162
|
-
|
|
163
|
-
## Origen
|
|
164
|
-
|
|
165
|
-
Patrón observado en `temp/agent-skills-main/skills/doubt-driven-development`
|
|
166
|
-
(2026-05-09). Adaptado al sistema swl-ses: en español, con trigger de
|
|
167
|
-
reversión obligatorio (alineado con `reglas/arquitectura.md` § ADRs en estado
|
|
168
|
-
Propuesto), y con relación explícita a `red-team-swl` para evitar duplicar
|
|
169
|
-
funciones que ya existen en el sistema.
|
|
170
|
-
|
|
171
|
-
Para ejemplos concretos de aplicación, ver [`recursos/EXAMPLES.md`](recursos/EXAMPLES.md).
|
|
1
|
+
---
|
|
2
|
+
name: doubt-driven-review
|
|
3
|
+
description: >
|
|
4
|
+
Adversarial peer review de decisiones técnicas antes de comprometerlas.
|
|
5
|
+
Cuestiona supuestos, fuerza la articulación de alternativas descartadas y
|
|
6
|
+
detecta confianza injustificada. Cargar antes de decidir arquitecturas
|
|
7
|
+
irreversibles, elegir un framework crítico, definir un contrato de API
|
|
8
|
+
público o aprobar un PR de alto impacto. NO cubre adversarial review de
|
|
9
|
+
memoria (eso lo hace red-team-swl) ni de seguridad de código (eso lo hace
|
|
10
|
+
revisor-seguridad-swl) — este skill se especializa en decisiones técnicas
|
|
11
|
+
con costo de cambio alto.
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Doubt-Driven Review
|
|
15
|
+
|
|
16
|
+
## Cuándo cargar
|
|
17
|
+
|
|
18
|
+
- Antes de aprobar un ADR que toma una decisión irreversible.
|
|
19
|
+
- Antes de comprometer un contrato público de API o un schema de BD que afecta integraciones externas.
|
|
20
|
+
- Antes de elegir un framework, librería o patrón con costo de migración alto.
|
|
21
|
+
- Antes de fusionar un PR cuyo blast radius incluye módulos críticos.
|
|
22
|
+
- Cuando el equipo o el agente exhibe **alta confianza con baja evidencia** sobre una decisión técnica.
|
|
23
|
+
|
|
24
|
+
## Cuándo NO cargar
|
|
25
|
+
|
|
26
|
+
- Para revisar código por calidad — eso es `revisor-codigo-swl` con `Skill("checklist-calidad")`.
|
|
27
|
+
- Para revisar seguridad — eso es `revisor-seguridad-swl` con `Skill("checklist-seguridad")`.
|
|
28
|
+
- Para validar memoria contra prompt injection o privacidad — eso es `red-team-swl`.
|
|
29
|
+
- Para discutir alcances con el usuario — eso es `Skill("brainstorming")` o `swl:discutir-fase`.
|
|
30
|
+
- Para fixes triviales o decisiones reversibles en menos de 10 minutos.
|
|
31
|
+
|
|
32
|
+
## Principio
|
|
33
|
+
|
|
34
|
+
> Una decisión cuya alternativa no se ha articulado, no es una decisión:
|
|
35
|
+
> es una preferencia. Toda decisión técnica con costo de cambio alto debe
|
|
36
|
+
> sobrevivir a un round adversarial antes de comprometerse.
|
|
37
|
+
|
|
38
|
+
El skill ejecuta un protocolo en 5 pasos. Cada paso produce evidencia en
|
|
39
|
+
texto. La salida del skill NO aprueba ni rechaza — produce un reporte que
|
|
40
|
+
el agente o usuario humano usa para decidir.
|
|
41
|
+
|
|
42
|
+
## Protocolo
|
|
43
|
+
|
|
44
|
+
### Paso 1 — Articular la decisión y su irreversibilidad
|
|
45
|
+
|
|
46
|
+
Pedir explícitamente:
|
|
47
|
+
|
|
48
|
+
- **Qué se decide**: 1-3 oraciones, sin jerga ambigua.
|
|
49
|
+
- **Qué se descarta**: la decisión opuesta concreta.
|
|
50
|
+
- **Costo de revertir**: estimación en turnos / archivos / horas si en 3 meses se concluye que fue incorrecta.
|
|
51
|
+
|
|
52
|
+
Si el costo de revertir es < 4 horas y < 5 archivos: la decisión NO es candidata
|
|
53
|
+
a doubt-driven review. Cerrar el skill y proceder.
|
|
54
|
+
|
|
55
|
+
### Paso 2 — Forzar 3 alternativas descartadas
|
|
56
|
+
|
|
57
|
+
El agente o usuario debe articular las 3 alternativas más fuertes que NO se eligieron, con:
|
|
58
|
+
|
|
59
|
+
- Por qué cada una es plausible (≥ 1 razón concreta).
|
|
60
|
+
- Qué tradeoff la hace inferior a la elegida (sin frase genérica como "menos flexible").
|
|
61
|
+
|
|
62
|
+
Si la persona/agente no puede articular 3 alternativas: **señal de decisión bajo-evidencia**.
|
|
63
|
+
Reportar: "Decisión propuesta sin alternativas articuladas. Riesgo de selección por inercia."
|
|
64
|
+
|
|
65
|
+
### Paso 3 — Buscar contraevidencia activamente
|
|
66
|
+
|
|
67
|
+
Para la decisión propuesta:
|
|
68
|
+
|
|
69
|
+
- Listar 3 escenarios donde la decisión **fallaría** o produciría costos no anticipados.
|
|
70
|
+
- Listar 1 caso histórico (dentro o fuera del proyecto) donde una decisión similar resultó incorrecta.
|
|
71
|
+
- Identificar 1 supuesto de la decisión que NO está validado con evidencia (corre el riesgo de ser falso).
|
|
72
|
+
|
|
73
|
+
Si los 3 escenarios de falla son improbables Y el supuesto está validado: la decisión gana robustez.
|
|
74
|
+
Si ≥ 1 escenario tiene probabilidad ≥ 30%: documentar el riesgo en el reporte.
|
|
75
|
+
|
|
76
|
+
### Paso 4 — Detectar confianza injustificada
|
|
77
|
+
|
|
78
|
+
Patrones a marcar como red flags:
|
|
79
|
+
|
|
80
|
+
- "Es la mejor práctica" sin citar fuente o caso.
|
|
81
|
+
- "Siempre se hace así" sin verificar el contexto del proyecto actual.
|
|
82
|
+
- "Es lo que recomienda <autoridad>" sin verificar que la recomendación aplica al stack/escala/dominio.
|
|
83
|
+
- "No hay otra opción razonable" cuando el paso 2 ya forzó 3 alternativas.
|
|
84
|
+
- Cita de un blog post o tweet como evidencia única.
|
|
85
|
+
- Argumentos de tipo "todo el mundo lo usa" sin métrica concreta.
|
|
86
|
+
|
|
87
|
+
Por cada red flag detectado: 1 línea en el reporte con cita textual del argumento.
|
|
88
|
+
|
|
89
|
+
### Paso 5 — Trigger de reversión
|
|
90
|
+
|
|
91
|
+
Toda decisión que pase doubt-driven review debe incluir:
|
|
92
|
+
|
|
93
|
+
- **Trigger de reversión**: condición observable que, de cumplirse, obliga a reabrir la decisión.
|
|
94
|
+
Ejemplos válidos: "p95 de latencia > 800ms en producción durante 7 días",
|
|
95
|
+
"≥3 reportes de bugs relacionados con la limitación X en 30 días", "vendor X
|
|
96
|
+
publica deprecation notice", "costo mensual de infra excede $Y".
|
|
97
|
+
- **Fecha de reevaluación automática**: 6-12 meses desde la fecha de decisión.
|
|
98
|
+
|
|
99
|
+
Si la decisión NO puede tener trigger observable: es una decisión **basada en preferencia**,
|
|
100
|
+
no en hipótesis falsable. Documentarla como tal en el reporte.
|
|
101
|
+
|
|
102
|
+
## Formato del reporte
|
|
103
|
+
|
|
104
|
+
```markdown
|
|
105
|
+
## Doubt-Driven Review — [decisión] — [fecha]
|
|
106
|
+
|
|
107
|
+
### Decisión articulada
|
|
108
|
+
- Qué se decide: [...]
|
|
109
|
+
- Qué se descarta: [...]
|
|
110
|
+
- Costo de revertir: [estimación]
|
|
111
|
+
|
|
112
|
+
### Alternativas articuladas
|
|
113
|
+
1. [alt-1]: plausible porque [...]; descartada porque [tradeoff concreto]
|
|
114
|
+
2. [alt-2]: ...
|
|
115
|
+
3. [alt-3]: ...
|
|
116
|
+
|
|
117
|
+
### Contraevidencia
|
|
118
|
+
- Escenario de falla 1 [prob: alta/media/baja]: [...]
|
|
119
|
+
- Escenario de falla 2 [prob: ...]: [...]
|
|
120
|
+
- Escenario de falla 3 [prob: ...]: [...]
|
|
121
|
+
- Caso histórico relevante: [...]
|
|
122
|
+
- Supuesto sin validar: [...]
|
|
123
|
+
|
|
124
|
+
### Red flags detectados
|
|
125
|
+
- [línea N: cita textual del argumento débil]
|
|
126
|
+
- [...]
|
|
127
|
+
- (o "Ninguno")
|
|
128
|
+
|
|
129
|
+
### Trigger de reversión
|
|
130
|
+
- Condición: [observable falsable]
|
|
131
|
+
- Fecha de reevaluación: [YYYY-MM-DD]
|
|
132
|
+
|
|
133
|
+
### Veredicto
|
|
134
|
+
- ROBUSTA — pasó los 5 pasos sin red flags y con trigger claro
|
|
135
|
+
- ACEPTABLE — pasó con 1-2 red flags documentados y trigger claro
|
|
136
|
+
- BAJO-EVIDENCIA — falla en pasos 2, 4 o 5; reabrir antes de comprometer
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Anti-patrones del skill
|
|
140
|
+
|
|
141
|
+
- **Auto-revisión**: el agente que tomó la decisión ejecuta el skill sobre sí mismo.
|
|
142
|
+
Pierde el efecto adversarial. Cargar el skill desde un agente distinto al
|
|
143
|
+
decisor (ej: `arquitecto-swl` decidió → `revisor-codigo-swl` ejecuta el skill
|
|
144
|
+
con foco en la decisión).
|
|
145
|
+
- **Trigger inverificable**: "cuando el sistema deje de escalar" no es trigger.
|
|
146
|
+
Debe ser una métrica observable con valor numérico o evento concreto.
|
|
147
|
+
- **Alternativas de paja**: las 3 alternativas no pueden ser opciones triviales
|
|
148
|
+
inferiores a propósito. Si las 3 son obviamente peores, el skill perdió su valor
|
|
149
|
+
— pedir 3 alternativas reales o aceptar que la decisión es bajo-evidencia.
|
|
150
|
+
- **Convertirlo en proceso burocrático**: aplicar doubt-driven a decisiones
|
|
151
|
+
reversibles es overhead. El paso 1 filtra esto explícitamente.
|
|
152
|
+
|
|
153
|
+
## Relación con otras capacidades del sistema
|
|
154
|
+
|
|
155
|
+
- `red-team-swl`: cubre adversarial review de **memoria del sistema** (perfil-usuario,
|
|
156
|
+
instintos, APRENDIZAJES). Doubt-driven cubre **decisiones técnicas**. NO duplicación.
|
|
157
|
+
- `arquitecto-swl`: produce ADRs. Doubt-driven se carga ANTES de aceptar el ADR.
|
|
158
|
+
- `revisor-codigo-swl`: revisa calidad de código ya escrito. Doubt-driven revisa
|
|
159
|
+
decisiones ANTES de escribir código.
|
|
160
|
+
- `Skill("verificar-trabajo")`: verificación goal-backward del resultado.
|
|
161
|
+
Doubt-driven es goal-backward del **diseño**, no del resultado.
|
|
162
|
+
|
|
163
|
+
## Origen
|
|
164
|
+
|
|
165
|
+
Patrón observado en `temp/agent-skills-main/skills/doubt-driven-development`
|
|
166
|
+
(2026-05-09). Adaptado al sistema swl-ses: en español, con trigger de
|
|
167
|
+
reversión obligatorio (alineado con `reglas/arquitectura.md` § ADRs en estado
|
|
168
|
+
Propuesto), y con relación explícita a `red-team-swl` para evitar duplicar
|
|
169
|
+
funciones que ya existen en el sistema.
|
|
170
|
+
|
|
171
|
+
Para ejemplos concretos de aplicación, ver [`recursos/EXAMPLES.md`](recursos/EXAMPLES.md).
|
|
@@ -1,130 +1,130 @@
|
|
|
1
|
-
# EXAMPLES — Doubt-Driven Review
|
|
2
|
-
|
|
3
|
-
Tres aplicaciones concretas del skill, dos exitosas y una que detectó decisión bajo-evidencia.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Ejemplo 1 — Decisión que pasó como ROBUSTA
|
|
8
|
-
|
|
9
|
-
**Contexto**: equipo evalúa migrar de PostgreSQL local a un servicio managed (RDS).
|
|
10
|
-
|
|
11
|
-
### ❌ Sin doubt-driven (hipotético)
|
|
12
|
-
|
|
13
|
-
> "RDS es la mejor opción porque AWS lo recomienda y todos lo usan."
|
|
14
|
-
|
|
15
|
-
Costo de revertir no estimado, alternativas no articuladas, cero contraevidencia.
|
|
16
|
-
Decisión se toma. 8 meses después se descubre que la latencia p95 desde el
|
|
17
|
-
único cluster on-premise legacy del cliente sube 40ms y rompe SLA.
|
|
18
|
-
|
|
19
|
-
### ✓ Con doubt-driven
|
|
20
|
-
|
|
21
|
-
**Paso 1 — Articular**:
|
|
22
|
-
- Qué se decide: migrar a RDS Aurora PostgreSQL en us-east-1.
|
|
23
|
-
- Qué se descarta: mantener PostgreSQL self-hosted en EC2.
|
|
24
|
-
- Costo de revertir: ~3 semanas (migrar datos de vuelta, reconfigurar backups, ajustar IAM).
|
|
25
|
-
|
|
26
|
-
**Paso 2 — 3 alternativas**:
|
|
27
|
-
1. **Self-hosted PostgreSQL en EC2**: control total de versión y extensiones; descartada
|
|
28
|
-
por costo operativo (on-call para BD).
|
|
29
|
-
2. **Cloud SQL en GCP**: feature parity con RDS; descartada porque el resto del
|
|
30
|
-
stack ya está en AWS y multi-cloud agrega complejidad de red.
|
|
31
|
-
3. **Supabase managed**: incluye Auth + Realtime gratis; descartada porque el
|
|
32
|
-
equipo no necesita Realtime y el lock-in en API propietario es alto.
|
|
33
|
-
|
|
34
|
-
**Paso 3 — Contraevidencia**:
|
|
35
|
-
- Falla 1 (prob: media): vendor lock-in si Aurora introduce features no portables → mitigación: limitar uso a SQL estándar.
|
|
36
|
-
- Falla 2 (prob: baja): outage regional de us-east-1 → mitigación: read replica en us-west-2.
|
|
37
|
-
- Falla 3 (prob: baja): costo de I/O excede presupuesto → mitigación: alertas de costo en CloudWatch.
|
|
38
|
-
- Caso histórico: cliente X migró a RDS, descubrió que `pg_cron` no estaba disponible y refactoró 3 jobs.
|
|
39
|
-
- Supuesto sin validar: "la latencia desde nuestros clientes on-premise será aceptable" — necesita pruebas reales.
|
|
40
|
-
|
|
41
|
-
**Paso 4 — Red flags**: ninguno. Cada argumento está respaldado con caso o métrica.
|
|
42
|
-
|
|
43
|
-
**Paso 5 — Trigger**:
|
|
44
|
-
- Condición: "p95 de latencia desde el cliente legacy excede 200ms durante 7 días consecutivos" o "costo mensual supera $1500".
|
|
45
|
-
- Fecha de reevaluación: 2026-11-15 (6 meses).
|
|
46
|
-
|
|
47
|
-
**Veredicto**: ROBUSTA con 1 supuesto pendiente de validar (latencia on-premise → ejecutar prueba antes de migrar).
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## Ejemplo 2 — Decisión BAJO-EVIDENCIA detectada
|
|
52
|
-
|
|
53
|
-
**Contexto**: agente propone "vamos a usar Kafka para todos los flujos asíncronos del sistema."
|
|
54
|
-
|
|
55
|
-
**Paso 1 — Articular**:
|
|
56
|
-
- Qué se decide: introducir Apache Kafka como broker único.
|
|
57
|
-
- Qué se descarta: Redis Streams + RabbitMQ ya existentes en el stack.
|
|
58
|
-
- Costo de revertir: alto — requiere rehacer 12 productores y 8 consumidores.
|
|
59
|
-
|
|
60
|
-
**Paso 2 — 3 alternativas**: el agente solo articula 1 (RabbitMQ) y dice "los demás
|
|
61
|
-
no son comparables." → **Red flag**: incapacidad de articular 3 alternativas reales.
|
|
62
|
-
|
|
63
|
-
**Paso 3 — Contraevidencia**: el agente dice "Kafka nunca falla en producción
|
|
64
|
-
porque tiene replication." → **Red flag**: argumento sin caso histórico.
|
|
65
|
-
|
|
66
|
-
**Paso 4 — Red flags**:
|
|
67
|
-
- "Es la mejor práctica para event-driven architectures" (sin fuente).
|
|
68
|
-
- "Todo el mundo lo usa a escala" (sin métrica del proyecto actual).
|
|
69
|
-
- "No hay otra opción razonable" (contradicho por el paso 2 incompleto).
|
|
70
|
-
|
|
71
|
-
**Paso 5 — Trigger**: "cuando lo necesitemos a más escala" — **Trigger inverificable**.
|
|
72
|
-
Reescribir como "throughput supera 10k msg/s sostenido durante 14 días."
|
|
73
|
-
|
|
74
|
-
**Veredicto**: BAJO-EVIDENCIA. Reabrir antes de comprometer.
|
|
75
|
-
|
|
76
|
-
Resultado real: la decisión se difiere; al revisar, se descubre que el throughput
|
|
77
|
-
actual del sistema es ~80 msg/s — Kafka habría sido sobre-ingeniería con costo
|
|
78
|
-
operativo de un cluster que el equipo no tiene capacidad de mantener.
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## Ejemplo 3 — Decisión ACEPTABLE con red flag documentado
|
|
83
|
-
|
|
84
|
-
**Contexto**: elegir framework frontend para un dashboard interno nuevo.
|
|
85
|
-
|
|
86
|
-
**Paso 1**:
|
|
87
|
-
- Qué se decide: Next.js App Router + Server Components.
|
|
88
|
-
- Qué se descarta: SPA con Vite + React Query.
|
|
89
|
-
- Costo de revertir: medio — 2 semanas de migración + reescritura de data fetching.
|
|
90
|
-
|
|
91
|
-
**Paso 2 — 3 alternativas**:
|
|
92
|
-
1. **SPA Vite + React Query**: más simple, menos magia; descartada porque queremos SSR para SEO interno y autenticación server-side.
|
|
93
|
-
2. **Remix**: nested routing nativo; descartada porque el equipo ya tiene experiencia con Next.js y la curva de Remix agrega 2 semanas.
|
|
94
|
-
3. **Astro con islands**: ideal si fuera contenido estático; descartada porque el dashboard es 80% interactivo.
|
|
95
|
-
|
|
96
|
-
**Paso 3 — Contraevidencia**:
|
|
97
|
-
- Falla 1 (prob: media): App Router introduce breaking changes y rompe el build (ya pasó con v13→v14).
|
|
98
|
-
- Falla 2 (prob: baja): RSC mental model genera bugs sutiles de hidratación.
|
|
99
|
-
- Falla 3 (prob: baja): vendor lock-in con Vercel — mitigación: deploy en Cloudflare Workers o self-hosted.
|
|
100
|
-
- Caso histórico: equipo Y adoptó App Router en beta y tardó 3 meses en estabilizar.
|
|
101
|
-
- Supuesto: "el equipo aprenderá RSC en 2 sprints" — moderadamente optimista.
|
|
102
|
-
|
|
103
|
-
**Paso 4 — Red flags**:
|
|
104
|
-
- "App Router es el futuro" (cita de blog post de Vercel — sesgo de fuente).
|
|
105
|
-
|
|
106
|
-
**Paso 5 — Trigger**:
|
|
107
|
-
- Condición: "≥3 bugs de hidratación reportados por usuarios en sprint 5" O "Vercel
|
|
108
|
-
anuncia deprecation de App Router".
|
|
109
|
-
- Fecha de reevaluación: 2026-08-15 (3 meses, periodo corto por uso de feature reciente).
|
|
110
|
-
|
|
111
|
-
**Veredicto**: ACEPTABLE — 1 red flag documentado (cita de Vercel como fuente única
|
|
112
|
-
para "futuro"). El equipo procede con awareness del sesgo.
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
|
|
116
|
-
## Patrón de aplicación
|
|
117
|
-
|
|
118
|
-
| Ejemplo | Costo revertir | Alternativas articuladas | Red flags | Trigger | Veredicto |
|
|
119
|
-
|---|---|---|---|---|---|
|
|
120
|
-
| 1 — RDS | 3 semanas | 3 sólidas | 0 | Métrico claro | ROBUSTA |
|
|
121
|
-
| 2 — Kafka | 12+8 servicios | 1 (incompleto) | 3 | Inverificable | BAJO-EVIDENCIA |
|
|
122
|
-
| 3 — Next.js | 2 semanas | 3 sólidas | 1 (sesgo de fuente) | Métrico + evento externo | ACEPTABLE |
|
|
123
|
-
|
|
124
|
-
El skill es útil cuando:
|
|
125
|
-
- El costo de revertir es alto Y
|
|
126
|
-
- Hay tendencia a saltar al "qué" sin articular el "por qué no las otras".
|
|
127
|
-
|
|
128
|
-
Es overhead cuando:
|
|
129
|
-
- La decisión es reversible en horas O
|
|
130
|
-
- La decisión ya fue auditada por un proceso equivalente (ADR formal con contexto + alternativas + consecuencias).
|
|
1
|
+
# EXAMPLES — Doubt-Driven Review
|
|
2
|
+
|
|
3
|
+
Tres aplicaciones concretas del skill, dos exitosas y una que detectó decisión bajo-evidencia.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Ejemplo 1 — Decisión que pasó como ROBUSTA
|
|
8
|
+
|
|
9
|
+
**Contexto**: equipo evalúa migrar de PostgreSQL local a un servicio managed (RDS).
|
|
10
|
+
|
|
11
|
+
### ❌ Sin doubt-driven (hipotético)
|
|
12
|
+
|
|
13
|
+
> "RDS es la mejor opción porque AWS lo recomienda y todos lo usan."
|
|
14
|
+
|
|
15
|
+
Costo de revertir no estimado, alternativas no articuladas, cero contraevidencia.
|
|
16
|
+
Decisión se toma. 8 meses después se descubre que la latencia p95 desde el
|
|
17
|
+
único cluster on-premise legacy del cliente sube 40ms y rompe SLA.
|
|
18
|
+
|
|
19
|
+
### ✓ Con doubt-driven
|
|
20
|
+
|
|
21
|
+
**Paso 1 — Articular**:
|
|
22
|
+
- Qué se decide: migrar a RDS Aurora PostgreSQL en us-east-1.
|
|
23
|
+
- Qué se descarta: mantener PostgreSQL self-hosted en EC2.
|
|
24
|
+
- Costo de revertir: ~3 semanas (migrar datos de vuelta, reconfigurar backups, ajustar IAM).
|
|
25
|
+
|
|
26
|
+
**Paso 2 — 3 alternativas**:
|
|
27
|
+
1. **Self-hosted PostgreSQL en EC2**: control total de versión y extensiones; descartada
|
|
28
|
+
por costo operativo (on-call para BD).
|
|
29
|
+
2. **Cloud SQL en GCP**: feature parity con RDS; descartada porque el resto del
|
|
30
|
+
stack ya está en AWS y multi-cloud agrega complejidad de red.
|
|
31
|
+
3. **Supabase managed**: incluye Auth + Realtime gratis; descartada porque el
|
|
32
|
+
equipo no necesita Realtime y el lock-in en API propietario es alto.
|
|
33
|
+
|
|
34
|
+
**Paso 3 — Contraevidencia**:
|
|
35
|
+
- Falla 1 (prob: media): vendor lock-in si Aurora introduce features no portables → mitigación: limitar uso a SQL estándar.
|
|
36
|
+
- Falla 2 (prob: baja): outage regional de us-east-1 → mitigación: read replica en us-west-2.
|
|
37
|
+
- Falla 3 (prob: baja): costo de I/O excede presupuesto → mitigación: alertas de costo en CloudWatch.
|
|
38
|
+
- Caso histórico: cliente X migró a RDS, descubrió que `pg_cron` no estaba disponible y refactoró 3 jobs.
|
|
39
|
+
- Supuesto sin validar: "la latencia desde nuestros clientes on-premise será aceptable" — necesita pruebas reales.
|
|
40
|
+
|
|
41
|
+
**Paso 4 — Red flags**: ninguno. Cada argumento está respaldado con caso o métrica.
|
|
42
|
+
|
|
43
|
+
**Paso 5 — Trigger**:
|
|
44
|
+
- Condición: "p95 de latencia desde el cliente legacy excede 200ms durante 7 días consecutivos" o "costo mensual supera $1500".
|
|
45
|
+
- Fecha de reevaluación: 2026-11-15 (6 meses).
|
|
46
|
+
|
|
47
|
+
**Veredicto**: ROBUSTA con 1 supuesto pendiente de validar (latencia on-premise → ejecutar prueba antes de migrar).
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Ejemplo 2 — Decisión BAJO-EVIDENCIA detectada
|
|
52
|
+
|
|
53
|
+
**Contexto**: agente propone "vamos a usar Kafka para todos los flujos asíncronos del sistema."
|
|
54
|
+
|
|
55
|
+
**Paso 1 — Articular**:
|
|
56
|
+
- Qué se decide: introducir Apache Kafka como broker único.
|
|
57
|
+
- Qué se descarta: Redis Streams + RabbitMQ ya existentes en el stack.
|
|
58
|
+
- Costo de revertir: alto — requiere rehacer 12 productores y 8 consumidores.
|
|
59
|
+
|
|
60
|
+
**Paso 2 — 3 alternativas**: el agente solo articula 1 (RabbitMQ) y dice "los demás
|
|
61
|
+
no son comparables." → **Red flag**: incapacidad de articular 3 alternativas reales.
|
|
62
|
+
|
|
63
|
+
**Paso 3 — Contraevidencia**: el agente dice "Kafka nunca falla en producción
|
|
64
|
+
porque tiene replication." → **Red flag**: argumento sin caso histórico.
|
|
65
|
+
|
|
66
|
+
**Paso 4 — Red flags**:
|
|
67
|
+
- "Es la mejor práctica para event-driven architectures" (sin fuente).
|
|
68
|
+
- "Todo el mundo lo usa a escala" (sin métrica del proyecto actual).
|
|
69
|
+
- "No hay otra opción razonable" (contradicho por el paso 2 incompleto).
|
|
70
|
+
|
|
71
|
+
**Paso 5 — Trigger**: "cuando lo necesitemos a más escala" — **Trigger inverificable**.
|
|
72
|
+
Reescribir como "throughput supera 10k msg/s sostenido durante 14 días."
|
|
73
|
+
|
|
74
|
+
**Veredicto**: BAJO-EVIDENCIA. Reabrir antes de comprometer.
|
|
75
|
+
|
|
76
|
+
Resultado real: la decisión se difiere; al revisar, se descubre que el throughput
|
|
77
|
+
actual del sistema es ~80 msg/s — Kafka habría sido sobre-ingeniería con costo
|
|
78
|
+
operativo de un cluster que el equipo no tiene capacidad de mantener.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Ejemplo 3 — Decisión ACEPTABLE con red flag documentado
|
|
83
|
+
|
|
84
|
+
**Contexto**: elegir framework frontend para un dashboard interno nuevo.
|
|
85
|
+
|
|
86
|
+
**Paso 1**:
|
|
87
|
+
- Qué se decide: Next.js App Router + Server Components.
|
|
88
|
+
- Qué se descarta: SPA con Vite + React Query.
|
|
89
|
+
- Costo de revertir: medio — 2 semanas de migración + reescritura de data fetching.
|
|
90
|
+
|
|
91
|
+
**Paso 2 — 3 alternativas**:
|
|
92
|
+
1. **SPA Vite + React Query**: más simple, menos magia; descartada porque queremos SSR para SEO interno y autenticación server-side.
|
|
93
|
+
2. **Remix**: nested routing nativo; descartada porque el equipo ya tiene experiencia con Next.js y la curva de Remix agrega 2 semanas.
|
|
94
|
+
3. **Astro con islands**: ideal si fuera contenido estático; descartada porque el dashboard es 80% interactivo.
|
|
95
|
+
|
|
96
|
+
**Paso 3 — Contraevidencia**:
|
|
97
|
+
- Falla 1 (prob: media): App Router introduce breaking changes y rompe el build (ya pasó con v13→v14).
|
|
98
|
+
- Falla 2 (prob: baja): RSC mental model genera bugs sutiles de hidratación.
|
|
99
|
+
- Falla 3 (prob: baja): vendor lock-in con Vercel — mitigación: deploy en Cloudflare Workers o self-hosted.
|
|
100
|
+
- Caso histórico: equipo Y adoptó App Router en beta y tardó 3 meses en estabilizar.
|
|
101
|
+
- Supuesto: "el equipo aprenderá RSC en 2 sprints" — moderadamente optimista.
|
|
102
|
+
|
|
103
|
+
**Paso 4 — Red flags**:
|
|
104
|
+
- "App Router es el futuro" (cita de blog post de Vercel — sesgo de fuente).
|
|
105
|
+
|
|
106
|
+
**Paso 5 — Trigger**:
|
|
107
|
+
- Condición: "≥3 bugs de hidratación reportados por usuarios en sprint 5" O "Vercel
|
|
108
|
+
anuncia deprecation de App Router".
|
|
109
|
+
- Fecha de reevaluación: 2026-08-15 (3 meses, periodo corto por uso de feature reciente).
|
|
110
|
+
|
|
111
|
+
**Veredicto**: ACEPTABLE — 1 red flag documentado (cita de Vercel como fuente única
|
|
112
|
+
para "futuro"). El equipo procede con awareness del sesgo.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Patrón de aplicación
|
|
117
|
+
|
|
118
|
+
| Ejemplo | Costo revertir | Alternativas articuladas | Red flags | Trigger | Veredicto |
|
|
119
|
+
|---|---|---|---|---|---|
|
|
120
|
+
| 1 — RDS | 3 semanas | 3 sólidas | 0 | Métrico claro | ROBUSTA |
|
|
121
|
+
| 2 — Kafka | 12+8 servicios | 1 (incompleto) | 3 | Inverificable | BAJO-EVIDENCIA |
|
|
122
|
+
| 3 — Next.js | 2 semanas | 3 sólidas | 1 (sesgo de fuente) | Métrico + evento externo | ACEPTABLE |
|
|
123
|
+
|
|
124
|
+
El skill es útil cuando:
|
|
125
|
+
- El costo de revertir es alto Y
|
|
126
|
+
- Hay tendencia a saltar al "qué" sin articular el "por qué no las otras".
|
|
127
|
+
|
|
128
|
+
Es overhead cuando:
|
|
129
|
+
- La decisión es reversible en horas O
|
|
130
|
+
- La decisión ya fue auditada por un proceso equivalente (ADR formal con contexto + alternativas + consecuencias).
|