@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.
Files changed (325) hide show
  1. package/CLAUDE.md +48 -7
  2. package/README.md +3 -3
  3. package/agentes/accesibilidad-wcag-swl.md +690 -690
  4. package/agentes/arquitecto-swl.md +267 -267
  5. package/agentes/auto-evolucion-swl.md +908 -908
  6. package/agentes/backend-api-swl.md +472 -472
  7. package/agentes/backend-csharp-swl.md +420 -420
  8. package/agentes/backend-go-swl.md +390 -390
  9. package/agentes/backend-java-swl.md +281 -281
  10. package/agentes/backend-node-swl.md +479 -479
  11. package/agentes/backend-python-swl.md +605 -605
  12. package/agentes/backend-rust-swl.md +364 -364
  13. package/agentes/backend-workers-swl.md +482 -482
  14. package/agentes/cloud-infra-swl.md +509 -509
  15. package/agentes/consolidador-swl.md +541 -541
  16. package/agentes/datos-swl.md +605 -605
  17. package/agentes/depurador-swl.md +352 -352
  18. package/agentes/devops-ci-swl.md +400 -400
  19. package/agentes/disenador-ui-swl.md +569 -569
  20. package/agentes/documentador-swl.md +345 -345
  21. package/agentes/frontend-angular-swl.md +621 -621
  22. package/agentes/frontend-css-swl.md +716 -716
  23. package/agentes/frontend-react-swl.md +692 -692
  24. package/agentes/frontend-swl.md +496 -496
  25. package/agentes/frontend-tailwind-swl.md +826 -826
  26. package/agentes/gh-fix-ci-swl.md +2 -2
  27. package/agentes/implementador-swl.md +328 -328
  28. package/agentes/investigador-swl.md +432 -432
  29. package/agentes/investigador-ux-swl.md +505 -505
  30. package/agentes/llm-apps-swl.md +278 -278
  31. package/agentes/migrador-swl.md +442 -442
  32. package/agentes/mobile-android-swl.md +511 -511
  33. package/agentes/mobile-cross-swl.md +541 -541
  34. package/agentes/mobile-ios-swl.md +502 -502
  35. package/agentes/mobile-testing-swl.md +302 -302
  36. package/agentes/nemesis-auditor-swl.md +285 -285
  37. package/agentes/notificador-swl.md +918 -918
  38. package/agentes/observabilidad-swl.md +438 -438
  39. package/agentes/orquestador-swl.md +1026 -1026
  40. package/agentes/pagos-swl.md +310 -310
  41. package/agentes/perfilador-usuario-swl.md +321 -321
  42. package/agentes/planificador-swl.md +399 -399
  43. package/agentes/producto-prd-swl.md +589 -589
  44. package/agentes/red-team-swl.md +1 -1
  45. package/agentes/release-manager-swl.md +590 -590
  46. package/agentes/rendimiento-swl.md +713 -713
  47. package/agentes/resolutor-build-swl.md +245 -245
  48. package/agentes/revisor-angular-swl.md +278 -278
  49. package/agentes/revisor-codigo-swl.md +505 -505
  50. package/agentes/revisor-csharp-swl.md +264 -264
  51. package/agentes/revisor-go-swl.md +259 -259
  52. package/agentes/revisor-java-swl.md +257 -257
  53. package/agentes/revisor-kotlin-swl.md +273 -273
  54. package/agentes/revisor-nextjs-swl.md +281 -281
  55. package/agentes/revisor-php-swl.md +271 -271
  56. package/agentes/revisor-react-swl.md +278 -278
  57. package/agentes/revisor-rust-swl.md +346 -346
  58. package/agentes/revisor-seguridad-swl.md +399 -399
  59. package/agentes/revisor-swift-swl.md +268 -268
  60. package/agentes/revisor-typescript-swl.md +346 -346
  61. package/agentes/sre-swl.md +291 -291
  62. package/agentes/tdd-qa-swl.md +393 -393
  63. package/comandos/swl/aprobar-plan.md +146 -141
  64. package/comandos/swl/briefing.md +119 -119
  65. package/comandos/swl/contribuir.md +233 -233
  66. package/comandos/swl/predecir.md +139 -139
  67. package/comandos/swl/release.md +30 -8
  68. package/comandos/swl/sesiones.md +1 -1
  69. package/comandos/swl/status.md +343 -333
  70. package/gateway/agent-executor.js +1 -1
  71. package/gateway/lib/event-channel.js +191 -191
  72. package/habilidades/agent-deep-links/SKILL.md +148 -148
  73. package/habilidades/agentes-como-servicio/SKILL.md +2 -2
  74. package/habilidades/angular-moderno/SKILL.md +20 -1
  75. package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -276
  76. package/habilidades/backend-async-postgres-testing/SKILL.md +215 -215
  77. package/habilidades/backend-error-design/SKILL.md +221 -221
  78. package/habilidades/backend-production-resilience/SKILL.md +288 -288
  79. package/habilidades/benchmark-memoria/SKILL.md +186 -186
  80. package/habilidades/calidad-anti-patrones-universales/SKILL.md +368 -368
  81. package/habilidades/calidad-contract-testing/SKILL.md +165 -165
  82. package/habilidades/calidad-mutation-testing/SKILL.md +170 -170
  83. package/habilidades/changelog-generator/scripts/parse-commits.js +367 -367
  84. package/habilidades/checklist-seguridad/recursos/stride-cobertura.md +60 -60
  85. package/habilidades/contenedores-docker/SKILL.md +3 -1
  86. package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
  87. package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
  88. package/habilidades/drift-detection/SKILL.md +179 -179
  89. package/habilidades/ejecutar-fase/SKILL.md +564 -541
  90. package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
  91. package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +1 -1
  92. package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +57 -57
  93. package/habilidades/eval-framework/SKILL.md +212 -212
  94. package/habilidades/extractor-de-aprendizajes/SKILL.md +3 -3
  95. package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -108
  96. package/habilidades/harness-claude-code/recursos/disciplina-harness-regla.md +252 -252
  97. package/habilidades/legacy-code-rescue/SKILL.md +267 -267
  98. package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
  99. package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
  100. package/habilidades/perfil-usuario/SKILL.md +200 -200
  101. package/habilidades/planear-fase/SKILL.md +15 -1
  102. package/habilidades/prevencion-sobreingenieria/recursos/EXAMPLES.md +580 -580
  103. package/habilidades/proceso-ddia-fundamentos/SKILL.md +255 -255
  104. package/habilidades/proceso-ddia-streaming/SKILL.md +231 -231
  105. package/habilidades/proceso-debate-adversarial/SKILL.md +191 -164
  106. package/habilidades/proceso-debate-adversarial/recursos/personas.md +105 -105
  107. package/habilidades/proceso-discovery-machote/SKILL.md +157 -157
  108. package/habilidades/proceso-dynamic-workflows/SKILL.md +138 -138
  109. package/habilidades/proceso-dynamic-workflows/recursos/template-adversarial-verify.js +65 -65
  110. package/habilidades/proceso-dynamic-workflows/recursos/template-triage.js +65 -65
  111. package/habilidades/proceso-intent-engineering/SKILL.md +269 -269
  112. package/habilidades/proceso-modular-split/SKILL.md +256 -256
  113. package/habilidades/prompt-engineering/recursos/patrones-avanzados.md +2 -2
  114. package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -147
  115. package/habilidades/structured-outputs/SKILL.md +2 -2
  116. package/habilidades/swl-claudemd/recursos/contrato-aprender.md +83 -83
  117. package/habilidades/swl-claudemd/recursos/duplicacion-reglas-globales.md +85 -85
  118. package/habilidades/swl-claudemd/recursos/plantillas-init.md +94 -94
  119. package/habilidades/swl-dashboard/SKILL.md +2 -2
  120. package/habilidades/tdd-workflow/SKILL.md +33 -1
  121. package/habilidades/tdd-workflow/recursos/gherkin-bdd.md +111 -111
  122. package/habilidades/validacion-ci-sistema/recursos/validadores-completos.md +1 -1
  123. package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +1 -1
  124. package/hooks/captura-acciones-post.js +151 -0
  125. package/hooks/captura-acciones-session.js +155 -0
  126. package/hooks/ciclo-evolucion-subagente.js +26 -26
  127. package/hooks/ciclo-evolucion.js +26 -26
  128. package/hooks/claudemd-bloat-detector.js +161 -161
  129. package/hooks/claudemd-duplicacion-detector.js +170 -170
  130. package/hooks/contexto-iteracion.js +144 -144
  131. package/hooks/guardrail-modelo.js +1 -1
  132. package/hooks/lib/agent-routing.js +107 -107
  133. package/hooks/lib/auto-consolidator.js +335 -335
  134. package/hooks/lib/autonomia.js +208 -208
  135. package/hooks/lib/briefing.js +512 -474
  136. package/hooks/lib/captura-acciones.js +392 -0
  137. package/hooks/lib/ciclo-evolucion.js +47 -47
  138. package/hooks/lib/deep-links.js +185 -185
  139. package/hooks/lib/error-classifier.js +308 -308
  140. package/hooks/lib/etapa-auto-evolucion.js +701 -701
  141. package/hooks/lib/etapa-metricas.js +388 -388
  142. package/hooks/lib/etapa-perfil-usuario.js +376 -376
  143. package/hooks/lib/loop-telemetry.js +321 -321
  144. package/hooks/lib/merkle-audit.js +96 -96
  145. package/hooks/lib/model-router.js +2 -2
  146. package/hooks/lib/propose-step.js +358 -358
  147. package/hooks/lib/provenance-tracker.js +191 -191
  148. package/hooks/lib/rate-limit-tracker.js +253 -253
  149. package/hooks/lib/resource-quota.js +122 -122
  150. package/hooks/lib/retry-jitter.js +165 -165
  151. package/hooks/lib/security-net.js +201 -201
  152. package/hooks/lib/skill-auditor.js +588 -588
  153. package/hooks/lib/sync-status.js +228 -228
  154. package/hooks/lib/taint-tracker.js +107 -107
  155. package/hooks/lib/text-similarity.js +241 -241
  156. package/hooks/lib/token-estimator.js +1 -0
  157. package/hooks/lib/toon-compressor.js +245 -245
  158. package/hooks/lib/usage-model.js +1 -1
  159. package/hooks/linea-estado.js +2 -0
  160. package/hooks/registro-turnos.js +209 -209
  161. package/hooks/session-briefing.js +98 -98
  162. package/hooks/spec-gate.js +211 -211
  163. package/hooks/sugerir-regenerar-inventario.js +170 -170
  164. package/hooks/tdd-gate.js +241 -241
  165. package/hooks/telemetria-skill-routing.js +100 -100
  166. package/hooks/validar-formato-post-subagente.js +140 -140
  167. package/hooks/validar-intent-spec.js +242 -242
  168. package/hooks/validar-memoria-hook.js +218 -218
  169. package/hooks/validar-planning-paths.js +134 -134
  170. package/instintos/autonomia.yaml +27 -27
  171. package/instintos/prompt-appendices.yaml +57 -57
  172. package/llms.txt +2 -2
  173. package/manifiestos/agent-output-schemas.json +57 -57
  174. package/manifiestos/canonical-hashes.json +2291 -1637
  175. package/manifiestos/hooks-config.json +18 -0
  176. package/manifiestos/modulos.json +4 -0
  177. package/manifiestos/planning-paths.json +44 -44
  178. package/manifiestos/skills-lock.json +1282 -1282
  179. package/package.json +2 -2
  180. package/plantillas/auditor-veto-template.md +105 -105
  181. package/plantillas/github-workflows/README.md +47 -47
  182. package/plantillas/github-workflows/release-please.yml +44 -44
  183. package/plantillas/github-workflows/swl-ci.yml +107 -107
  184. package/plantillas/github-workflows/swl-security.yml +51 -51
  185. package/plugin.json +2 -2
  186. package/reglas/accesibilidad.md +10 -10
  187. package/reglas/analisis-previo-tareas-grandes.md +172 -172
  188. package/reglas/api-diseno.md +9 -9
  189. package/reglas/arreglar-al-detectar.md +240 -240
  190. package/reglas/auditorias-documentales-estructurales.md +7 -7
  191. package/reglas/cloud-infra.md +8 -8
  192. package/reglas/consultar-vault-primero.md +195 -195
  193. package/reglas/debatir-antes-de-aceptar.md +158 -158
  194. package/reglas/fragmentos-compartidos.md +183 -183
  195. package/reglas/hooks.md +6 -6
  196. package/reglas/intent-engineering.md +218 -218
  197. package/reglas/markitdown.md +8 -8
  198. package/reglas/memoria-consolidada.md +41 -0
  199. package/reglas/monitor-ci.md +309 -309
  200. package/reglas/patrones.md +6 -6
  201. package/reglas/seguridad-agentes.md +66 -0
  202. package/reglas/sesiones-paralelas.md +180 -180
  203. package/reglas/sin-duplicacion-reglas-globales.md +182 -182
  204. package/reglas/skills-estandar.md +6 -6
  205. package/reglas/testing.md +7 -7
  206. package/reglas/tests-cleanup.md +224 -224
  207. package/reglas/usar-code-review-graph.md +155 -155
  208. package/reglas/usar-context7.md +226 -226
  209. package/reglas/verificar-citas-normativas.md +548 -548
  210. package/schemas/agent-frontmatter.schema.json +3 -3
  211. package/schemas/agent-message.schema.json +73 -73
  212. package/schemas/agent-output-implementacion.schema.json +114 -114
  213. package/schemas/agent-output-planificacion.schema.json +150 -150
  214. package/schemas/agent-output-review.schema.json +98 -98
  215. package/schemas/diary-entry.schema.json +112 -112
  216. package/schemas/hook-profiles.schema.json +54 -54
  217. package/schemas/hooks-config.schema.json +89 -89
  218. package/schemas/instinct.schema.json +161 -152
  219. package/schemas/modulos.schema.json +38 -38
  220. package/schemas/perfiles.schema.json +36 -36
  221. package/schemas/plugin.schema.json +77 -77
  222. package/schemas/skill-evals.schema.json +119 -119
  223. package/schemas/skill-frontmatter.schema.json +245 -245
  224. package/scripts/audit-tools/audit-history.js +330 -330
  225. package/scripts/audit-tools/bundle-tracker.js +290 -290
  226. package/scripts/audit-tools/canary-monitor.js +352 -352
  227. package/scripts/audit-tools/code-profiler.js +605 -605
  228. package/scripts/audit-tools/dep-doctor.js +320 -320
  229. package/scripts/audit-tools/env-validator.js +206 -206
  230. package/scripts/audit-tools/lib/fs-walk.js +48 -48
  231. package/scripts/audit-tools/lib/output.js +23 -23
  232. package/scripts/audit-tools/migration-checker.js +392 -392
  233. package/scripts/audit-tools/pentest-scanner.js +1436 -1436
  234. package/scripts/benchmark-memoria.js +167 -167
  235. package/scripts/bootstrap-instintos.js +25 -7
  236. package/scripts/cli/aprobar-plan.js +73 -73
  237. package/scripts/cli/briefing.js +23 -23
  238. package/scripts/cli/ciclo-evolucion.js +26 -26
  239. package/scripts/cli/configurar-ci.js +40 -40
  240. package/scripts/cli/derivar-feature-list.js +25 -25
  241. package/scripts/cli/detectar-host.js +27 -27
  242. package/scripts/cli/diary-entry.js +69 -69
  243. package/scripts/cli/execution-state.js +18 -18
  244. package/scripts/cli/gateway-notify.js +41 -41
  245. package/scripts/cli/liberar-fase.js +42 -42
  246. package/scripts/cli/loop-telemetry.js +125 -125
  247. package/scripts/cli/mark-evolved.js +56 -56
  248. package/scripts/cli/metricas-dora.js +26 -26
  249. package/scripts/cli/near-duplicate.js +55 -55
  250. package/scripts/cli/notificaciones.js +123 -123
  251. package/scripts/cli/propose-step.js +29 -29
  252. package/scripts/cli/schedule-parse.js +19 -19
  253. package/scripts/cli/sugerir-modelo.js +20 -20
  254. package/scripts/cli/verificar-plan.js +36 -36
  255. package/scripts/cli/verificar-trazabilidad.js +35 -35
  256. package/scripts/configurar-branch-protection.js +418 -418
  257. package/scripts/detectar-aprendizajes-duplicados.js +151 -151
  258. package/scripts/field-report.js +199 -199
  259. package/scripts/generar-checklists-consolidados.js +273 -273
  260. package/scripts/generar-matriz-lenguajes.js +271 -271
  261. package/scripts/lib/artefactos-python.js +43 -43
  262. package/scripts/lib/auditar-invocaciones-comandos.js +104 -104
  263. package/scripts/lib/benchmark-metrics.js +160 -160
  264. package/scripts/lib/budget-enforcer.js +252 -252
  265. package/scripts/lib/ci-reader.js +193 -193
  266. package/scripts/lib/claude-sessions.js +1 -0
  267. package/scripts/lib/configurar-ci.js +380 -380
  268. package/scripts/lib/contadores-inventario.js +217 -217
  269. package/scripts/lib/detectar-host-swl.js +175 -175
  270. package/scripts/lib/detectar-stack-detallado.js +307 -307
  271. package/scripts/lib/detector-autoduplicacion-intra-archivo.js +234 -234
  272. package/scripts/lib/detector-reglas-duplicadas.js +220 -220
  273. package/scripts/lib/diary-entry.js +234 -234
  274. package/scripts/lib/eval-metrics-store.js +218 -218
  275. package/scripts/lib/eval-quality.js +171 -171
  276. package/scripts/lib/eval-schemas.js +144 -144
  277. package/scripts/lib/eval-self-correct.js +106 -106
  278. package/scripts/lib/eval-validator.js +185 -185
  279. package/scripts/lib/evidencia-release.js +322 -322
  280. package/scripts/lib/expandir-targets.js +71 -71
  281. package/scripts/lib/gate-hooks-requires.js +249 -249
  282. package/scripts/lib/gate-licencias.js +212 -212
  283. package/scripts/lib/git-metricas.js +257 -257
  284. package/scripts/lib/gitignore-manifest.js +44 -11
  285. package/scripts/lib/jaccard-similarity.js +98 -98
  286. package/scripts/lib/longmemeval-runner.js +125 -125
  287. package/scripts/lib/metricas-dora.js +204 -204
  288. package/scripts/lib/npm-version.js +261 -261
  289. package/scripts/lib/paquetes-conocidos.js +50 -50
  290. package/scripts/lib/plan-lock.js +275 -275
  291. package/scripts/lib/pr-analyzer.js +399 -399
  292. package/scripts/lib/prompt-builder.js +264 -264
  293. package/scripts/lib/reglas-globales-conocidas.json +180 -180
  294. package/scripts/lib/resolver-plan-fase.js +37 -37
  295. package/scripts/lib/rrf-fusion.js +175 -175
  296. package/scripts/lib/schema-version.js +164 -164
  297. package/scripts/lib/scoring-instintos.js +277 -277
  298. package/scripts/lib/semantic-search.js +252 -252
  299. package/scripts/lib/skill-metrics.js +41 -1
  300. package/scripts/lib/toml-merge.js +204 -204
  301. package/scripts/lib/tool-cost-analyzer.js +1 -0
  302. package/scripts/limpiar-artefactos-python.js +131 -131
  303. package/scripts/mcp-server/auth.js +105 -105
  304. package/scripts/mcp-server/cache.js +106 -106
  305. package/scripts/migrar-csv-a-array.js +168 -168
  306. package/scripts/migrar-fase-dominio.js +200 -200
  307. package/scripts/publicar.js +497 -497
  308. package/scripts/run-eval.js +141 -141
  309. package/scripts/tui/componentes/selector-multi.js +189 -189
  310. package/scripts/tui/componentes/selector-unico.js +158 -158
  311. package/scripts/tui/ejecutores.js +375 -375
  312. package/scripts/tui/index.js +162 -162
  313. package/scripts/tui/lib/colores.js +129 -129
  314. package/scripts/tui/lib/render.js +264 -264
  315. package/scripts/tui/lib/teclas.js +113 -113
  316. package/scripts/tui/pantallas/inspect.js +173 -173
  317. package/scripts/tui/pantallas/install-wizard.js +334 -334
  318. package/scripts/tui/pantallas/menu-principal.js +52 -52
  319. package/scripts/tui/pantallas/progreso.js +274 -274
  320. package/scripts/tui/pantallas/resumen.js +132 -132
  321. package/scripts/tui/pantallas/uninstall-wizard.js +208 -208
  322. package/scripts/tui/pantallas/update-wizard.js +232 -232
  323. package/scripts/tui/pantallas/welcome.js +187 -187
  324. package/scripts/validar-userland-vacio.js +110 -110
  325. package/scripts/verificar-trazabilidad.js +329 -298
