609 lines
34 KiB
Markdown
609 lines
34 KiB
Markdown
# Historial de sesiones
|
||
|
||
**Proyecto:** Workspace de tools IA para empresas
|
||
**Modulo:** RAG
|
||
**Ultima actualizacion:** 2026-09-14
|
||
**Ultima modificacion por:** Subagente Correccion OCR Unit 5
|
||
**Estado:** Activo
|
||
|
||
---
|
||
|
||
## Registro de sesion
|
||
|
||
### 2026-09-14 - Agente RAG 2 - Diagnostico de resultados vacios de subagentes
|
||
|
||
**Modelo:** openai/gpt-5.6-sol
|
||
**Session ID OpenCode:** `ses_29bdbd003ffeLrLjUlFgnp08Y7`
|
||
**Rol/responsabilidad:** Cerrar directamente en Build el diagnostico de `<task_result>` vacio antes de retomar `sdd-apply` desde orchestrator.
|
||
|
||
**Trabajo realizado:**
|
||
- Reconstruidas en modo read-only las sesiones afectadas desde las tablas `session`, `message` y `part` de OpenCode.
|
||
- Confirmado que las ejecuciones vacias con actividad terminaron en `finish=length`, 32.000 tokens de salida y sin texto final del asistente.
|
||
- Acotado el disparador observado a `sdd-tasks` y a reintentos `general` que seguian reescribiendo el mismo `tasks.md` bajo un limite estricto; las fases GLM `sdd-init`, `sdd-explore` y `sdd-propose` del cambio terminaron normalmente.
|
||
- Separado el `APIError` inicial por limite de uso del agotamiento posterior de longitud de salida.
|
||
- Verificado con una prueba breve que GLM devuelve `task_result` cuando termina con `finish=stop` y que no modifico los archivos observados.
|
||
- Confirmado que el siguiente subagente `sdd-apply` usa `openai/gpt-5.6-sol`, no GLM.
|
||
- Persistida en Engram y en el seguimiento central de Gentle-AI la regla de acotar tareas para GLM; el presupuesto de 400 lineas ayuda, pero no garantiza el limite de tokens.
|
||
|
||
**Estado final:**
|
||
- Incidencia explicada y cerrada como bloqueo para el siguiente paso OCR.
|
||
- No se modifico la configuracion de OpenCode.
|
||
- Listo para volver a orchestrator y retomar `sdd-apply`.
|
||
|
||
**Archivos modificados:**
|
||
- `docs/HISTORIAL_SESIONES.md`
|
||
- `/home/pancho/Documentos/Empresa/IA/herramientas/docs/gentle-ai/SEGUIMIENTO_DESCUBRIMIENTOS_MEJORAS_GENTLE_AI.md`
|
||
|
||
---
|
||
|
||
## Registro de sesion
|
||
|
||
### 2026-09-13 - Subagente Inicialización SDD del RAG - sdd-init
|
||
|
||
**Rol/responsabilidad:** Bootstrap del contexto SDD hibrido (OpenSpec + Engram), capacidades de testing y skill registry para el trabajo de OCR del RAG. Invocado por el agente orquestador.
|
||
|
||
**Modelo:** ollama/glm-5.3:cloud
|
||
|
||
**Trabajo realizado:**
|
||
- Deteccion del stack real del repo: Node 22 ESM, TypeScript 5.8 strict, Express 4, node:test via tsx, tsc --noEmit; sin linter, formatter ni coverage.
|
||
- Verificacion en vivo: `npm test` 25/25 OK, `npm run check` OK.
|
||
- Resolucion Strict TDD: `true` (un unico proyecto en scope, `npm test` de raiz lo cubre).
|
||
- Inicializacion OpenSpec: `openspec/config.yaml`, `openspec/specs/`, `openspec/changes/archive/`.
|
||
- Refresco de `.atl/skill-registry.md` (ya existia con fecha 2026-09-11; el preflight decia que no existia): 20 skills indexados, sdd-*/_shared/skill-registry excluidos, dedup canonico.
|
||
- Guardado en Engram (proyecto `rag-service`): contexto de proyecto, capacidades de testing y skill registry (obs 3372, 3373, 3374).
|
||
|
||
**Estado final:**
|
||
- SDD inicializado en modo hibrido para `rag-service`; siguiente fase: `sdd-explore` para el cambio de OCR en la ingesta.
|
||
- Sin cambios de codigo ni comportamiento de aplicacion.
|
||
|
||
**Archivos modificados:**
|
||
- `openspec/config.yaml` (nuevo)
|
||
- `openspec/specs/.gitkeep` (nuevo)
|
||
- `openspec/changes/archive/.gitkeep` (nuevo)
|
||
- `.atl/skill-registry.md` (regenerado)
|
||
- `docs/HISTORIAL_SESIONES.md` (esta entrada)
|
||
|
||
---
|
||
|
||
## Registro de sesion
|
||
|
||
### 2026-09-13 - Agente RAG 2 - Propuesta de backups y persistencia
|
||
|
||
**Modelo:** gpt-5.6-luna
|
||
**Session ID OpenCode:** `ses_29bdbd003ffeLrLjUlFgnp08Y7`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG`
|
||
|
||
**Trabajo realizado:**
|
||
- Auditado el almacenamiento actual de documentos, Qdrant, PostgreSQL y uploads.
|
||
- Confirmado que los uploads del endpoint `/ingest/upload` son temporales y se eliminan despues del procesamiento.
|
||
- Guardada en `PENDIENTES_RAG.md` la propuesta de persistencia de originales y backups de PostgreSQL/Qdrant.
|
||
- Definido un backup operativo inmediato antes de ejecutar la migracion del lifecycle.
|
||
|
||
**Estado final:**
|
||
- Propuesta completa diferida para implementacion posterior.
|
||
- Backup rapido de `db_rag` completado como TAR portable y verificado con PostgreSQL 17.10.
|
||
- Snapshots de `rag_chunks` y `rag_eval_logs` descargados y verificados localmente.
|
||
- `npm run migrate:lifecycle` ejecutado correctamente en produccion.
|
||
- Esquema verificado: registro de migracion, ocho tablas, indices y triggers presentes.
|
||
- `/health` sigue operativo con enforcement desactivado.
|
||
- Dry-run legacy ejecutado: 22.605 puntos, 7 fuentes y `blockedReasons: []`.
|
||
- Pendiente ejecutar la migracion controlada del corpus legacy.
|
||
|
||
**Archivos modificados:**
|
||
- `RAG/docs/PENDIENTES_RAG.md`
|
||
- `RAG/.gitignore`
|
||
- `RAG/backups/20260913-184344/postgres/db_rag.tar`
|
||
- `RAG/backups/20260913-184344/qdrant/rag_chunks.snapshot`
|
||
- `RAG/backups/20260913-184344/qdrant/rag_eval_logs.snapshot`
|
||
- `RAG/backups/20260913-184344/checksums.sha256`
|
||
- `RAG/docs/HISTORIAL_SESIONES.md`
|
||
|
||
---
|
||
|
||
## Registro de sesion
|
||
|
||
### 2026-09-11 - Agente RAG 2 - Preparacion PostgreSQL
|
||
|
||
**Modelo:** gpt-5.6-luna
|
||
**Session ID OpenCode:** `ses_29bdbd003ffeLrLjUlFgnp08Y7`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG`
|
||
|
||
**Trabajo realizado:**
|
||
- Inspeccion de solo lectura completada por SSH en VPS2 usando el contenedor `ia_servicios_postgres-ia-servicios`.
|
||
- Creada la base `db_rag` y el usuario dedicado `usr_rag`, propietario de su base y con permisos completos sobre su esquema y objetos futuros.
|
||
- Verificado el acceso de `usr_rag` por TCP contra `db_rag`.
|
||
- Separada la ejecucion de migraciones SQL del arranque normal del servicio RAG.
|
||
- Actualizados el procedimiento de despliegue y los paquetes de mejoras diferidas.
|
||
|
||
**Validacion:**
|
||
- `npm run check` correcto.
|
||
- `npm test` correcto: 25/25.
|
||
- `npm run build` correcto.
|
||
- `git diff --check` correcto.
|
||
|
||
**Estado final:**
|
||
- PostgreSQL preparado a nivel de base y usuario.
|
||
- Pendiente configurar la conexion en EasyPanel, ejecutar explicitamente el esquema y verificar produccion.
|
||
- La contraseña se conserva en el archivo local ignorado `RAG/llaves` y no se persiste en documentacion versionada.
|
||
|
||
**Archivos modificados:**
|
||
- `Dockerfile`
|
||
- `package.json`
|
||
- `docs/DESPLIEGUE_EASYPANEL.md`
|
||
- `docs/PENDIENTES_RAG.md`
|
||
- `docs/HISTORIAL_SESIONES.md`
|
||
|
||
### 2026-09-11 - Agente RAG 2 - Mejoras diferidas
|
||
|
||
**Modelo:** openai/gpt-6-astra
|
||
**Session ID OpenCode:** `ses_29bdbd003ffeLrLjUlFgnp08Y7`
|
||
**Rol:** Continuidad operativa y evolutiva del RAG.
|
||
|
||
- Añadido paquete posterior de seguimiento del corpus por API y frontend al punto 2.
|
||
- Añadido paquete posterior de backups manuales al punto 7, limitado a RAG y Qdrant; la base de n8n queda fuera.
|
||
- Retirados los backups habituales del prerrequisito bloqueante PostgreSQL, conservando el snapshot propio de la migracion legacy.
|
||
- Estado: mejoras diferidas sin urgencia; preparacion PostgreSQL sigue como tarea actual.
|
||
- Archivos: `RAG/docs/PENDIENTES_RAG.md`, `RAG/docs/HISTORIAL_SESIONES.md`, `docs/HISTORIAL_SESIONES.md`.
|
||
|
||
### 2026-09-11 - Agente RAG 2
|
||
|
||
**Modelo:** gpt-5.6-luna
|
||
**Session ID OpenCode:** `ses_29bdbd003ffeLrLjUlFgnp08Y7`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG`
|
||
|
||
**Trabajo realizado:**
|
||
- Confirmado que PostgreSQL se introdujo con el punto 2 y que no existia una URL previa del RAG que se hubiera perdido.
|
||
- Detectada la omision de configuracion operativa de la nueva dependencia en EasyPanel.
|
||
- Documentado el incidente en `docs/REGISTRO_SITUACIONES.md`.
|
||
- Creado en `PENDIENTES_RAG.md` el prerrequisito bloqueante de preparar PostgreSQL, crear/verificar esquema, configurar conexion, revisar operacion y cargar las fuentes actuales.
|
||
- Actualizados los estados de la documentacion del punto 2.
|
||
|
||
**Estado final:**
|
||
- No se ejecutaran migraciones legacy, pruebas de ciclo de vida ni OCR hasta completar el prerrequisito PostgreSQL.
|
||
|
||
**Archivos modificados:**
|
||
- `RAG/docs/PENDIENTES_RAG.md`
|
||
- `RAG/docs/API_RAG.md`
|
||
- `RAG/docs/INGESTA.md`
|
||
- `RAG/docs/SISTEMA_RAG_BASE.md`
|
||
- `RAG/docs/CONTRATO_CICLO_VIDA_Y_OCR.md`
|
||
- `RAG/docs/DESPLIEGUE_EASYPANEL.md`
|
||
- `RAG/docs/HISTORIAL_SESIONES.md`
|
||
- `docs/REGISTRO_SITUACIONES.md`
|
||
|
||
### 2026-04-06 - Agente RAG 2
|
||
|
||
**Modelo:** gpt-5.4
|
||
**Conversation ID:** `N/D (OpenCode no lo expone en este entorno)`
|
||
**Session ID OpenCode:** `ses_29bdbd003ffeLrLjUlFgnp08Y7`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA`
|
||
|
||
**Rol asumido:**
|
||
Dar continuidad al RAG en `RAG/` a partir del estado actual documentado.
|
||
|
||
**Contexto recuperado:**
|
||
- No existe `README` en la raiz de `RAG/`.
|
||
- La base documental principal revisada ha sido:
|
||
- `docs/SISTEMA_RAG_BASE.md`
|
||
- `docs/BITACORA_DISENO_RAG.md`
|
||
- `docs/METODOLOGIA_ITERACION_Y_REDEPLOY.md`
|
||
- `docs/PLAYGROUND.md`
|
||
- `docs/LOGS_EVALUACION.md`
|
||
- La v1 figura como operativa y desplegada en `https://rag.por-correo.com`.
|
||
- Endpoints documentados como operativos: `GET /health`, `POST /ingest`, `POST /retrieve`, `POST /answer`.
|
||
- El playground y los logs de evaluacion aparecen implementados en codigo y pendientes de redeploy segun la documentacion.
|
||
|
||
**Criterio de continuidad asumido:**
|
||
- Trabajar desde el estado ya documentado, sin redescubrir decisiones nucleares de la v1.
|
||
- Mantener actualizada la documentacion relevante cuando se hagan cambios reales.
|
||
- Usar este historial para dejar trazabilidad entre sesiones y agentes.
|
||
|
||
**Trabajo realizado en esta sesion:**
|
||
- Auditoria inicial de documentacion, codigo y estado observable del modulo `RAG/`.
|
||
- Registro de un reporte temporal de auditoria de modelo en `RAG/docs/TEMP_AUDITORIA_MODELO_PRE_CLEANUP.md` para comparacion futura.
|
||
- Implementacion de ayuda visual en la zona de `Bootstrap` del playground.
|
||
- Añadidos tooltip y `aria-label` en `Cargar bootstrap`, `Reemplazar contexto`, `Vaciar contexto`, `Preset docs`, `Preset RAG docs` y `Preset codigo`.
|
||
- Actualizacion de `RAG/docs/PLAYGROUND.md` y `RAG/docs/TEXTOS_AYUDA_PLAYGROUND.md` para reflejar la mejora.
|
||
- Implementacion de la pestaña Limpieza en el playground y soporte en el backend (`POST /cleanup`) para borrado seguro de contextos ya ingeridos.
|
||
- Limpieza ejecutada exitosamente sobre el `scope` del código fuente antiguo (`RAG/src`).
|
||
- Reingesta del directorio `RAG/src` con el código actualizado.
|
||
- Documento de seguimiento `RAG/docs/TASK_LIMPIEZA.md` y documentacion API `RAG/docs/API_RAG.md` actualizados.
|
||
- Comparacion de auditorias del modelo (pre y post cleanup) documentada en `RAG/docs/TEMP_AUDITORIA_MODELO_PRE_CLEANUP.md`, confirmando una ganancia clara en nitidez y precision del RAG al evaluar el codigo.
|
||
- Implementacion de ingesta directa de carpetas locales desde el playground: el navegador empaqueta la carpeta en un `.zip` en memoria (filtrando `node_modules`, `dist`, `.git`, etc. con logica nativa) y el backend usa `adm-zip` para extraerla de forma segura en un directorio temporal antes de la ingesta.
|
||
- Correccion en `IngestService` (`resolveInputFiles` y `normalizeDocumentKey`) para escanear archivos desde la ruta temporal extraída (`readPath`) en lugar del identificador lógico al subir carpetas completas, evitando error de `ENOENT`.
|
||
- Revision inicial del corpus `/_imports/gstreamer-rag-text` como futura base documental especializada para GStreamer.
|
||
- Creacion de `RAG/docs/TASK_INGESTA_GSTREAMER.md` con el plan operativo para ingerirlo bajo un scope unico, validar retrieval y prepararlo para uso posterior con modelo local.
|
||
- Diagnostico y correccion del fallo real de ingesta masiva en corpus documentales: algunos ficheros generaban chunks sobredimensionados que acababan rompiendo la llamada a embeddings.
|
||
- Correccion aplicada en `src/modules/process/chunking.ts` y endurecimiento defensivo de `src/modules/embeddings/provider.ts`.
|
||
- Ingesta completada del corpus GStreamer bajo el scope unico `gstreamer-official` / `corpus:gstreamer:official:v1` con `3117` documentos y `22003` chunks.
|
||
- Validacion funcional en produccion mediante `GET /sources` y `POST /retrieve` para bootstrap y consulta especifica sobre request pads.
|
||
- Creacion y configuracion del agente primario `gstreamer` en OpenCode para diagnostico tecnico sobre proyectos con GStreamer, priorizando el scope `gstreamer-official` del RAG.
|
||
- Documentacion del agente en `RAG/docs/AGENTE_GSTREAMER.md`.
|
||
- Ajuste del agente `gstreamer` para asumir por defecto el scope `gstreamer-official` sin que el usuario tenga que mencionarlo expresamente en cada prompt.
|
||
- Creacion de un paquete portable para recrear el agente `gstreamer` en otro PC: `RAG/docs/AGENTE_GSTREAMER_OPENCODE.jsonc` y `RAG/docs/INSTALAR_AGENTE_GSTREAMER_EN_OTRO_PC.md`.
|
||
- Conexion operativa real del agente `gstreamer` al RAG remoto `https://rag.por-correo.com` mediante scripts dedicados fijados al scope `gstreamer-official`.
|
||
- Soporte explicito para flujos de `bootstrap` y `precarga` dirigida antes de revisar codigo.
|
||
- Ajuste del paquete portable del agente para usar placeholder `__IA_WORKSPACE_ROOT__` y poder reinstalarlo correctamente en otros equipos sin depender de rutas locales de este PC.
|
||
- Creacion de `RAG/agente_gstreamer/` como carpeta autocontenida para llevar el agente a otro PC con configuracion, scripts e instrucciones en un solo paquete.
|
||
|
||
---
|
||
|
||
### 2026-09-08 - Agente RAG 2
|
||
|
||
**Modelo:** gpt-5.6-sol
|
||
**Session ID OpenCode:** `ses_29bdbd003ffeLrLjUlFgnp08Y7`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG`
|
||
|
||
**Trabajo realizado:**
|
||
- Auditoria de las 14 operaciones HTTP existentes y de sus contratos reales.
|
||
- Implementacion de `GET /help` y `GET /openapi.json`, dejando 16 operaciones documentadas.
|
||
- Creacion de un contrato OpenAPI 3.1.1 con esquemas, parametros, respuestas, errores y ejemplos.
|
||
- Reescritura de `docs/API_RAG.md` como guia operativa enlazada al contrato OpenAPI.
|
||
- Correccion del estado obsoleto de playground, logs, cleanup, stack y documentos de diseño.
|
||
- Correccion de la metodologia: local se limita a compilacion y comprobaciones estaticas; los flujos HTTP se validan tras publicar en produccion.
|
||
- Validacion satisfactoria con `npm run check`, `npm run build`, comprobacion de referencias OpenAPI y contraste automatico entre rutas implementadas y documentadas.
|
||
- Deteccion del build context obsoleto `/RAG` en EasyPanel tras la migracion del repositorio.
|
||
- Ajuste por el usuario de `Ruta de compilacion` a `/` y despliegue satisfactorio del commit `f1cd87c`.
|
||
- Validacion en produccion de health, Qdrant, playground, sources, `/help` y `/openapi.json`.
|
||
- Regresion satisfactoria de retrieval sobre FacturaTech: 6 resultados, cero fugas de scope y coincidencias `504` en los primeros resultados.
|
||
- Deteccion posterior de que `/help` enlazaba OpenAPI pero no explicaba para que debia consultarse.
|
||
- Incorporacion de una instruccion explicita en `/help` sobre parametros, cuerpos, respuestas, errores y ejemplos disponibles en `/openapi.json`.
|
||
- Deploy del ajuste `953ff25` y revalidacion satisfactoria de `/help`, `/openapi.json` y `/health` en produccion.
|
||
|
||
**Estado final:**
|
||
- Pendiente 1 completado y validado definitivamente en `https://rag.por-correo.com`.
|
||
- La API dispone de descubrimiento rapido y contrato OpenAPI para sus 16 operaciones.
|
||
- Siguiente prioridad: ciclo de vida del conocimiento.
|
||
|
||
---
|
||
|
||
### 2026-09-08 - Agente RAG 2
|
||
|
||
**Modelo:** gpt-5.6-sol
|
||
**Session ID OpenCode:** `ses_29bdbd003ffeLrLjUlFgnp08Y7`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG`
|
||
|
||
**Subagentes de analisis:**
|
||
- `Subagente Extraccion de versiones PaddleOCR`: contraste de versiones PyPI compatibles para el benchmark CPU.
|
||
- `Subagente Validacion del ciclo de vida`: revision adversarial del catalogo PostgreSQL y versionado Qdrant.
|
||
- `Subagente Validacion OCR`: revision adversarial de deteccion, servicio privado, quality gates y revision humana.
|
||
- `Subagente Auditoria de claridad del contrato`: detecto contradicciones de hashes, idempotencia, migracion y revision.
|
||
- `Subagente Revalidacion de ejecutabilidad`: detecto bloqueos restantes en metadata, concurrencia y artefactos.
|
||
- `Subagente Revalidacion de resiliencia`: reviso carreras, barreras de migracion y recuperacion de jobs.
|
||
- `Subagente Revision final del contrato`: verifico y cerro la secuencia segura de rollback legacy.
|
||
|
||
**Trabajo realizado:**
|
||
- Auditoria del pipeline actual de ingesta, IDs, Qdrant, parser PDF, API e infraestructura EasyPanel.
|
||
- Confirmacion de PostgreSQL 17 como catalogo transaccional y Qdrant como almacenamiento vectorial versionado.
|
||
- Benchmark aislado en VPS2 con el PDF mixto real de FacturaTech.
|
||
- Descarte de Tesseract como motor unico por omitir identificadores criticos.
|
||
- Seleccion de PaddleOCR como motor principal y deteccion de errores alfanumericos de alta confianza que obligan a revision humana.
|
||
- Creacion de `docs/CONTRATO_CICLO_VIDA_Y_OCR.md` con esquema, estados, APIs, migracion, OCR, tareas, pruebas, despliegue y rollback.
|
||
- Enlace del contrato desde el backlog canonico.
|
||
- Correccion del contrato mediante revisiones adversariales hasta eliminar sus bloqueos criticos conocidos.
|
||
- Limpieza de los artefactos e imagenes temporales usados en el benchmark local y de VPS2.
|
||
|
||
**Estado final:**
|
||
- Diseño de los pendientes 2 y 3 cerrado y listo para implementacion secuencial.
|
||
- El punto 2 debe completarse y validarse en produccion antes de iniciar el punto 3.
|
||
- No se modifico codigo ni produccion durante esta fase de diseño.
|
||
|
||
**Archivos modificados:**
|
||
- `RAG/docs/CONTRATO_CICLO_VIDA_Y_OCR.md`
|
||
- `RAG/docs/PENDIENTES_RAG.md`
|
||
- `RAG/docs/HISTORIAL_SESIONES.md`
|
||
- `docs/INDICE_DOCUMENTACION.md`
|
||
- `docs/HISTORIAL_SESIONES.md`
|
||
|
||
---
|
||
|
||
### 2026-09-11 - Subagente Implementacion ciclo de vida del conocimiento
|
||
|
||
**Modelo:** openai/gpt-5.5
|
||
**Session ID OpenCode:** `ses_f6fe0ad30ffeiottYsATsRemCo`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG`
|
||
|
||
**Rol asumido:**
|
||
Ejecutar la fase apply del punto 2 del RAG y corregir los bloqueadores finales detectados antes de commit, push o despliegue.
|
||
|
||
**Trabajo realizado:**
|
||
- Ajuste del migrador legacy para permitir reanudacion por `--batch-id`, reutilizando versiones ya creadas y completando activacion tras actualizaciones de payload ya aplicadas.
|
||
- Endurecimiento de rollback legacy con lock global de migracion, comprobacion de snapshot y operaciones serializadas sobre fuentes/versiones.
|
||
- Reconciliador protegido con advisory lock no bloqueante, timeout configurable basado en `indexing_started_at` y validacion de coleccion/dimensiones.
|
||
- Protecciones adicionales: `POST /cleanup` respeta `INGEST_WRITES_ENABLED`, `markPurged` valida `rowCount`, rollback usa locks y OpenAPI refleja `503` en health con `ok` booleano.
|
||
- Script `migrate:legacy:lifecycle` ajustado para ejecutarse desde `dist/` con Node tras build.
|
||
- Añadidos tests unitarios para reanudacion legacy, activacion idempotente, cleanup con escrituras deshabilitadas, reconciliador, mismatch de coleccion y `markPurged`.
|
||
|
||
**Validacion local:**
|
||
- `npm run check` correcto.
|
||
- `npm test` correcto: 18 tests pasan.
|
||
- `npm run build` correcto.
|
||
- `git diff --check` correcto.
|
||
|
||
**Estado final:**
|
||
- Punto 2 implementado y validado localmente.
|
||
- No se hizo commit, push, deploy ni lectura de `.env`.
|
||
- Sigue pendiente la verificacion independiente y la validacion/migracion en produccion antes de marcar el punto 2 como cerrado.
|
||
|
||
**Archivos modificados en esta correccion:**
|
||
- `.env.example`
|
||
- `package.json`
|
||
- `package-lock.json`
|
||
- `src/config/env.ts`
|
||
- `src/modules/catalog/client.ts`
|
||
- `src/modules/catalog/repository.ts`
|
||
- `src/modules/catalog/reconciler.ts`
|
||
- `src/modules/vectorstore/client.ts`
|
||
- `src/modules/retrieve/service.ts`
|
||
- `src/modules/ingest/service.ts`
|
||
- `src/scripts/migrate-legacy-lifecycle.ts`
|
||
- `src/api/openapi.ts`
|
||
- `tests/lifecycle-services.test.ts`
|
||
- `docs/API_RAG.md`
|
||
- `docs/DESPLIEGUE_EASYPANEL.md`
|
||
- `docs/SISTEMA_RAG_BASE.md`
|
||
- `RAG/docs/HISTORIAL_SESIONES.md`
|
||
|
||
---
|
||
|
||
### 2026-09-11 (reanudacion final) - Subagente Implementacion ciclo de vida del conocimiento
|
||
|
||
**Modelo:** openai/gpt-5.5
|
||
**Session ID OpenCode:** `ses_f6fe0ad30ffeiottYsATsRemCo`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG`
|
||
|
||
**Rol asumido:**
|
||
Completar los 4 bloqueos del sdd-verify y cerrar la validacion local del punto 2.
|
||
|
||
**Trabajo realizado:**
|
||
- Reconciliador: recupera versiones huerfanas `pending/indexing` a `ready` contando puntos Qdrant y validando documentos, coleccion y dimensiones; marca `failed` solo si quedan incompletas; try-locks evitan matar ingestas vivas.
|
||
- Ingesta: rechaza embeddings con dimensiones distintas de las esperadas antes del upsert y antes de alcanzar `ready`.
|
||
- Rollback legacy: transaccion diferida del lote, confirmacion de cero punteros activos, restauracion de snapshot con verificacion de recuentos y limpieza posterior del catalogo.
|
||
- OpenAPI: `/sources` documenta `503`.
|
||
- Retrieval: locks compartidos adquiridos antes de validar recuento/dimensiones y mantenidos durante toda la consulta Qdrant.
|
||
- Interrupcion por limite de uso a mitad de la validacion; reanudada tras cambio de cuenta y completada hasta el final.
|
||
|
||
**Validacion local:**
|
||
- `npm run check` correcto.
|
||
- `npm test` correcto: 25/25 tests pasan.
|
||
- `npm run build` correcto.
|
||
- `git diff --check` correcto.
|
||
- Verificacion independiente (sdd-verify): PASS local.
|
||
|
||
**Estado final:**
|
||
- Implementacion local del punto 2 verificada de forma independiente: PASS local.
|
||
- No se hizo commit, push, deploy ni lectura de `.env`.
|
||
- Pendiente: commit/push, deploy con enforcement desactivado, migracion legacy y validacion en produccion antes de cerrar el punto 2.
|
||
|
||
---
|
||
|
||
### 2026-09-13 - Agente RAG 2
|
||
|
||
**Modelo:** openai/gpt-5.6-luna
|
||
**Session ID OpenCode:** `ses_29bdbd003ffeLrLjUlFgnp08Y7`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA`
|
||
|
||
**Rol asumido:**
|
||
Continuidad operativa y evolutiva del modulo RAG.
|
||
|
||
**Trabajo realizado:**
|
||
- Creado y conservado un snapshot Qdrant remoto de `rag_chunks` antes de la migracion, con checksum `a55b13d3b6b791e9b148f87491b9b2788ce5797ee997a9f6be2a6d424eb92302`.
|
||
- Ejecutada la ventana de mantenimiento con escrituras desactivadas y `maintenance=true`.
|
||
- Aplicada la migracion legacy con lote `17f05cae-c5a7-49a5-b3ad-729958e1a342`.
|
||
- Catalogadas 7 fuentes y 22.605 puntos; las siete versiones quedaron activas y los recuentos esperados/verificados coinciden.
|
||
- Activado `KNOWLEDGE_LIFECYCLE_ENFORCED=true`, validado retrieval con catalogo y reactivadas las escrituras.
|
||
|
||
**Validacion en produccion:**
|
||
- `/health`: HTTP 200, PostgreSQL, Qdrant y reconciliador operativos.
|
||
- Reconciliador: `inconsistentSources=[]`, `invariantViolations=[]` y cero versiones huerfanas recuperadas/fallidas.
|
||
- Retrieval FacturaTech y GStreamer: HTTP 200, resultados limitados a sus fuentes.
|
||
- Estado final: `maintenance=false`, `INGEST_WRITES_ENABLED=true`, enforcement activo.
|
||
|
||
**Estado final:**
|
||
- Punto 2 del ciclo de vida cerrado y validado en produccion.
|
||
- Punto 3 OCR queda habilitado para la siguiente fase.
|
||
|
||
**Archivos modificados:**
|
||
- `docs/PENDIENTES_RAG.md`
|
||
- `docs/API_RAG.md`
|
||
- `docs/DESPLIEGUE_EASYPANEL.md`
|
||
- `docs/CONTRATO_CICLO_VIDA_Y_OCR.md`
|
||
- `docs/HISTORIAL_SESIONES.md`
|
||
|
||
---
|
||
|
||
### 2026-09-14 - Agente RAG 2 - Reparacion directa de tasks OCR
|
||
|
||
**Modelo:** openai/gpt-5.6-sol
|
||
**Session ID OpenCode:** `ses_29bdbd003ffeLrLjUlFgnp08Y7`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG`
|
||
|
||
**Trabajo realizado:**
|
||
- Reparado directamente `openspec/changes/ocr-ingest-integration/tasks.md` tras varios resultados vacios de subagentes.
|
||
- Reducido el artefacto de 646 a 524 palabras, por debajo del limite estricto de 530.
|
||
- Conservados 30 tareas, 13 work units, trazabilidad de 17 requisitos/34 escenarios, Strict TDD, amenazas HTTP, contratos de activacion y estrategia feature-branch-chain.
|
||
- Sincronizado el artefacto hibrido en Engram mediante el topic `sdd/ocr-ingest-integration/tasks`.
|
||
|
||
**Validacion:**
|
||
- Cuatro guard lines requeridas presentes con valores correctos.
|
||
- `gentle-ai sdd-status ocr-ingest-integration --json`: `applyState=ready`, `blockedReasons=[]`.
|
||
- Revision semantica contra las tres specs completada.
|
||
|
||
**Estado final:**
|
||
- Fase de tasks recuperada y lista para iniciar `sdd-apply` desde Unit 1.
|
||
- No se implemento codigo OCR, ni se hizo commit, push o deploy.
|
||
|
||
**Archivos modificados:**
|
||
- `openspec/changes/ocr-ingest-integration/tasks.md`
|
||
- `docs/HISTORIAL_SESIONES.md`
|
||
|
||
---
|
||
|
||
### 2026-09-14 - Subagente OCR Unit 1 Migration - Migracion OCR revisable
|
||
|
||
**Agente:** **Subagente OCR Unit 1 Migration**
|
||
**Rol/responsabilidad:** Implementar exclusivamente Unit 1 (Migration) del cambio SDD `ocr-ingest-integration` mediante TDD estricto, sin ejecutar Unit 2 ni acciones de entrega Git.
|
||
**Modelo:** openai/gpt-5.6-sol
|
||
**Session ID OpenCode:** `ses_f607397e7ffeF3y4cM8FvprlCB`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG`
|
||
|
||
**Trabajo realizado:**
|
||
- Creada primero la prueba focalizada de contrato de esquema para la migracion OCR.
|
||
- Capturado RED valido con 4/4 pruebas fallidas por ausencia de `migrations/002_ocr_review.sql`; una ejecucion previa con error sintactico en la prueba fue corregida y no se conto como RED.
|
||
- Creada `migrations/002_ocr_review.sql` con jobs OCR durables, campos de idempotencia y leases, registros auditables por pagina, correcciones atomicas y un indice unico parcial para identidades OCR no terminales.
|
||
- Capturado GREEN con 4/4 pruebas aprobadas mediante `npx --no-install tsx --test tests/catalog/migration-002.test.ts`.
|
||
- Marcada exclusivamente la tarea 1.2 como completada; la tarea 1.1 permanece pendiente porque requiere las pruebas de comportamiento de repositorio de Unit 2.
|
||
- Persistida la evidencia acumulativa de apply en OpenSpec y sincronizada con Engram mediante `sdd/ocr-ingest-integration/apply-progress`.
|
||
|
||
**Estado final:**
|
||
- Unit 1 completada dentro de su limite autonomo y con rollback acotado a los dos archivos nuevos y sus metadatos de progreso.
|
||
- Runtime PostgreSQL indicado como no aplicable en esta unidad: el plan la define como schema-only y el proyecto no dispone de harness PostgreSQL de pruebas.
|
||
- No se modificaron la migracion 001 ni la logica de repositorio; no se hizo commit, push, PR, deploy ni acceso a secretos.
|
||
|
||
**Archivos modificados:**
|
||
- `migrations/002_ocr_review.sql`
|
||
- `tests/catalog/migration-002.test.ts`
|
||
- `openspec/changes/ocr-ingest-integration/tasks.md`
|
||
- `openspec/changes/ocr-ingest-integration/apply-progress.md`
|
||
- `docs/HISTORIAL_SESIONES.md`
|
||
|
||
---
|
||
|
||
### 2026-09-14 - Subagente OCR Unit 2 Repository - Repositorio OCR
|
||
|
||
**Agente:** **Subagente OCR Unit 2 Repository**
|
||
**Rol/responsabilidad:** Implementar exclusivamente Unit 2 del cambio SDD `ocr-ingest-integration` mediante TDD estricto.
|
||
**Modelo:** openai/gpt-5.6-sol
|
||
**Session ID OpenCode:** `ses_f6068e516ffemqjXllduA068YL`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG`
|
||
|
||
**Trabajo realizado:**
|
||
- Creada primero la prueba focalizada `tests/catalog/repository-ocr.test.ts`; RED valido: 0/6 por metodos ausentes.
|
||
- Añadidas al repositorio la recuperacion de candidato OCR pendiente, la toma atomica de jobs, la recuperacion de leases vencidos sin perder identidad remota y las transiciones protegidas de revision.
|
||
- Refactorizada tras GREEN la proyeccion comun de filas OCR y sincronizadas las tareas 1.1, 1.3 y 1.4 con el progreso acumulado hibrido.
|
||
|
||
**Validacion:**
|
||
- Reejecucion segura: 6/6; `npm test`: 10/10; suite raiz explicita: 25/25; `npm run check` y `git diff --check`: correctos.
|
||
- Slice de codigo y pruebas: 313 lineas autoradas; 389 en total con metadatos e historial, dentro del presupuesto de 400.
|
||
|
||
**Estado final:**
|
||
- Unit 2 completada sin modificar dispatcher/reconciler, crear commits, publicar ni desplegar. Incidencias: una ejecucion inicial pudo activar dotenv sin exponer contenido y `npm test` omite ahora las pruebas raiz por expansion del glob; la suite raiz explicita paso.
|
||
|
||
**Archivos modificados:**
|
||
- `src/modules/catalog/repository.ts`
|
||
- `tests/catalog/repository-ocr.test.ts`
|
||
- `openspec/changes/ocr-ingest-integration/{tasks.md,apply-progress.md}`
|
||
- `docs/HISTORIAL_SESIONES.md`
|
||
|
||
---
|
||
|
||
### 2026-09-14 - Subagente OCR Unit 2 Corrective Rerun - Correccion de la verificacion canonica
|
||
|
||
**Agente:** **Subagente OCR Unit 2 Corrective Rerun**
|
||
**Rol/responsabilidad:** Ejecutar la unica repeticion correctiva de Unit 2 para restaurar la cobertura canonica de pruebas y renovar su evidencia, sin implementar Unit 3.
|
||
**Modelo:** openai/gpt-5.6-sol
|
||
**Session ID OpenCode:** `ses_f60564170ffec1x6E520GuSMHd`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG`
|
||
|
||
**Trabajo realizado:**
|
||
- Corregido de forma minima el script `npm test`: ahora pasa explicitamente los patrones de suites raiz y anidadas a `tsx --test`.
|
||
- Repetidos todos los comandos directos de Unit 2 con `NODE_ENV=test` para evitar la omision insegura anterior.
|
||
- Fusionada la evidencia correctiva con el progreso acumulado de Units 1 y 2; las tareas 1.1–1.4 permanecen completadas y Unit 3 no se inicio.
|
||
- Registrada la excepcion `size:exception` autorizada por el maintainer exclusivamente para las 511 lineas nativas de Unit 2; el presupuesto correctivo autorizado fue de 600 lineas y las unidades posteriores conservan el limite normal de 400.
|
||
|
||
**Validacion:**
|
||
- Revision focalizada de repositorio: 6/6 pruebas correctas.
|
||
- Suites de catalogo: 10/10 pruebas correctas.
|
||
- Suites raiz explicitas: 25/25 pruebas correctas.
|
||
- `npm test` canonico: 35/35 pruebas correctas, demostrando la ejecucion conjunta de 25 pruebas raiz y 10 anidadas.
|
||
- `npm run check` y `git diff --check`: salida correcta.
|
||
- Revision fallida corregida: `sha256:9433c0cd6628f36f4c96a27d41c6d429f4303d038ffe928f297367c274f21c2f`.
|
||
- Nueva revision de evidencia: `sha256:a19119f84381447f54a6223e2a203acaf9d3ae08b6ae8f585e3bd52cd510909b`.
|
||
|
||
**Estado final:**
|
||
- Repeticion correctiva de Unit 2 completada con todos los gates solicitados en verde.
|
||
- No se hizo commit, push, PR ni deploy; no se accedio a `.env*`, `llaves` ni `backups/`.
|
||
- Unit 3 permanece pendiente.
|
||
|
||
**Archivos modificados en esta correccion:**
|
||
- `package.json`
|
||
- `openspec/changes/ocr-ingest-integration/apply-progress.md`
|
||
- `docs/HISTORIAL_SESIONES.md`
|
||
|
||
---
|
||
|
||
### 2026-09-14 - Subagente OCR Unit 3 Extraction - Extraccion PDF por pagina
|
||
|
||
**Agente:** **Subagente OCR Unit 3 Extraction**
|
||
**Rol/responsabilidad:** Implementar exclusivamente Unit 3 del cambio SDD `ocr-ingest-integration` mediante TDD estricto.
|
||
**Modelo:** openai/gpt-5.6-sol
|
||
**Session ID OpenCode:** `SIN_SESION_EN_ESTE_WORKSPACE`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG`
|
||
|
||
**Trabajo realizado:**
|
||
- Creada primero la prueba focalizada de extraccion PDF y routing; RED valido por ausencia de `parsePdfPages`.
|
||
- Añadidos un fixture PDF de tres paginas, el spike Node 22 y extraccion por pagina con texto y SHA-256 estable.
|
||
- Probado que `requirements.txt` y Markdown se leen como datos sin ejecutarse, mientras `CMakeLists.txt`, MDX y shell siguen sin soporte.
|
||
- Marcadas 2.1 y 2.3; 2.2 permanece pendiente porque sus aserciones de deteccion, composicion y riesgos pertenecen a Unit 4.
|
||
|
||
**Validacion:**
|
||
- Suite focalizada: 5/5; spike: tres paginas ordenadas con pagina 2 vacia; `npm test`: 40/40.
|
||
- `npm run check` y `git diff --check`: correctos.
|
||
- Slice nativo antes de metadatos: 225 lineas, dentro del limite de 400.
|
||
|
||
**Estado final:**
|
||
- Unit 3 completada sin iniciar 2.4/2.5, sin commit, push, PR o deploy y sin acceder a rutas restringidas.
|
||
|
||
**Archivos modificados:**
|
||
- `src/modules/parsers/parser-registry.ts`
|
||
- `scripts/spike-pdfjs.ts`
|
||
- `tests/parsers/pdf-pages.test.ts`
|
||
- `tests/fixtures/ocr/native-three-pages.pdf`
|
||
- `openspec/changes/ocr-ingest-integration/{tasks.md,apply-progress.md}`
|
||
- `docs/HISTORIAL_SESIONES.md`
|
||
|
||
---
|
||
|
||
### 2026-09-14 - Subagente OCR Unit 4 Detection and Composition - Deteccion y composicion OCR
|
||
|
||
**Agente:** **Subagente OCR Unit 4 Detection and Composition**
|
||
**Rol/responsabilidad:** Implementar exclusivamente Unit 4 del cambio SDD `ocr-ingest-integration` mediante TDD estricto.
|
||
**Modelo:** openai/gpt-5.6-sol
|
||
**Session ID OpenCode:** `SIN_SESION_EN_ESTE_WORKSPACE`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG`
|
||
|
||
**Trabajo realizado:**
|
||
- Creada primero la prueba focalizada; RED valido por ausencia de los modulos OCR.
|
||
- Implementadas las tareas 2.2, 2.4 y 2.5: deteccion y quality gates exactos, composicion determinista, hashes canonicos y riesgos sin autocorreccion.
|
||
|
||
**Validacion:**
|
||
- Suite focalizada 5/5, harness PDF mixto 1/1 y canonica 45/45; check y comprobaciones de espacios correctos; slice nativo: 322 lineas.
|
||
|
||
**Estado final:**
|
||
- Unit 4 completada; Unit 5 no iniciada y sin commit, push, PR, deploy o acceso a rutas restringidas.
|
||
|
||
**Archivos modificados:**
|
||
- `src/modules/ocr/{detection,composition}.ts`
|
||
- `tests/ocr/detection.test.ts`
|
||
- `openspec/changes/ocr-ingest-integration/{tasks.md,apply-progress.md}`, `docs/HISTORIAL_SESIONES.md`
|
||
|
||
---
|
||
|
||
### 2026-09-14 - Subagente OCR Unit 5 Reintento y Correccion - Servicio OCR HTTP validado
|
||
|
||
**Agente:** **Subagente OCR Unit 5 Reintento y Correccion**
|
||
**Rol/responsabilidad:** Implementar y corregir exclusivamente Unit 5, tareas 3.1 y 3.2, mediante TDD estricto y entorno virtual local autorizado.
|
||
**Modelo:** openai/gpt-5.6-sol
|
||
**Session IDs OpenCode:** retry `ses_f5fa0eea0ffegi8n6KEhZDWYzU`; correction `ses_f5edabfa9ffeDm6JTyPnX7Bh5M`
|
||
**Directorio:** `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG`
|
||
|
||
**Trabajo realizado:**
|
||
- Creado el manifiesto Python fijado, el entorno ignorado y retenido `ocr-service/.venv`, las pruebas HTTP RED-first y la API FastAPI con cola SQLite, autenticacion, idempotencia, allowlist, limites y health.
|
||
- Diagnosticado el harness fallido: `&` envio la lista shell previa a un subshell y dejo vacios `KEY`, `REQUEST` y `CONFLICT` en los curls; se reprodujo `400 INVALID_REQUEST` y se corrigio solo el limite de backgrounding, sin cambiar la implementacion.
|
||
|
||
**Validacion y estado final:**
|
||
- RED valido por ausencia de `app`; GREEN focalizado: 8/8 pruebas aprobadas.
|
||
- Se conserva la evidencia fallida `sha256:4a5c8ed8d8b302f7ff654d4f40fe0f13049bfdd29db4c76576f3847c0a9be15a`; el harness corregido devolvio exactamente `401/202/409` con cuerpos contractuales.
|
||
- `npm test` 45/45, `npm run check`, compileall y espacios correctos; servidor y temporales eliminados, `.venv` retenido; tareas 3.1/3.2 completadas. Revision: `sha256:0d8b2c57bbab967473eaf99a7ca900168554e64254fa80197b3626b4570b58d0`.
|
||
|
||
**Archivos modificados:** `.gitignore`, `ocr-service/{README.md,requirements.txt,app/,tests/}`, `openspec/changes/ocr-ingest-integration/apply-progress.md`, `docs/HISTORIAL_SESIONES.md`.
|