sdd-gl 0.0.0-stage → 0.6.0

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/README.es.md ADDED
@@ -0,0 +1,953 @@
1
+ # SDD-GL — Desarrollo Guiado por Especificaciones: Gate/Loop
2
+
3
+ ![SDD-GL Portada](assets/sdd-gl-cover.png)
4
+
5
+ [![Version](https://img.shields.io/badge/version-0.6.0-blue)](CHANGELOG.md)
6
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
7
+ [![MCP Protocol](https://img.shields.io/badge/MCP-Protocol%20Ready-purple)](mcp/sdd-gl-mcp-spec.md)
8
+ [![Claude Code](https://img.shields.io/badge/Claude%20Code-plugin-orange)](https://docs.claude.ai/code)
9
+ [![Stack](https://img.shields.io/badge/stack-agnostic-lightgrey)](#3-configuración-del-stack-recomendado)
10
+
11
+ 🌐 **Idioma:** Español | [**Read in English 🇬🇧 (README.md)**](README.md)
12
+
13
+ > *La especificación no es documentación: es el contrato de completitud.*
14
+
15
+ SDD-GL es un framework multiplataforma y herramienta compatible con el estándar Model Context Protocol (MCP) que implementa un proceso de desarrollo guiado por especificaciones (Spec-Driven Development), diseñado específicamente para **un solo desarrollador**. Proporciona gobernanza selectiva en **Claude Code**, **Google Antigravity CLI & IDE**, **Cursor**, **Windsurf**, **VS Code** y **Zed**. Resuelve un problema fundamental: al trabajar en solitario con IA, no es práctico revisar cada microiteración, pero tampoco se puede ceder el control total en las decisiones de diseño.
16
+
17
+ La solución consiste en un flujo de trabajo adaptativo y estructurado que determina cuándo se requiere intervención humana (Gate) y cuándo la IA puede operar de manera autónoma con total auditabilidad (Glass Box Loop).
18
+
19
+ ---
20
+
21
+ ## ¿Por qué SDD-GL?
22
+
23
+ Las herramientas de SDD tradicionales (como AIUP, Kiro o BMad) están diseñadas para equipos con múltiples roles: revisores, interesados (stakeholders) y varios encargados de validar cada fase. Para un desarrollador independiente, este modelo genera una fricción innecesaria al exigir su presencia constante en decisiones menores que la IA podría resolver autónomamente.
24
+
25
+ El extremo opuesto es igualmente problemático: ceder el control por completo genera código que no ha sido contrastado con ninguna especificación, perdiendo toda trazabilidad cuando ocurre un error.
26
+
27
+ **SDD-GL resuelve esta tensión mediante una distinción clara:**
28
+
29
+ - **Gate**: Si la especificación tiene decisiones de diseño pendientes, el proceso se detiene y espera la intervención humana.
30
+ - **Loop**: Una vez que la especificación está cerrada y aprobada, el proceso se ejecuta de manera autónoma hasta su finalización.
31
+
32
+ No se trata de "revisar absolutamente todo" ni de "otorgar autonomía ilimitada a la IA". Es gobernanza selectiva: la intervención humana ocurre exactamente cuando su criterio técnico aporta valor.
33
+
34
+
35
+ ---
36
+
37
+ ## Conceptos clave
38
+
39
+ ### Las tres capas
40
+
41
+ ```mermaid
42
+ graph LR
43
+ subgraph Intent ["1. Intent (Modo GATE)"]
44
+ spec["Especificación abierta<br/>• doc.md<br/>• Lógica<br/>• Revisión"]
45
+ end
46
+
47
+ subgraph Contract ["2. Contract (Transición)"]
48
+ gate["HO-Gate<br/>(Aprobación humana)"]
49
+ end
50
+
51
+ subgraph Resolution ["3. Resolution (Modo LOOP)"]
52
+ loop_agents["Ejecución autónoma<br/>• coder-agent<br/>• tester-agent<br/>• reviewer-agent"]
53
+ end
54
+
55
+ spec -->|Envía a aprobación| gate
56
+ gate -->|Aprobado: Status APPROVED / Mode LOOP| loop_agents
57
+ loop_agents -->|Ambigüedad detectada| spec
58
+
59
+ style Intent fill:#f5f7fa,stroke:#cbd5e1,stroke-width:1px
60
+ style Contract fill:#eff6ff,stroke:#bfdbfe,stroke-width:1px
61
+ style Resolution fill:#f0fdf4,stroke:#bbf7d0,stroke-width:1px
62
+ ```
63
+
64
+ * **Intent (Intención)**: Fase donde se construye la especificación. El `requirements-agent` y el `reviewer-agent` refinan el contrato sección por sección. En esta etapa nunca se genera código de la aplicación. El desarrollador revisa y valida el diseño antes de avanzar.
65
+ * **Contract (HO-Gate - Transición)**: El acto formal de aprobación humana. No consiste en una casilla de verificación automática; es el instante en el que el desarrollador valida que la especificación está completa, es consistente y resulta ejecutable. Este gesto inicia la ejecución del bucle autónomo.
66
+ * **Resolution (Resolución)**: Fase en la que los agentes trabajan de manera autónoma. El Loop infiere los criterios de finalización a partir del contrato y no se detiene hasta cubrirlos por completo. Si detecta algún aspecto no definido en la especificación, no realiza suposiciones: regresa a la fase de Gate y solicita definición.
67
+
68
+ ---
69
+
70
+ ### Los dos modos
71
+
72
+ ```mermaid
73
+ flowchart TD
74
+ start([Inicio /sdd-feature o /sdd-fix]) --> draft[Creación de Contract en DRAFT]
75
+ draft --> gate[Modo GATE]
76
+
77
+ subgraph Modo_Gate [Fase GATE: Validación del Contrato]
78
+ gate --> req[requirements-agent<br/>Completa sección]
79
+ req --> rev[reviewer-agent<br/>Valida consistencia]
80
+ end
81
+
82
+ rev -->|Contradicción detectada| amb[Registra en Ambiguity Log]
83
+ amb --> gate
84
+
85
+ rev -->|Contract consistente| ho[HO-GATE: Aprobación Humana]
86
+
87
+ ho -->|Rechaza o Modifica| gate
88
+ ho -->|Status: APPROVED / Mode: LOOP| loop[Modo LOOP: Ejecución Autónoma]
89
+
90
+ subgraph Modo_Loop [Fase LOOP: Desarrollo y Pruebas]
91
+ loop --> iter[coder + tester + reviewer<br/>Iteran sobre el Completion Map]
92
+ end
93
+
94
+ iter -->|Ambigüedad encontrada| amb
95
+ iter -->|Todos los criterios cubiertos| resolved[RESOLVED]
96
+
97
+ resolved -->|Nueva especificación / Siguiente ciclo| gate
98
+
99
+ %% Estilos
100
+ style start fill:#e2e8f0,stroke:#64748b,stroke-width:1px
101
+ style draft fill:#f1f5f9,stroke:#cbd5e1,stroke-width:1px
102
+ style gate fill:#fef3c7,stroke:#f59e0b,stroke-width:2px
103
+ style ho fill:#dbeafe,stroke:#2563eb,stroke-width:2px
104
+ style loop fill:#dcfce7,stroke:#16a34a,stroke-width:2px
105
+ style resolved fill:#ecfdf5,stroke:#059669,stroke-width:2px
106
+ ```
107
+
108
+ > [!IMPORTANT]
109
+ > **Gobernanza Adaptativa en Gate (`EXPRESS` vs `STRICT`)**:
110
+ > Para eliminar la *fatiga de revisión de specs*, SDD-GL v0.3.0 soporta dos modos de gobernanza:
111
+ > - **⚡ `GATE-EXPRESS`**: Utilizado automáticamente para correcciones de bugs (`FIX-XXXX`) y features atómicas. Genera todas las secciones y validaciones de consistencia en **1 solo paso** para una aprobación humana inmediata.
112
+ > - **🛡️ `GATE-STRICT`**: Reservado para features de dominio complejo (`FEAT-XXXX`) con múltiples entidades. Guía al desarrollador sección por sección a través de puntos de control de diseño progresivos.
113
+
114
+ > [!NOTE]
115
+ > **Glass Box Loop (Telemetría y Auditoría Transparente)**:
116
+ > A diferencia de los agentes autónomos de tipo "caja negra", el Loop escribe un registro de auditoría de ejecución transparente para cada paso en `.sdd/runs/[ID]-[timestamp].md`. El desarrollador puede inspeccionar en tiempo real los archivos de contexto leídos, los diffs generados, las salidas del test runner, el conteo de reintentos y las justificaciones técnicas de cada decisión.
117
+
118
+ ---
119
+
120
+ ### El Completion Map (Mapa de Completitud)
121
+
122
+ Cuando el desarrollador aprueba el contrato, el Loop procesa la especificación e infiere los criterios de finalización de forma automática, sin requerir configuración manual por parte del usuario.
123
+
124
+ ```markdown
125
+ COMPLETION MAP: FEAT-0001
126
+ # generado: 2026-10-02 18:30
127
+ # [item-id]|[layer]|[test-id]|[agent]|[status]
128
+ # Flujo Principal | functional | functional-tests:FEAT-0001-main | tester | ❌
129
+ # Flujo Principal | static | static-analysis:FEAT-0001-main | verifier | ❌
130
+ # Flujo Principal | security | security-scan:FEAT-0001-main | verifier | ❌
131
+ # Flujo Principal | arch | arch-guard:FEAT-0001-main | verifier | ❌
132
+ # AF-01 | functional | unit-test:FEAT-0001-af01 | tester | ❌
133
+ # BR-001 | functional | unit-test:FEAT-0001-br001 | tester | ❌
134
+ # AC-001 | functional | assertion:FEAT-0001-ac001 | tester | ❌
135
+ ```
136
+
137
+ #### Tabla de Inferencia de Capas y Criterios
138
+
139
+ | Capa de Verificación | Propósito | Agente Encargado |
140
+ | :--- | :--- | :--- |
141
+ | **`functional`** | Pruebas unitarias, de integración y aserciones para flujos y reglas | `tester-agent` |
142
+ | **`static`** | Tipado estricto, análisis estático y reglas de linter | `verifier-agent` |
143
+ | **`security`** | Escaneo de vulnerabilidades, fuga de secretos y SAST | `verifier-agent` |
144
+ | **`arch`** | Cumplimiento de límites de arquitectura y `CONSTITUTION.md` | `verifier-agent` |
145
+
146
+ > [!TIP]
147
+ > El Loop no finaliza su ejecución hasta que todos los elementos distribuidos en las 4 capas de verificación del Completion Map se resuelvan satisfactoriamente (`✅`). Si ocurre un hallazgo acotado, el agente `solve-agent` intenta automáticamente una reparación rápida en $\le 3$ intentos.
148
+
149
+ ---
150
+
151
+ ### Interoperabilidad con Skills de Comportamiento Externas
152
+
153
+ Las skills globales de comportamiento (guías de estilo, perfiles "preguntá antes de actuar", mandatos de brevedad) suelen chocar con un Loop autónomo. SDD-GL lo resuelve con una capa aditiva `protocol/interop.md`:
154
+
155
+ * **Precedencia**: el protocolo SDD-GL siempre gana sobre una skill de comportamiento externa. Una skill no puede saltarse el Contract, el Completion Map, el registro Glass Box ni las métricas.
156
+ * **Enrutado de "preguntar"**: una pregunta inline durante el Loop se convierte en entrada de Ambiguity Log + `Mode: GATE` / `Status: DRAFT` + detención. Nunca se pregunta directo en medio del Loop.
157
+ * **Ancla de trazabilidad**: con un Contract en `APPROVED`, cada línea modificada se traza al Contract, no al pedido crudo ni a la interpretación de la skill.
158
+ * **Sin recortes**: el ceremonial del framework es parte de la tarea; las propuestas de simplificación quedan como notas para decisión humana.
159
+ * **Subordinación del cierre**: el resumen "qué omití" de una skill se subordina al `COMPLETION REPORT` oficial.
160
+
161
+ Sin skills de comportamiento activas, el Modo Interop es no-op: el comportamiento es idéntico al ciclo Gate/Loop normal.
162
+
163
+ ---
164
+
165
+ ## Beneficios Clave y Ventajas Tecnológicas
166
+
167
+ SDD-GL está diseñado para cerrar la brecha entre la velocidad de generación de código con IA y el rigor técnico de la ingeniería de software profesional. La arquitectura de SDD-GL brinda confiabilidad superior tanto para desarrolladores independientes como para equipos:
168
+
169
+ ```mermaid
170
+ flowchart LR
171
+ subgraph Gobernanza ["1. Gobernanza Selectiva"]
172
+ G1["Gate Adaptativo<br/>(EXPRESS / STRICT)"]
173
+ G2["Cero Alucinación de Specs"]
174
+ end
175
+
176
+ subgraph Calidad ["2. Verificación Multicapa AC/DC"]
177
+ Q1["Capa Funcional (TDD)"]
178
+ Q2["Capa Estática y Linters"]
179
+ Q3["Capa de Seguridad (SAST)"]
180
+ Q4["Constitución Arquitectónica"]
181
+ end
182
+
183
+ subgraph Auto_Reparacion ["3. Auto-Reparación Determinista"]
184
+ H1["solve-agent"]
185
+ H2["≤ 3 Iteraciones Acotadas"]
186
+ end
187
+
188
+ subgraph Telemetria ["4. Telemetría Viva y MCP"]
189
+ T1["Protocolo Universal MCP"]
190
+ T2["Dashboard Visual (Pages)"]
191
+ T3["Auditoría Trazable (FPQR)"]
192
+ end
193
+
194
+ Gobernanza --> Calidad
195
+ Calidad --> Auto_Reparacion
196
+ Auto_Reparacion --> Telemetria
197
+
198
+ style Gobernanza fill:#f8fafc,stroke:#64748b,stroke-width:1px
199
+ style Calidad fill:#f0fdf4,stroke:#16a34a,stroke-width:1px
200
+ style Auto_Reparacion fill:#eff6ff,stroke:#2563eb,stroke-width:1px
201
+ style Telemetria fill:#faf5ff,stroke:#9333ea,stroke-width:1px
202
+ ```
203
+
204
+ ### 1. 🎯 Gobernanza Selectiva: Elimina Alucinaciones y la Fatiga de Revisión
205
+ - **El Problema**: Leer miles de líneas de código generado por LLMs provoca *fatiga de revisión*, mientras que otorgar autonomía total a la IA genera desviaciones arquitectónicas y lógica de negocio alucinada.
206
+ - **La Solución SDD-GL**: El criterio humano se enfoca exclusivamente en el **Gate** (aprobando el contrato de especificación). Tras la aprobación, el **Glass Box Loop** se ejecuta autónomamente. Si surge un escenario no previsto, el bucle se detiene inmediatamente y escala al desarrollador mediante el Registro de Ambigüedades (*Ambiguity Log*) en lugar de asumir decisiones no especificadas.
207
+ - **Flexibilidad con Gate Adaptativo**: Posibilidad de elegir entre ⚡ **`GATE-EXPRESS`** (generación en 1 paso para hotfixes y tareas atómicas) y 🛡️ **`GATE-STRICT`** (puntos de control sección por sección para modelos de dominio complejos).
208
+
209
+ ### 2. 🛡️ Verificación Multicapa AC/DC: 4 Barreras de Calidad Obligatorias
210
+ Los asistentes de IA tradicionales solo comprueban si el código compila o pasan pruebas elementales. SDD-GL exige cuatro capas de verificación en todo el Completion Map:
211
+ 1. **Capa Funcional**: Valida todos los Criterios de Aceptación (GIVEN/WHEN/THEN), Reglas de Negocio (invariantes) y Flujos Alternativos mediante pruebas TDD.
212
+ 2. **Capa Estática**: Garantiza cero errores de sintaxis, 100% de tipado estricto y conformidad absoluta con linters.
213
+ 3. **Capa de Seguridad**: Ejecuta análisis SAST, audita dependencias, previene fugas de credenciales y analiza vulnerabilidades CWE comunes.
214
+ 4. **Capa de Arquitectura**: Hace cumplir las fronteras modulares, el desacoplamiento de capas y las leyes de diseño declaradas en `CONSTITUTION.md`.
215
+
216
+ ### 3. ⚡ Auto-Reparación Determinista (`solve-agent`)
217
+ - Cuando surgen errores menores de linter, sintaxis, imports o aserciones durante la verificación, reinvocar al agente programador completo consume tokens y tiempo de forma innecesaria.
218
+ - El agente especializado **`solve-agent`** aplica correcciones quirúrgicas en $\le 3$ intentos acotados sin alterar la lógica de negocio ni la arquitectura, acelerando los tiempos de entrega.
219
+
220
+ ### 4. 🔌 Estándar Universal Model Context Protocol (MCP)
221
+ - SDD-GL opera como un servidor nativo de **Model Context Protocol** (`sdd-gl`).
222
+ - Ejecuta el mismo estándar de gobernanza en **Cursor**, **Windsurf**, **Claude Code y Desktop**, **Google Antigravity CLI & IDE**, **VS Code** (Cline/Roo) y **Zed** sin ataduras a un único proveedor.
223
+ - Expone 8 herramientas estandarizadas: `sdd_create_contract`, `sdd_validate_gate`, `sdd_step_loop`, `sdd_log_ambiguity`, `sdd_get_status`, `sdd_get_metrics`, `sdd_audit_traceability` y `sdd_generate_dashboard`.
224
+
225
+ ### 5. 📈 Métricas Cuantificadas y Auditoría de Trazabilidad Continua
226
+ - **Tasa de Calidad en Primer Pase (FPQR)**: Mide el porcentaje de contratos completados a la primera sin reescalaciones con `/sdd-metrics`.
227
+ - **Auditoría de Trazabilidad**: Escaneo continuo con `/sdd-audit` para detectar especificaciones huérfanas o lógica de dominio no asociada a un contrato.
228
+ - **Trazas de Auditoría Glass Box**: Cada micro-paso de ejecución se guarda de forma transparente en `.sdd/runs/` con diffs, logs y fundamentaciones técnicas.
229
+
230
+ ---
231
+
232
+ ## Dashboard Visual Vivo y Métricas Locales de Uso
233
+
234
+ SDD-GL incluye un **Dashboard Visual Vivo** interactivo y publicable. Cada usuario genera su propia copia desde su máquina:
235
+
236
+ ![Dashboard con métricas reales](docs/assets/dashboard-sample.png)
237
+
238
+ *Captura real de un proyecto de ejemplo conducido por el Loop: 97.1% FPQR, 72 invocaciones del MCP en 2 sesiones de cliente, 2 contratos resueltos.*
239
+
240
+ ### Capacidades Destacadas del Dashboard
241
+ * 📊 **Tasa de Calidad en Primer Pase (FPQR)** e indicadores por capa, calculados desde `.sdd/metrics.json`; muestran "sin datos" hasta que exista telemetría real.
242
+ * 🛡️ **Matriz de Verificación en 4 Capas** (Funcional, Análisis Estático, Seguridad SAST, Guardián Arquitectónico).
243
+ * 🌐 **Telemetría local de uso del MCP**: invocaciones reales por herramienta, sesiones y clientes declarados (`clientInfo`) desde `.sdd/usage.json`.
244
+ * 📋 **Rendimiento de Features vs. Correcciones** y distribución de modos de gobernanza, calculados desde los contratos en disco.
245
+ * 🔒 **Privacidad por Diseño y Cero PII**: el ledger de uso guarda solo contadores, nombres de tool, cliente/versión declarados y fechas — nunca argumentos, prompts, rutas, usuarios ni tokens.
246
+ * 🌍 **Publicable, no global**: el HTML generado lleva los datos embebidos y no hace llamadas de red, así que podés publicarlo como *tu propia* métrica de uso de la metodología. No existe agregación central.
247
+
248
+ > [!NOTE]
249
+ > No hay telemetría global del ecosistema. Un servidor MCP stdio local no puede ver otras máquinas, así que cualquier cifra "global" sería inventada. Medir adopción entre usuarios requeriría un endpoint remoto opt-in, fuera de alcance por ahora.
250
+
251
+ ### Cómo generarlo
252
+
253
+ ```bash
254
+ npm run dashboard # dashboard local -> .sdd/dashboard.html (privado; publicalo vos si querés)
255
+ npm run dashboard:public # showcase público -> docs/index.html (lee solo examples/contracts/)
256
+ ```
257
+
258
+ El dashboard local nunca se escribe en `docs/`, así los contratos de trabajo y la telemetría no pueden filtrarse a la página publicada por accidente.
259
+
260
+ ### Reproducir la captura de ejemplo
261
+
262
+ La imagen de arriba sale de un proyecto fixture descartable que ejercita los casos borde (contratos DRAFT/APPROVED/RESOLVED, waivers, contradicciones, presupuesto excedido, dependencias, ítems interrumpidos y telemetría MCP + CLI). Nunca se versiona:
263
+
264
+ ```bash
265
+ node test-sandbox/fixtures/demo-project.js # lo crea en un directorio temporal
266
+ node test-sandbox/fixtures/demo-project.js ./mi-demo # o en la ruta que elijas
267
+ ```
268
+
269
+ El script imprime la ruta del proyecto; abrí `.sdd/dashboard.html` dentro de él.
270
+
271
+
272
+
273
+ ---
274
+
275
+ ## Inicio Rápido e Instalación
276
+
277
+ Sigue esta guía paso a paso para configurar y comenzar a utilizar SDD-GL en tu entorno de desarrollo preferido.
278
+
279
+ ### 1. Requisitos Previos
280
+ - **Node.js** (versión `>= 18.0.0`) para la ejecución del Servidor MCP.
281
+ - Cualquier cliente de IA compatible: **Cursor**, **Windsurf**, **Claude Desktop / Claude Code**, **OpenCode**, **Warp**, **Google Antigravity CLI & IDE**, **VS Code** (con Cline/Roo Code) o **Zed**.
282
+ - Un proyecto de desarrollo controlado bajo un repositorio de **Git**.
283
+
284
+ ---
285
+
286
+ ### 2. Elige tu Método de Instalación
287
+
288
+ #### 🌐 Método 1: Servidor MCP Universal (Cursor, Windsurf, OpenCode, Warp, Claude Desktop, VS Code)
289
+ Sin necesidad de clonar repositorios manualmente. Añade el servidor MCP directamente desde GitHub a la configuración de tu IDE o cliente de terminal (`~/.cursor/mcp.json`, `claude_desktop_config.json`, configuración de OpenCode o Cline MCP):
290
+
291
+ ```json
292
+ {
293
+ "mcpServers": {
294
+ "sdd-gl": {
295
+ "command": "npx",
296
+ "args": ["-y", "--package", "github:CharlyZeta/SDD-GL", "sdd-gl-mcp"]
297
+ }
298
+ }
299
+ }
300
+ ```
301
+ *O configúralo de forma local si clonaste el repositorio:*
302
+ ```json
303
+ {
304
+ "mcpServers": {
305
+ "sdd-gl": {
306
+ "command": "node",
307
+ "args": ["./mcp/server.js"]
308
+ }
309
+ }
310
+ }
311
+ ```
312
+ *Equipa instantáneamente a tu entorno con 8 herramientas nativas: `sdd_create_contract`, `sdd_validate_gate`, `sdd_step_loop`, `sdd_log_ambiguity`, `sdd_get_status`, `sdd_get_metrics`, `sdd_audit_traceability` y `sdd_generate_dashboard`.*
313
+
314
+ #### ⚡ Método 2: Plugin para Claude Code
315
+ En tu terminal, instala SDD-GL como plugin nativo de Claude Code directamente desde GitHub:
316
+ ```bash
317
+ claude plugin add github:CharlyZeta/SDD-GL
318
+ ```
319
+ O clonándolo dentro de tu directorio local de plugins de Claude:
320
+ ```bash
321
+ git clone https://github.com/CharlyZeta/SDD-GL.git ~/.claude/plugins/sdd-gl
322
+ ```
323
+
324
+ #### 🤖 Método 3: Google Antigravity CLI e IDE
325
+ Para instalar las habilidades nativas, protocolos y orquestadores en tu proyecto:
326
+ ```bash
327
+ git clone https://github.com/CharlyZeta/SDD-GL.git .sdd-tmp
328
+ cp -r .sdd-tmp/.agents/skills .agents/skills
329
+ cp -r .sdd-tmp/protocol protocol
330
+ cp -r .sdd-tmp/presets presets
331
+ cp .sdd-tmp/AGENTS.md .
332
+ cp .sdd-tmp/CONSTITUTION.md .
333
+ mkdir -p contracts
334
+ rm -rf .sdd-tmp
335
+ ```
336
+
337
+ #### 📦 Método 4: Submódulo de Git
338
+ Vincula SDD-GL a tu repositorio para recibir actualizaciones upstream fácilmente:
339
+ ```bash
340
+ git submodule add https://github.com/CharlyZeta/SDD-GL.git .sdd-gl
341
+ cp .sdd-gl/CLAUDE.md .
342
+ cp .sdd-gl/AGENTS.md .
343
+ cp -r .sdd-gl/protocol .
344
+ cp -r .sdd-gl/presets .
345
+ mkdir -p contracts
346
+ ```
347
+
348
+ ---
349
+
350
+ ### 3. Configuración del Stack y Presets Recomendados
351
+ Elige un preset listo para producción desde `presets/` o crea un archivo `stack.md` en el directorio raíz:
352
+ ```markdown
353
+ # Stack de Desarrollo
354
+ - Lenguaje: Java 21 / Python 3.12 / TypeScript 5
355
+ - Framework: Spring Boot 3.3 / FastAPI / Node.js
356
+ - Pruebas: JUnit 5 / Pytest / Vitest
357
+ - Estilo Arquitectónico: Arquitectura Hexagonal + DDD
358
+ ```
359
+ > [!NOTE]
360
+ > Los presets en `presets/` proporcionan configuraciones Zero-Config para Java Spring Boot, Python FastAPI y TypeScript Node.js.
361
+
362
+ ---
363
+
364
+ ## Guía de Uso
365
+
366
+ ### Línea de comandos (sin cliente MCP)
367
+
368
+ El mismo core está disponible como CLI, así SDD-GL funciona en una terminal o en CI:
369
+
370
+ | Comando | Qué hace |
371
+ | :--- | :--- |
372
+ | `sdd init` | prepara el proyecto (`.sdd/config.json`, `contracts/`, `CONSTITUTION.md`); `--private` deja los contratos fuera de git |
373
+ | `sdd doctor` | diagnóstico de la instalación con OK / WARN / FAIL y cómo corregir cada hallazgo |
374
+ | `sdd status` | todos los contratos con estado, modo y progreso del Completion Map |
375
+ | `sdd new "historia"` | crea un contrato (`--type FEAT\|FIX`, `--gate EXPRESS\|STRICT`) |
376
+ | `sdd validate <ID>` | checklist de Gate + contradicciones BR↔AC + atomicidad (`STORY_*`, `BUDGET_EXCEEDED`) |
377
+ | `sdd next` | qué hacer ahora, respetando `depends_on` |
378
+ | `sdd loop <ID>` | reclama el próximo ítem y entrega su contexto al agente (`--pass`/`--fail`/`--blocked` para reportar) |
379
+ | `sdd graph` | orden de ejecución según `depends_on`, ciclos y dependencias inexistentes |
380
+ | `sdd approve <ID> --yes` | HO-Gate desde la terminal: registra aprobador, fecha y hash del spec |
381
+ | `sdd split <ID>` | propone el corte de un contrato sobredimensionado (`--write` crea los borradores) |
382
+ | `sdd reconcile <ID>` | reabre solo los ítems cuyo criterio cambió en el spec |
383
+ | `sdd review` | heatmap de cobertura por contrato: qué BR/AC tienen test y cuáles quedan huérfanos |
384
+ | `sdd sync` | verifica que cada agente exista en todos los adaptadores de plataforma |
385
+ | `sdd report <ID>` | informe de ejecución: mapa, eventos de corrida, métricas y veredicto |
386
+
387
+ Todos aceptan `--json` (para CI) y `--root <dir>`. Los códigos de salida son estables: `0` sin hallazgos, `1` con hallazgos, `2` error de uso. Los comandos de lectura nunca crean archivos en el proyecto.
388
+
389
+ ### Iniciar una nueva Funcionalidad (Feature)
390
+ Para iniciar el diseño e implementación de una nueva funcionalidad, ejecuta:
391
+ ```bash
392
+ /sdd-feature "registrar un pago entre dos cuentas"
393
+ ```
394
+ El proceso generará un contrato en borrador (`DRAFT`) e iniciará la fase **Gate**:
395
+ ```
396
+ ✅ Contract creado: contracts/FEAT-0001.md
397
+
398
+ 📋 Revisá y completá antes de aprobar:
399
+ - [ ] Business Rules (BR-XXX como invariante verificable)
400
+ - [ ] Acceptance Criteria (AC-XXX en formato GIVEN/WHEN/THEN)
401
+ - [ ] Alternative Flows si aplica
402
+
403
+ ⏸️ Cuando estés listo: cambiá Status: APPROVED y Mode: LOOP
404
+ ```
405
+ El agente `requirements-agent` te ayudará a estructurar las secciones necesarias, y el `reviewer-agent` comprobará la coherencia del diseño antes de dar paso a la aprobación.
406
+
407
+ ### Iniciar una Corrección (Bugfix)
408
+ Para resolver un fallo en el sistema con un Gate simplificado que no requiere el modelado completo de casos de uso:
409
+ ```bash
410
+ /sdd-fix "el saldo no se actualiza cuando el pago falla a mitad"
411
+ ```
412
+ Solo necesitarás definir los siguientes datos básicos en la especificación del bugfix:
413
+ ```markdown
414
+ ## Pasos de Reproducción
415
+ 1. Iniciar pago por 500 ARS.
416
+ 2. Simular un fallo en el paso de acreditación.
417
+ 3. Verificar el saldo de la cuenta origen.
418
+
419
+ ## Comportamiento Actual
420
+ El saldo de origen se debita a pesar de que la transacción falló.
421
+
422
+ ## Comportamiento Esperado
423
+ El saldo no debe verse alterado si el pago no se completa con éxito.
424
+
425
+ ## Criterios de Aceptación
426
+ - AC-001: GIVEN pago iniciado WHEN falla la acreditación
427
+ THEN el saldo origen no cambia y el pago queda en FAILED.
428
+ ```
429
+
430
+ ### Consultar el Estado del Proyecto
431
+ Para visualizar un resumen del estado de todas las especificaciones y el progreso del Loop, ejecuta:
432
+ ```bash
433
+ /sdd-status
434
+ ```
435
+ El sistema devolverá una vista detallada:
436
+ ```
437
+ 📊 SDD-GL Status
438
+
439
+ 🔴 DRAFT (Gate — esperando revisión)
440
+ └── FEAT-0003: Alta de usuario con verificación de email
441
+
442
+ 🟡 APPROVED (Loop en progreso)
443
+ └── FEAT-0002: Transferencia internacional [8/11 ✅]
444
+
445
+ 🟢 RESOLVED
446
+ └── FEAT-0001: Registrar pago entre cuentas [12/12 ✅]
447
+ └── FIX-0001: Fix rollback de saldo en pago fallido [4/4 ✅]
448
+
449
+ ```
450
+
451
+ ### Consultar Métricas de Calidad
452
+ Para inspeccionar el First-Pass Quality Rate (FPQR), el promedio de reintentos y las tasas de éxito por capa, ejecuta:
453
+ ```bash
454
+ /sdd-metrics
455
+ ```
456
+ Salida:
457
+ ```
458
+ 📊 Resumen de Métricas de Calidad SDD-GL
459
+ =============================================
460
+ Total de Contratos Evaluados: 4 (FEAT: 3, FIX: 1)
461
+
462
+ • First-Pass Quality Rate (FEAT): 80.0%
463
+ • First-Pass Quality Rate (FIX): 100.0%
464
+ • First-Pass Rate Global: 85.0%
465
+
466
+ • Promedio de Reintentos: 0.35
467
+ • Tasa de Escalado a Gate: 15.0%
468
+
469
+ Tasa de Éxito por Capa de Verificación (1er intento):
470
+ - 🧪 Pruebas Funcionales: 92.5%
471
+ - 🔍 Análisis Estático: 95.0%
472
+ - 🛡️ Escaneo de Seguridad: 100.0%
473
+ - 🏛️ Guardrail Arq.: 100.0%
474
+ =============================================
475
+ ```
476
+
477
+ ### Auditar Trazabilidad de Requisitos
478
+ Para auditar la cobertura de especificaciones y detectar requisitos huérfanos o código de dominio no especificado, ejecuta:
479
+ ```bash
480
+ /sdd-audit
481
+ ```
482
+ Salida:
483
+ ```
484
+ 🔍 Reporte de Auditoría de Trazabilidad SDD-GL
485
+ =============================================
486
+ Total de Contratos Inspeccionados: 4
487
+ Puntaje de Cobertura de Especificación: 95.0%
488
+ Estado: ✅ Todas las especificaciones validadas en el código activo.
489
+ =============================================
490
+ ```
491
+
492
+ ### Generar el Dashboard Visual Vivo
493
+ Para generar o actualizar el dashboard visual interactivo en HTML con métricas y telemetría en tiempo real:
494
+ ```bash
495
+ # Mediante el generador de Node.js (genera docs/index.html)
496
+ node mcp/dashboard-gen.js
497
+
498
+ # O invoca la herramienta MCP desde tu IDE
499
+ # Herramienta: sdd_generate_dashboard
500
+ ```
501
+ Salida:
502
+ ```
503
+ 📊 Living Dashboard generado con éxito en: docs/index.html
504
+ 🌐 Listo para publicar en GitHub Pages o inspeccionar en navegador local.
505
+ ```
506
+
507
+ ---
508
+
509
+ ## Ejemplo de Contrato Completo
510
+
511
+ A continuación se presenta una especificación real (`Contract`) tras superar la fase de validación de **Gate** y justo antes de pasar al **Loop** autónomo de desarrollo:
512
+
513
+ ```markdown
514
+ # CONTRACT: Registrar un pago entre dos cuentas
515
+ # ID: FEAT-0001
516
+ # Status: APPROVED
517
+ # Mode: LOOP
518
+
519
+ ## Intent
520
+ Permitir que un usuario registre un pago desde una cuenta origen
521
+ hacia una cuenta destino, debitando y acreditando los saldos correspondientes.
522
+
523
+ ## Use Case
524
+ **Actor:** Usuario autenticado
525
+ **Goal:** Registrar un pago entre dos cuentas
526
+
527
+ ### Main Flow
528
+ 1. El usuario selecciona cuenta origen y cuenta destino
529
+ 2. El usuario ingresa el monto del pago
530
+ 3. El sistema registra el pago y actualiza los saldos
531
+
532
+ ### Alternative Flows
533
+ - AF-01: Saldo insuficiente → error INSUFFICIENT_FUNDS sin modificar saldos
534
+ - AF-02: Cuenta origen = cuenta destino → error SAME_ACCOUNT_NOT_ALLOWED
535
+ - AF-03: Cuenta no pertenece al usuario → error ACCOUNT_NOT_FOUND
536
+
537
+ ## Business Rules
538
+ - BR-001: El monto del pago debe ser mayor a cero
539
+ - BR-002: La cuenta origen debe tener saldo suficiente para cubrir el monto
540
+ - BR-003: La cuenta origen y destino no pueden ser la misma
541
+ - BR-004: La cuenta origen debe pertenecer al usuario autenticado
542
+ - BR-005: El estado inicial de todo pago registrado es PENDING
543
+
544
+ ## Acceptance Criteria
545
+ - AC-001: GIVEN cuenta origen con saldo 1000 y cuenta destino distinta
546
+ WHEN el usuario registra un pago de 200
547
+ THEN saldo origen queda en 800, saldo destino suma 200,
548
+ pago en estado COMPLETED
549
+ - AC-002: GIVEN cuenta origen con saldo 100
550
+ WHEN el usuario intenta registrar un pago de 500
551
+ THEN el sistema rechaza con INSUFFICIENT_FUNDS y ningún saldo cambia
552
+ - AC-003: GIVEN el usuario selecciona la misma cuenta como origen y destino
553
+ WHEN intenta registrar el pago
554
+ THEN el sistema rechaza con SAME_ACCOUNT_NOT_ALLOWED
555
+
556
+ ## Entities Affected
557
+ - Payment: monto, cuentaOrigen, cuentaDestino, fecha, estado
558
+ - Account: saldo
559
+
560
+ ## Ambiguity Log
561
+ - [x] BR-004: RESUELTO — cuenta destino puede pertenecer a cualquier usuario
562
+
563
+ ## Completion Map
564
+ # generated: 2026-08-03 10:30
565
+ # Main Flow | integration-test:FEAT-0001-main | coder+tester | ❌
566
+ # AF-01 | unit-test:FEAT-0001-af01 | tester | ❌
567
+ # AF-02 | unit-test:FEAT-0001-af02 | tester | ❌
568
+ # AF-03 | unit-test:FEAT-0001-af03 | tester | ❌
569
+ # BR-001 | unit-test:FEAT-0001-br001 | tester | ❌
570
+ # BR-002 | unit-test:FEAT-0001-br002 | tester | ❌
571
+ # BR-003 | unit-test:FEAT-0001-br003 | tester | ❌
572
+ # BR-004 | unit-test:FEAT-0001-br004 | tester | ❌
573
+ # BR-005 | unit-test:FEAT-0001-br005 | tester | ❌
574
+ # AC-001 | assertion:FEAT-0001-ac001 | tester | ❌
575
+ # AC-002 | assertion:FEAT-0001-ac002 | tester | ❌
576
+ # AC-003 | assertion:FEAT-0001-ac003 | tester | ❌
577
+ ```
578
+
579
+ ---
580
+
581
+ ## Caso de Estudio: Validación End-to-End del Framework
582
+
583
+ Para verificar la robustez y consistencia de la máquina de estados, los agentes y los bucles de reintentos de SDD-GL, validamos el ciclo de vida completo del framework utilizando un contrato complejo de **Cuenta de Fideicomiso (Escrow Agreement)** en un entorno de pruebas (validado bajo la ejecución de QA ID `62b817c9-f8bd-425d-af0a-84c642151b66`).
584
+
585
+ ### Fases del Ciclo de Validación
586
+
587
+ #### 1. Modo Gate y Detección de Contradicciones
588
+ * **Configuración**: Creamos un contrato en borrador (`FEAT-9999.md` en `Status: DRAFT` / `Mode: GATE`).
589
+ * **Inyección de Conflicto**: Especificamos la regla `BR-001` (el monto del fideicomiso debe ser positivo) pero redactamos un criterio incompatible `AC-002` (la inicialización del fideicomiso tiene éxito con un monto de 0).
590
+ * **Validación**: El `reviewer-agent` ejecutó el análisis de consistencia, detectó y bloqueó la contradicción con éxito, y la registró en el log de ambigüedades:
591
+ ```markdown
592
+ - [ ] BR-001 vs AC-002: Escrow amount must be positive, but AC-002 specifies that amount 0 succeeds.
593
+ ```
594
+ * **Resolución**: Corregimos `AC-002` para esperar un fallo de inicialización. Tras esto, la validación pasó con éxito y se generó el resumen pre-aprobado.
595
+
596
+ #### 2. Modo Loop y Reintento Guiado del Programador
597
+ * **Activación**: Cambiamos el contrato a `Status: APPROVED` y `Mode: LOOP`. El sistema autogeneró un Completion Map con 8 criterios de prueba.
598
+ * **Inyección de Defecto**: Introdujimos un error de programación en el cálculo de comisiones (comisión fija de `1.5` en lugar del `1.5%` del depósito).
599
+ * **Bucle TDD**: Ejecutar las pruebas falló en `AC-001`. Tras 3 intentos fallidos de implementación, el Loop invocó al `reviewer-agent`, el cual analizó el error y sugirió la fórmula correcta al programador:
600
+ ```javascript
601
+ this.feeCollected = 0.015 * this.deposited;
602
+ this.releasedAmount = this.deposited - this.feeCollected;
603
+ ```
604
+ * **Aplicación**: El `coder-agent` aplicó la sugerencia de corrección del revisor y las 8 pruebas pasaron exitosamente.
605
+
606
+ #### 3. Bloqueo en Loop y Escalado a Gate
607
+ * **Inyección de Ambigüedad**: Añadimos una regla de penalización por disputa (`BR-004`) sin definir el mecanismo de resolución de disputas ni quién pagaría dicha comisión.
608
+ * **Escalado**: El `tester-agent` marcó la regla como `NOT_WRITABLE` (no escribible) debido a la falta de especificación. El Loop detuvo la ejecución inmediatamente, registró el bloqueo en el `Ambiguity Log` y regresó el contrato a `DRAFT` / `GATE`:
609
+ ```markdown
610
+ - [ ] BR-004: The dispute penalty fee logic is ambiguous. The contract does not define how a dispute is resolved...
611
+ ```
612
+ * **Resolución**: Completamos los detalles de resolución de disputas en el contrato, re-aprobamos a modo `LOOP`, el coder implementó el código correspondiente y se reanudó la ejecución.
613
+
614
+ #### 4. Final Estructurado de Pruebas
615
+ Las 9 pruebas (unitarias, de integración y aserciones) pasaron con éxito, transicionando el contrato a `Status: RESOLVED`:
616
+ ```bash
617
+ ✔ Main Flow: Escrow lifecycle integration (1.34ms)
618
+ ✔ AF-01: Dispute period expires without action -> auto-release (0.19ms)
619
+ ✔ AF-02: Refund requested before dispute period expires -> block (0.55ms)
620
+ ✔ BR-001: Escrow amount must be positive (0.24ms)
621
+ ✔ BR-002: System fee of 1.5% is deducted upon release (0.24ms)
622
+ ✔ BR-003: Dispute period must be between 1 and 30 days (1.49ms)
623
+ ✔ BR-004: Dispute penalty fee of 3% is deducted upon dispute resolution favoring Seller (0.33ms)
624
+ ✔ AC-001: GIVEN dispute period 10 days WHEN release called THEN fee is 1.5% and remaining transferred (0.23ms)
625
+ ✔ AC-002: GIVEN escrow with amount 0 WHEN initialized THEN it fails (0.27ms)
626
+ ℹ tests 9 | pass 9 | fail 0
627
+ ```
628
+
629
+ ---
630
+
631
+ ## Los Seis Agentes Especializados
632
+
633
+ SDD-GL incluye seis agentes especializados que colaboran entre sí. No requieren configuración manual; el orquestador se encarga de invocarlos con el contexto adecuado en cada etapa del ciclo.
634
+
635
+ ### `requirements-agent`
636
+ Opera exclusivamente durante la fase de **Gate**. Completa las secciones del contrato (de forma iterativa en modo `STRICT` o en un solo paso en modo `EXPRESS`) para garantizar que no se omitan detalles. Formatea las reglas de negocio como invariantes lógicas y estructura los criterios de aceptación bajo el estándar GIVEN/WHEN/THEN.
637
+
638
+ ### `reviewer-agent`
639
+ Opera de manera transversal tanto en **Gate** como en **Loop**.
640
+ * En **Gate**, valida la consistencia lógica interna antes de la aprobación humana: detecta contradicciones entre reglas de negocio y criterios de aceptación, referencias a datos inexistentes y criterios no comprobables.
641
+ * En **Loop**, analiza los fallos tras tres intentos para discernir si se trata de un error de implementación (lo que provoca un reintento guiado) o de una ambigüedad conceptual en el contrato (lo que detiene el flujo y escala a Gate).
642
+
643
+ ### `coder-agent`
644
+ Opera únicamente durante la fase de **Loop**. Es el encargado de escribir el código de la aplicación y de subsanar los fallos estructurales reportados por las pruebas. Respeta fielmente las tecnologías y convenciones del proyecto (`CONSTITUTION.md`, `stack.md` o presets). Si requiere tomar una decisión de diseño no documentada, escala a Gate.
645
+
646
+ ### `tester-agent`
647
+ Opera durante la fase de **Loop**. Diseña y ejecuta la suite de pruebas funcionales para verificar cada regla de negocio (BR), flujo alternativo (AF) y criterio de aceptación (AC).
648
+
649
+ ### `verifier-agent`
650
+ Opera durante la fase de **Loop**. Ejecuta las capas no funcionales de verificación:
651
+ * **Análisis Estático y Tipos**: Valida sintaxis, tipado estricto y linters.
652
+ * **Escaneo de Seguridad**: Analiza vulnerabilidades, dependencias inseguras y fuga de secretos.
653
+ * **Guardrail Arquitectónico**: Garantiza el respeto a los límites de módulos y principios de `CONSTITUTION.md`.
654
+
655
+ ### `solve-agent`
656
+ Opera como un agente de autorreparación rápida en el **Loop**. Cuando `verifier-agent` o `tester-agent` detectan fallos acotados (lint, imports, tipado simple o ajustes menores en assertions), `solve-agent` aplica fixes localizados en $\le 3$ intentos, evitando costosas re-invocaciones al Coder. Tiene estrictamente prohibido alterar arquitectura o reglas de negocio.
657
+
658
+ ---
659
+
660
+ ## Casos de Uso Críticos y Robustez
661
+
662
+ El protocolo de SDD-GL está optimizado para lidiar con escenarios complejos del día a día, minimizando la pérdida de tiempo y el retrabajo.
663
+
664
+ ### 1. Detección de Contradicciones en la Fase Gate
665
+ Supongamos el siguiente conflicto lógico en la especificación:
666
+ ```markdown
667
+ BR-001: El monto debe ser mayor a cero.
668
+ AC-002: GIVEN monto=0 WHEN transfiere THEN el sistema acepta la transacción.
669
+ ```
670
+ * **Comportamiento**: El `reviewer-agent` identifica la inconsistencia de inmediato durante la fase de Gate. El sistema bloquea el cambio de estado a `APPROVED` y presenta al desarrollador las alternativas para corregirlo.
671
+ * **Importancia**: Evita la escritura de pruebas destinadas a fallar por incompatibilidad de requisitos, impidiendo que el Loop inicie con un diseño defectuoso.
672
+
673
+ ### 2. Recuperación ante Fallos (Crash Recovery) sin Pérdida de Progreso
674
+ Si la ejecución se interrumpe durante la fase de Loop (por ejemplo, debido a fallos de red, límites de llamadas a la API o interrupción de la consola), el estado actual se conserva intacto en el disco mediante el Completion Map:
675
+ ```markdown
676
+ # Main Flow | integration-test:FEAT-0001-main | coder+tester | ✅
677
+ # AF-01 | unit-test:FEAT-0001-af01 | tester | ✅
678
+ # AF-02 | unit-test:FEAT-0001-af02 | tester | ⏳ ← Interrumpido aquí
679
+ # BR-001 | unit-test:FEAT-0001-br001 | tester | ❌
680
+ ```
681
+ * **Comportamiento**: Al reanudar el comando, el Loop lee el archivo del mapa y retoma las tareas en el punto exacto donde se detuvo (`AF-02`). Las tareas completadas (`✅`) no se vuelven a ejecutar.
682
+ * **Importancia**: Garantiza la viabilidad del flujo autónomo en proyectos de gran envergadura o con extensas suites de pruebas.
683
+
684
+ ### 3. Resolución Incremental de Ambigüedades
685
+ El Loop detiene su ejecución y escala al desarrollador al primer bloqueo irresoluble o falta de definición de diseño que encuentre, en lugar de acumular suposiciones. Cada interacción Gate/Loop mantiene la coherencia histórica del Completion Map:
686
+ ```
687
+ Ciclo 1: Flujo Principal ✅, AFs ✅, BR-001..BR-002 ✅, BR-003 ❌ (Ambigüedad) → Escala a Gate
688
+ Ciclo 2: BR-003 ✅, BR-004 ✅, AC-001 ❌ (Ambigüedad) → Escala a Gate
689
+ Ciclo 3: AC-001 ✅, AC-002 ✅, AC-003 ✅ → Estado final: RESOLVED
690
+ ```
691
+ * **Importancia**: Resolver las dudas de manera secuencial evita que el código se desvíe de los requisitos del negocio y previene refactorizaciones masivas al final del proceso.
692
+
693
+ ---
694
+
695
+ ## Comparativa con Otras Metodologías
696
+
697
+ | Criterio / Característica | SDD-GL | AIUP (Martinelli) | Kiro | BMad |
698
+ | :--- | :--- | :--- | :--- | :--- |
699
+ | **Diseñado para** | 1 Desarrollador (Solo) | Equipos | Equipos | Equipos |
700
+ | **Control Humano** | Selectivo (solo en especificación) | En cada fase del ciclo | En cada fase del ciclo | En cada fase del ciclo |
701
+ | **Criterios de Aceptación (Done)** | Inferidos automáticamente | Definidos manualmente | Definidos manualmente | Definidos manualmente |
702
+ | **Recuperación ante Caídas** | ✅ Sí (Persistencia por ítem) | ❌ No | ❌ No | ❌ No |
703
+ | **Contradicciones en Validación** | ✅ Detectada antes de aprobar | ❌ No | Parcial | ❌ No |
704
+ | **Múltiples Ambigüedades** | ✅ Ciclos independientes | ❌ No | ❌ No | ❌ No |
705
+ | **Compatibilidad Tecnológica** | ✅ Stack-agnostic | Parcial (plugins específicos) | ❌ No | ❌ No |
706
+ | **Proyectos Existentes (Brownfield)**| ✅ Soportado (vía `/sdd-fix`) | Limitado | ❌ No | ❌ No |
707
+
708
+ ---
709
+
710
+ ## Recomendaciones de Uso
711
+
712
+ ### Cuándo utilizar `/sdd-feature`
713
+ - Desarrollo de nuevas funcionalidades con un dominio de datos no trivial (que involucren más de dos entidades).
714
+ - Modificaciones que impacten o redefinan las reglas de negocio preexistentes.
715
+ - Escenarios donde se requiera una trazabilidad rigurosa y documentada entre especificaciones y pruebas.
716
+
717
+ ### Cuándo utilizar `/sdd-fix`
718
+ - Corrección de fallos (bugs) donde el comportamiento erróneo actual y el esperado estén plenamente identificados.
719
+ - Regresiones de software (funcionalidad que previamente operaba de manera correcta).
720
+ - Parches críticos o urgentes que se beneficien de un proceso Gate simplificado.
721
+
722
+ ### Cuándo evitar el uso de SDD-GL
723
+ - Pruebas de concepto (spikes técnicos) o exploraciones libres de código sin criterios de aceptación iniciales.
724
+ - Tareas exclusivas de infraestructura, scripts de despliegue o cambios de configuración que no contengan lógica de negocio.
725
+ - Refactorizaciones puras que no alteren el comportamiento externo (puesto que no hay cambios en la especificación).
726
+ - Proyectos que no posean una base o suite de pruebas automatizadas (dado que el Loop requiere ejecutar tests para validar la completitud).
727
+
728
+ ### Recomendaciones para Redactar Especificaciones de Calidad
729
+ * **Reglas de Negocio (Business Rules)**: Defínelas como invariantes lógicas verificables en lugar de descripciones de comportamiento.
730
+ * ❌ `BR-001: El sistema debe validar el monto antes de procesar.`
731
+ * ✅ `BR-001: El monto de la transacción debe ser mayor a cero.`
732
+ * **Criterios de Aceptación (Acceptance Criteria)**: Asegúrate de que las condiciones `GIVEN` reflejen estados reproducibles de datos y no descripciones genéricas.
733
+ * ❌ `AC-001: GIVEN que el usuario tiene saldo suficiente WHEN realiza la transferencia THEN se procesa correctamente.`
734
+ * ✅ `AC-001: GIVEN una cuenta origen con saldo 1000 WHEN transfiere 200 THEN el saldo final de la cuenta origen queda en 800.`
735
+ * **Flujos Alternativos (Alternative Flows)**: Especifica claramente el resultado final esperado o el código de error correspondiente, no solo la condición detonante.
736
+ * ❌ `AF-01: Saldo insuficiente.`
737
+ * ✅ `AF-01: Saldo insuficiente → retorna el error INSUFFICIENT_FUNDS sin modificar saldos.`
738
+
739
+ ---
740
+
741
+ ## Alcance y Limitaciones
742
+
743
+ ### Lo que SDD-GL proporciona
744
+ - Un marco estructurado de trabajo y protocolo operativo (no incluye ni impone librerías en tu código).
745
+ - Orquestación automatizada de agentes para la redacción de especificaciones, desarrollo y generación de pruebas.
746
+ - Trazabilidad nativa entre las especificaciones del contrato y los casos de prueba generados.
747
+ - Validación temprana de inconsistencias conceptuales antes de la generación de código fuente.
748
+ - Persistencia de estados de ejecución para tolerar interrupciones del entorno.
749
+
750
+ ### Lo que SDD-GL no cubre
751
+ - No determina ni restringe los lenguajes, frameworks o herramientas de pruebas de tu stack tecnológico.
752
+ - No gestiona ni crea recursos de infraestructura (como contenedores de Docker, flujos de CI/CD o migraciones de base de datos).
753
+ - No pretende reemplazar herramientas de gestión de proyectos o tableros de incidencias (como Jira, GitHub Issues o Linear).
754
+ - No garantiza la idoneidad ni calidad de las pruebas si el contrato de origen posee fallos lógicos o está mal redactado.
755
+ - Requiere de un runtime compatible (como Claude Code o Antigravity CLI) para ejecutar los flujos del agente.
756
+
757
+ ### Limitaciones Conocidas (Versión 0.5.4)
758
+ * **No publicado en npm**: el binario `sdd` se distribuye en el repositorio (y vía `npx github:CharlyZeta/SDD-GL`); el paquete no está en el registro.
759
+ * **Los borradores del split necesitan una persona**: `sdd split --write` crea los stubs con los criterios asignados, pero la User Story y el Main Flow de cada parte se escriben a mano antes de aprobar.
760
+ * **La reconciliación es textual**: el hash cubre el texto normalizado del criterio, así que reformular una regla sin cambiar su significado también reabre el ítem.
761
+
762
+ ---
763
+
764
+ ## Estructura del Repositorio
765
+
766
+ ```
767
+ sdd-gl/
768
+ ├── README.md ← Documentación principal (inglés).
769
+ ├── README.es.md ← Documentación completa en español.
770
+ ├── CHANGELOG.md ← Historial de versiones (actual: 0.5.2).
771
+ ├── plugin.json ← Manifiesto del plugin y multiplataforma.
772
+ ├── package.json ← Manifiesto del paquete, scripts y el binario `sdd`.
773
+ ├── package-lock.json ← Árbol de dependencias bloqueado (CI usa `npm ci`).
774
+ ├── CLAUDE.md ← Orquestador para Claude Code.
775
+ ├── AGENTS.md ← Orquestador para Antigravity CLI e IDE.
776
+ ├── CONSTITUTION.md ← Leyes arquitectónicas y guardrails de seguridad.
777
+ ├── LICENSE ← MIT.
778
+ ├── bin/
779
+ │ └── sdd.js ← CLI: init, status, new, validate, next, report, approve, loop, graph, sync, doctor.
780
+ ├── docs/
781
+ │ ├── index.html ← Dashboard público del showcase (solo examples/, nunca los contratos privados).
782
+ │ ├── INSTALACION.md ← Instalación paso a paso por plataforma.
783
+ │ └── assets/
784
+ │ └── dashboard-sample.png ← Captura real de un proyecto de ejemplo.
785
+ ├── protocol/
786
+ │ ├── contract.md ← Formato del contrato, reglas de inferencia y presupuesto de atomicidad.
787
+ │ ├── gate.md ← Protocolo Gate (EXPRESS vs STRICT) y checklists.
788
+ │ ├── loop.md ← Protocolo Loop, reintentos, auditoría Glass Box y ruta de ambigüedad.
789
+ │ └── interop.md ← Interop con skills de comportamiento (precedencia, enrutado, cierre).
790
+ ├── presets/ ← Presets de stack sin configuración.
791
+ │ ├── java-spring-boot.md
792
+ │ ├── python-fastapi.md
793
+ │ └── typescript-node.md
794
+ ├── mcp/ ← Servidor MCP stdio y generador del dashboard.
795
+ │ ├── package.json
796
+ │ ├── server.js ← Servidor JSON-RPC, 8 tools, ledgers locales de calidad y uso.
797
+ │ ├── dashboard-gen.js ← Generador del dashboard (modo local y showcase público).
798
+ │ └── sdd-gl-mcp-spec.md ← Esquemas de tools y configuración por cliente.
799
+ ├── assets/
800
+ │ └── sdd-gl-cover.png
801
+ ├── examples/
802
+ │ └── contracts/ ← Contratos showcase públicos (curados y resueltos).
803
+ ├── contracts/ ← Specs de trabajo locales (gitignored — privadas).
804
+ ├── test-sandbox/ ← 15 suites: core, CLI, métricas, uso, CI, interop y fixtures.
805
+ ├── .claude/
806
+ │ ├── agents/ ← 6 adaptadores de agente (español).
807
+ │ └── commands/ ← 6 comandos slash.
808
+ ├── .agents/skills/ ← 14 skills (orquestadores y agentes, inglés).
809
+ └── .github/workflows/
810
+ └── test.yml ← CI: suite, chequeo de 8 tools, handshake stdio, árbol limpio.
811
+ ```
812
+
813
+ ---
814
+
815
+ ## Plan de Desarrollo (Roadmap)
816
+
817
+ ### Versión 0.1.0 — Núcleo Inicial (Publicada)
818
+ - [x] Máquina de estados fundamental Gate/Loop y modelo de gobernanza selectiva.
819
+ - [x] Inferencia de criterios de completitud y escalado mediante Ambiguity Log.
820
+ - [x] Persistencia de estado ítem por ítem y recuperación ante interrupciones.
821
+ - [x] Cuatro agentes integrados y comandos base (`/sdd-feature`, `/sdd-fix`, `/sdd-status`).
822
+
823
+ ### Versión 0.2.0 — Multiplataforma y Resiliencia Arquitectónica (Publicada)
824
+ - [x] Soporte nativo para Google Antigravity CLI e IDE (`AGENTS.md` + 9 habilidades especializadas).
825
+ - [x] Checklists diferenciados en Gate para Features (`FEAT`) vs. Bugfixes (`FIX`).
826
+ - [x] Límite de reintentos del revisor (máximo 1 ciclo guiado para eliminar bucles infinitos).
827
+ - [x] Manejo de escalado directo para estados `BLOCKED` (Coder) y `NOT_WRITABLE` (Tester).
828
+
829
+ ### Versión 0.3.0 — Gobernanza Adaptativa, Glass Box y Especificación MCP (Publicada)
830
+ - [x] Gobernanza Adaptativa en Gate (`GATE-EXPRESS` vs. `GATE-STRICT`).
831
+ - [x] Glass Box Loop con trazas de auditoría en `.sdd/runs/[ID]-[timestamp].md`.
832
+ - [x] Presets Oficiales de Stacks (Spring Boot, FastAPI, TypeScript).
833
+ - [x] Especificación formal del estándar Model Context Protocol (MCP).
834
+
835
+ ### Versión 0.4.0 — Verificación en Capas (AC/DC), Reparación Automática y Servidor MCP Ejecutable (Publicada)
836
+ - [x] **Protocolo de Verificación en Capas (Capa AC/DC)**: 4 capas de verificación (`functional`, `static`, `security`, `arch`) en formato tabular de una sola línea.
837
+ - [x] **Agente de Reparación Rápida (`solve-agent`)**: Autorreparación de hallazgos locales de sintaxis, tipado y lint en $\le 3$ intentos.
838
+ - [x] **Agente Verificador (`verifier-agent`)**: Ejecución autónoma de verificaciones estáticas, de seguridad y arquitectura.
839
+ - [x] **Métricas de Calidad (`/sdd-metrics`)**: Cálculo en tiempo real de First-Pass Quality Rate (FPQR) y reintentos vía `.sdd/metrics.json`.
840
+ - [x] **Auditoría de Trazabilidad (`/sdd-audit`)**: Detección automática de requisitos huérfanos y código de dominio no especificado.
841
+ - [x] **Servidor MCP Ejecutable (`sdd-gl`)**: Servidor JSON-RPC estándar en `mcp/server.js` con soporte para todas las herramientas.
842
+ - [x] **Constitución del Proyecto (`CONSTITUTION.md`)**: Guardrails de arquitectura y seguridad no negociables.
843
+
844
+ ### Versión 0.5.x — Interop, ledgers honestos, atomicidad y CLI real (Publicada)
845
+
846
+ - [x] **Interop con skills de comportamiento** (`protocol/interop.md`): precedencia del protocolo, enrutado de "preguntar" por el Ambiguity Log, ancla de trazabilidad, no-recorte del ceremonial y subordinación del cierre.
847
+ - [x] **Supuestos inferidos** (`AS-XX`): cada inferencia del requirements agent queda registrada y debe confirmarse antes de aprobar.
848
+ - [x] **Ledger determinista del Loop**: `sdd_step_loop` construye el mapa, reclama ítems y registra resultados reales; se eliminó el PASS simulado.
849
+ - [x] **Telemetría honesta**: `.sdd/metrics.json` y `.sdd/usage.json` son las únicas fuentes; el dashboard dice "sin datos" en lugar de inventar cifras.
850
+ - [x] **Línea de comandos**: `sdd init/status/new/validate/next/report/approve/loop/graph/sync/doctor`, con `--json`, códigos de salida estables y sin efectos en lectura.
851
+ - [x] **Contratos atómicos**: User Story obligatoria de un solo objetivo y presupuesto calibrado (`STORY_*`, `BUDGET_EXCEEDED`) con waivers explícitos.
852
+ - [x] **Formato neutro**: alias de secciones en inglés y español, tipo por front-matter y contratos resueltos por ID.
853
+ - [x] **CI** (`.github/workflows/test.yml`): suite, chequeo de 8 tools, handshake stdio y árbol limpio.
854
+ - [x] **Eventos de corrida estructurados**: `.sdd/runs/<ID>/events.ndjson` para informes y analítica futura.
855
+ - [x] **Grafo `depends_on`**: `sdd graph` ordena la ejecución y detecta ciclos; `sdd next` lo respeta.
856
+ - [x] **`sdd split`**: propone el corte de un contrato sobredimensionado por componente o por presupuesto, y `--write` crea los borradores DRAFT.
857
+ - [x] **Guarda de plantilla**: un DRAFT que todavía tiene texto de plantilla (`[completar]`, `[context]`) queda `INCOMPLETE`.
858
+ - [x] **`sdd review`**: heatmap de cobertura por contrato. Un criterio cuenta solo si un test que nombra el contrato lo cita en su título, así dos contratos que comparten `BR-001` no se absorben la cobertura.
859
+ - [x] **Invalidación por criterio**: cada criterio guarda un hash de su texto; editar una regla reabre solo ese ítem, una regla nueva se agrega y una eliminada se quita. Un cambio en el Main Flow reinicia sus cuatro filas de capa.
860
+
861
+ ### Versión 0.6.0 — Paquete publicable (Listo)
862
+
863
+ - [x] `files`, `repository`, `engines` y `publishConfig` curados; `prepublishOnly` corre la suite antes de publicar.
864
+ - [x] Un test verifica que el tarball lleve la herramienta y nunca `contracts/`, `.sdd/` ni `test-sandbox/`.
865
+ - [ ] Ejecutar `npm publish` con la cuenta del dueño.
866
+
867
+ ### Backlog de Ideas
868
+ - [ ] Integración nativa con sistemas de tickets e incidencias (GitHub Issues, Linear, Jira).
869
+ - [ ] Paralelización multiagente para agilizar el procesamiento en contratos con un alto volumen de criterios.
870
+ - [ ] Modo de simulación (`dry-run`) para previsualizar el comportamiento del Loop sin escribir código.
871
+
872
+ ---
873
+
874
+ ## Contribuir
875
+
876
+ SDD-GL se encuentra en una etapa de desarrollo activo y abierto a mejoras. Valoramos especialmente las contribuciones en las siguientes áreas:
877
+
878
+ 1. **Reportes de Casos no Cubiertos**: Si identificas un escenario donde el protocolo de Gate/Loop falle o actúe de manera inconsistente, abre un *issue* describiendo detalladamente el contrato de origen, el comportamiento obtenido y el esperado.
879
+ 2. **Presets de Stacks**: Diseños de agentes adaptados (`coder-agent.md` y `tester-agent.md`) optimizados para tecnologías concretas.
880
+ 3. **Evolución del Formato del Contrato**: Propuestas de extensión de la tabla de inferencia para dar soporte a nuevos criterios lógicos en las especificaciones.
881
+
882
+ Para contribuir, realiza un fork del repositorio, crea una rama temática (feature branch) y envía un *Pull Request* con una descripción clara del caso que resuelve.
883
+
884
+ ---
885
+
886
+ ## Licencia
887
+
888
+ Este proyecto se distribuye bajo la [Licencia MIT](LICENSE). Consulta el archivo adjunto para más información.
889
+
890
+ Copyright © 2026 [Gerardo Maidana](https://github.com/CharlyZeta) ([LinkedIn](https://www.linkedin.com/in/gerardomaidana)).
891
+
892
+ ---
893
+
894
+ *Nota: SDD-GL converge de manera independiente con patrones metodológicos que se están formalizando en el ecosistema de desarrollo moderno (como la iniciativa AIUP de Simon Martinelli). La diferencia fundamental radica en que SDD-GL está optimizado para el desarrollador en solitario, donde un esquema de gobernanza selectiva aporta mayor agilidad que un modelo de aprobación colegiado.*
895
+
896
+ ---
897
+
898
+ ## Integración con Antigravity CLI y Antigravity IDE
899
+
900
+ SDD-GL cuenta con soporte nativo para **Antigravity CLI** y **Antigravity IDE**, compartiendo exactamente el mismo núcleo metodológico y de protocolo. Únicamente varían las rutas de despliegue y las envolturas (wrappers) de comandos.
901
+
902
+ ### Configuración en Antigravity CLI (`agy`)
903
+
904
+ #### Instalación Global (Disponible para cualquier proyecto)
905
+ Clona el repositorio en la carpeta de extensiones globales de Antigravity:
906
+ ```bash
907
+ git clone https://github.com/CharlyZeta/sdd-gl ~/.gemini/antigravity-cli/plugins/sdd-gl
908
+ ```
909
+ Verifica la correcta carga de comandos listando las habilidades instaladas:
910
+ ```bash
911
+ agy /skills
912
+ # Deberías visualizar: sdd-gate, sdd-loop, sdd-feature, sdd-fix y sdd-status.
913
+ ```
914
+
915
+ #### Instalación Local (Por proyecto)
916
+ Si prefieres integrarlo a nivel del espacio de trabajo:
917
+ ```bash
918
+ mkdir -p .agents/skills
919
+ git clone https://github.com/CharlyZeta/sdd-gl /tmp/sdd-gl
920
+ cp -r /tmp/sdd-gl/.agents/skills/* .agents/skills/
921
+ cp -r /tmp/sdd-gl/protocol .
922
+ cp /tmp/sdd-gl/AGENTS.md .
923
+ mkdir -p contracts
924
+ ```
925
+
926
+ ### Integración con Antigravity IDE
927
+ Los componentes alojados en el directorio `.agents/skills/` son leídos e incorporados de manera automática por Antigravity IDE al indexar el proyecto. Utiliza la estructura indicada en la instalación local.
928
+
929
+ ### Interacción y Ejecución en Antigravity
930
+ El flujo es idéntico a Claude Code. Puedes utilizar comandos explícitos:
931
+ ```
932
+ /sdd-feature "Nueva funcionalidad de pagos"
933
+ /sdd-fix "El saldo no se actualiza cuando falla el pago"
934
+ /sdd-status
935
+ ```
936
+ Adicionalmente, Antigravity soporta detección de intención mediante lenguaje natural, traduciendo tus peticiones a la habilidad correcta:
937
+ * *"Quiero iniciar una nueva funcionalidad para transferencias internacionales"* → Dispara `/sdd-feature`.
938
+ * *"El contrato FEAT-0002 ha sido aprobado, inicia la implementación"* → Dispara `/sdd-loop`.
939
+
940
+ ### Equivalencias Técnicas del Entorno
941
+
942
+ | Aspecto | Claude Code | Entorno Antigravity |
943
+ | :--- | :--- | :--- |
944
+ | **Orquestador Principal** | `CLAUDE.md` | `AGENTS.md` |
945
+ | **Definición de Comandos** | `.claude/commands/*.md` | `.agents/skills/*/SKILL.md` |
946
+ | **Definición de Agentes** | `.claude/agents/*.md` | `.agents/skills/*/SKILL.md` |
947
+ | **Mapeo de Activación** | `/comando` explícito | Comandos explícitos o detección de lenguaje natural |
948
+ | **Modelo Recomendado** | Claude 3.5 Sonnet | Gemini 1.5 Pro / Flash |
949
+ | **Protocolo Operativo** | Carpeta `protocol/` (Idéntico) | Carpeta `protocol/` (Idéntico) |
950
+ | **Ubicación de Contratos**| Carpeta `contracts/` (Idéntico) | Carpeta `contracts/` (Idéntico) |
951
+
952
+ El protocolo (Gate/Loop/Contract) es 100% portable. Lo que cambia entre plataformas es solo la capa de integración con el agente, no la lógica del proceso.
953
+