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.
@@ -0,0 +1,142 @@
1
+ {
2
+ "status.pending": "Pending",
3
+ "status.in_progress": "In progress",
4
+ "status.in_review": "In review",
5
+ "status.blocked": "Blocked",
6
+ "status.completed": "Completed",
7
+ "status.cancelled": "Cancelled",
8
+
9
+ "doc.header.taskPlan": "{projectName} — Task Plan (task_plan.md)",
10
+ "doc.header.progress": "{projectName} — Progress Log (progress.md)",
11
+ "doc.header.findings": "{projectName} — Findings Library (findings.md)",
12
+ "doc.autogenerated": "AUTO-GENERATED from `project_control.json`. Do not edit manually.",
13
+
14
+ "doc.section.operativeState": "Operative State",
15
+ "doc.section.externalDecisions": "Pending external decisions",
16
+ "doc.section.readyTasks": "Next ready tasks",
17
+ "doc.section.currentState": "Current State",
18
+ "doc.section.executionSummary": "Execution Summary",
19
+ "doc.section.activeTasks": "Active tasks",
20
+ "doc.section.reviewTasks": "Tasks in review",
21
+ "doc.section.activeBlockers": "Active blockers",
22
+ "doc.section.recentActivity": "Recent activity",
23
+ "doc.section.milestones": "Registered Milestones",
24
+ "doc.section.openFindings": "Open Findings",
25
+ "doc.section.resolvedFindings": "Resolved Findings",
26
+ "doc.section.phase": "Phase {phaseId} — {phaseLabel}",
27
+
28
+ "doc.label.activePhase": "Active phase",
29
+ "doc.label.currentFocus": "Current focus",
30
+ "doc.label.deliveryTarget": "Delivery target",
31
+ "doc.label.blockers": "Blockers",
32
+ "doc.label.nextStep": "Recommended next step",
33
+ "doc.label.phase": "Phase",
34
+ "doc.label.lastTest": "Last test",
35
+ "doc.label.nextStepShort": "Next step",
36
+ "doc.label.lastUpdate": "Last operational update",
37
+ "doc.label.progress": "Progress: {completed}/{total} required tasks completed",
38
+ "doc.label.phaseActive": "Active",
39
+ "doc.label.phaseClosed": "Closed",
40
+ "doc.label.phasePending": "Pending",
41
+ "doc.label.totalTasks": "Total tasks",
42
+ "doc.label.completedTasks": "Completed",
43
+ "doc.label.inProgressTasks": "In progress",
44
+ "doc.label.inReviewTasks": "In review",
45
+ "doc.label.pendingTasks": "Pending",
46
+ "doc.label.blockedTasks": "Blocked",
47
+ "doc.label.findingOpen": "open",
48
+ "doc.label.findingResolved": "resolved",
49
+ "doc.label.findingStatus": "Status",
50
+ "doc.label.findingDetail": "Detail",
51
+ "doc.label.findingImpact": "Impact",
52
+
53
+ "doc.label.noBlockers": "None",
54
+ "doc.label.noOpenTasks": "No open tasks",
55
+ "doc.label.noReadyTasks": "No ready tasks; check blockers.",
56
+ "doc.label.noTasks": "No registered tasks",
57
+ "doc.label.noFindings": "No open findings.",
58
+ "doc.label.noResolvedFindings": "No resolved findings on record.",
59
+ "doc.label.noDecisions": "None",
60
+ "doc.label.noActiveTasks": "No tasks in progress at the moment.",
61
+ "doc.label.noReviewTasks": "No tasks in review.",
62
+ "doc.label.noActiveBlockers": "No active blockers.",
63
+ "doc.label.noHistory": "No recorded movements.",
64
+
65
+ "cli.runtimeUpdated": "Runtime updated at {path}",
66
+ "cli.docsSynced": "Operational documentation synced.",
67
+ "cli.taskUpdated": "Task '{taskId}' updated with action '{action}'.",
68
+ "cli.taskNotFound": "Task '{taskId}' not found.",
69
+ "cli.actionNotSupported": "Unsupported action: {action}",
70
+ "cli.mustProvideActionAndId": "You must specify action and task id.",
71
+ "cli.noReadyTasks": "No ready tasks. Check blockers and dependencies.",
72
+ "cli.hooksInstalled": "Git hooks installed in .githooks",
73
+ "cli.hooksError": "Could not configure core.hooksPath.",
74
+ "cli.noProjectFound": "No project_control.json found in this directory or parents.",
75
+ "cli.emptyNote": "Empty note.",
76
+ "cli.undocumentedBlocker": "Undocumented blocker.",
77
+
78
+ "cli.status.title": "{projectName} — Operational Control",
79
+ "cli.status.focus": "Focus: {focus}",
80
+ "cli.status.activePhase": "Active phase: {phaseId} — {phaseLabel}",
81
+ "cli.status.tasks": "Tasks: {completed} completed, {inProgress} in progress, {inReview} in review, {pending} pending, {blocked} blocked",
82
+ "cli.status.readyTasks": "Next ready tasks:",
83
+ "cli.status.noReadyTasks": "No ready tasks; check blockers or dependencies.",
84
+ "cli.status.blockers": "Blockers:",
85
+ "cli.status.noBlockers": "No blockers.",
86
+ "cli.status.decisions": "External decisions:",
87
+ "cli.status.noDecisions": "None.",
88
+ "cli.status.repo": "Repository:",
89
+ "cli.status.branch": "Branch: {branch} | Tree: {treeStatus}",
90
+ "cli.status.treeClean": "clean",
91
+ "cli.status.treeDirty": "dirty ({staged} staged, {unstaged} unstaged, {untracked} untracked)",
92
+ "cli.status.lastCommit": "Last commit: {hash} {subject}",
93
+ "cli.status.divergence": "Divergence: ahead {ahead}, behind {behind}",
94
+ "cli.status.runtime": "Runtime: {path}",
95
+ "cli.status.docsSynced": "Docs synced: {status}",
96
+ "cli.status.docsSyncedYes": "yes",
97
+ "cli.status.docsSyncedNo": "no ({files})",
98
+
99
+ "cli.next.phase": "phase",
100
+ "cli.next.priority": "priority",
101
+ "cli.next.stream": "stream",
102
+ "cli.next.summary": "summary",
103
+
104
+ "cli.help.title": "Project operational control",
105
+ "cli.help.usage": "Usage:",
106
+
107
+ "server.ready": "Ops dashboard ready at http://{host}:{port}",
108
+ "server.defaultProject": "Default project: {name} ({id})",
109
+ "server.titleRequired": "Title is required.",
110
+ "server.taskCreatedNote": "Task created from dashboard.",
111
+ "server.taskEditedNote": "Task edited from dashboard.",
112
+ "server.payloadTooLarge": "Payload too large (>{limit}).",
113
+ "server.invalidJson": "Invalid JSON.",
114
+ "server.sessionNotFound": "Session not found.",
115
+ "server.noActiveSession": "No active session to start stream.",
116
+ "server.commandRequired": "A command is required.",
117
+ "server.projectNotResolved": "Could not resolve project.",
118
+
119
+ "init.welcome": "Project initialized with trackops.",
120
+ "init.opsExists": "Ops is already installed in this project.",
121
+ "init.created": "Created {file}",
122
+ "init.updated": "Updated {file}",
123
+ "init.registered": "Project registered in the global portfolio.",
124
+ "init.defaultFocus": "Operational project bootstrap",
125
+ "init.defaultTarget": "Project managed with trackops",
126
+ "init.defaultTaskTitle": "Set up project with trackops",
127
+ "init.defaultTaskSummary": "Verify initial structure, adjust phases and confirm operational integration.",
128
+
129
+ "opera.installed": "OPERA methodology installed (v{version}).",
130
+ "opera.alreadyInstalled": "OPERA is already installed in this project (v{version}).",
131
+ "opera.notInstalled": "OPERA is not installed in this project.",
132
+ "opera.upgraded": "OPERA upgraded to v{version}.",
133
+ "opera.primitiveDetected": "Existing OPERA installation detected (not managed by Ops).",
134
+
135
+ "skill.installed": "Skill '{name}' installed.",
136
+ "skill.removed": "Skill '{name}' uninstalled.",
137
+ "skill.notFound": "Skill '{name}' not found in the catalog.",
138
+ "skill.alreadyInstalled": "Skill '{name}' is already installed.",
139
+ "skill.notInstalled": "Skill '{name}' is not installed.",
140
+ "skill.catalogTitle": "Available skills:",
141
+ "skill.listTitle": "Installed skills:"
142
+ }
@@ -0,0 +1,142 @@
1
+ {
2
+ "status.pending": "Pendiente",
3
+ "status.in_progress": "En progreso",
4
+ "status.in_review": "En revision",
5
+ "status.blocked": "Bloqueada",
6
+ "status.completed": "Completada",
7
+ "status.cancelled": "Cancelada",
8
+
9
+ "doc.header.taskPlan": "{projectName} — Plan de Tareas (task_plan.md)",
10
+ "doc.header.progress": "{projectName} — Diario de Progreso (progress.md)",
11
+ "doc.header.findings": "{projectName} — Biblioteca de Hallazgos (findings.md)",
12
+ "doc.autogenerated": "AUTOGENERADO desde `project_control.json`. No editar manualmente.",
13
+
14
+ "doc.section.operativeState": "Estado Operativo",
15
+ "doc.section.externalDecisions": "Decisiones externas pendientes",
16
+ "doc.section.readyTasks": "Proximas tareas listas",
17
+ "doc.section.currentState": "Estado Actual",
18
+ "doc.section.executionSummary": "Resumen de Ejecucion",
19
+ "doc.section.activeTasks": "Tareas activas",
20
+ "doc.section.reviewTasks": "Tareas en revision",
21
+ "doc.section.activeBlockers": "Bloqueadores activos",
22
+ "doc.section.recentActivity": "Actividad reciente",
23
+ "doc.section.milestones": "Hitos Registrados",
24
+ "doc.section.openFindings": "Hallazgos Abiertos",
25
+ "doc.section.resolvedFindings": "Hallazgos Resueltos",
26
+ "doc.section.phase": "Fase {phaseId} — {phaseLabel}",
27
+
28
+ "doc.label.activePhase": "Fase activa",
29
+ "doc.label.currentFocus": "Foco actual",
30
+ "doc.label.deliveryTarget": "Objetivo de entrega",
31
+ "doc.label.blockers": "Bloqueadores",
32
+ "doc.label.nextStep": "Proximo paso recomendado",
33
+ "doc.label.phase": "Fase",
34
+ "doc.label.lastTest": "Ultimo test",
35
+ "doc.label.nextStepShort": "Proximo paso",
36
+ "doc.label.lastUpdate": "Ultima actualizacion operativa",
37
+ "doc.label.progress": "Progreso: {completed}/{total} tareas requeridas completadas",
38
+ "doc.label.phaseActive": "Activa",
39
+ "doc.label.phaseClosed": "Cerrada",
40
+ "doc.label.phasePending": "Pendiente",
41
+ "doc.label.totalTasks": "Total de tareas",
42
+ "doc.label.completedTasks": "Completadas",
43
+ "doc.label.inProgressTasks": "En progreso",
44
+ "doc.label.inReviewTasks": "En revision",
45
+ "doc.label.pendingTasks": "Pendientes",
46
+ "doc.label.blockedTasks": "Bloqueadas",
47
+ "doc.label.findingOpen": "abierto",
48
+ "doc.label.findingResolved": "resuelto",
49
+ "doc.label.findingStatus": "Estado",
50
+ "doc.label.findingDetail": "Detalle",
51
+ "doc.label.findingImpact": "Impacto",
52
+
53
+ "doc.label.noBlockers": "Ninguno",
54
+ "doc.label.noOpenTasks": "Sin tareas abiertas",
55
+ "doc.label.noReadyTasks": "No hay tareas listas; revisar bloqueadores.",
56
+ "doc.label.noTasks": "Sin tareas registradas",
57
+ "doc.label.noFindings": "No hay hallazgos abiertos.",
58
+ "doc.label.noResolvedFindings": "No hay hallazgos resueltos registrados.",
59
+ "doc.label.noDecisions": "Ninguna",
60
+ "doc.label.noActiveTasks": "No hay tareas en progreso en este momento.",
61
+ "doc.label.noReviewTasks": "No hay tareas en revision.",
62
+ "doc.label.noActiveBlockers": "Sin bloqueadores activos.",
63
+ "doc.label.noHistory": "Sin movimientos registrados.",
64
+
65
+ "cli.runtimeUpdated": "Runtime actualizado en {path}",
66
+ "cli.docsSynced": "Documentacion operativa sincronizada.",
67
+ "cli.taskUpdated": "Tarea '{taskId}' actualizada con accion '{action}'.",
68
+ "cli.taskNotFound": "No existe la tarea '{taskId}'.",
69
+ "cli.actionNotSupported": "Accion no soportada: {action}",
70
+ "cli.mustProvideActionAndId": "Debes indicar accion e id de tarea.",
71
+ "cli.noReadyTasks": "No hay tareas listas. Revisa bloqueadores y dependencias.",
72
+ "cli.hooksInstalled": "Git hooks instalados en .githooks",
73
+ "cli.hooksError": "No se pudo configurar core.hooksPath.",
74
+ "cli.noProjectFound": "No se encontro project_control.json en este directorio ni superiores.",
75
+ "cli.emptyNote": "Nota sin contenido.",
76
+ "cli.undocumentedBlocker": "Bloqueador no documentado.",
77
+
78
+ "cli.status.title": "{projectName} — Control Operativo",
79
+ "cli.status.focus": "Foco: {focus}",
80
+ "cli.status.activePhase": "Fase activa: {phaseId} — {phaseLabel}",
81
+ "cli.status.tasks": "Tareas: {completed} completadas, {inProgress} en progreso, {inReview} en revision, {pending} pendientes, {blocked} bloqueadas",
82
+ "cli.status.readyTasks": "Proximas tareas listas:",
83
+ "cli.status.noReadyTasks": "No hay tareas listas; revisar bloqueadores o dependencias.",
84
+ "cli.status.blockers": "Bloqueadores:",
85
+ "cli.status.noBlockers": "Sin bloqueadores.",
86
+ "cli.status.decisions": "Decisiones externas:",
87
+ "cli.status.noDecisions": "Ninguna.",
88
+ "cli.status.repo": "Repositorio:",
89
+ "cli.status.branch": "Rama: {branch} | Arbol: {treeStatus}",
90
+ "cli.status.treeClean": "limpio",
91
+ "cli.status.treeDirty": "sucio ({staged} staged, {unstaged} unstaged, {untracked} untracked)",
92
+ "cli.status.lastCommit": "Ultimo commit: {hash} {subject}",
93
+ "cli.status.divergence": "Divergencia: ahead {ahead}, behind {behind}",
94
+ "cli.status.runtime": "Runtime: {path}",
95
+ "cli.status.docsSynced": "Documentacion sincronizada: {status}",
96
+ "cli.status.docsSyncedYes": "si",
97
+ "cli.status.docsSyncedNo": "no ({files})",
98
+
99
+ "cli.next.phase": "fase",
100
+ "cli.next.priority": "prioridad",
101
+ "cli.next.stream": "stream",
102
+ "cli.next.summary": "resumen",
103
+
104
+ "cli.help.title": "Control operativo del proyecto",
105
+ "cli.help.usage": "Uso:",
106
+
107
+ "server.ready": "Ops dashboard listo en http://{host}:{port}",
108
+ "server.defaultProject": "Proyecto por defecto: {name} ({id})",
109
+ "server.titleRequired": "El titulo es obligatorio.",
110
+ "server.taskCreatedNote": "Tarea creada desde el dashboard.",
111
+ "server.taskEditedNote": "Tarea editada desde el dashboard.",
112
+ "server.payloadTooLarge": "Payload demasiado grande (>{limit}).",
113
+ "server.invalidJson": "JSON invalido.",
114
+ "server.sessionNotFound": "Sesion no encontrada.",
115
+ "server.noActiveSession": "No hay sesion activa para iniciar stream.",
116
+ "server.commandRequired": "Se requiere un comando.",
117
+ "server.projectNotResolved": "No se pudo resolver el proyecto.",
118
+
119
+ "init.welcome": "Proyecto inicializado con trackops.",
120
+ "init.opsExists": "Ops ya esta instalado en este proyecto.",
121
+ "init.created": "Creado {file}",
122
+ "init.updated": "Actualizado {file}",
123
+ "init.registered": "Proyecto registrado en el portfolio global.",
124
+ "init.defaultFocus": "Bootstrap operativo del proyecto",
125
+ "init.defaultTarget": "Proyecto gestionado con trackops",
126
+ "init.defaultTaskTitle": "Configurar proyecto con trackops",
127
+ "init.defaultTaskSummary": "Verificar estructura inicial, ajustar fases y confirmar integracion operativa.",
128
+
129
+ "opera.installed": "Metodologia OPERA instalada (v{version}).",
130
+ "opera.alreadyInstalled": "OPERA ya esta instalado en este proyecto (v{version}).",
131
+ "opera.notInstalled": "OPERA no esta instalado en este proyecto.",
132
+ "opera.upgraded": "OPERA actualizado a v{version}.",
133
+ "opera.primitiveDetected": "Detectada instalacion OPERA existente (sin gestion por Ops).",
134
+
135
+ "skill.installed": "Skill '{name}' instalada.",
136
+ "skill.removed": "Skill '{name}' desinstalada.",
137
+ "skill.notFound": "Skill '{name}' no encontrada en el catalogo.",
138
+ "skill.alreadyInstalled": "Skill '{name}' ya esta instalada.",
139
+ "skill.notInstalled": "Skill '{name}' no esta instalada.",
140
+ "skill.catalogTitle": "Skills disponibles:",
141
+ "skill.listTitle": "Skills instaladas:"
142
+ }
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "trackops",
3
+ "version": "1.0.0",
4
+ "description": "Operational project control with task management, doc generation, multi-project dashboard, and optional ETAPA methodology",
5
+ "main": "lib/control.js",
6
+ "bin": {
7
+ "trackops": "bin/trackops.js"
8
+ },
9
+ "files": [
10
+ "bin/",
11
+ "lib/",
12
+ "locales/",
13
+ "ui/",
14
+ "templates/"
15
+ ],
16
+ "keywords": [
17
+ "project-management",
18
+ "task-management",
19
+ "dashboard",
20
+ "ops",
21
+ "etapa",
22
+ "methodology",
23
+ "cli",
24
+ "devops",
25
+ "tracking",
26
+ "agile"
27
+ ],
28
+ "author": {
29
+ "name": "Xavier Crespo Gríman",
30
+ "email": "crespoxac@gmail.com",
31
+ "url": "https://baxahaun.com"
32
+ },
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "git+https://github.com/Baxahaun/trackops.git"
36
+ },
37
+ "bugs": {
38
+ "url": "https://github.com/Baxahaun/trackops/issues"
39
+ },
40
+ "homepage": "https://github.com/Baxahaun/trackops#readme",
41
+ "license": "MIT",
42
+ "type": "commonjs",
43
+ "engines": {
44
+ "node": ">=18"
45
+ }
46
+ }
@@ -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 E.T.A.P.A. v2.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 Automatización).
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.