trackops 1.0.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/LICENSE +21 -0
- package/README.md +358 -0
- package/bin/trackops.js +103 -0
- package/lib/config.js +97 -0
- package/lib/control.js +575 -0
- package/lib/i18n.js +53 -0
- package/lib/init.js +200 -0
- package/lib/opera.js +202 -0
- package/lib/registry.js +182 -0
- package/lib/server.js +451 -0
- package/lib/skills.js +159 -0
- package/locales/en.json +142 -0
- package/locales/es.json +142 -0
- package/package.json +46 -0
- package/templates/etapa/agent.md +26 -0
- package/templates/etapa/genesis.md +94 -0
- package/templates/etapa/references/autonomy-and-recovery.md +117 -0
- package/templates/etapa/references/etapa-cycle.md +193 -0
- package/templates/etapa/registry.md +28 -0
- package/templates/etapa/router.md +39 -0
- package/templates/hooks/post-checkout +2 -0
- package/templates/hooks/post-commit +2 -0
- package/templates/hooks/post-merge +2 -0
- package/templates/opera/agent.md +26 -0
- package/templates/opera/genesis.md +94 -0
- package/templates/opera/references/autonomy-and-recovery.md +117 -0
- package/templates/opera/references/opera-cycle.md +193 -0
- package/templates/opera/registry.md +28 -0
- package/templates/opera/router.md +39 -0
- package/templates/skills/changelog-updater/SKILL.md +69 -0
- package/templates/skills/commiter/SKILL.md +99 -0
- package/templates/skills/project-starter-skill/SKILL.md +202 -0
- package/templates/skills/project-starter-skill/references/opera-cycle.md +193 -0
- package/ui/app.js +950 -0
- package/ui/index.html +356 -0
- package/ui/styles.css +688 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# El Ciclo E.T.A.P.A. — Referencia Completa
|
|
2
|
+
|
|
3
|
+
Este documento detalla cada fase del ciclo con sus reglas, procedimientos y Definitions of Done.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1️⃣ E — Estrategia (Visión y Lógica)
|
|
8
|
+
|
|
9
|
+
### Descubrimiento
|
|
10
|
+
|
|
11
|
+
Haz al usuario las 5 preguntas clave:
|
|
12
|
+
|
|
13
|
+
1. **Directriz Principal**: ¿Cuál es el resultado singular deseado?
|
|
14
|
+
2. **Integraciones**: ¿Qué servicios externos necesitamos? ¿Están listas las claves?
|
|
15
|
+
3. **Fuente de la Verdad**: ¿Dónde viven los datos primarios?
|
|
16
|
+
4. **Carga Útil (Payload)**: ¿Cómo y dónde debe entregarse el resultado final?
|
|
17
|
+
5. **Reglas de Comportamiento**: Restricciones o tono específico.
|
|
18
|
+
|
|
19
|
+
### Regla "Datos-Primero"
|
|
20
|
+
|
|
21
|
+
Antes de pasar a la siguiente fase, DEBES definir el **Esquema de Datos JSON** (Input/Output) en `genesis.md`.
|
|
22
|
+
|
|
23
|
+
Ejemplo de schema en genesis.md:
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"input": {
|
|
28
|
+
"source": "API externa",
|
|
29
|
+
"schema": {
|
|
30
|
+
"id": "string (UUID)",
|
|
31
|
+
"timestamp": "ISO 8601",
|
|
32
|
+
"data": "object"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"output": {
|
|
36
|
+
"destination": "webhook POST",
|
|
37
|
+
"schema": {
|
|
38
|
+
"processed_id": "string (UUID)",
|
|
39
|
+
"result": "object",
|
|
40
|
+
"status": "enum: success|error"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Definition of Done — Fase E
|
|
47
|
+
|
|
48
|
+
- [ ] Las 5 preguntas de descubrimiento están respondidas.
|
|
49
|
+
- [ ] Esquema JSON de Input/Output definido en `genesis.md`.
|
|
50
|
+
- [ ] Reglas de comportamiento documentadas en `genesis.md`.
|
|
51
|
+
- [ ] `task_plan.md` tiene plano aprobado por el usuario.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 2️⃣ T — Tests (Conectividad)
|
|
56
|
+
|
|
57
|
+
Verifica las tuberías antes de pasar el agua. El objetivo es confirmar que todos los servicios externos responden y devuelven datos con la forma esperada.
|
|
58
|
+
|
|
59
|
+
### Procedimiento
|
|
60
|
+
|
|
61
|
+
1. **Verificación de credenciales**: Lee `.env` y confirma que todas las claves necesarias existen y no están vacías.
|
|
62
|
+
2. **Handshake**: Construye scripts mínimos en `tools/` (ej: `test_api.py`) para verificar cada servicio.
|
|
63
|
+
3. **Validación de Shape**: No basta con un HTTP 200. Verifica que la respuesta coincide con el schema definido en `genesis.md`. Compara campos, tipos de datos y estructura.
|
|
64
|
+
4. **Bloqueo**: Si algún test falla, NO procedas a la fase de Arquitectura. Documenta el fallo en `findings.md`.
|
|
65
|
+
|
|
66
|
+
### Ejemplo de test mínimo
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
# tools/test_api.py
|
|
70
|
+
import os
|
|
71
|
+
import requests
|
|
72
|
+
|
|
73
|
+
API_KEY = os.getenv("API_KEY")
|
|
74
|
+
BASE_URL = os.getenv("API_BASE_URL")
|
|
75
|
+
|
|
76
|
+
def test_connection():
|
|
77
|
+
"""Verifica conexión y shape de respuesta."""
|
|
78
|
+
response = requests.get(f"{BASE_URL}/health", headers={"Authorization": f"Bearer {API_KEY}"})
|
|
79
|
+
assert response.status_code == 200, f"Expected 200, got {response.status_code}"
|
|
80
|
+
data = response.json()
|
|
81
|
+
assert "id" in data, "Missing 'id' field in response"
|
|
82
|
+
assert "status" in data, "Missing 'status' field in response"
|
|
83
|
+
print("✅ API connection and shape validated")
|
|
84
|
+
|
|
85
|
+
if __name__ == "__main__":
|
|
86
|
+
test_connection()
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Definition of Done — Fase T
|
|
90
|
+
|
|
91
|
+
- [ ] Todas las credenciales `.env` verificadas (existen y no están vacías).
|
|
92
|
+
- [ ] Scripts `test_*.py` ejecutados y pasando.
|
|
93
|
+
- [ ] Respuestas de APIs validadas contra el schema de `genesis.md`.
|
|
94
|
+
- [ ] Resultados documentados en `findings.md`.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 3️⃣ A — Arquitectura (La Construcción de 3 Capas)
|
|
99
|
+
|
|
100
|
+
### Capa 1: Arquitectura (`architecture/`)
|
|
101
|
+
|
|
102
|
+
SOPs (Standard Operating Procedures) técnicos en Markdown. Cada SOP define:
|
|
103
|
+
|
|
104
|
+
- Propósito del script.
|
|
105
|
+
- Entradas esperadas (con referencia al schema en `genesis.md`).
|
|
106
|
+
- Salidas producidas.
|
|
107
|
+
- Casos extremos y cómo manejarlos.
|
|
108
|
+
- Dependencias con otras herramientas.
|
|
109
|
+
|
|
110
|
+
**Regla**: Si la lógica cambia, actualiza el SOP **antes** que el código.
|
|
111
|
+
|
|
112
|
+
### Capa 2: Navegación (El Agente)
|
|
113
|
+
|
|
114
|
+
Capa de razonamiento. Enruta datos entre SOPs y herramientas. No ejecuta lógica de negocio directamente; delega a los scripts.
|
|
115
|
+
|
|
116
|
+
### Capa 3: Herramientas (`tools/`)
|
|
117
|
+
|
|
118
|
+
- Scripts atómicos y deterministas.
|
|
119
|
+
- Las variables de entorno van en `.env`.
|
|
120
|
+
- Usa `.tmp/` para todas las operaciones intermedias.
|
|
121
|
+
- Cada script hace UNA cosa bien.
|
|
122
|
+
|
|
123
|
+
### Regla de Idempotencia
|
|
124
|
+
|
|
125
|
+
Toda herramienta DEBE ser idempotente. Herramientas con side-effects irreversibles se marcan:
|
|
126
|
+
|
|
127
|
+
```python
|
|
128
|
+
# META: side-effect: true
|
|
129
|
+
# META: idempotent: false
|
|
130
|
+
# META: requires-confirmation: true
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Grafo de Dependencias
|
|
134
|
+
|
|
135
|
+
Si una herramienta produce output que consume otra, documéntalo en `genesis.md` bajo `## Pipeline`:
|
|
136
|
+
|
|
137
|
+
```markdown
|
|
138
|
+
## Pipeline
|
|
139
|
+
### tool_fetch.py → tool_transform.py
|
|
140
|
+
- Output: `.tmp/raw_data.json`
|
|
141
|
+
- Formato: JSON array según schema X
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Definition of Done — Fase A
|
|
145
|
+
|
|
146
|
+
- [ ] SOPs escritos en `architecture/` para cada herramienta.
|
|
147
|
+
- [ ] Scripts implementados en `tools/`.
|
|
148
|
+
- [ ] Grafo de dependencias documentado en `genesis.md`.
|
|
149
|
+
- [ ] Tests de integración entre herramientas pasando.
|
|
150
|
+
- [ ] Herramientas con side-effects marcadas con META tags.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 4️⃣ P — Pulido (Refinamiento)
|
|
155
|
+
|
|
156
|
+
### Templates de Output
|
|
157
|
+
|
|
158
|
+
Toda salida del sistema se valida contra una plantilla definida en `templates/`. Las plantillas se referencian desde `genesis.md` bajo `## Templates`.
|
|
159
|
+
|
|
160
|
+
El pulido no es subjetivo; es verificable contra una plantilla. Si el output no coincide con el template, no pasa.
|
|
161
|
+
|
|
162
|
+
### Refinamiento de Carga Útil
|
|
163
|
+
|
|
164
|
+
Formatea todas las salidas (Markdown, HTML, JSON limpio) para entrega profesional según lo definido en `genesis.md`.
|
|
165
|
+
|
|
166
|
+
### UX/UI
|
|
167
|
+
|
|
168
|
+
Si el proyecto tiene interfaz, aplica diseños limpios e intuitivos según las especificaciones.
|
|
169
|
+
|
|
170
|
+
### Definition of Done — Fase P
|
|
171
|
+
|
|
172
|
+
- [ ] Todas las salidas validadas contra sus templates en `templates/`.
|
|
173
|
+
- [ ] Formatos de entrega (Markdown, HTML, JSON) verificados.
|
|
174
|
+
- [ ] Si hay interfaz: revisión visual completada.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 5️⃣ A — Automatización (Despliegue)
|
|
179
|
+
|
|
180
|
+
### Procedimiento
|
|
181
|
+
|
|
182
|
+
1. **Limpieza**: Elimina residuos de `.tmp/`.
|
|
183
|
+
2. **Transferencia**: Mueve la lógica finalizada a producción/nube.
|
|
184
|
+
3. **Configuración**: Establece los disparadores (Cron, Webhooks).
|
|
185
|
+
4. **Smoke Test**: Verificación mínima en el entorno de producción.
|
|
186
|
+
|
|
187
|
+
### Definition of Done — Fase A (final)
|
|
188
|
+
|
|
189
|
+
- [ ] `.tmp/` limpio (sin archivos residuales).
|
|
190
|
+
- [ ] Código desplegado en destino final.
|
|
191
|
+
- [ ] Triggers configurados y verificados.
|
|
192
|
+
- [ ] Smoke test en producción pasando.
|
|
193
|
+
- [ ] `progress.md` actualizado con estado final.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Skills Registry — {{PROJECT_NAME}}
|
|
2
|
+
|
|
3
|
+
> Índice de skills instaladas en este proyecto. Gestionado automáticamente por `trackops skill`.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Skills Instaladas
|
|
8
|
+
|
|
9
|
+
_Sin skills instaladas. Usa `trackops skill install <nombre>` para añadir una._
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Cómo Usar una Skill
|
|
14
|
+
|
|
15
|
+
1. Identifica el contexto en `.agent/hub/router.md`.
|
|
16
|
+
2. Abre el archivo `SKILL.md` de la skill correspondiente.
|
|
17
|
+
3. Sigue las instrucciones del protocolo definido en la skill.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Gestión
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
trackops skill list # Ver skills instaladas
|
|
25
|
+
trackops skill catalog # Ver skills disponibles
|
|
26
|
+
trackops skill install <n> # Instalar una skill
|
|
27
|
+
trackops skill remove <n> # Desinstalar una skill
|
|
28
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Router de Skills
|
|
2
|
+
|
|
3
|
+
## Propósito
|
|
4
|
+
Este archivo define las reglas de enrutamiento entre el agente principal y las skills disponibles. Cuando el agente detecta un contexto específico, consulta estas reglas para decidir qué skill invocar.
|
|
5
|
+
|
|
6
|
+
## Reglas de Enrutamiento
|
|
7
|
+
|
|
8
|
+
### Contexto: Commit de código
|
|
9
|
+
- **Trigger**: El usuario pide hacer un commit o se completa un cambio de código.
|
|
10
|
+
- **Skill**: `commiter`
|
|
11
|
+
- **Acción**: Consulta la skill para formatear el mensaje de commit.
|
|
12
|
+
|
|
13
|
+
### Contexto: Post-commit
|
|
14
|
+
- **Trigger**: Se acaba de realizar un commit exitoso.
|
|
15
|
+
- **Skill**: `changelog-updater`
|
|
16
|
+
- **Acción**: Ejecuta el script de actualización del changelog.
|
|
17
|
+
|
|
18
|
+
### Contexto: Inicialización de proyecto
|
|
19
|
+
- **Trigger**: El usuario quiere crear un nuevo proyecto.
|
|
20
|
+
- **Skill**: `project-starter-skill` (global)
|
|
21
|
+
- **Acción**: Ejecutar el protocolo de inicialización completo.
|
|
22
|
+
|
|
23
|
+
### Contexto: Seguimiento operativo
|
|
24
|
+
- **Trigger**: Se va a empezar, retomar o cerrar un bloque de trabajo.
|
|
25
|
+
- **Skill**: No aplica skill externa.
|
|
26
|
+
- **Acción**: Ejecutar `trackops status`, tomar la siguiente tarea con `trackops next` y mantener `project_control.json` como fuente de verdad operativa.
|
|
27
|
+
|
|
28
|
+
## Cómo Añadir Nuevas Reglas
|
|
29
|
+
|
|
30
|
+
Cada regla sigue este formato:
|
|
31
|
+
|
|
32
|
+
```markdown
|
|
33
|
+
### Contexto: [descripción]
|
|
34
|
+
- **Trigger**: [qué activa la regla]
|
|
35
|
+
- **Skill**: [nombre de la skill]
|
|
36
|
+
- **Acción**: [qué debe hacer el agente]
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Al instalar una nueva skill con `trackops skill install <nombre>`, añade su regla de enrutamiento aquí.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Agente del Proyecto: {{PROJECT_NAME}}
|
|
2
|
+
|
|
3
|
+
## Identidad
|
|
4
|
+
Eres el agente principal del proyecto **{{PROJECT_NAME}}**. Operas bajo el protocolo O.P.E.R.A. v3.0.
|
|
5
|
+
|
|
6
|
+
## Fuente de Verdad
|
|
7
|
+
Tu fuente de verdad es `genesis.md`. Antes de tomar cualquier decisión, consulta este archivo.
|
|
8
|
+
Para el seguimiento operativo y el estado del backlog, usa `project_control.json`.
|
|
9
|
+
|
|
10
|
+
## Comportamiento
|
|
11
|
+
- Sigue las reglas de comportamiento definidas en `genesis.md`.
|
|
12
|
+
- Respeta la Matriz de Autonomía (Semáforo) para determinar qué acciones puedes tomar.
|
|
13
|
+
- Gestiona tareas y estados desde `project_control.json`.
|
|
14
|
+
- No edites manualmente `task_plan.md`, `progress.md` ni `findings.md`; se regeneran con `trackops sync`.
|
|
15
|
+
|
|
16
|
+
## Skills Disponibles
|
|
17
|
+
Consulta `.agent/skills/_registry.md` para ver las skills instaladas.
|
|
18
|
+
También puedes buscar nuevas skills con `trackops skill catalog`.
|
|
19
|
+
|
|
20
|
+
## Ciclo de Trabajo
|
|
21
|
+
1. Ejecuta `trackops status` al inicio de cada bloque de trabajo.
|
|
22
|
+
2. Consulta `genesis.md` para entender los datos y reglas.
|
|
23
|
+
3. Usa `trackops next` para ver la siguiente cola priorizada.
|
|
24
|
+
4. Antes de implementar, marca la tarea con `trackops task start <task-id>`.
|
|
25
|
+
5. Usa el router (`.agent/hub/router.md`) para saber qué skill aplicar.
|
|
26
|
+
6. Al terminar, pasa la tarea a `review`, `complete` o `block` y ejecuta `trackops sync`.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# {{PROJECT_NAME}} — Genesis
|
|
2
|
+
|
|
3
|
+
> **La Constitución del proyecto.** Este documento es la fuente de verdad. Antes de tomar cualquier decisión arquitectónica o de implementación, consulta este archivo. Si un script contradice lo definido aquí, el script está mal.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Directriz Principal
|
|
8
|
+
|
|
9
|
+
_¿Cuál es el resultado singular deseado de este proyecto?_
|
|
10
|
+
|
|
11
|
+
> TODO: Definir el objetivo principal del proyecto.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 2. Integraciones Externas
|
|
16
|
+
|
|
17
|
+
_¿Qué servicios externos necesitamos? ¿Están listas las claves?_
|
|
18
|
+
|
|
19
|
+
| Servicio | Estado | Clave / Config |
|
|
20
|
+
|----------|--------|----------------|
|
|
21
|
+
| — | — | — |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 3. Fuente de la Verdad
|
|
26
|
+
|
|
27
|
+
_¿Dónde viven los datos primarios?_
|
|
28
|
+
|
|
29
|
+
> TODO: Describir la fuente de datos principal.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 4. Carga Útil (Payload)
|
|
34
|
+
|
|
35
|
+
_¿Cómo y dónde debe entregarse el resultado final?_
|
|
36
|
+
|
|
37
|
+
> TODO: Describir destino y formato de entrega.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 5. Reglas de Comportamiento
|
|
42
|
+
|
|
43
|
+
_Restricciones, tono y reglas específicas del dominio._
|
|
44
|
+
|
|
45
|
+
> TODO: Definir restricciones de negocio.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Esquema de Datos
|
|
50
|
+
|
|
51
|
+
> **Regla "Datos-Primero"**: Este schema debe estar definido antes de escribir cualquier código.
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"input": {
|
|
56
|
+
"source": "",
|
|
57
|
+
"schema": {}
|
|
58
|
+
},
|
|
59
|
+
"output": {
|
|
60
|
+
"destination": "",
|
|
61
|
+
"schema": {}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Invariantes Arquitectónicas
|
|
69
|
+
|
|
70
|
+
_Decisiones técnicas inamovibles. Cambiarlas requiere aprobación explícita (Nivel Rojo)._
|
|
71
|
+
|
|
72
|
+
- TODO: Listar invariantes.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Pipeline
|
|
77
|
+
|
|
78
|
+
_Documenta el grafo de dependencias entre herramientas._
|
|
79
|
+
|
|
80
|
+
<!-- Ejemplo:
|
|
81
|
+
### tool_fetch.py → tool_transform.py
|
|
82
|
+
- Output: `.tmp/raw_data.json`
|
|
83
|
+
- Formato: JSON array según schema X
|
|
84
|
+
-->
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Templates
|
|
89
|
+
|
|
90
|
+
_Referencias a las plantillas de output definidas en `templates/`._
|
|
91
|
+
|
|
92
|
+
<!-- Ejemplo:
|
|
93
|
+
- `templates/report.md` — Plantilla para reportes
|
|
94
|
+
-->
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Gobernanza, Autonomía y Recuperación
|
|
2
|
+
|
|
3
|
+
Este documento define los niveles de permiso, el protocolo de auto-reparación y el sistema de rollback para el proyecto.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🚦 Matriz de Autonomía (Semáforo)
|
|
8
|
+
|
|
9
|
+
### 🔴 NIVEL ROJO — Detente y Pide Permiso
|
|
10
|
+
|
|
11
|
+
Estas acciones requieren aprobación explícita del usuario antes de ejecutarse:
|
|
12
|
+
|
|
13
|
+
- Modificar la estructura de datos o reglas en `genesis.md`.
|
|
14
|
+
- Eliminar datos persistentes o archivos fuera de `.tmp/`.
|
|
15
|
+
- Despliegue final a producción (Fase de Automatizar).
|
|
16
|
+
- Envío de comunicaciones reales a terceros (emails, webhooks con side-effects).
|
|
17
|
+
- Creación de repositorios o recursos en servicios externos (GitHub, cloud).
|
|
18
|
+
- Modificar configuraciones de acceso o seguridad.
|
|
19
|
+
|
|
20
|
+
### 🟡 NIVEL AMARILLO — Avanza con Precaución
|
|
21
|
+
|
|
22
|
+
Estas acciones se pueden ejecutar pero requieren documentación inmediata:
|
|
23
|
+
|
|
24
|
+
- Instalación de dependencias nuevas.
|
|
25
|
+
- Modificaciones a la estructura de directorios.
|
|
26
|
+
- Cambios en el pipeline documentado en `genesis.md`.
|
|
27
|
+
|
|
28
|
+
### 🟢 NIVEL VERDE — Avanza con Confianza
|
|
29
|
+
|
|
30
|
+
Estas acciones no requieren permiso:
|
|
31
|
+
|
|
32
|
+
- Creación, edición y corrección de scripts en `tools/`.
|
|
33
|
+
- Lectura de archivos y documentación.
|
|
34
|
+
- Ejecución de pruebas (Tests).
|
|
35
|
+
- Actualización de `progress.md`, `findings.md` y `task_plan.md`.
|
|
36
|
+
- Instalación de skills del ecosistema.
|
|
37
|
+
- Escritura y limpieza de archivos en `.tmp/`.
|
|
38
|
+
- Auto-Reparación (con límite de reintentos).
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 🛠️ Principio de Auto-Templado (Self-Annealing)
|
|
43
|
+
|
|
44
|
+
Cuando una herramienta falla o ocurre un error en Nivel Verde, sigue este protocolo:
|
|
45
|
+
|
|
46
|
+
### Procedimiento
|
|
47
|
+
|
|
48
|
+
1. **Analizar**: Lee el stack trace completo. No adivines la causa.
|
|
49
|
+
2. **Parchear**: Arregla el script en `tools/`.
|
|
50
|
+
3. **Probar**: Verifica que el arreglo funciona ejecutando el script.
|
|
51
|
+
4. **Actualizar Memoria**: Documenta el aprendizaje en `findings.md` o en el SOP correspondiente en `architecture/` para que el error nunca se repita.
|
|
52
|
+
|
|
53
|
+
### Límite de Reintentos
|
|
54
|
+
|
|
55
|
+
**Máximo 3 intentos de auto-reparación por error.** Si al tercer intento el error persiste:
|
|
56
|
+
|
|
57
|
+
1. **Escalar a Nivel Rojo** — Pide intervención humana.
|
|
58
|
+
2. **Documentar el bloqueo** en `findings.md` con:
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
## Bloqueo: [nombre del error]
|
|
62
|
+
### Fecha: [YYYY-MM-DD]
|
|
63
|
+
### Script: [tools/nombre.py]
|
|
64
|
+
|
|
65
|
+
### Stack Trace
|
|
66
|
+
[pegar stack trace completo]
|
|
67
|
+
|
|
68
|
+
### Intentos de Reparación
|
|
69
|
+
1. **Intento 1**: [qué se intentó] → [resultado]
|
|
70
|
+
2. **Intento 2**: [qué se intentó] → [resultado]
|
|
71
|
+
3. **Intento 3**: [qué se intentó] → [resultado]
|
|
72
|
+
|
|
73
|
+
### Hipótesis del Problema Raíz
|
|
74
|
+
[análisis de por qué crees que falla]
|
|
75
|
+
|
|
76
|
+
### Acción Requerida
|
|
77
|
+
[qué necesitas del usuario para desbloquear]
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Lo que NO es Auto-Templado
|
|
81
|
+
|
|
82
|
+
- No es reintentar ciegamente el mismo comando esperando un resultado diferente.
|
|
83
|
+
- No es ignorar el error y continuar.
|
|
84
|
+
- No es cambiar el schema en `genesis.md` para que el error "desaparezca".
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 🔄 Protocolo de Rollback
|
|
89
|
+
|
|
90
|
+
Si una fase posterior invalida una decisión de una fase anterior, NO modifiques `genesis.md` directamente.
|
|
91
|
+
|
|
92
|
+
### Procedimiento
|
|
93
|
+
|
|
94
|
+
1. **Documentar** en `CHANGELOG.md` qué cambio se necesita y por qué.
|
|
95
|
+
2. **Solicitar aprobación** (Nivel Rojo).
|
|
96
|
+
3. **Una vez aprobado**, actualizar `genesis.md` con nueva versión:
|
|
97
|
+
|
|
98
|
+
```markdown
|
|
99
|
+
## Versión 1.1 — [fecha]
|
|
100
|
+
|
|
101
|
+
### Cambio
|
|
102
|
+
- [descripción precisa del cambio]
|
|
103
|
+
|
|
104
|
+
### Motivo
|
|
105
|
+
- [por qué la versión anterior era incorrecta o insuficiente]
|
|
106
|
+
|
|
107
|
+
### Impacto
|
|
108
|
+
- [qué scripts/SOPs necesitan actualizarse como consecuencia]
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
4. **Propagar el cambio**: Actualizar todos los scripts y SOPs afectados.
|
|
112
|
+
5. **Re-ejecutar tests**: Verificar que los cambios no rompen nada.
|
|
113
|
+
6. **Actualizar `progress.md`** con el rollback documentado.
|
|
114
|
+
|
|
115
|
+
### Regla de Oro
|
|
116
|
+
|
|
117
|
+
El historial de decisiones nunca se borra. Cada versión de `genesis.md` queda registrada en `CHANGELOG.md`. Esto permite entender por qué se tomó una decisión y por qué se cambió, evitando ciclos de decisiones contradictorias.
|