@@ -1,255 +1,255 @@
1
- ---
2
- name: proceso-ddia-fundamentos
3
- description: >
4
- Conceptos fundamentales del libro "Designing Data-Intensive Applications" de
5
- Martin Kleppmann aplicables a sistemas no-distribuidos (como SWL): Cap 1
6
- Reliability/Scalability/Maintainability como framework de evaluación, Cap 4
7
- Schema Evolution con backward/forward compatibility, Cap 12 End-to-End
8
- Argument y Trust-but-Verify. Cargar al diseñar manifiestos versionados,
9
- evaluar arquitectura de un módulo, decidir dónde validar correctitud.
10
- when_to_use: >
11
- Usar cuando el usuario menciona schema versioning, backward/forward compat,
12
- end-to-end verification, trust but verify, reliability scalability
13
- maintainability, RSM framework, Operability Simplicity Evolvability,
14
- schema-evolution, evaluar arquitectura, decidir dónde validar.
15
- ---
16
-
17
- # DDIA Fundamentos — RSM, Schema Evolution, End-to-End
18
-
19
- Adaptado de Martin Kleppmann, *"Designing Data-Intensive Applications"*
20
- (O'Reilly, 2017). Skill cubre los tres ejes del libro que aplican a SWL:
21
-
22
- - **Capítulo 1** — Reliability, Scalability, Maintainability como framework.
23
- - **Capítulo 4** — Schema Evolution (back/forward compatibility).
24
- - **Capítulo 12** — End-to-End Argument + Trust-but-Verify.
25
-
26
- Los demás capítulos del libro (2-3 data models / storage, 5-10 distributed
27
- systems) tratan dominios que SWL no es (no es BD, no es sistema distribuido).
28
- Se descartan por filtro de dominio (regla `arquitectura.md`).
29
-
30
- ## Cuándo cargar
31
-
32
- - Diseñar un schema nuevo (manifest, frontmatter, JSON Schema) que
33
- evolucionará en el tiempo.
34
- - Auditar un módulo SWL para evaluar Reliability/Scalability/Maintainability.
35
- - Decidir dónde poner una validación: en cada capa o solo end-to-end.
36
- - Resolver una duda sobre "¿esto se rompe si actualizo el sistema?" — es
37
- pregunta de schema compatibility.
38
-
39
- ## Cuándo NO cargar
40
-
41
- - Discusiones sobre replication, partitioning, consenso (Paxos/Raft) — esos
42
- capítulos DDIA no aplican a SWL.
43
- - Streaming/event sourcing avanzado — cargar `Skill("proceso-ddia-streaming")`.
44
- - Optimización puntual de query SQL — cargar `Skill("performance-baseline")`.
45
-
46
- ---
47
-
48
- ## Parte 1 — Reliability, Scalability, Maintainability (RSM)
49
-
50
- Cita textual del libro (DDIA p.18, línea 1411-1453):
51
-
52
- > "It is well known that the majority of the cost of software is not in its
53
- > initial development, but in its ongoing maintenance — fixing bugs, keeping
54
- > its systems operational, investigating failures, adapting it to new
55
- > platforms, modifying it for new use cases, repaying technical debt, and
56
- > adding new features."
57
-
58
- ### Las 3 dimensiones del RSM
59
-
60
- **Reliability** — el sistema sigue funcionando correctamente bajo:
61
- - Hardware faults
62
- - Software errors
63
- - Human errors
64
-
65
- Tipos de respuesta:
66
- - **Fault-tolerant**: el sistema absorbe la falla sin propagarla.
67
- - **Resilient**: degrada con gracia, no en cascada.
68
-
69
- **Aplicación a SWL**: hooks bloqueantes (`calidad-pre-commit`,
70
- `escaneo-secretos`) son fault-tolerance. Las escrituras atómicas
71
- (`hooks/lib/atomic-write.js`) son resilience contra crashes durante write.
72
-
73
- **Scalability** — cómo cambia el rendimiento cuando crece la carga:
74
- - Describir **carga** (parámetros: throughput, concurrent users, etc.)
75
- - Describir **rendimiento** (latencia: p50, p95, p99)
76
-
77
- **Aplicación a SWL**: las métricas `Skill("performance-baseline")` siguen
78
- este modelo. Carga = sesiones concurrentes, archivos por proyecto, agentes
79
- en cadena. Rendimiento = latencia de hooks, tiempo de respuesta de
80
- validadores.
81
-
82
- **Maintainability** — tres principios de diseño del libro:
83
-
84
- > "Operability: Make it easy for operations teams to keep the system running
85
- > smoothly.
86
- > Simplicity: Make it easy for new engineers to understand the system, by
87
- > removing as much complexity as possible from the system. (Note this is
88
- > not the same as simplicity of the user interface.)
89
- > Evolvability: Make it easy for engineers to make changes to the system in
90
- > the future, adapting it for unanticipated use cases as requirements
91
- > change. Also known as extensibility, modifiability, or plasticity."
92
- > (DDIA p.18-19, líneas 1435-1449)
93
-
94
- **Aplicación a SWL**:
95
-
96
- | Principio DDIA | Implementación SWL |
97
- |---|---|
98
- | Operability | `/swl:status salud`, `/swl:status dashboard`, `/swl:doctor`, runbooks |
99
- | Simplicity | Skills ≤300 líneas, módulos profundos (Ousterhout), zero-deps en `hooks/lib/` |
100
- | Evolvability | ADRs versionados, schemas opcionales aditivos, fragments compartidos |
101
-
102
- ### Cómo usar RSM como rúbrica de evaluación
103
-
104
- Antes de declarar un módulo "listo", pregúntate:
105
-
106
- 1. **Reliability**: ¿qué pasa si una entrada inesperada llega? ¿Si un hook
107
- externo falla? ¿Si el filesystem se llena?
108
- 2. **Scalability**: ¿el módulo escala con el tamaño del proyecto del
109
- usuario? Si tiene 1000 archivos vs 10, ¿degrada linealmente o se
110
- cuadratiza?
111
- 3. **Maintainability** (los 3 sub-principios):
112
- - ¿Un operario nuevo puede operarlo sin leer todo el código?
113
- - ¿Un ingeniero nuevo puede entenderlo sin un curso?
114
- - ¿Un cambio de requisito se acomoda sin reescribir?
115
-
116
- Si la respuesta es "no" a más de uno, el módulo necesita refactor antes de
117
- release.
118
-
119
- ---
120
-
121
- ## Parte 2 — Schema Evolution (Cap 4)
122
-
123
- Cita textual del libro (DDIA p.112, línea 5706-5719):
124
-
125
- > "Backward compatibility — Newer code can read data that was written by
126
- > older code.
127
- >
128
- > Forward compatibility — Older code can read data that was written by
129
- > newer code.
130
- >
131
- > Backward compatibility is normally not hard to achieve: as author of the
132
- > newer code, you know the format of data written by older code, and so
133
- > you can explicitly handle it (if necessary by simply keeping the old code
134
- > to read the old data). Forward compatibility can be trickier, because it
135
- > requires older code to ignore additions made by a newer version of the
136
- > code."
137
-
138
- ### Las 2 direcciones de compatibilidad
139
-
140
- Cuando un schema evoluciona, hay dos preguntas distintas:
141
-
142
- | Pregunta | Tipo | Difficulty |
143
- |---|---|---|
144
- | ¿Código nuevo lee datos viejos? | Backward | Fácil |
145
- | ¿Código viejo lee datos nuevos? | Forward | Más difícil |
146
-
147
- **Backward compat es fácil**: el código nuevo conoce ambas versiones del
148
- schema, puede manejar los dos formatos.
149
-
150
- **Forward compat es difícil**: el código viejo NO sabe que existe el campo
151
- nuevo. Para que funcione, el código viejo debe **ignorar campos
152
- desconocidos** sin romperse.
153
-
154
- ### Aplicación a schemas SWL
155
-
156
- SWL tiene 14 archivos `schemas/*.schema.json`. Reglas operativas:
157
-
158
- 1. **Campos nuevos siempre opcionales**: agregar `myField: { type: "..." }`
159
- sin marcarlo `required`. Código viejo lo ignora (forward-compat OK).
160
- Código nuevo lo usa si está presente (backward-compat OK).
161
-
162
- 2. **NUNCA renombrar campos en MINOR/PATCH**: rename = breaking. Si hay
163
- que renombrar, mantener ambos durante 1 release (deprecación) y
164
- eliminar en el MAJOR siguiente.
165
-
166
- 3. **NUNCA cambiar tipo de un campo en MINOR/PATCH**: cambiar `string` →
167
- `array` rompe ambas direcciones. Es MAJOR.
168
-
169
- 4. **Agregar enum value es compatible**: si `nivelRiesgo` acepta
170
- `[BAJO, MEDIO, ALTO]`, agregar `CRÍTICO` es backward-compat (código
171
- nuevo lo entiende, código viejo lo rechaza pero no se rompe).
172
-
173
- 5. **Eliminar enum value es breaking**: código nuevo rechaza algo que
174
- código viejo escribía.
175
-
176
- ### Detección de breaking changes
177
-
178
- Helper `scripts/lib/schema-version.js` (creado en F4) implementa estas
179
- reglas. Uso esperado:
180
-
181
- ```js
182
- const { verificarCompatibilidad } = require('./scripts/lib/schema-version');
183
- const r = verificarCompatibilidad(documento, schema);
184
- // r = { compatible: bool, modo: "backward"|"forward"|"none", advertencias }
185
- ```
186
-
187
- Tres modos según versiones:
188
- - Doc 1.0.0 + Schema 1.0.0 → `modo: "none"` (idénticas).
189
- - Doc 1.0.0 + Schema 1.1.0 → `modo: "forward"` (dato viejo, código nuevo).
190
- - Doc 1.1.0 + Schema 1.0.0 → `modo: "backward"` (dato nuevo, código viejo).
191
- - Doc 2.0.0 + Schema 1.0.0 → `compatible: false` (MAJOR rompe).
192
-
193
- ---
194
-
195
- ## Parte 3 — End-to-End Argument (Cap 12)
196
-
197
- Concepto del libro: la verificación de correctitud debe vivir en la
198
- frontera del sistema (end-to-end), no en cada capa intermedia.
199
-
200
- > "The End-to-End Argument for Databases" (DDIA p.516, sección referenciada)
201
-
202
- ### El principio aplicado
203
-
204
- Si validas en cada capa intermedia:
205
- - Capa 1: valida → pasa
206
- - Capa 2: valida → pasa
207
- - Capa 3: valida → pasa
208
- - Resultado: dato corrupto entregado al usuario porque ninguna capa
209
- verificó la **invariante de negocio** completa.
210
-
211
- Si validas end-to-end:
212
- - Capa 1, 2, 3: hacen su trabajo sin validar
213
- - Frontera del sistema: verifica la invariante completa
214
- - Resultado: si falla, se detecta antes de entregar al usuario.
215
-
216
- ### Aplicación a SWL
217
-
218
- - `/swl:verificar` con goal-backward 4 niveles es end-to-end.
219
- - Hooks de validación intermedios (`calidad-pre-commit`,
220
- `escaneo-secretos`) son fault-tolerance, no end-to-end. Detectan
221
- problemas obvios temprano para reducir blast radius — no reemplazan la
222
- verificación end-to-end.
223
- - Las dos capas son complementarias: hooks rápidos en cada step, verifier
224
- end-to-end al cierre de fase.
225
-
226
- ### Trust-but-Verify (Cap 12, p.528)
227
-
228
- El sistema debe **confiar provisionalmente** en sus componentes
229
- (hooks pasan → asumimos correcto) pero **verificar** la invariante final
230
- con evidencia, no con auto-reporte de los componentes.
231
-
232
- Aplicación SWL: regla `verificar-citas-normativas.md` aplica este
233
- principio a citas archivo:línea — un sub-agente reportó "está
234
- implementado en X:42"; el padre verifica con `Read`+`grep` antes de
235
- aceptar.
236
-
237
- ---
238
-
239
- ## Resumen — qué se llevó SWL del libro
240
-
241
- | Concepto DDIA | Dónde vive en SWL |
242
- |---|---|
243
- | Reliability/Scalability/Maintainability como framework | Este skill como rúbrica de evaluación |
244
- | Operability / Simplicity / Evolvability | Skills ≤300 líneas + observabilidad-swl + ADRs |
245
- | Backward / Forward compat | `$schemaVersion` + `scripts/lib/schema-version.js` (F4) |
246
- | End-to-End Argument | `/swl:verificar` goal-backward |
247
- | Trust-but-Verify | regla `verificar-citas-normativas.md` |
248
-
249
- ## Origen
250
-
251
- Skill creado el 2026-05-18 como parte de Opción B de integración
252
- `temp/Designing Data Intensive Applications by Martin Kleppmann.md`. Ver
253
- ADR-0025 para la decisión de scope. Skill hermano:
254
- `proceso-ddia-streaming` (Cap 11 event sourcing aplicado a
255
- `evolucion/*.jsonl`).
1
+ ---
2
+ name: proceso-ddia-fundamentos
3
+ description: >
4
+ Conceptos fundamentales del libro "Designing Data-Intensive Applications" de
5
+ Martin Kleppmann aplicables a sistemas no-distribuidos (como SWL): Cap 1
6
+ Reliability/Scalability/Maintainability como framework de evaluación, Cap 4
7
+ Schema Evolution con backward/forward compatibility, Cap 12 End-to-End
8
+ Argument y Trust-but-Verify. Cargar al diseñar manifiestos versionados,
9
+ evaluar arquitectura de un módulo, decidir dónde validar correctitud.
10
+ when_to_use: >
11
+ Usar cuando el usuario menciona schema versioning, backward/forward compat,
12
+ end-to-end verification, trust but verify, reliability scalability
13
+ maintainability, RSM framework, Operability Simplicity Evolvability,
14
+ schema-evolution, evaluar arquitectura, decidir dónde validar.
15
+ ---
16
+
17
+ # DDIA Fundamentos — RSM, Schema Evolution, End-to-End
18
+
19
+ Adaptado de Martin Kleppmann, *"Designing Data-Intensive Applications"*
20
+ (O'Reilly, 2017). Skill cubre los tres ejes del libro que aplican a SWL:
21
+
22
+ - **Capítulo 1** — Reliability, Scalability, Maintainability como framework.
23
+ - **Capítulo 4** — Schema Evolution (back/forward compatibility).
24
+ - **Capítulo 12** — End-to-End Argument + Trust-but-Verify.
25
+
26
+ Los demás capítulos del libro (2-3 data models / storage, 5-10 distributed
27
+ systems) tratan dominios que SWL no es (no es BD, no es sistema distribuido).
28
+ Se descartan por filtro de dominio (regla `arquitectura.md`).
29
+
30
+ ## Cuándo cargar
31
+
32
+ - Diseñar un schema nuevo (manifest, frontmatter, JSON Schema) que
33
+ evolucionará en el tiempo.
34
+ - Auditar un módulo SWL para evaluar Reliability/Scalability/Maintainability.
35
+ - Decidir dónde poner una validación: en cada capa o solo end-to-end.
36
+ - Resolver una duda sobre "¿esto se rompe si actualizo el sistema?" — es
37
+ pregunta de schema compatibility.
38
+
39
+ ## Cuándo NO cargar
40
+
41
+ - Discusiones sobre replication, partitioning, consenso (Paxos/Raft) — esos
42
+ capítulos DDIA no aplican a SWL.
43
+ - Streaming/event sourcing avanzado — cargar `Skill("proceso-ddia-streaming")`.
44
+ - Optimización puntual de query SQL — cargar `Skill("performance-baseline")`.
45
+
46
+ ---
47
+
48
+ ## Parte 1 — Reliability, Scalability, Maintainability (RSM)
49
+
50
+ Cita textual del libro (DDIA p.18, línea 1411-1453):
51
+
52
+ > "It is well known that the majority of the cost of software is not in its
53
+ > initial development, but in its ongoing maintenance — fixing bugs, keeping
54
+ > its systems operational, investigating failures, adapting it to new
55
+ > platforms, modifying it for new use cases, repaying technical debt, and
56
+ > adding new features."
57
+
58
+ ### Las 3 dimensiones del RSM
59
+
60
+ **Reliability** — el sistema sigue funcionando correctamente bajo:
61
+ - Hardware faults
62
+ - Software errors
63
+ - Human errors
64
+
65
+ Tipos de respuesta:
66
+ - **Fault-tolerant**: el sistema absorbe la falla sin propagarla.
67
+ - **Resilient**: degrada con gracia, no en cascada.
68
+
69
+ **Aplicación a SWL**: hooks bloqueantes (`calidad-pre-commit`,
70
+ `escaneo-secretos`) son fault-tolerance. Las escrituras atómicas
71
+ (`hooks/lib/atomic-write.js`) son resilience contra crashes durante write.
72
+
73
+ **Scalability** — cómo cambia el rendimiento cuando crece la carga:
74
+ - Describir **carga** (parámetros: throughput, concurrent users, etc.)
75
+ - Describir **rendimiento** (latencia: p50, p95, p99)
76
+
77
+ **Aplicación a SWL**: las métricas `Skill("performance-baseline")` siguen
78
+ este modelo. Carga = sesiones concurrentes, archivos por proyecto, agentes
79
+ en cadena. Rendimiento = latencia de hooks, tiempo de respuesta de
80
+ validadores.
81
+
82
+ **Maintainability** — tres principios de diseño del libro:
83
+
84
+ > "Operability: Make it easy for operations teams to keep the system running
85
+ > smoothly.
86
+ > Simplicity: Make it easy for new engineers to understand the system, by
87
+ > removing as much complexity as possible from the system. (Note this is
88
+ > not the same as simplicity of the user interface.)
89
+ > Evolvability: Make it easy for engineers to make changes to the system in
90
+ > the future, adapting it for unanticipated use cases as requirements
91
+ > change. Also known as extensibility, modifiability, or plasticity."
92
+ > (DDIA p.18-19, líneas 1435-1449)
93
+
94
+ **Aplicación a SWL**:
95
+
96
+ | Principio DDIA | Implementación SWL |
97
+ |---|---|
98
+ | Operability | `/swl:status salud`, `/swl:status dashboard`, `/swl:doctor`, runbooks |
99
+ | Simplicity | Skills ≤300 líneas, módulos profundos (Ousterhout), zero-deps en `hooks/lib/` |
100
+ | Evolvability | ADRs versionados, schemas opcionales aditivos, fragments compartidos |
101
+
102
+ ### Cómo usar RSM como rúbrica de evaluación
103
+
104
+ Antes de declarar un módulo "listo", pregúntate:
105
+
106
+ 1. **Reliability**: ¿qué pasa si una entrada inesperada llega? ¿Si un hook
107
+ externo falla? ¿Si el filesystem se llena?
108
+ 2. **Scalability**: ¿el módulo escala con el tamaño del proyecto del
109
+ usuario? Si tiene 1000 archivos vs 10, ¿degrada linealmente o se
110
+ cuadratiza?
111
+ 3. **Maintainability** (los 3 sub-principios):
112
+ - ¿Un operario nuevo puede operarlo sin leer todo el código?
113
+ - ¿Un ingeniero nuevo puede entenderlo sin un curso?
114
+ - ¿Un cambio de requisito se acomoda sin reescribir?
115
+
116
+ Si la respuesta es "no" a más de uno, el módulo necesita refactor antes de
117
+ release.
118
+
119
+ ---
120
+
121
+ ## Parte 2 — Schema Evolution (Cap 4)
122
+
123
+ Cita textual del libro (DDIA p.112, línea 5706-5719):
124
+
125
+ > "Backward compatibility — Newer code can read data that was written by
126
+ > older code.
127
+ >
128
+ > Forward compatibility — Older code can read data that was written by
129
+ > newer code.
130
+ >
131
+ > Backward compatibility is normally not hard to achieve: as author of the
132
+ > newer code, you know the format of data written by older code, and so
133
+ > you can explicitly handle it (if necessary by simply keeping the old code
134
+ > to read the old data). Forward compatibility can be trickier, because it
135
+ > requires older code to ignore additions made by a newer version of the
136
+ > code."
137
+
138
+ ### Las 2 direcciones de compatibilidad
139
+
140
+ Cuando un schema evoluciona, hay dos preguntas distintas:
141
+
142
+ | Pregunta | Tipo | Difficulty |
143
+ |---|---|---|
144
+ | ¿Código nuevo lee datos viejos? | Backward | Fácil |
145
+ | ¿Código viejo lee datos nuevos? | Forward | Más difícil |
146
+
147
+ **Backward compat es fácil**: el código nuevo conoce ambas versiones del
148
+ schema, puede manejar los dos formatos.
149
+
150
+ **Forward compat es difícil**: el código viejo NO sabe que existe el campo
151
+ nuevo. Para que funcione, el código viejo debe **ignorar campos
152
+ desconocidos** sin romperse.
153
+
154
+ ### Aplicación a schemas SWL
155
+
156
+ SWL tiene 14 archivos `schemas/*.schema.json`. Reglas operativas:
157
+
158
+ 1. **Campos nuevos siempre opcionales**: agregar `myField: { type: "..." }`
159
+ sin marcarlo `required`. Código viejo lo ignora (forward-compat OK).
160
+ Código nuevo lo usa si está presente (backward-compat OK).
161
+
162
+ 2. **NUNCA renombrar campos en MINOR/PATCH**: rename = breaking. Si hay
163
+ que renombrar, mantener ambos durante 1 release (deprecación) y
164
+ eliminar en el MAJOR siguiente.
165
+
166
+ 3. **NUNCA cambiar tipo de un campo en MINOR/PATCH**: cambiar `string` →
167
+ `array` rompe ambas direcciones. Es MAJOR.
168
+
169
+ 4. **Agregar enum value es compatible**: si `nivelRiesgo` acepta
170
+ `[BAJO, MEDIO, ALTO]`, agregar `CRÍTICO` es backward-compat (código
171
+ nuevo lo entiende, código viejo lo rechaza pero no se rompe).
172
+
173
+ 5. **Eliminar enum value es breaking**: código nuevo rechaza algo que
174
+ código viejo escribía.
175
+
176
+ ### Detección de breaking changes
177
+
178
+ Helper `scripts/lib/schema-version.js` (creado en F4) implementa estas
179
+ reglas. Uso esperado:
180
+
181
+ ```js
182
+ const { verificarCompatibilidad } = require('./scripts/lib/schema-version');
183
+ const r = verificarCompatibilidad(documento, schema);
184
+ // r = { compatible: bool, modo: "backward"|"forward"|"none", advertencias }
185
+ ```
186
+
187
+ Tres modos según versiones:
188
+ - Doc 1.0.0 + Schema 1.0.0 → `modo: "none"` (idénticas).
189
+ - Doc 1.0.0 + Schema 1.1.0 → `modo: "forward"` (dato viejo, código nuevo).
190
+ - Doc 1.1.0 + Schema 1.0.0 → `modo: "backward"` (dato nuevo, código viejo).
191
+ - Doc 2.0.0 + Schema 1.0.0 → `compatible: false` (MAJOR rompe).
192
+
193
+ ---
194
+
195
+ ## Parte 3 — End-to-End Argument (Cap 12)
196
+
197
+ Concepto del libro: la verificación de correctitud debe vivir en la
198
+ frontera del sistema (end-to-end), no en cada capa intermedia.
199
+
200
+ > "The End-to-End Argument for Databases" (DDIA p.516, sección referenciada)
201
+
202
+ ### El principio aplicado
203
+
204
+ Si validas en cada capa intermedia:
205
+ - Capa 1: valida → pasa
206
+ - Capa 2: valida → pasa
207
+ - Capa 3: valida → pasa
208
+ - Resultado: dato corrupto entregado al usuario porque ninguna capa
209
+ verificó la **invariante de negocio** completa.
210
+
211
+ Si validas end-to-end:
212
+ - Capa 1, 2, 3: hacen su trabajo sin validar
213
+ - Frontera del sistema: verifica la invariante completa
214
+ - Resultado: si falla, se detecta antes de entregar al usuario.
215
+
216
+ ### Aplicación a SWL
217
+
218
+ - `/swl:verificar` con goal-backward 4 niveles es end-to-end.
219
+ - Hooks de validación intermedios (`calidad-pre-commit`,
220
+ `escaneo-secretos`) son fault-tolerance, no end-to-end. Detectan
221
+ problemas obvios temprano para reducir blast radius — no reemplazan la
222
+ verificación end-to-end.
223
+ - Las dos capas son complementarias: hooks rápidos en cada step, verifier
224
+ end-to-end al cierre de fase.
225
+
226
+ ### Trust-but-Verify (Cap 12, p.528)
227
+
228
+ El sistema debe **confiar provisionalmente** en sus componentes
229
+ (hooks pasan → asumimos correcto) pero **verificar** la invariante final
230
+ con evidencia, no con auto-reporte de los componentes.
231
+
232
+ Aplicación SWL: regla `verificar-citas-normativas.md` aplica este
233
+ principio a citas archivo:línea — un sub-agente reportó "está
234
+ implementado en X:42"; el padre verifica con `Read`+`grep` antes de
235
+ aceptar.
236
+
237
+ ---
238
+
239
+ ## Resumen — qué se llevó SWL del libro
240
+
241
+ | Concepto DDIA | Dónde vive en SWL |
242
+ |---|---|
243
+ | Reliability/Scalability/Maintainability como framework | Este skill como rúbrica de evaluación |
244
+ | Operability / Simplicity / Evolvability | Skills ≤300 líneas + observabilidad-swl + ADRs |
245
+ | Backward / Forward compat | `$schemaVersion` + `scripts/lib/schema-version.js` (F4) |
246
+ | End-to-End Argument | `/swl:verificar` goal-backward |
247
+ | Trust-but-Verify | regla `verificar-citas-normativas.md` |
248
+
249
+ ## Origen
250
+
251
+ Skill creado el 2026-05-18 como parte de Opción B de integración
252
+ `temp/Designing Data Intensive Applications by Martin Kleppmann.md`. Ver
253
+ ADR-0025 para la decisión de scope. Skill hermano:
254
+ `proceso-ddia-streaming` (Cap 11 event sourcing aplicado a
255
+ `evolucion/*.jsonl`).