@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,240 +1,240 @@
|
|
|
1
|
-
# Regla: Detectar → Informar → Arreglar en el mismo turno
|
|
2
|
-
|
|
3
|
-
Esta regla es OBLIGATORIA y aplica a todo trabajo que Claude ejecute en cualquier
|
|
4
|
-
proyecto del usuario. Consolida cuatro feedbacks repetidos en sesiones distintas
|
|
5
|
-
entre 2026-04-23 y 2026-05-03 con la misma señal: el usuario rechaza entregas
|
|
6
|
-
parciales, deuda silenciosa y bypass de errores ajenos.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## Principio
|
|
11
|
-
|
|
12
|
-
> Cuando detectes un error, bug, inconsistencia, anomalía o problema secundario
|
|
13
|
-
> durante la ejecución de cualquier trabajo, **informa al usuario brevemente Y
|
|
14
|
-
> procede a resolverlo en el mismo turno**. Nunca lo dejes como pendiente, deuda
|
|
15
|
-
> implícita, "ya estaba antes" ni "fuera del scope".
|
|
16
|
-
|
|
17
|
-
Esta regla resume cuatro feedbacks separados que el usuario reforzó como mismo
|
|
18
|
-
principio:
|
|
19
|
-
|
|
20
|
-
- "No me gustan las cosas a medias" — rechazo de entregas parciales (2026-04-23).
|
|
21
|
-
- "Cuando detectes errores, bugs, inconsistencias y demás informes al usuario y
|
|
22
|
-
procedas a solucionar y/o arreglar, además nunca debes dejar pendientes, ni
|
|
23
|
-
diferir" (2026-04-30).
|
|
24
|
-
- "Resuelve los test que fallan, no bypass" — al detectar intento de excluir
|
|
25
|
-
tests del glob para evitar arreglarlos (2026-04-30).
|
|
26
|
-
- "Si el job CI falla, hay que arreglarlo todo" — al ver tests rotos
|
|
27
|
-
presentados como "preexistentes, no críticos" (2026-05-03).
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## Cómo aplicar
|
|
32
|
-
|
|
33
|
-
### Al detectar un problema secundario durante el trabajo principal
|
|
34
|
-
|
|
35
|
-
- Reportarlo brevemente al usuario: qué se detectó, dónde, severidad.
|
|
36
|
-
- Resolverlo en el mismo turno o en commit separado de la misma sesión.
|
|
37
|
-
- NUNCA ofrecer "lo documento como deuda" como primera opción.
|
|
38
|
-
- NUNCA usar frases como "son tests con mocks pre-existentes que ya estaban rotos",
|
|
39
|
-
"esto estaba antes", "no es del scope inmediato" para evitar el trabajo.
|
|
40
|
-
|
|
41
|
-
### Al ejecutar tests, builds, lints, validadores
|
|
42
|
-
|
|
43
|
-
- Si hay failures, listarlos todos y atacarlos todos.
|
|
44
|
-
- No distinguir "bugs reales" vs "tests con mocks mal configurados" como excusa
|
|
45
|
-
para arreglar solo unos. Si están rotos, arreglarlos.
|
|
46
|
-
- Excepción: bugs que requieran decisión arquitectural ambigua del usuario —
|
|
47
|
-
pedir esa decisión explícitamente, no diferir como "tu decisión".
|
|
48
|
-
|
|
49
|
-
### Al modificar código adyacente
|
|
50
|
-
|
|
51
|
-
- Si tocas líneas con problemas adyacentes (None checks faltantes, schemas
|
|
52
|
-
obsoletos, mocks inconsistentes, contadores stale, paths inválidos),
|
|
53
|
-
arreglarlos en el mismo commit o en commit separado de la misma sesión.
|
|
54
|
-
|
|
55
|
-
### Al refactorizar
|
|
56
|
-
|
|
57
|
-
- Si encuentras código adyacente que se quedó obsoleto por un refactor previo,
|
|
58
|
-
actualizarlo. No dejar deuda residual.
|
|
59
|
-
|
|
60
|
-
### Al detectar un error ajeno al trabajo actual
|
|
61
|
-
|
|
62
|
-
- NO bypassear (excluir tests del glob, comentar checks, `|| true`,
|
|
63
|
-
downgradear a warning, ignorar).
|
|
64
|
-
- Resolver de raíz o, si requiere decisión, abrir explícitamente la decisión
|
|
65
|
-
con el usuario antes de bypassear.
|
|
66
|
-
- El default es resolver, no esquivar.
|
|
67
|
-
|
|
68
|
-
### Al presentar planes con sub-tareas
|
|
69
|
-
|
|
70
|
-
- Dar primero la opción "todo completo" con esfuerzo estimado.
|
|
71
|
-
- Si por capacity hay que partir el trabajo, hacerlo explícito con razón
|
|
72
|
-
concreta: "esta sesión cubre 3.1 a 3.4; la 3.5 va en commit separado por
|
|
73
|
-
X razón concreta", no por preferencia genérica.
|
|
74
|
-
|
|
75
|
-
### Al recomendar diferir un patrón o feature
|
|
76
|
-
|
|
77
|
-
- Redactar **simultáneamente** el ítem de deuda formal con criterio de disparo
|
|
78
|
-
verificable. La oferta "lo dejo apuntado" sin entrada formal no es aceptable.
|
|
79
|
-
- Distinción de categorías:
|
|
80
|
-
- **DT (deuda técnica)** con plan de cierre.
|
|
81
|
-
- **DA (decisión arquitectural)** con trigger verificable.
|
|
82
|
-
- **OP (pendiente operacional)** con responsable.
|
|
83
|
-
- "Mediano plazo / Q3 / cuando aparezca demanda" sin trigger verificable es
|
|
84
|
-
deuda silenciosa. Convertir a DA formal en mismo commit.
|
|
85
|
-
- Trigger verificable significa condición observable: "≥2 clientes distintos
|
|
86
|
-
reportan", "p95 > 60s en producción documentado", "uso > N veces/mes",
|
|
87
|
-
no "cuando sea relevante" o "más adelante".
|
|
88
|
-
|
|
89
|
-
### Hallazgos colaterales con blast radius alto — patrón Hallazgo A/B/C
|
|
90
|
-
|
|
91
|
-
Durante el trabajo principal puedes detectar un problema secundario cuyo fix
|
|
92
|
-
**no cabe** en la regla general "detectar → informar → arreglar en mismo
|
|
93
|
-
turno" porque su blast radius es alto: toca infra compartida, requiere
|
|
94
|
-
downtime, modifica contratos públicos, exige decisión arquitectural, o su
|
|
95
|
-
remediación dura más que el trabajo principal en curso.
|
|
96
|
-
|
|
97
|
-
Aplicar el catálogo de tres opciones explícitas — NUNCA mezclar el fix con
|
|
98
|
-
el trabajo principal sin etiquetarlo y NUNCA dejarlo como deuda silenciosa.
|
|
99
|
-
|
|
100
|
-
#### Definición operacional
|
|
101
|
-
|
|
102
|
-
Un hallazgo colateral cumple **al menos uno** de estos atributos:
|
|
103
|
-
|
|
104
|
-
- Su fix toca archivos fuera del scope del trabajo principal (>3 archivos
|
|
105
|
-
no relacionados con la tarea actual).
|
|
106
|
-
- Requiere operación destructiva (`git filter-branch`, `git filter-repo`,
|
|
107
|
-
drop de tabla, rotación de credencial productiva).
|
|
108
|
-
- Modifica configuración de infra compartida (CI/CD, branch protection,
|
|
109
|
-
permisos de repo, secrets de organización).
|
|
110
|
-
- Exige decisión arquitectural ambigua que el agente no puede tomar solo.
|
|
111
|
-
- Su remediación dura más que el commit actual del trabajo principal.
|
|
112
|
-
|
|
113
|
-
Si NO cumple ninguno de estos atributos, NO es Hallazgo A/B/C — aplicar la
|
|
114
|
-
regla general (arreglar en mismo turno).
|
|
115
|
-
|
|
116
|
-
#### Las tres opciones explícitas
|
|
117
|
-
|
|
118
|
-
| Opción | Cuándo | Acción |
|
|
119
|
-
|---|---|---|
|
|
120
|
-
| **Hallazgo A — Resolver ahora** | Fix < 30 min, reversible con `git revert`, sin blast radius en infra compartida, sin decisión arquitectural | Pausar trabajo principal, fix en commit separado etiquetado, retomar |
|
|
121
|
-
| **Hallazgo B — DT formal con trigger verificable** | Fix con blast radius alto pero NO bloqueante para el trabajo principal. Tiene criterio observable que define cuándo cerrarlo | Redactar entry en `.planning/DEUDA-TECNICA.md` con ID, trigger verificable, plan de cierre paso a paso. Continuar trabajo principal |
|
|
122
|
-
| **Hallazgo C — Escalar al usuario** | Fix excede autorización del agente: requiere decisión arquitectural, operación destructiva irreversible, o modifica contratos productivos | Pausar trabajo principal, reportar al usuario con 3 opciones concretas y recomendación, esperar decisión explícita |
|
|
123
|
-
|
|
124
|
-
#### Reglas duras
|
|
125
|
-
|
|
126
|
-
- **Reportar siempre, independientemente de la opción elegida**: el usuario
|
|
127
|
-
ve el hallazgo en el mismo turno, no se entera en el commit posterior.
|
|
128
|
-
- **DT formal NO es "lo apunto y veremos"**: requiere ID (`DT-NOMBRE-X`),
|
|
129
|
-
trigger verificable observable, plan de cierre con pasos concretos, y
|
|
130
|
-
entry visible en `.planning/DEUDA-TECNICA.md` commiteada en mismo turno.
|
|
131
|
-
- **NUNCA degradar Hallazgo C a Hallazgo B sin pedirlo**: una decisión
|
|
132
|
-
arquitectural disfrazada de DT es deuda silenciosa con cara de proceso.
|
|
133
|
-
- **NUNCA "arreglar como parte del trabajo principal" un Hallazgo B/C
|
|
134
|
-
sin etiquetarlo**: aunque el fix sea pequeño, si su blast radius es alto
|
|
135
|
-
el commit debe ser separado con mensaje explícito ("colateral: cierra
|
|
136
|
-
DT-X" o "colateral: aplica fix urgente fuera de scope original").
|
|
137
|
-
|
|
138
|
-
#### Ejemplo validado (SIGAF, sesión 2026-05-20)
|
|
139
|
-
|
|
140
|
-
Durante implementación de pipeline DevSecOps (gates gitleaks + SAST + deps
|
|
141
|
-
+ containers), el agente detectó tres hallazgos colaterales:
|
|
142
|
-
|
|
143
|
-
- **Hallazgo A — Validator JWT con frozenset + regex**: bug detectado en
|
|
144
|
-
`backend/app/core/config.py` donde `_CENTINELA` hardcodeado divergía del
|
|
145
|
-
`.env.example` real. Fix < 30 min, reversible, alcance acotado a
|
|
146
|
-
validators. Aplicado en commit separado mismo turno + 8 tests de regresión.
|
|
147
|
-
|
|
148
|
-
- **Hallazgo B — DT-GHAS-HABILITAR**: detectado que repo PRIVATE en
|
|
149
|
-
organización sin GitHub Advanced Security responde 403 al upload SARIF.
|
|
150
|
-
Mitigación inmediata con `continue-on-error: true` en step de upload.
|
|
151
|
-
DT formal con trigger verificable: "equipo crece >2 personas, auditoría
|
|
152
|
-
externa, o licencia GHAS adquirida". Entry en `.planning/DEUDA-TECNICA.md`
|
|
153
|
-
con plan de cierre (eliminar `continue-on-error` cuando GHAS activo).
|
|
154
|
-
|
|
155
|
-
- **Hallazgo C — DT-HISTORIAL-ENV**: detectado que commit `203a603` en
|
|
156
|
-
historial git contenía `ADMIN_PASSWORD=Admin2026!` (ya rotado, ya en
|
|
157
|
-
`.gitignore`, pero presente en `git log -p`). Fix requiere `git
|
|
158
|
-
filter-branch` o `git filter-repo` (destructivo, irreversible para
|
|
159
|
-
colaboradores con clones locales). El agente escaló al usuario; usuario
|
|
160
|
-
respondió "estamos en desarrollo y etapa de pruebas" → degradado a DT
|
|
161
|
-
formal con trigger "antes del primer deploy productivo, repo público
|
|
162
|
-
o colaborador externo".
|
|
163
|
-
|
|
164
|
-
Los tres hallazgos quedaron visibles, etiquetados y con trigger observable.
|
|
165
|
-
Ninguno se mezcló silenciosamente con el trabajo principal del pipeline.
|
|
166
|
-
|
|
167
|
-
#### Anti-patrones específicos
|
|
168
|
-
|
|
169
|
-
- **"Lo arreglo de paso porque ya estoy aquí"**: si el fix tiene blast
|
|
170
|
-
radius alto, NO va de paso. Va etiquetado o no va.
|
|
171
|
-
- **DT sin trigger verificable**: "cuando sea posible", "más adelante",
|
|
172
|
-
"cuando tengamos tiempo" — viola la regla general arriba. Trigger debe
|
|
173
|
-
ser condición observable.
|
|
174
|
-
- **Reportar Hallazgo C como informativo sin pedir decisión**: si la
|
|
175
|
-
decisión requiere autorización del usuario, la respuesta NO es
|
|
176
|
-
"documentado para tu consideración" — es "elige A, B o C".
|
|
177
|
-
- **Aplicar Hallazgo A descubriendo en medio que era Hallazgo C**: si al
|
|
178
|
-
empezar el fix detectas que tiene blast radius mayor del estimado,
|
|
179
|
-
detente, revierte el WIP, y re-clasifica. NO terminar "porque ya
|
|
180
|
-
empezamos".
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
## Excepciones legítimas
|
|
185
|
-
|
|
186
|
-
NO aplicar la regla al pie de la letra cuando:
|
|
187
|
-
|
|
188
|
-
1. **El fix es ambiguo** — varias opciones razonables sin criterio claro para
|
|
189
|
-
elegir. Presentar opciones concretas con la recomendación y esperar
|
|
190
|
-
decisión rápida.
|
|
191
|
-
2. **El fix es destructivo** — `rm -rf`, `git reset --hard`, `git push --force`,
|
|
192
|
-
eliminar tablas de BD. Esos siguen requiriendo confirmación explícita por
|
|
193
|
-
separado, sin importar que el problema esté detectado.
|
|
194
|
-
3. **El fix tiene blast radius alto** — modifica configuración de CI, infra
|
|
195
|
-
compartida, contratos públicos de API. Presentar plan, pedir confirmación.
|
|
196
|
-
4. **El bug requiere decisión de producto** — comportamiento esperado ambiguo,
|
|
197
|
-
breaking change. Explícito al usuario y esperar.
|
|
198
|
-
|
|
199
|
-
En todos los casos: presentar la opción y la recomendación, NO dejar el
|
|
200
|
-
problema sin reportar.
|
|
201
|
-
|
|
202
|
-
---
|
|
203
|
-
|
|
204
|
-
## Anti-patrones explícitos
|
|
205
|
-
|
|
206
|
-
- "Lo dejo como deuda residual" — sin DT/DA formal con criterio de disparo.
|
|
207
|
-
- "Esos tests ya estaban rotos antes" — usado para evitar arreglarlos.
|
|
208
|
-
- "No es parte del scope inmediato" — para esquivar un fix obvio.
|
|
209
|
-
- "Lo documento y tú decides" — para diferir trabajo claro al usuario.
|
|
210
|
-
- "Mediano plazo" sin trigger verificable.
|
|
211
|
-
- Excluir tests del glob, comentar checks, `|| true`, downgradear severidad de
|
|
212
|
-
un linter — para que el CI deje de fallar sin arreglar la causa.
|
|
213
|
-
- Mover archivos a `legacy/` o `deprecated/` sin plan de eliminación con
|
|
214
|
-
criterio de disparo.
|
|
215
|
-
|
|
216
|
-
---
|
|
217
|
-
|
|
218
|
-
## Relación con otras reglas
|
|
219
|
-
|
|
220
|
-
- `seguridad-agentes.md` — sección "Anti-fallback silencioso y anti-degradación"
|
|
221
|
-
cubre el mismo principio aplicado a agentes autónomos. Esta regla lo extiende
|
|
222
|
-
al trabajo del usuario.
|
|
223
|
-
- `git-workflow.md` — los commits siguen siendo atómicos; arreglar un problema
|
|
224
|
-
detectado puede requerir varios commits, no uno solo gigante.
|
|
225
|
-
- `pruebas.md` — los tests rotos son violaciones a esta regla. No se mergea
|
|
226
|
-
con tests rotos (excepción: tests rotos por decisión de producto en proceso).
|
|
227
|
-
|
|
228
|
-
---
|
|
229
|
-
|
|
230
|
-
## Origen de esta regla
|
|
231
|
-
|
|
232
|
-
Consolidada el 2026-05-04 a partir de cuatro feedbacks repetidos del usuario en
|
|
233
|
-
memorias nativas de Claude Code de los proyectos sigm, swl-ses y emaia
|
|
234
|
-
(2026-04-23 a 2026-05-03). Antes vivía duplicada en 4 archivos de feedback
|
|
235
|
-
distintos en 2 de los 3 proyectos. Promovida a regla global para eliminar
|
|
236
|
-
duplicación y aplicar uniformemente a todo proyecto del usuario.
|
|
237
|
-
|
|
238
|
-
Memoria nativa local correspondiente: redundante tras esta regla; mantener solo
|
|
239
|
-
una mención mínima en MEMORY.md de cada proyecto si se desea preservar el rastro
|
|
240
|
-
histórico, pero el contenido operativo vive aquí.
|
|
1
|
+
# Regla: Detectar → Informar → Arreglar en el mismo turno
|
|
2
|
+
|
|
3
|
+
Esta regla es OBLIGATORIA y aplica a todo trabajo que Claude ejecute en cualquier
|
|
4
|
+
proyecto del usuario. Consolida cuatro feedbacks repetidos en sesiones distintas
|
|
5
|
+
entre 2026-04-23 y 2026-05-03 con la misma señal: el usuario rechaza entregas
|
|
6
|
+
parciales, deuda silenciosa y bypass de errores ajenos.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Principio
|
|
11
|
+
|
|
12
|
+
> Cuando detectes un error, bug, inconsistencia, anomalía o problema secundario
|
|
13
|
+
> durante la ejecución de cualquier trabajo, **informa al usuario brevemente Y
|
|
14
|
+
> procede a resolverlo en el mismo turno**. Nunca lo dejes como pendiente, deuda
|
|
15
|
+
> implícita, "ya estaba antes" ni "fuera del scope".
|
|
16
|
+
|
|
17
|
+
Esta regla resume cuatro feedbacks separados que el usuario reforzó como mismo
|
|
18
|
+
principio:
|
|
19
|
+
|
|
20
|
+
- "No me gustan las cosas a medias" — rechazo de entregas parciales (2026-04-23).
|
|
21
|
+
- "Cuando detectes errores, bugs, inconsistencias y demás informes al usuario y
|
|
22
|
+
procedas a solucionar y/o arreglar, además nunca debes dejar pendientes, ni
|
|
23
|
+
diferir" (2026-04-30).
|
|
24
|
+
- "Resuelve los test que fallan, no bypass" — al detectar intento de excluir
|
|
25
|
+
tests del glob para evitar arreglarlos (2026-04-30).
|
|
26
|
+
- "Si el job CI falla, hay que arreglarlo todo" — al ver tests rotos
|
|
27
|
+
presentados como "preexistentes, no críticos" (2026-05-03).
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Cómo aplicar
|
|
32
|
+
|
|
33
|
+
### Al detectar un problema secundario durante el trabajo principal
|
|
34
|
+
|
|
35
|
+
- Reportarlo brevemente al usuario: qué se detectó, dónde, severidad.
|
|
36
|
+
- Resolverlo en el mismo turno o en commit separado de la misma sesión.
|
|
37
|
+
- NUNCA ofrecer "lo documento como deuda" como primera opción.
|
|
38
|
+
- NUNCA usar frases como "son tests con mocks pre-existentes que ya estaban rotos",
|
|
39
|
+
"esto estaba antes", "no es del scope inmediato" para evitar el trabajo.
|
|
40
|
+
|
|
41
|
+
### Al ejecutar tests, builds, lints, validadores
|
|
42
|
+
|
|
43
|
+
- Si hay failures, listarlos todos y atacarlos todos.
|
|
44
|
+
- No distinguir "bugs reales" vs "tests con mocks mal configurados" como excusa
|
|
45
|
+
para arreglar solo unos. Si están rotos, arreglarlos.
|
|
46
|
+
- Excepción: bugs que requieran decisión arquitectural ambigua del usuario —
|
|
47
|
+
pedir esa decisión explícitamente, no diferir como "tu decisión".
|
|
48
|
+
|
|
49
|
+
### Al modificar código adyacente
|
|
50
|
+
|
|
51
|
+
- Si tocas líneas con problemas adyacentes (None checks faltantes, schemas
|
|
52
|
+
obsoletos, mocks inconsistentes, contadores stale, paths inválidos),
|
|
53
|
+
arreglarlos en el mismo commit o en commit separado de la misma sesión.
|
|
54
|
+
|
|
55
|
+
### Al refactorizar
|
|
56
|
+
|
|
57
|
+
- Si encuentras código adyacente que se quedó obsoleto por un refactor previo,
|
|
58
|
+
actualizarlo. No dejar deuda residual.
|
|
59
|
+
|
|
60
|
+
### Al detectar un error ajeno al trabajo actual
|
|
61
|
+
|
|
62
|
+
- NO bypassear (excluir tests del glob, comentar checks, `|| true`,
|
|
63
|
+
downgradear a warning, ignorar).
|
|
64
|
+
- Resolver de raíz o, si requiere decisión, abrir explícitamente la decisión
|
|
65
|
+
con el usuario antes de bypassear.
|
|
66
|
+
- El default es resolver, no esquivar.
|
|
67
|
+
|
|
68
|
+
### Al presentar planes con sub-tareas
|
|
69
|
+
|
|
70
|
+
- Dar primero la opción "todo completo" con esfuerzo estimado.
|
|
71
|
+
- Si por capacity hay que partir el trabajo, hacerlo explícito con razón
|
|
72
|
+
concreta: "esta sesión cubre 3.1 a 3.4; la 3.5 va en commit separado por
|
|
73
|
+
X razón concreta", no por preferencia genérica.
|
|
74
|
+
|
|
75
|
+
### Al recomendar diferir un patrón o feature
|
|
76
|
+
|
|
77
|
+
- Redactar **simultáneamente** el ítem de deuda formal con criterio de disparo
|
|
78
|
+
verificable. La oferta "lo dejo apuntado" sin entrada formal no es aceptable.
|
|
79
|
+
- Distinción de categorías:
|
|
80
|
+
- **DT (deuda técnica)** con plan de cierre.
|
|
81
|
+
- **DA (decisión arquitectural)** con trigger verificable.
|
|
82
|
+
- **OP (pendiente operacional)** con responsable.
|
|
83
|
+
- "Mediano plazo / Q3 / cuando aparezca demanda" sin trigger verificable es
|
|
84
|
+
deuda silenciosa. Convertir a DA formal en mismo commit.
|
|
85
|
+
- Trigger verificable significa condición observable: "≥2 clientes distintos
|
|
86
|
+
reportan", "p95 > 60s en producción documentado", "uso > N veces/mes",
|
|
87
|
+
no "cuando sea relevante" o "más adelante".
|
|
88
|
+
|
|
89
|
+
### Hallazgos colaterales con blast radius alto — patrón Hallazgo A/B/C
|
|
90
|
+
|
|
91
|
+
Durante el trabajo principal puedes detectar un problema secundario cuyo fix
|
|
92
|
+
**no cabe** en la regla general "detectar → informar → arreglar en mismo
|
|
93
|
+
turno" porque su blast radius es alto: toca infra compartida, requiere
|
|
94
|
+
downtime, modifica contratos públicos, exige decisión arquitectural, o su
|
|
95
|
+
remediación dura más que el trabajo principal en curso.
|
|
96
|
+
|
|
97
|
+
Aplicar el catálogo de tres opciones explícitas — NUNCA mezclar el fix con
|
|
98
|
+
el trabajo principal sin etiquetarlo y NUNCA dejarlo como deuda silenciosa.
|
|
99
|
+
|
|
100
|
+
#### Definición operacional
|
|
101
|
+
|
|
102
|
+
Un hallazgo colateral cumple **al menos uno** de estos atributos:
|
|
103
|
+
|
|
104
|
+
- Su fix toca archivos fuera del scope del trabajo principal (>3 archivos
|
|
105
|
+
no relacionados con la tarea actual).
|
|
106
|
+
- Requiere operación destructiva (`git filter-branch`, `git filter-repo`,
|
|
107
|
+
drop de tabla, rotación de credencial productiva).
|
|
108
|
+
- Modifica configuración de infra compartida (CI/CD, branch protection,
|
|
109
|
+
permisos de repo, secrets de organización).
|
|
110
|
+
- Exige decisión arquitectural ambigua que el agente no puede tomar solo.
|
|
111
|
+
- Su remediación dura más que el commit actual del trabajo principal.
|
|
112
|
+
|
|
113
|
+
Si NO cumple ninguno de estos atributos, NO es Hallazgo A/B/C — aplicar la
|
|
114
|
+
regla general (arreglar en mismo turno).
|
|
115
|
+
|
|
116
|
+
#### Las tres opciones explícitas
|
|
117
|
+
|
|
118
|
+
| Opción | Cuándo | Acción |
|
|
119
|
+
|---|---|---|
|
|
120
|
+
| **Hallazgo A — Resolver ahora** | Fix < 30 min, reversible con `git revert`, sin blast radius en infra compartida, sin decisión arquitectural | Pausar trabajo principal, fix en commit separado etiquetado, retomar |
|
|
121
|
+
| **Hallazgo B — DT formal con trigger verificable** | Fix con blast radius alto pero NO bloqueante para el trabajo principal. Tiene criterio observable que define cuándo cerrarlo | Redactar entry en `.planning/DEUDA-TECNICA.md` con ID, trigger verificable, plan de cierre paso a paso. Continuar trabajo principal |
|
|
122
|
+
| **Hallazgo C — Escalar al usuario** | Fix excede autorización del agente: requiere decisión arquitectural, operación destructiva irreversible, o modifica contratos productivos | Pausar trabajo principal, reportar al usuario con 3 opciones concretas y recomendación, esperar decisión explícita |
|
|
123
|
+
|
|
124
|
+
#### Reglas duras
|
|
125
|
+
|
|
126
|
+
- **Reportar siempre, independientemente de la opción elegida**: el usuario
|
|
127
|
+
ve el hallazgo en el mismo turno, no se entera en el commit posterior.
|
|
128
|
+
- **DT formal NO es "lo apunto y veremos"**: requiere ID (`DT-NOMBRE-X`),
|
|
129
|
+
trigger verificable observable, plan de cierre con pasos concretos, y
|
|
130
|
+
entry visible en `.planning/DEUDA-TECNICA.md` commiteada en mismo turno.
|
|
131
|
+
- **NUNCA degradar Hallazgo C a Hallazgo B sin pedirlo**: una decisión
|
|
132
|
+
arquitectural disfrazada de DT es deuda silenciosa con cara de proceso.
|
|
133
|
+
- **NUNCA "arreglar como parte del trabajo principal" un Hallazgo B/C
|
|
134
|
+
sin etiquetarlo**: aunque el fix sea pequeño, si su blast radius es alto
|
|
135
|
+
el commit debe ser separado con mensaje explícito ("colateral: cierra
|
|
136
|
+
DT-X" o "colateral: aplica fix urgente fuera de scope original").
|
|
137
|
+
|
|
138
|
+
#### Ejemplo validado (SIGAF, sesión 2026-05-20)
|
|
139
|
+
|
|
140
|
+
Durante implementación de pipeline DevSecOps (gates gitleaks + SAST + deps
|
|
141
|
+
+ containers), el agente detectó tres hallazgos colaterales:
|
|
142
|
+
|
|
143
|
+
- **Hallazgo A — Validator JWT con frozenset + regex**: bug detectado en
|
|
144
|
+
`backend/app/core/config.py` donde `_CENTINELA` hardcodeado divergía del
|
|
145
|
+
`.env.example` real. Fix < 30 min, reversible, alcance acotado a
|
|
146
|
+
validators. Aplicado en commit separado mismo turno + 8 tests de regresión.
|
|
147
|
+
|
|
148
|
+
- **Hallazgo B — DT-GHAS-HABILITAR**: detectado que repo PRIVATE en
|
|
149
|
+
organización sin GitHub Advanced Security responde 403 al upload SARIF.
|
|
150
|
+
Mitigación inmediata con `continue-on-error: true` en step de upload.
|
|
151
|
+
DT formal con trigger verificable: "equipo crece >2 personas, auditoría
|
|
152
|
+
externa, o licencia GHAS adquirida". Entry en `.planning/DEUDA-TECNICA.md`
|
|
153
|
+
con plan de cierre (eliminar `continue-on-error` cuando GHAS activo).
|
|
154
|
+
|
|
155
|
+
- **Hallazgo C — DT-HISTORIAL-ENV**: detectado que commit `203a603` en
|
|
156
|
+
historial git contenía `ADMIN_PASSWORD=Admin2026!` (ya rotado, ya en
|
|
157
|
+
`.gitignore`, pero presente en `git log -p`). Fix requiere `git
|
|
158
|
+
filter-branch` o `git filter-repo` (destructivo, irreversible para
|
|
159
|
+
colaboradores con clones locales). El agente escaló al usuario; usuario
|
|
160
|
+
respondió "estamos en desarrollo y etapa de pruebas" → degradado a DT
|
|
161
|
+
formal con trigger "antes del primer deploy productivo, repo público
|
|
162
|
+
o colaborador externo".
|
|
163
|
+
|
|
164
|
+
Los tres hallazgos quedaron visibles, etiquetados y con trigger observable.
|
|
165
|
+
Ninguno se mezcló silenciosamente con el trabajo principal del pipeline.
|
|
166
|
+
|
|
167
|
+
#### Anti-patrones específicos
|
|
168
|
+
|
|
169
|
+
- **"Lo arreglo de paso porque ya estoy aquí"**: si el fix tiene blast
|
|
170
|
+
radius alto, NO va de paso. Va etiquetado o no va.
|
|
171
|
+
- **DT sin trigger verificable**: "cuando sea posible", "más adelante",
|
|
172
|
+
"cuando tengamos tiempo" — viola la regla general arriba. Trigger debe
|
|
173
|
+
ser condición observable.
|
|
174
|
+
- **Reportar Hallazgo C como informativo sin pedir decisión**: si la
|
|
175
|
+
decisión requiere autorización del usuario, la respuesta NO es
|
|
176
|
+
"documentado para tu consideración" — es "elige A, B o C".
|
|
177
|
+
- **Aplicar Hallazgo A descubriendo en medio que era Hallazgo C**: si al
|
|
178
|
+
empezar el fix detectas que tiene blast radius mayor del estimado,
|
|
179
|
+
detente, revierte el WIP, y re-clasifica. NO terminar "porque ya
|
|
180
|
+
empezamos".
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Excepciones legítimas
|
|
185
|
+
|
|
186
|
+
NO aplicar la regla al pie de la letra cuando:
|
|
187
|
+
|
|
188
|
+
1. **El fix es ambiguo** — varias opciones razonables sin criterio claro para
|
|
189
|
+
elegir. Presentar opciones concretas con la recomendación y esperar
|
|
190
|
+
decisión rápida.
|
|
191
|
+
2. **El fix es destructivo** — `rm -rf`, `git reset --hard`, `git push --force`,
|
|
192
|
+
eliminar tablas de BD. Esos siguen requiriendo confirmación explícita por
|
|
193
|
+
separado, sin importar que el problema esté detectado.
|
|
194
|
+
3. **El fix tiene blast radius alto** — modifica configuración de CI, infra
|
|
195
|
+
compartida, contratos públicos de API. Presentar plan, pedir confirmación.
|
|
196
|
+
4. **El bug requiere decisión de producto** — comportamiento esperado ambiguo,
|
|
197
|
+
breaking change. Explícito al usuario y esperar.
|
|
198
|
+
|
|
199
|
+
En todos los casos: presentar la opción y la recomendación, NO dejar el
|
|
200
|
+
problema sin reportar.
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Anti-patrones explícitos
|
|
205
|
+
|
|
206
|
+
- "Lo dejo como deuda residual" — sin DT/DA formal con criterio de disparo.
|
|
207
|
+
- "Esos tests ya estaban rotos antes" — usado para evitar arreglarlos.
|
|
208
|
+
- "No es parte del scope inmediato" — para esquivar un fix obvio.
|
|
209
|
+
- "Lo documento y tú decides" — para diferir trabajo claro al usuario.
|
|
210
|
+
- "Mediano plazo" sin trigger verificable.
|
|
211
|
+
- Excluir tests del glob, comentar checks, `|| true`, downgradear severidad de
|
|
212
|
+
un linter — para que el CI deje de fallar sin arreglar la causa.
|
|
213
|
+
- Mover archivos a `legacy/` o `deprecated/` sin plan de eliminación con
|
|
214
|
+
criterio de disparo.
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Relación con otras reglas
|
|
219
|
+
|
|
220
|
+
- `seguridad-agentes.md` — sección "Anti-fallback silencioso y anti-degradación"
|
|
221
|
+
cubre el mismo principio aplicado a agentes autónomos. Esta regla lo extiende
|
|
222
|
+
al trabajo del usuario.
|
|
223
|
+
- `git-workflow.md` — los commits siguen siendo atómicos; arreglar un problema
|
|
224
|
+
detectado puede requerir varios commits, no uno solo gigante.
|
|
225
|
+
- `pruebas.md` — los tests rotos son violaciones a esta regla. No se mergea
|
|
226
|
+
con tests rotos (excepción: tests rotos por decisión de producto en proceso).
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Origen de esta regla
|
|
231
|
+
|
|
232
|
+
Consolidada el 2026-05-04 a partir de cuatro feedbacks repetidos del usuario en
|
|
233
|
+
memorias nativas de Claude Code de los proyectos sigm, swl-ses y emaia
|
|
234
|
+
(2026-04-23 a 2026-05-03). Antes vivía duplicada en 4 archivos de feedback
|
|
235
|
+
distintos en 2 de los 3 proyectos. Promovida a regla global para eliminar
|
|
236
|
+
duplicación y aplicar uniformemente a todo proyecto del usuario.
|
|
237
|
+
|
|
238
|
+
Memoria nativa local correspondiente: redundante tras esta regla; mantener solo
|
|
239
|
+
una mención mínima en MEMORY.md de cada proyecto si se desea preservar el rastro
|
|
240
|
+
histórico, pero el contenido operativo vive aquí.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/scripts/verificar-*.js"
|
|
4
|
-
- "**/MANUAL_USO.md"
|
|
5
|
-
- "**/manifiestos/**"
|
|
6
|
-
- "**/INVENTARIO.md"
|
|
7
|
-
---
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/scripts/verificar-*.js"
|
|
4
|
+
- "**/MANUAL_USO.md"
|
|
5
|
+
- "**/manifiestos/**"
|
|
6
|
+
- "**/INVENTARIO.md"
|
|
7
|
+
---
|
|
8
8
|
# Regla: Auditorías documentales estructurales en SWL
|
|
9
9
|
|
|
10
10
|
Esta regla es **OBLIGATORIA** y aplica a todo agente o agente humano que
|
package/reglas/cloud-infra.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.tf"
|
|
4
|
-
- "**/*.tfvars"
|
|
5
|
-
- "**/Dockerfile*"
|
|
6
|
-
- "**/*.bicep"
|
|
7
|
-
- "**/docker-compose*.{yml,yaml}"
|
|
8
|
-
---
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.tf"
|
|
4
|
+
- "**/*.tfvars"
|
|
5
|
+
- "**/Dockerfile*"
|
|
6
|
+
- "**/*.bicep"
|
|
7
|
+
- "**/docker-compose*.{yml,yaml}"
|
|
8
|
+
---
|
|
9
9
|
# Regla: Infraestructura Cloud
|
|
10
10
|
|
|
11
11
|
Esta regla es OBLIGATORIA para todo recurso desplegado en cloud sin excepción.
|