openprompt-lang 1.2.7 → 1.3.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.md CHANGED
@@ -30,6 +30,25 @@ Guarda conceptos visuales o técnicos para que la IA los entienda como tú los e
30
30
  ### Repositorio de Conocimiento (Knowledge)
31
31
  Almacena, indexa y procesa documentos PDF y fuentes web técnicas. Detecta capítulos automáticamente y los divide en secciones de lectura rápida para que la IA los use. Incluye **33 libros y guías pre-empaquetados** (JavaScript, TypeScript, Rust, React, Node.js, Python, Scrum, accesibilidad, algoritmos, API de pagos, etc.) accesibles sin configuración previa vía MCP (`knowledge_search`, `knowledge_list`, `knowledge_read`, `knowledge_concept`) o CLI (`knowledge search`, `knowledge sync --all`). Genera automáticamente `.openprompt/FRAMEWORK.md` con el manual operativo restrictivo para la IA.
32
32
 
33
+ ### Búsqueda Semántica por Embeddings (Vector Search)
34
+ Reemplaza el mapa semántico manual con vectores numéricos generados por IA local. Divide documentos en chunks semánticos, los convierte en vectores (768d con Ollama o 384d con Transformers.js), y busca por similitud de coseno. Incluye un pipeline completo: chunker (3 estrategias), embedder (Ollama + Transformers.js con auto-fallback), vector store (SQLite + FTS5), y soporte de búsqueda híbrida (FTS5 + reordenamiento semántico). Se integra con `opl search --mode vector` y el indexado automático tras la ingesta de PDFs.
35
+
36
+ **Requisitos:**
37
+ - **Primario**: [Ollama](https://ollama.com) con `ollama pull nomic-embed-text` (recomendado)
38
+ - **Fallback**: `@xenova/transformers` (incluido como dependencia opcional, se activa automáticamente si Ollama no está disponible)
39
+
40
+ **Comandos:**
41
+ ```bash
42
+ opl embeddings status # Ver estado del índice vectorial
43
+ opl embeddings index <docId> # Indexar un documento
44
+ opl embeddings remove <docId> # Eliminar embeddings
45
+ opl embeddings config # Ver/configurar proveedor
46
+ opl search "consulta" --mode vector # Búsqueda semántica
47
+ opl search "consulta" --mode hybrid # Híbrido (incluye vectorial)
48
+ opl webscrape <url> --domain frontend # Scrapear web e indexar
49
+ knowledge ingest doc.pdf # Ingesta PDF + auto-embedding
50
+ ```
51
+
33
52
  ### IA Local (Local Setup)
34
53
  Configura un entorno de desarrollo completamente local y desconectado. Prepara la integración con modelos locales en Ollama (como Llama 3 o Qwen 2.5 Coder) y la suite de herramientas OpenCode, permitiendo trabajar sin internet ni costos de API, pero manteniendo el 100% de la precisión del framework.
35
54
 
@@ -582,6 +601,25 @@ openPrompt-Lang component list --validated
582
601
  | `openPrompt-Lang knowledge rebuild` | Reconstruye el índice general desde metadatos individuales |
583
602
  | `openPrompt-Lang knowledge sync [--all]` | Sincroniza libros de la biblioteca empaquetada al proyecto local |
584
603
  | `openPrompt-Lang local-setup` | Configura integración con IA local (Ollama + OpenCode) |
604
+ | `opl workflow select <desc>` | Selecciona workflow óptimo según descripción de la tarea (usar SIEMPRE primero) |
605
+ | `opl workflow delivery` | Inicia desarrollo por tickets (E.3) |
606
+ | `opl workflow close` | Cierra sesión activa y genera reporte (E.4) |
607
+ | `opl epic create --title "..." --desc "..."` | Crea épica con tickets generados automáticamente |
608
+ | `opl epic list` | Lista épicas con métricas de progreso |
609
+ | `opl epic show <id>` | Muestra detalle de épica y sus tickets |
610
+ | `opl epic close <id>` | Cierra épica |
611
+ | `opl sprint create <name> --goal "..."` | Crea sprint con duración configurable |
612
+ | `opl sprint list` | Lista sprints con métricas |
613
+ | `opl sprint plan <id> --capacity N` | Planifica sprint automáticamente desde épicas activas |
614
+ | `opl sprint close <id>` | Cierra sprint |
615
+ | `opl ticket create --title "..." --severity ...` | Crea ticket de bug/tarea |
616
+ | `opl ticket list` | Lista tickets del proyecto |
617
+ | `opl ticket close <id>` | Cierra ticket como fixed |
618
+ | `opl embeddings status` | Ver estado del índice vectorial semántico |
619
+ | `opl embeddings index <docId>` | Indexa un documento en el vector store |
620
+ | `opl embeddings remove <docId>` | Elimina embeddings de un documento |
621
+ | `opl embeddings config` | Ver/configurar proveedor de embeddings |
622
+ | `opl webscrape <url>` | Extrae contenido web y lo indexa en knowledge + embeddings |
585
623
 
586
624
  ### Base de Conocimiento Empaquetada
587
625
 
@@ -1128,17 +1166,33 @@ El **Work Context** es un sistema integrado de trazabilidad obligatoria que regi
1128
1166
  | `openPrompt-Lang work-context check` | Verifica consistencia del work-context: valida que `SESSION.json` exista y tenga estructura correcta, detecta sesiones activas olvidadas (>24h), confirma que los planes referenciados existen en disco, valida que `LOG.json` sea un array válido |
1129
1167
  | `validate --work-context` | Incluye la verificación de work-context dentro del pipeline de validación estándar |
1130
1168
 
1131
- ### Flujo de trabajo obligatorio
1169
+ ### Flujo de trabajo obligatorio (v1.3.0)
1132
1170
 
1133
- La IA debe seguir este ciclo en **cada sesión de trabajo**:
1171
+ La IA debe seguir este ciclo en **cada sesión de trabajo**. No hay excepciones:
1134
1172
 
1135
1173
  ```
1136
- 1. CONTEXT.md + SESSION.json restaurar estado o iniciar nuevo
1137
- 2. ANALYZE request → clasificar tipo de tarea
1138
- 3. PLAN`work-context plan new <name> --task "<desc>"` → PLANS/, log en LOG
1139
- 4. VALIDATE plan → contra @kind, @contract, @limit
1140
- 5. IMPLEMENT codificar, log cada acción
1141
- 6. VALIDATE código validate + validate --work-context
1174
+ 1. workflow_select "opl workflow select <descripción>"
1175
+ La IA describe su tarea, el sistema selecciona workflow óptimo
1176
+ 2. create_ticket "opl ticket create --title ... --severity ..."
1177
+ TODO cambio requiere ticket ANTES de implementar
1178
+ 3. → check_gates → workflow_selected ✓, ticket_created ✓, plan_approved ✓
1179
+ 4. work_context_plan Planificar usando work-context con búsqueda de conocimiento
1180
+ 5. → implement → Codificar con anotaciones OPL primero (@kind → @contract → @limit)
1181
+ 6. → validate → "opl validate" antes de cerrar
1182
+ 7. → docs_updated → Actualizar documentación (OBLIGATORIO antes de cerrar)
1183
+ 8. → work_context_close → Cerrar sesión y generar reporte
1184
+ ```
1185
+
1186
+ **Reglas inquebrantables:**
1187
+ - **Regla #1**: `workflow select` primero — Sin workflow seleccionado no hay implementación
1188
+ - **Regla #2**: `ticket create` antes de código — Sin ticket no se escribe código
1189
+ - **Regla #3**: `docs_updated` antes de cerrar — Sin documentación actualizada no se cierra sesión
1190
+
1191
+ El sistema de gates (`workflow_selected`, `ticket_created`, `plan_approved`, `docs_updated`)
1192
+ bloquea herramientas automáticamente si no se cumplen los prerrequisitos (configurable en
1193
+ `prompt-lang.json` → `workflow.enforcement`).
1194
+
1195
+ Ver también: `AGENTS.md` para instrucciones detalladas de cada paso.
1142
1196
  7. INTEGRATE → actualizar AGENTS.md si toca
1143
1197
  8. LEARN + REFERENCES.md → checklist de referencias seguras
1144
1198
  9. CLOSE → reporte, métricas finales
@@ -0,0 +1,214 @@
1
+ # Sistema de Embeddings Vectoriales
2
+
3
+ ## 📋 Overview
4
+
5
+ openPrompt-Lang ahora soporta búsqueda semántica vectorial. En lugar de depender solo de coincidencia de palabras clave (tags, fulltext) o un mapa semántico manual, los documentos se dividen en **chunks semánticos**, cada chunk se convierte en un **vector embedding**, y las consultas se resuelven por **similitud de coseno**.
6
+
7
+ ## 🏗️ Arquitectura
8
+
9
+ ```
10
+ Documento (opl format)
11
+
12
+
13
+ ┌─────────────────┐
14
+ │ chunker.js │ Divide: paragraph | section | fixed
15
+ └────────┬────────┘
16
+ │ chunks[]
17
+
18
+ ┌─────────────────┐
19
+ │ embedder.js │ Vectoriza: Ollama | Transformers.js | auto-fallback
20
+ └────────┬────────┘
21
+ │ vectors[]
22
+
23
+ ┌─────────────────────┐
24
+ │ vector-store.js │ Almacena + busca en SQLite
25
+ │ (embeddings table) │
26
+ └────────┬────────────┘
27
+ │ search(queryVector)
28
+
29
+ ┌─────────────────┐
30
+ │ index-pipeline │ Orquestador: chunk → embed → store
31
+ └─────────────────┘
32
+ ```
33
+
34
+ ## 📦 Módulos
35
+
36
+ | Módulo | Archivo | Responsabilidad |
37
+ |--------|---------|----------------|
38
+ | Chunker | `src/embeddings/chunker.js` | Divide documentos en chunks semánticos |
39
+ | Embedder | `src/embeddings/embedder.js` | Genera vectores numéricos (embeddings) |
40
+ | Vector Store | `src/embeddings/vector-store.js` | Almacena/consulta vectores en SQLite |
41
+ | Index Pipeline | `src/embeddings/index-pipeline.js` | Orquesta chunk → embed → store |
42
+
43
+ ## 🔧 Comandos CLI
44
+
45
+ ### `opl embeddings index <docId>`
46
+
47
+ Indexa un documento en el vector store.
48
+
49
+ ```bash
50
+ opl embeddings index react-fullstack-app
51
+ opl embeddings index react-fullstack-app --strategy paragraph
52
+ opl embeddings index react-fullstack-app --provider transformers
53
+ opl embeddings index react-fullstack-app --dry-run # simular sin persistir
54
+ opl embeddings index react-fullstack-app --resume # saltar chunks existentes
55
+ ```
56
+
57
+ ### `opl embeddings status`
58
+
59
+ Muestra el estado actual del índice vectorial.
60
+
61
+ ```bash
62
+ opl embeddings status
63
+ # 📊 Estado del índice de embeddings
64
+ # Chunks indexados: 245
65
+ # Documentos: 12
66
+ # Dimensión: 768
67
+ # Modelo: nomic-embed-text
68
+ # Último indexado: 2026-05-24 20:00:00
69
+ # Almacenamiento: 1.2 MB
70
+ ```
71
+
72
+ ### `opl embeddings remove <docId>`
73
+
74
+ Elimina todos los embeddings de un documento.
75
+
76
+ ```bash
77
+ opl embeddings remove react-fullstack-app
78
+ ```
79
+
80
+ ### `opl embeddings config`
81
+
82
+ Ver o cambiar el proveedor de embeddings.
83
+
84
+ ```bash
85
+ opl embeddings config # ver estado
86
+ opl embeddings config --provider transformers # cambiar a transformers
87
+ opl embeddings config --provider ollama # cambiar a ollama
88
+ ```
89
+
90
+ ### `opl search --mode vector <query>`
91
+
92
+ Búsqueda semántica con embeddings.
93
+
94
+ ```bash
95
+ opl search "autenticacion react" --mode vector # solo vectorial
96
+ opl search "pagos chile" --mode hybrid # híbrido incluye vector
97
+ ```
98
+
99
+ ## 🧠 Proveedores de Embeddings
100
+
101
+ ### Ollama (primario, default)
102
+
103
+ - **Modelo**: `nomic-embed-text` (768 dimensiones)
104
+ - **URL**: `http://localhost:11434`
105
+ - **Requisito**: `ollama pull nomic-embed-text`
106
+ - **Ventaja**: Local, rápido, gratuito
107
+
108
+ ### Transformers.js (fallback)
109
+
110
+ - **Modelo**: `Xenova/all-MiniLM-L6-v2` (384 dimensiones)
111
+ - **Requisito**: `npm install @xenova/transformers`
112
+ - **Ventaja**: No requiere servidor externo
113
+
114
+ ### Auto-fallback
115
+
116
+ El embedder intenta Ollama primero. Si no está disponible, cae automáticamente a Transformers.js. Si ningún proveedor funciona, lanza un error instructivo.
117
+
118
+ ## 📐 Estrategias de Chunking
119
+
120
+ | Estrategia | Descripción | Cuándo usarla |
121
+ |------------|-------------|---------------|
122
+ | `section` (default) | Divide por `##` respetando títulos | Documentos con estructura clara |
123
+ | `paragraph` | Divide por doble salto de línea | Documentos sin estructura jerárquica |
124
+ | `fixed` | Divide por tamaño fijo con solapamiento | Documentos sin estructura detectada |
125
+
126
+ ## 🔍 Búsqueda Híbrida
127
+
128
+ `hybridSearch` combina FTS5 (texto completo) con reordenamiento semántico:
129
+
130
+ 1. **FTS5**: Busca palabras clave en el índice de texto completo
131
+ 2. **Coseno**: Reordena los candidatos por similitud semántica
132
+
133
+ Esto da lo mejor de ambos mundos: precisión de FTS + semántica de embeddings.
134
+
135
+ ## 💾 Esquema SQLite
136
+
137
+ ```sql
138
+ CREATE TABLE IF NOT EXISTS embeddings (
139
+ id TEXT PRIMARY KEY,
140
+ doc_id TEXT NOT NULL,
141
+ doc_title TEXT NOT NULL DEFAULT '',
142
+ chapter_idx INTEGER NOT NULL DEFAULT 0,
143
+ chapter_title TEXT NOT NULL DEFAULT '',
144
+ chunk_idx INTEGER NOT NULL DEFAULT 0,
145
+ content TEXT NOT NULL,
146
+ vector BLOB NOT NULL,
147
+ dimension INTEGER NOT NULL DEFAULT 768,
148
+ tokens INTEGER NOT NULL DEFAULT 0,
149
+ model TEXT NOT NULL DEFAULT '',
150
+ strategy TEXT NOT NULL DEFAULT 'section',
151
+ metadata TEXT NOT NULL DEFAULT '{}',
152
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
153
+ );
154
+
155
+ CREATE VIRTUAL TABLE IF NOT EXISTS embeddings_fts USING fts5(
156
+ content,
157
+ content=embeddings,
158
+ content_rowid=rowid
159
+ );
160
+ ```
161
+
162
+ Los vectores se serializan como BLOB de Float32Array (4 bytes por float).
163
+
164
+ ## 📊 Límites de Escalabilidad
165
+
166
+ | Métrica | Límite actual | Estrategia futura |
167
+ |---------|--------------|-------------------|
168
+ | Chunks totales | ~5000 | Búsqueda lineal OK |
169
+ | Chunks > 100k | Podría ser lento | Índice HNSW |
170
+ | Dimensión vectores | 768 (Ollama) / 384 (Transformers) | Cualquier dimensión |
171
+ | Latencia búsqueda | < 50ms en 5000 chunks | Indexación en lote |
172
+
173
+ ## ✅ Tests
174
+
175
+ ```bash
176
+ npx vitest run tests/embeddings/ # 87 tests, 4 suites
177
+ ```
178
+
179
+ | Suite | Tests | Cubre |
180
+ |-------|-------|-------|
181
+ | `chunker.test.js` | 20 | Estrategias, límites, edge cases |
182
+ | `embedder.test.js` | 23 | Proveedores, fallback, errores |
183
+ | `vector-store.test.js` | 30 | CRUD, búsqueda, FTS5, híbrida |
184
+ | `index-pipeline.test.js` | 14 | Pipeline completo, reindex, batch |
185
+
186
+ ## 🔗 Integración con OPL Search
187
+
188
+ El modo `--mode vector` en `opl search`:
189
+ 1. Toma la consulta del usuario
190
+ 2. La convierte a vector con `embed()`
191
+ 3. Busca en el vector store con `hybridSearch()`
192
+ 4. Mapea chunks a documentos y muestra resultados
193
+
194
+ El modo `--mode hybrid` incluye los resultados vectoriales junto con tags, fulltext y semántico.
195
+
196
+ ## ⚡ Auto-embedding
197
+
198
+ Cuando se ingesta un PDF con `knowledge ingest`, se genera automáticamente el embedding del documento. Para saltar este paso:
199
+
200
+ ```bash
201
+ knowledge ingest mi-documento.pdf --no-embed
202
+ ```
203
+
204
+ ## 🚀 Roadmap
205
+
206
+ - [x] Chunker (3 estrategias)
207
+ - [x] Embedder (Ollama + Transformers.js)
208
+ - [x] Vector Store (SQLite + FTS5)
209
+ - [x] Index Pipeline
210
+ - [x] CLI: `opl embeddings index/status/remove/config`
211
+ - [x] Modo vector en `opl search`
212
+ - [x] Auto-embedding en `knowledge ingest`
213
+ - [ ] Web scraper (`opl webscrape`)
214
+ - [ ] Onboarding workflow en `opl init`
@@ -0,0 +1,151 @@
1
+ # 🚀 Onboarding Workflow para IA en openPrompt-Lang
2
+
3
+ > **Propósito**: Este documento es el punto de entrada OBLIGATORIO para cualquier sesión de IA
4
+ > en un proyecto que ya tiene elementos de openPrompt-Lang.
5
+ >
6
+ > **Generado por**: `opl init` al finalizar la configuración
7
+ > **Versión del documento**: 1.0.0
8
+ > **Última actualización**: {{fecha}}
9
+
10
+ ---
11
+
12
+ ## 📋 Instrucciones para la IA
13
+
14
+ Al iniciar una sesión en este proyecto, SIGUE ESTE FLUJO ESTRICTAMENTE:
15
+
16
+ ```
17
+ 1. LEER este documento (ONBOARDING_WORKFLOW.md) → entender el estado del proyecto
18
+ 2. LEER AGENTS.md → stack, convenciones, reglas
19
+ 3. LEER docs/AI_CONTEXT.md → memoria del proyecto
20
+ 4. EJECUTAR workflow_check → ver qué pasos del workflow OPL faltan
21
+ 5. EJECUTAR context_unified → panorama completo del proyecto
22
+ 6. CONTINUAR desde el último paso registrado (ver sección "Estado Actual")
23
+ ```
24
+
25
+ ---
26
+
27
+ ## 🔍 Detección Automática de Contexto
28
+
29
+ ### ¿Este proyecto ya tiene OPL?
30
+
31
+ Sí / No (según corresponda)
32
+
33
+ | Elemento | Estado | Ruta |
34
+ |----------|--------|------|
35
+ | `prompt-lang.json` | ✅ / ❌ | `/ruta` |
36
+ | `AGENTS.md` | ✅ / ❌ | `/ruta` |
37
+ | `docs/AI_CONTEXT.md` | ✅ / ❌ | `/ruta` |
38
+ | `docs/FRAMEWORK.md` | ✅ / ❌ | `/ruta` |
39
+ | `src/` con anotaciones | ✅ / ❌ | `/ruta` |
40
+ | `.opencode/` config | ✅ / ❌ | `/ruta` |
41
+ | `.openprompt/` | ✅ / ❌ | `/ruta` |
42
+ | `knowledge-repo/` | ✅ / ❌ | `/ruta` |
43
+ | Base de conocimiento | ✅ / ❌ | `/ruta` |
44
+ | Sistema de enseñanza | ✅ / ❌ | `/ruta` |
45
+
46
+ ---
47
+
48
+ ## 🧩 Stack del Proyecto
49
+
50
+ | Componente | Valor |
51
+ |------------|-------|
52
+ | **Framework** | React / Vue / Node.js / Spring Boot |
53
+ | **Lenguaje** | TypeScript / JavaScript / Java |
54
+ | **UI** | Tailwind / shadcn / Mantine / Ninguno |
55
+ | **Base de datos** | Supabase / SQLite / PostgreSQL |
56
+ | **Extensiones** | Supabase, Stripe, Prisma, Ionic, ... |
57
+ | **Módulos OPL activos** | React(23t), Vue(12t), Node(12t), Java(8t) |
58
+
59
+ ---
60
+
61
+ ## 📊 Estado Actual del Proyecto
62
+
63
+ _Completar durante la última sesión. Esto permite a la próxima IA continuar sin pérdida de contexto._
64
+
65
+ | Aspecto | Detalle |
66
+ |---------|---------|
67
+ | **Última sesión** | {{fecha}} |
68
+ | **Último comando ejecutado** | `opl ...` |
69
+ | **Fase del proyecto** | Inicial / En desarrollo / Refinamiento / Producción |
70
+ | **Sprint activo** | embeddings-sprint-001 / ninguno |
71
+ | **Ticket en progreso** | TICKET-XXX / ninguno |
72
+ | **Próximo paso** | _Descripción de lo que sigue_ |
73
+ | **Bloqueadores** | _Problemas pendientes_ |
74
+ | **Branch activa** | `main` / `feature/...` |
75
+
76
+ ---
77
+
78
+ ## 🎯 Próximos Pasos Recomendados
79
+
80
+ 1. _Paso 1 — descripción_
81
+ 2. _Paso 2 — descripción_
82
+ 3. _Paso 3 — descripción_
83
+
84
+ ---
85
+
86
+ ## 🐛 Problemas Conocidos (Academic Issues)
87
+
88
+ Ver `docs/OPL_ACADEMIC_ISSUES.md` para problemas reportados del sistema de enseñanza.
89
+
90
+ | # | Título | Severidad | Estado |
91
+ |---|--------|-----------|--------|
92
+ | 1 | Onboarding IA en proyecto existente | 🔴 Alta | Abierto |
93
+ | 2 | `opl rebuild` no detecta OPL | 🟡 Media | Abierto |
94
+ | 3 | Falta documento post-init para IA | 🔴 Alta | Abierto |
95
+
96
+ ---
97
+
98
+ ## 📚 Documentos de Referencia
99
+
100
+ | Documento | Propósito | Cuándo leerlo |
101
+ |-----------|-----------|---------------|
102
+ | `AGENTS.md` | Stack, convenciones, UI, calidad, reglas | ✅ Siempre — primera lectura |
103
+ | `docs/AI_CONTEXT.md` | Memoria extendida del proyecto | ✅ Siempre — segunda lectura |
104
+ | `docs/FRAMEWORK.md` | Manual completo: anotaciones, CLI, MCP | 🔍 Bajo demanda |
105
+ | `docs/OPL_ACADEMIC_ISSUES.md` | Problemas del sistema de enseñanza | 🔍 Si tocas el módulo académico |
106
+ | `docs/EMBEDDINGS.md` | Sistema de embeddings vectoriales | 🔍 Si tocas búsqueda semántica |
107
+ | `.opencode/work-context/SESSION.json` | Estado actual de la sesión | 🔍 Para restaurar contexto |
108
+ | `.opencode/work-context/LOG.json` | Bitácora de acciones | 🔍 Para auditoría |
109
+ | `prompt-lang.json` | Configuración del proyecto | 🔍 Si necesitas ver config |
110
+
111
+ ---
112
+
113
+ ## ⚡ Comandos Rápidos para la IA
114
+
115
+ ```bash
116
+ # Conocer el proyecto
117
+ npx openprompt-lang context # Vista general
118
+ npx openprompt-lang validate # Validar anotaciones
119
+ npx openprompt-lang analyze . # Auditoría completa
120
+
121
+ # Búsqueda de conocimiento
122
+ opl index # Navegar conocimiento
123
+ opl search "término" --mode hybrid # Búsqueda híbrida
124
+ opl read <dominio>/<id> --chapter <n> # Leer contenido
125
+
126
+ # Evaluación del proyecto
127
+ opl assess # Production Readiness Assessment
128
+ opl assess --verbose # Con detalle de 7 dimensiones
129
+
130
+ # Sistema de enseñanza
131
+ opl teach progress # Progreso de aprendizaje
132
+ opl teach study <concepto> # Estudiar un concepto
133
+ opl teach assess <concepto> # Evaluar nivel
134
+
135
+ # Embeddings (si aplica)
136
+ opl embeddings status # Estado del índice vectorial
137
+ opl search "término" --mode vector # Búsqueda semántica
138
+ ```
139
+
140
+ ---
141
+
142
+ ## 📝 Notas de la Sesión Actual
143
+
144
+ ```
145
+ Espacio para que la IA o el usuario dejen notas sobre la sesión actual.
146
+ ```
147
+
148
+ ---
149
+
150
+ *Documento generado automáticamente por `opl init`.*
151
+ *Versión: 1.0.0*
@@ -0,0 +1,158 @@
1
+ # 🎓 OPL Academic — Bitácora de Problemas
2
+
3
+ > Documento para registrar problemas, fricciones y errores detectados en el sistema de enseñanza (Teaching System) de openPrompt-Lang.
4
+ > Cada entrada documenta: síntoma, causa raíz, impacto, solución propuesta y estado.
5
+
6
+ ---
7
+
8
+ ## 📋 Índice de Problemas
9
+
10
+ | # | Fecha | Título | Severidad | Estado |
11
+ |---|-------|--------|-----------|--------|
12
+ | 1 | 2026-05-24 | Onboarding IA en proyecto existente | 🔴 Alta | Abierto |
13
+ | 2 | 2026-05-24 | `opl rebuild` no detecta OPL automáticamente | 🟡 Media | Abierto |
14
+ | 3 | 2026-05-24 | Falta documento post-init para IA | 🔴 Alta | Abierto |
15
+
16
+ ---
17
+
18
+ ## 🐛 Problemas Reportados
19
+
20
+ ### P-001: Onboarding IA en proyecto existente
21
+
22
+ | Campo | Valor |
23
+ |-------|-------|
24
+ | **Fecha** | 2026-05-24 |
25
+ | **Reportado por** | usuario |
26
+ | **Severidad** | 🔴 Alta |
27
+ | **Módulo** | Academic — Init / Onboarding |
28
+ | **Estado** | 🔴 Abierto |
29
+
30
+ **Síntoma:**
31
+ Al iniciar una sesión con IA en un proyecto existente que ya tiene elementos de OPL, la IA no sabe qué hacer. No hay un punto de entrada claro que le diga "esto ya tiene OPL, aquí está el estado actual, continúa desde aquí".
32
+
33
+ **Causa raíz:**
34
+ No existe un documento de onboarding generado automáticamente que la IA pueda leer al inicio de cada sesión para restaurar contexto.
35
+
36
+ **Impacto:**
37
+ - La IA pierde ~15 minutos regenerando contexto cada sesión
38
+ - Toma decisiones inconsistentes porque no conoce el estado real del proyecto
39
+ - El usuario tiene que re-explicar manualmente lo que ya se hizo
40
+
41
+ **Solución propuesta:**
42
+ - Crear `docs/ONBOARDING_WORKFLOW.md` — documento canónico que la IA lee al iniciar
43
+ - Integrar `opl init` para que genere este documento automáticamente
44
+ - Dos versiones: `INICIAR_NUEVO.md` (proyecto nuevo) e `INICIAR_EXISTENTE.md` (proyecto en curso)
45
+
46
+ **Referencias:**
47
+ - `erroresDeFlujo.md` (línea 2)
48
+ - Sprint embeddings → TICKET-011 (propuesto)
49
+
50
+ ---
51
+
52
+ ### P-002: `opl rebuild` no detecta OPL automáticamente
53
+
54
+ | Campo | Valor |
55
+ |-------|-------|
56
+ | **Fecha** | 2026-05-24 |
57
+ | **Reportado por** | usuario |
58
+ | **Severidad** | 🟡 Media |
59
+ | **Módulo** | CLI — rebuild |
60
+ | **Estado** | 🟡 Abierto |
61
+
62
+ **Síntoma:**
63
+ `opl rebuild` falla o funciona incorrectamente cuando los elementos de OPL no están presentes o no son detectables automáticamente.
64
+
65
+ **Causa raíz:**
66
+ El comando `rebuild` asume cierta estructura pre-existente en lugar de ser autosuficiente.
67
+
68
+ **Solución propuesta:**
69
+ Hacer que `rebuild` funciones en dos modos:
70
+ 1. **Con detección**: Si encuentra elementos OPL, los respeta y reconstruye
71
+ 2. **Sin detección**: Si no encuentra nada, crea la estructura desde cero con defaults inteligentes
72
+
73
+ **Referencias:**
74
+ - `erroresDeFlujo.md` (línea 4)
75
+
76
+ ---
77
+
78
+ ### P-003: Falta documento post-init para IA
79
+
80
+ | Campo | Valor |
81
+ |-------|-------|
82
+ | **Fecha** | 2026-05-24 |
83
+ | **Reportado por** | usuario |
84
+ | **Severidad** | 🔴 Alta |
85
+ | **Módulo** | CLI — init |
86
+ | **Estado** | 🔴 Abierto |
87
+
88
+ **Síntoma:**
89
+ Después de ejecutar `opl init`, no se genera ningún documento que la IA pueda usar para entender el contexto del proyecto. La IA llega "en frío" a cada sesión.
90
+
91
+ **Causa raíz:**
92
+ `opl init` configura el proyecto (crea prompt-lang.json, AGENTS.md, etc.) pero no genera un punto de entrada específico para la IA que le diga "esto es lo que hay, esto es lo que falta, continúa".
93
+
94
+ **Solución propuesta:**
95
+ Que `opl init` genere automáticamente:
96
+ - `INICIAR_NUEVO.md` si es proyecto nuevo
97
+ - `INICIAR_EXISTENTE.md` si es proyecto existente con OPL
98
+
99
+ Estos documentos deben incluir:
100
+ - Stack detectado
101
+ - Estado de la configuración OPL
102
+ - Próximos pasos recomendados
103
+ - Enlace a `AGENTS.md` y `docs/AI_CONTEXT.md`
104
+
105
+ **Referencias:**
106
+ - `erroresDeFlujo.md` (línea 6)
107
+ - `docs/ONBOARDING_WORKFLOW.md`
108
+
109
+ ---
110
+
111
+ ## 📊 Estadísticas
112
+
113
+ | Métrica | Valor |
114
+ |---------|-------|
115
+ | Total problemas | 3 |
116
+ | Severidad Alta | 2 |
117
+ | Severidad Media | 1 |
118
+ | Severidad Baja | 0 |
119
+ | Abiertos | 3 |
120
+ | En Progreso | 0 |
121
+ | Resueltos | 0 |
122
+
123
+ ---
124
+
125
+ ## 📝 Cómo Reportar un Problema Nuevo
126
+
127
+ Usa esta plantilla al añadir una nueva entrada:
128
+
129
+ ```markdown
130
+ ### P-XXX: Título descriptivo
131
+
132
+ | Campo | Valor |
133
+ |-------|-------|
134
+ | **Fecha** | YYYY-MM-DD |
135
+ | **Reportado por** | — |
136
+ | **Severidad** | 🔴 Alta / 🟡 Media / 🟢 Baja |
137
+ | **Módulo** | — |
138
+ | **Estado** | 🔴 Abierto |
139
+
140
+ **Síntoma:**
141
+ _¿Qué ocurre exactamente?_
142
+
143
+ **Causa raíz:**
144
+ _¿Por qué ocurre?_
145
+
146
+ **Impacto:**
147
+ _¿A quién afecta y cómo?_
148
+
149
+ **Solución propuesta:**
150
+ _¿Cómo se arreglaría?_
151
+
152
+ **Referencias:**
153
+ - _enlaces a código, docs, commits_
154
+ ```
155
+
156
+ ---
157
+
158
+ *Última actualización: 2026-05-24*