# Codex Suite · estado real y hoja de control

> Fuente canónica de estado. Corte de auditoría: **8 de agosto de 2026**.
>
> Este documento distingue hechos verificados, capacidades parciales y trabajo futuro. El manual explica cómo usar el producto y el business plan desarrolla la estrategia; ninguno debe contradecir esta matriz.
>
> El orden futuro detallado y sus criterios de aceptación están en [CODEX-SUITE-ROADMAP.md](CODEX-SUITE-ROADMAP.md).

## 1. Veredicto ejecutivo

Codex Suite ya es una aplicación full stack integrada en Cursor Mobile Bridge, no una maqueta. Tiene un cliente PWA, backend autenticado, conexión persistente con Codex App Server, streaming, operaciones de threads/turns, aprobaciones, contexto, revisión de archivos, configuración y superficies administrativas.

No está terminada como producto comercial ni cumple todavía todas las ideas solicitadas. La dirección general es coherente si se mantiene como **entorno de ingeniería gobernado por evidencias**. Dejaría de ser coherente si se intentase convertir simultáneamente en IDE, asistente personal generalista, plataforma multiusuario, marketplace, gestor de infraestructura y aplicación Android autónoma sin consolidar primero identidad, aislamiento, eventos, observabilidad y recuperación.

## 2. Inventario verificado

- Producto anfitrión: `cursor-mobile-bridge`, puerto principal `8095`.
- Aplicación: `/codex-suite`; API: **96** rutas bajo `/api/codex/*` (composición única vía `registerCodexSuite`, incluido motor Cursor, áreas allowlist y auditoría de persistencia).
- Lanzador existente: 47 accesos; Codex Suite es una aplicación vecina, no reemplaza el bridge.
- Backend Codex: **39** módulos `lib/codex-*.js` (incluye adaptador Cursor, allowlist de áreas y `codex-persistence.js`).
- Frontend: HTML/CSS y módulos ES nativos, PWA `codex-suite-shell-v43` y service worker versionado.
- Pruebas automatizadas: batería Node actualizada tras áreas allowlist + historial/stream Cursor móvil.
- Estado del repositorio: existe `.git`, pero Git responde `not a git repository`; no debe prometerse una recuperación basada en commits hasta reparar esa metadata.
- Deuda estructural: `server.js` ~84.5 KB; el entrypoint `app.js`, 281 bytes; `modules/composition.js` ~42 KB; `modules/control.js` ~43 KB; `modules/chat.js` ~48.6 KB; y `style.css` ~56.9 KB. Backend 0.1, frontend 0.2 y persistencia **0.3** están completos; sigue pendiente 0.4.

## 3. Capacidades completadas

| Área | Estado verificable |
|---|---|
| Integración anfitriona | Registrada en `/apps`, mismo servidor, autenticación y acceso LAN/Tailscale |
| Sesión | Cookie compartida `HttpOnly`, `SameSite=Strict`, mutaciones con comprobación de origen y bootstrap autenticado sin secretos |
| Secretos | Sin fallback de token en JavaScript; API key no vuelve al navegador |
| App Server | Proceso persistente por `stdio`, lanzamiento Windows sin `shell: true` |
| Conversaciones | Crear, listar, reanudar, bifurcar, renombrar, archivar, borrar y compactar |
| Turns | Iniciar, streaming SSE, steer, cancelar y recuperar estados interrumpidos |
| Fiabilidad de turnos | Watchdog con fase, duración, silencio, recuperación explícita y checkpoints cerrados al cancelar/desconectar |
| Transparencia de ejecución | Modelo, proveedor, esfuerzo y selección efectiva persistidos sin prompts ni credenciales |
| Concurrencia | Eventos aislados por thread, revisiones optimistas, banner de turns en otros proyectos, varias ventanas/PWA |
| Aprobaciones | Comandos, cambios de archivos y permisos soportados sin ejecutar desde el navegador |
| Contexto | Mentions, archivos, imágenes `localImage`, drag & drop, buscador y explorador seguro |
| Revisión | Diff y aceptar/rechazar por archivo o en bloque, hash de conflicto y checkpoints |
| Rollback | Restauración local para turns con snapshot posterior a su implantación |
| Configuración | Vista segura de `config.toml`, edición de campos admitidos y escritura de API key sin lectura posterior |
| Workspace | Explorador, creación de carpetas confinada, `AGENTS.md`, memoria y áreas internas |
| Recursos | Modelos, skills, MCP, plugins, apps, hooks y perfiles anunciados por App Server |
| Catálogo | MCP y plugins con explicación/análisis por workspace; complementos nativos, no VSIX |
| Deploy | FTP/FTPS/SFTP de archivos aceptados, credencial DPAPI y exclusiones sensibles |
| Seguridad | Panel de solo lectura para host, workspace, secretos, deploy y Docker remoto |
| PWA | Instalable, responsive, safe areas, reconciliación al volver y actualización controlada |
| Administración | Ajustes visuales/operativos, centro de pruebas y manual integrado |

## 4. Capacidades parciales o con límites

| Solicitud | Realidad actual | Qué falta para considerarla completa |
|---|---|---|
| Español total | Acciones, estados y explicaciones propias están en español | Traducir metadatos externos cuando exista traducción fiable; nombres técnicos y marcas no deben alterarse |
| Modelo Auto inteligente | `model: null` usa el modelo efectivo de Codex/proveedor | Router con evals, coste, latencia y calidad por tipo de tarea |
| Autopilot y autocorrección | Prompt operativo y herramientas reales disponibles | Política formal de bucle, presupuesto, límites y evaluación de cierre |
| Subagentes | Codex puede delegar y la UI representa actividad | Orquestador propio, cuotas, vista jerárquica persistente y cancelación granular |
| Navegador integrado | Puede usar herramientas de navegador/MCP anunciadas | Navegador administrado, sesiones, capturas, red permitida y políticas por dominio |
| PWA “como app nativa” | Probada en 390×844 y modo standalone emulado | Matriz física de iPhone/iPad, pruebas de teclado, rotación, memoria y redes inestables |
| Sincronización multiinstancia | Evidence Ledger persiste metadatos; SSE anuncia época, ventana y pérdida de replay, y la PWA reconcilia backend tras reinicio o cursor obsoleto | Replay persistente del contenido operativo completo y resolución de conflictos multiusuario |
| Revisión de archivos | Funciona para snapshots admitidos, con límite de 512 KB por archivo | Binarios grandes, movimientos/renombres semánticos y diff especializado |
| Rollback “a cualquier punto” | Hasta 30 checkpoints locales por thread desde que se habilitó | Backups cifrados, commits/repo Git sano y restauración verificable completa |
| Deploy profesional | Sube aceptados, registra resultados y dispone de preflight estático no ejecutable | Cola transaccional, staging dinámico, reintentos, promoción y rollback remoto |
| Vault | API key protegida por archivo local y deploy mediante DPAPI | Vault profesional, rotación, expiración, referencias por entorno y auditoría |
| MCP/plugins premium | Descubrimiento, análisis e instalación básica | Reputación, firma, SBOM, permisos efectivos, health checks y desinstalación gobernada |
| Fechas de conversación | UI usa fecha real de evento/item/turn disponible y última actividad | App Server no garantiza una fecha individual en todos los ítems históricos; nunca se inventa una |

## 5. Solicitudes no implementadas

- Sincronización bidireccional en tiempo real entre este chat del producto y Codex Suite cuando no comparten el mismo thread de App Server.
- Workspaces compuestos con raíces arbitrarias de proyectos distintos. Las áreas actuales solo agrupan carpetas dentro de una raíz autorizada.
- Índice semántico incremental propio y búsqueda vectorial.
- Editor Monaco y servidores LSP aislados.
- Terminal web general; el navegador no ejecuta comandos.
- Pipelines visuales, gates versionados y cola transaccional de deploy.
- Identidad multiusuario, roles, tenants, SSO, colaboración y facturación.
- Evals más amplios de herramientas reales y coste monetario confirmado por proveedor. El router automático básico por workspace ya usa calidad, coste declarado, latencia, herramientas declaradas y fallos.
- Backups cifrados y prueba automática de restauración.
- Aplicación Flutter/Android. No existe `pubspec.yaml` ni cliente Flutter en el árbol actual.
- Endurecimiento automático de Windows 11 o del Docker remoto. El centro actual es deliberadamente de solo lectura.
- Creación de una raíz de proyecto nueva directamente bajo `htdocs`; se ha solicitado como bloque posterior, pero todavía no existe el endpoint ni la UI.
- Vault multi-clave protegido por una segunda contraseña en **Control → Claves APIs**; el formulario actual solo permite escritura de una credencial de Codex y no debe confundirse con ese vault futuro.

## 6. Peticiones que conviene corregir o separar

1. **“Que haga cualquier tarea del móvil”** no debe mezclarse directamente con el runtime de ingeniería. Conviene una familia de producto con un plano de control común y clientes separados: Codex Suite para desarrollo y, en el futuro, un asistente móvil con permisos Android explícitos.
2. **“Mostrar todas las API keys porque solo lo ve el administrador”** sigue siendo inseguro. El administrador puede sustituir, rotar y conocer el estado, pero el backend no debe devolver secretos existentes al navegador.
3. **FTP plano** debe conservarse solo por compatibilidad. La recomendación de producto es SFTP/FTPS y despliegue gobernado.
4. **Instalar extensiones de VS Code** no encaja con una plataforma propia. La decisión correcta fue sustituirlas por complementos, LSP y workers propios por workspace.
5. **“La IA más potente del mundo” o “éxito asegurado”** no son criterios verificables. La propuesta defendible es ser la plataforma con mejor trazabilidad, control, recuperación y experiencia móvil para ingeniería local gobernada.
6. **Multiusuario antes de vault y aislamiento** sería una mala secuencia. Primero deben consolidarse credenciales, eventos persistentes, backups y políticas.

## 7. Diferenciador recomendado: Evidence OS

La idea singular no debería ser copiar un IDE ni acumular botones. Codex Suite puede convertirse en un **sistema operativo de evidencias para agentes**:

```text
intención del usuario
  → contexto utilizado y versión
  → plan y decisiones
  → herramientas y permisos efectivos
  → cambios exactos
  → pruebas y capturas
  → aceptación humana por archivo
  → despliegue
  → recuperación verificable
```

Cada tarea produciría un grafo navegable y reproducible. Desde móvil, una persona sin conocimientos técnicos vería una “misión” comprensible: qué se pidió, qué está ocurriendo, qué riesgo existe, qué necesita aprobación y cómo volver atrás. Esa combinación de **móvil primero + ejecución local + evidencia + reversibilidad** es más diferencial que intentar clonar VS Code.

Piezas propias del concepto:

- **Evidence Ledger**: registro persistente, redactado e idempotente de eventos y decisiones.
- **Mission Replay**: reproducir una tarea en staging con las mismas políticas y comparar resultados.
- **Change Contracts**: criterios de aceptación humanos y técnicos antes de que el agente edite.
- **Policy Studio en español**: reglas comprensibles que compilan a permisos, gates y hooks verificables.
- **Workspace Twin**: mapa temporal de código, decisiones, despliegues, riesgos e integraciones.
- **Capability Recipes**: combinaciones verificadas de MCP, skills, modelos y pruebas para un stack, no una tienda de extensiones genérica.
- **Mobile Control Room**: aprobar, comparar, pausar, recuperar y desplegar; no intentar meter un IDE completo en 390 px.

## 8. Orden de ejecución recomendado

Esta sección conserva el resumen por macrofases. El desglose canónico actualizado, incluidas subfases de administración, fiabilidad, IDE web, Flutter y comercialización, es [Codex Suite Premium · roadmap canónico](CODEX-SUITE-ROADMAP.md).

### Fase 0 · Consolidación

1. Dividir `server.js` y `app.js` por dominios sin reescritura general.
2. Ampliar el ledger persistente y el contrato de reconexión v1 ya implementado hacia replay durable y pruebas de concurrencia prolongada.
3. Reparar o reconstruir correctamente la metadata Git del proyecto con backup previo.
4. Ampliar pruebas de tiempos, aprobaciones, reinicios y dos clientes simultáneos.

### Fase 1 · Confianza diferencial

1. Consolidar el Evidence Ledger y convertir el panel inicial de Misiones en un grafo completo de petición, cambios, pruebas y despliegue.
2. Observabilidad privada con métricas, redacción y retención administrable.
3. Backups cifrados y restauración probada.
4. Vault profesional y rotación.

### Fase 2 · Contexto y calidad

1. Índice semántico incremental con exclusión de secretos.
2. Evals por workspace y selección de modelo basada en evidencia.
3. Change Contracts y gates de tests/seguridad.

### Fase 3 · Entorno de ingeniería

1. Monaco como editor/visor.
2. LSP en procesos o contenedores limitados.
3. Workspace multi-raíz con consentimiento y políticas por raíz.
4. Deploy transaccional con staging y rollback remoto.

### Fase 4 · Plataforma

1. Identidad, roles y colaboración.
2. Firma, SBOM y políticas de integraciones.
3. Cliente Flutter como superficie separada sobre APIs estables y permisos móviles explícitos.
4. Comercialización, soporte, privacidad y actualizaciones firmadas.

## 9. Reglas de mantenimiento documental

- Este archivo contiene el estado vigente y se actualiza en cada entrega material.
- `CODEX-SUITE-MANUAL.md` contiene uso, seguridad y operación; los resultados antiguos se etiquetan como históricos.
- `CODEX-SUITE-BUSINESS-PLAN.md` contiene estrategia y decisiones, no capacidades presentes.
- Cada verificación registra fecha, hora, zona horaria, pruebas ejecutadas y límites.
- No se cambia una capacidad de “pendiente” a “completada” solo porque exista un botón; debe existir backend, control de seguridad y prueba.
- Las ideas nuevas entran primero como hipótesis con valor, riesgo, dependencia y métrica de éxito.

## 10. Evidencia utilizada en este corte

- Evidence Ledger JSONL persistente, idempotente y aislado por workspace implementado.
- API autenticada de resumen, misiones y eventos con validación thread–workspace.
- Panel **Misiones** responsive en español, con filtro por conversación y detalle redactado.
- Router FCC backend-only con catálogo curado, coste declarado, salud local, activación confirmada y credenciales fuera del navegador.
- La PWA vigente es `codex-suite-shell-v27`; las versiones anteriores quedan como cortes históricos, no como estado desplegado.
- Smoke eval persistente por proveedor: distingue clave, catálogo e inferencia real mediante Responses streaming.
- 56/56 pruebas automatizadas superadas en la verificación del 25 de julio de 2026.

### Corte FCC del 24 de julio de 2026

- 1.046 identificadores distribuidos entre 25 proveedores; 231 candidatos pasan el filtro inicial de ingeniería.
- Inferencia real superada: NVIDIA NIM, OpenRouter (`openrouter/free`), Mistral, Hugging Face, Cohere, Groq y SambaNova.
- No utilizables en el smoke actual: DeepSeek/MiniMax/Cerebras (`402`), OpenCode/OpenCode Go (`401`), Vercel (`403`), Kimi/Z.ai (`429`) y Ollama (`400`).
- Sin catálogo operativo: Gemini, Mistral Codestral, GitHub Models, Wafer, Fireworks, Cloudflare, Ollama Cloud y llama.cpp. LM Studio solo expone un embedding y no es apto como agente.
- La activación exige que el identificador exacto haya superado inferencia; un catálogo o una clave configurada no son suficientes.
- Implementados evals de calidad específicos por workspace con tareas deterministas adaptadas al stack, persistencia redactada y ranking independiente. Solo admiten hasta 8 identificadores exactos que hayan superado previamente el smoke.
- Implementado modo Automático opt-in por workspace. Selecciona antes de cada turno nuevo el mejor modelo aprobado; nunca cambia un turno en curso y deja prevalecer cualquier selección manual.
- El indicador de herramientas del ranking se basa todavía en metadatos declarados; no equivale a una prueba end-to-end de tool calling. El coste se clasifica como local, gratuito declarado o desconocido, sin inventar precios.
- PWA elevada a `codex-suite-shell-v26`. Conserva Mission Contracts, Workspace Twin y Preflight Staging, y añade el estado visible de Security Hardening v1.
- Control incorpora normalización española para estados, scopes, hooks, eventos y errores externos. Marcas e identificadores técnicos no se traducen para no romper referencias.
- Las listas MCP, plugins y habilidades muestran una explicación española local por utilidad; el texto descriptivo inglés de catálogos externos deja de ser la explicación principal.
- Añadida vista de alternativas completas a GPT-Codex con niveles separados de metadatos, calidad evaluada y tool calling certificado. No modifica el modelo predeterminado sin activación expresa.
- Manual integrado convertido en guía interactiva con rutas rápidas, búsqueda, índice y checklist local de aprendizaje.

- 74 rutas `/api/codex/*` inventariadas.
- 61 pruebas Node detectadas y superadas mediante `npm test`.
- Auditoría Chrome/CDP existente para 1440×900 y 390×844.
- Verificación específica de Contratos de misión completada el `2026-07-24 17:57:16 +02:00`: formulario y tres gates visibles, criterio confirmable, scroll vertical, controles táctiles de al menos 48 px y ausencia de overflow horizontal en escritorio y móvil.
- API contractual comprobada en el bridge aislado: acceso anónimo rechazado con HTTP 401, sesión válida con HTTP 200 y lectura del contrato de un thread real con HTTP 200.
- Capturas vigentes: `storage/codex-suite-contracts-desktop.png` y `storage/codex-suite-contracts-mobile.png`.
- Workspace Twin implementado como módulo independiente, con hasta veinte snapshots por proyecto, inventario acotado, dependencias declaradas, topología, operación redactada y comparación temporal de metadatos.
- La primera versión del gemelo no realiza indexación semántica, análisis AST ni lectura persistente del contenido del código; esas capacidades quedan fuera de este bloque.
- Verificación real del `2026-07-25 00:19:07 +02:00`: dos snapshots del propio `cursor-mobile-bridge`, 666 archivos observados, 43 carpetas, 8 dependencias declaradas y payload público sin `fileIndex`.
- API Workspace Twin comprobada: HTTP 401 sin sesión, HTTP 200 con sesión, `readOnly: true` en consulta y dos snapshots aislados para el workspace.
- Auditoría Chrome/CDP superada en 1440×900 y 390×844: seis métricas, mapa de arquitectura, comparación temporal, scroll vertical, controles táctiles ≥48 px y cero overflow horizontal.
- Capturas vigentes: `storage/codex-suite-twin-desktop.png` y `storage/codex-suite-twin-mobile.png`.
- Marca temporal verificada: `23 jul 2026, 00:30:26` visible en la respuesta y en «Última actividad», con `dateTime` ISO normalizado.
- Manual oficial de Codex actualizado el 23 de julio de 2026 mediante el helper oficial local.
- Salud del bridge `8095`: HTTP correcto en el momento del corte.
- Auditoría de archivos y documentación limitada exclusivamente a `cursor-mobile-bridge`.

### Verificación Preflight Staging v1 · 25 de julio de 2026

- Implementación completada y verificada a las `01:28:55 +02:00`.
- El backend genera informes aislados por workspace y paquetes locales marcados como no ejecutables solamente cuando pasan todos los checks. El payload público omite ruta interna, contenido propuesto y valores sensibles.
- Checks implementados: ruta, integridad frente al checkpoint, hash, máximo de 200 archivos, máximo de 20 MB, patrones redactados de secretos, JSON y sintaxis JavaScript mediante `node --check`.
- La aceptación backend devuelve conflicto si cambia la integridad, falla un gate global o falla el archivo seleccionado. Sin informe se conserva temporalmente la compatibilidad anterior; rechazar continúa permitido.
- `npm test`: 56/56 pruebas superadas. Tres pruebas ejercitan materialización segura, redacción/bloqueo por archivo, confirmación exacta, sintaxis inválida e integridad obsoleta; cuatro pruebas adicionales cubren contrato de rutas, UI, revisión y PWA.
- Comprobación sintáctica ejecutada sobre `server.js`, `app.js`, el verificador y los módulos de staging/checkpoints/chat: sin errores.
- Bridge aislado `127.0.0.1:8101`: `/health` respondió HTTP 200; preflight sin sesión respondió HTTP 401; catálogo autenticado respondió HTTP 200; una ruta autenticada con checkpoint inexistente alcanzó el controlador y respondió HTTP 404; escritura con origen ajeno respondió HTTP 403.
- Chrome/CDP verificó escritorio `1440×900` y móvil `390×844` con datos visuales controlados: dos gates, dos archivos, historial, bloqueo conjunto, aceptación individual del archivo limpio, bloqueo del archivo inseguro, scroll vertical, objetivos táctiles ≥48 px, cero overflow horizontal y ausencia de campos para comandos.
- Capturas: `storage/codex-suite-staging-desktop.png` y `storage/codex-suite-staging-mobile.png`.
- Diagnóstico integrado ejecutado durante la misma auditoría: 15 correctas, 2 avisos y 0 errores. Los avisos no se documentan como pruebas superadas.
- Alcance explícito: esta v1 no ejecuta tests, builds, comandos del proyecto, contenedores ni despliegues. El staging dinámico aislado queda como siguiente evolución.

### Verificación Security Hardening v1 · 25 de julio de 2026

- Ruta vulnerable reproducida antes de corregir: `/api/bootstrap` entregaba secretos sin sesión a clientes LAN/Tailscale y la autenticación heredada aceptaba `?token=`.
- Cierre real en servidor aislado: bootstrap anónimo HTTP 401; token en URL HTTP 401; sesión compartida HTTP 200; bootstrap con sesión HTTP 200 sin nombres ni valores de secretos; origen ajeno HTTP 403 en mutación y sin `Access-Control-Allow-Origin`.
- Compatibilidad preservada: `X-Bridge-Token` continúa respondiendo HTTP 200 y la sesión permite acceder a APIs heredadas sin exponer el token a JavaScript.
- El lanzador dejó de construir enlaces con `SUPERVISOR_DASHBOARD_TOKEN`; los destinos protegidos autentican en su propio origen.
- `/health` devuelve únicamente `ok`, `port` y `service`; el estado operativo detallado exige autenticación.
- Cookie comprobada con `HttpOnly` y `SameSite=Strict`. `Secure` se aplica cuando el bridge se sirve mediante HTTPS.
- Cinco pruebas específicas de regresión y batería completa: 61/61 superadas.
- Chrome/CDP: 23 comprobaciones visibles, 21 correctas, 2 avisos operativos y 0 errores; ocho tarjetas de seguridad con Hardening visible en escritorio y móvil.
- Auditoría responsive: cero overflow horizontal, scroll vertical, objetivos táctiles ≥48 px y todas las superficies anteriores disponibles.
- Los secretos ficticios de las pruebas se construyen en memoria para evitar falsos positivos del escáner sin debilitar su cobertura.
- Riesgo residual declarado: la cabecera heredada sigue admitida y aplicaciones antiguas pueden conservar tokens manuales en `localStorage` hasta migrar completamente a sesión.

### Análisis previo Migración de sesiones v2 · 26 de julio de 2026

- Se realizó una inspección de solo lectura de dependencias antes de autorizar cualquier retirada o rotación.
- Confirmado: `/apps` y Codex Suite se sirven desde el mismo bridge de EQUIPITELLO en `0.0.0.0:8095`, accesible como `100.78.198.98:8095` mediante Tailscale. El servidor IA `.16` es una dependencia distinta.
- Confirmado: existen clientes web heredados dentro del bridge, clientes no navegador (Telegram y verificadores) y un consumidor servidor en el portal LAB de `xzonassite`.
- No confirmado todavía: consumidores fuera de la raíz de proyectos, copias en PWA/navegadores, ACLs/dispositivos Tailscale y posible Funnel.
- Decisión recomendada, no implementada: migración gradual a sesiones HTTPS y credenciales de servicio por capacidades, con observación del uso heredado antes del corte.
- No se cambió autenticación, configuración, token, procesos ni proyectos vecinos.
- Portfolio validado: [Migración de sesiones v2](hardening/session-migration-v2/hardening.md), [evidencia](hardening/session-migration-v2/context.md) y [propuesta técnica](hardening/session-migration-v2/proposals/centralize-bridge-session.md).

### Verificación Reconnection Contract v1 · 26 de julio de 2026

- App Server publica una época UUID por proceso y una ventana acotada con primera secuencia, última secuencia, eventos disponibles y capacidad máxima de 1.000.
- El endpoint SSE anuncia `bridge/streamState` antes del replay. Detecta cursores posteriores al proceso actual y cursores anteriores al buffer disponible.
- La PWA compara épocas y, si reinició el bridge o faltan eventos, vuelve a consultar conversaciones, runtime, aprobaciones, checkpoints y Evidence Ledger sin duplicar el stream.
- PWA elevada a `codex-suite-shell-v27` para distribuir el cliente actualizado en instalaciones existentes.
- Sintaxis Node comprobada en App Server, servicio, servidor, frontend y verificador: sin errores.
- `npm test`: 63/63 pruebas superadas; dos pruebas nuevas cubren ventana/época y contrato servidor–cliente.
- Servidor aislado `127.0.0.1:8101`: sesión válida, primer stream con `resetRequired: false`, cursor deliberadamente obsoleto con `resetRequired: true` y capacidad 1.000. El puerto quedó detenido.
- Chrome/CDP: escritorio 1440×900 y móvil 390×844 sin overflow horizontal, compositor visible, controles táctiles ≥48 px y superficies de control con scroll. Diagnóstico visible: 21 correctas, 2 avisos y 0 errores.
- Capturas actualizadas: `storage/codex-suite-desktop.png` y `storage/codex-suite-mobile.png`, además de las superficies especializadas generadas por el verificador.
- Límite honesto: el contenido completo del stream continúa en un buffer de memoria de 1.000 eventos; el Evidence Ledger persistente conserva metadatos redactados, no deltas privados ni razonamiento interno.

### Verificación Turn Reliability & Transparency v1 · 27 de julio de 2026

- El runtime clasifica un turno como saludable, retrasado, esperando aprobación, obsoleto, compactación bloqueada o desconectado. La clasificación incluye duración y tiempo sin actividad.
- La recuperación nunca se ejecuta automáticamente: el botón solo aparece cuando el backend marca `recoverable: true`. Una aprobación pendiente prevalece y no se considera bloqueo.
- Cancelar, recuperar o perder App Server finaliza el snapshot pendiente como `interrupted` o `recovered`; un `turn/completed` tardío es idempotente y no duplica checkpoints.
- La revisión posterior sigue disponible tras la interrupción. Cada archivo incluye tipo de cambio, categoría objetiva y recuento de líneas añadidas/eliminadas, además del diff y la decisión individual.
- Modelo, proveedor, esfuerzo, nivel de servicio y modo de selección se guardan por turn en `storage/codex-turn-metadata` mediante una lista cerrada de campos. No se guardan prompts, respuestas, claves ni cabeceras.
- PWA elevada a `codex-suite-shell-v28`.
- `node --check` se ejecutó correctamente sobre servidor, App Server, servicio, checkpoints, watchdog, metadata, frontend y service worker.
- `npm test` se ejecutó tras la implementación: **68/68 pruebas superadas**, incluidas cinco pruebas específicas de fiabilidad y transparencia.
- Chrome/CDP se ejecutó contra `127.0.0.1:8101`: escritorio 1440×900 y móvil 390×844 sin overflow horizontal, compositor visible, controles táctiles ≥48 px y paneles con scroll. El diagnóstico mostró 21 correctas, 2 avisos y 0 errores.
- Capturas actualizadas: `storage/codex-suite-desktop.png` y `storage/codex-suite-mobile.png`, además de las superficies especializadas del verificador.
- Límite de v1: el snapshot previo de un turno pendiente permanece en memoria hasta finalizarlo. Una caída abrupta de todo el proceso del bridge antes de recibir el evento de desconexión puede perder ese snapshot; persistencia transaccional de pendientes queda para v2.
- Bloques posteriores separados: creación confinada de proyectos bajo `htdocs` y vault multi-clave con segunda contraseña. Cambiar `auth.json` puede aplicarse a nuevos procesos y a una recarga administrada de App Server, pero no modifica mágicamente el entorno de terminales ya iniciados.

### Resincronización y roadmap canónico · 3 de agosto de 2026

- Inventario directo: 75 rutas `/api/codex/*`, 20 módulos backend Codex, 14 archivos de pruebas y PWA `codex-suite-shell-v28`.
- Tamaño observado: `server.js` 129.219 bytes, `app.js` 173.613 bytes y `style.css` 55.243 bytes. La modularización incremental pasa a ser el siguiente bloque P0.
- El proceso principal 8095 estaba operativo y reconoció la ruta autenticada de recuperación de turnos; una llamada anónima alcanzó el middleware y devolvió HTTP 401.
- La batería completa, ejecutada tras registrar el contrato documental del roadmap, fue **69/69**.
- Se identificó una función heredada de creación de proyectos fuera de Codex Suite que necesita confinamiento, confirmación y transacción antes de integrarse.
- Se identificó una bóveda heredada que devuelve valores de `.env` a sesiones administrativas. Se registró como `SEC-16`; no debe ser la base del futuro panel Claves APIs.
- Se redactó [CODEX-SUITE-ROADMAP.md](CODEX-SUITE-ROADMAP.md) con once macrofases 0–10, subfases, trazabilidad de las diez evoluciones originales, brainstorming y Definition of Premium Ready.
- No se implementaron nuevas capacidades funcionales durante esta resincronización.

### Compatibilidad vecina: login de Lliria Properties · 4 de agosto de 2026

- Se diagnosticó una incidencia ajena al token del bridge: producción había deshabilitado el login heredado, no existían usuarios persistidos y la cookie `Secure` no podía emitirse mediante la URL HTTP actual.
- Se migró la cuenta heredada a bcrypt, se hizo explícita la política de cookie para el transporte privado actual y se reinició únicamente `lliria-properties`.
- La prueba real completó login y dashboard autenticado con HTTP 200 tanto en localhost como mediante Tailscale.
- Evidencia y límite HTTPS: [incidents/2026-08-04-lliria-properties-login.md](incidents/2026-08-04-lliria-properties-login.md).

### Modular Foundation v1 · corte 0.1a · 4 de agosto de 2026

- Se extrajo a `lib/codex-session-boundary.js` la frontera compartida de sesión, origen y compatibilidad temporal del bridge.
- Se conservaron las 75 rutas Codex: 72 continúan registradas directamente y las tres rutas de sesión Codex se registran desde el módulo; las tres equivalentes del bridge comparten la misma frontera.
- El módulo mantiene privados el token, los IDs y el mapa de sesiones, e inyecta allowlist, duración, reloj y aleatoriedad para permitir pruebas deterministas.
- `node --check` pasó en módulo y servidor. `npm test`: **71/71**.
- Servidor aislado 8101: login 200, cookie `HttpOnly`/`SameSite=Strict`, status Codex 200, sesión bridge 200 y origen hostil 403. El puerto quedó detenido.
- 0.1 sigue **en progreso**: faltan administración, workspace, capacidades, threads/turns, evidencia/staging y composición/error boundary. Plan detallado: [CODEX-SUITE-MODULAR-FOUNDATION.md](CODEX-SUITE-MODULAR-FOUNDATION.md).

### Modular Foundation v1 · corte 0.1b · 5 de agosto de 2026

- `lib/codex-admin-routes.js` es ahora propietario de status, comandos, settings, administración de credencial/configuración segura y Centro de Pruebas.
- Las ocho rutas conservan autenticación y las cuatro mutaciones conservan control de mismo origen.
- El diagnóstico recibe servicio, stores y capacidades del workspace mediante inyección explícita; no accede a globals ocultos.
- `node --check` pasó y `npm test` completó **73/73**. En 8101, las cuatro lecturas devolvieron 200 sin el token del bridge, el diagnóstico dio 23 checks/0 errores y un origen hostil recibió 403.
- El puerto 8101 quedó detenido. 0.1 continúa con workspace y contexto (0.1c).

### Modular Foundation v1 · corte 0.1c · 5 de agosto de 2026

- `lib/codex-workspace-routes.js` es ahora propietario de diez rutas de catálogo/búsqueda, explorer/preview, carpetas, perfil, adjuntos e instrucciones.
- El catálogo omite rutas absolutas, las lecturas con scope rechazan workspaces desconocidos y las cuatro mutaciones conservan autenticación y mismo origen.
- `node --check` pasó en módulo y servidor. `npm test` completó **75/75** en 17 archivos.
- En `127.0.0.1:8101`, sesión, catálogo, búsqueda, explorer, preview, perfil e instrucciones respondieron correctamente; workspace desconocido 400 y origen hostil 403. No se realizaron mutaciones persistentes.
- El puerto 8101 quedó detenido y libre. 0.1 continúa con modelos y capacidades (0.1d).
- Tras cargar el corte en 8095, `/health`, `/codex-suite`, `/apps` y `/login` de Lliria Properties devolvieron 200; el catálogo autenticado devolvió 30 workspaces y las rutas anónimas de administración/workspace devolvieron 401.

### Modular Foundation v1 · corte 0.1d · 5 de agosto de 2026

- `lib/codex-capability-routes.js` es ahora propietario de 19 rutas de modelos/evals, complementos, integraciones, MCP, plugins, marketplaces, seguridad read-only y capacidades.
- Las diez mutaciones conservan mismo origen y confirmaciones exactas; las lecturas con scope rechazan workspaces desconocidos.
- `node --check` pasó en módulo y servidor. `npm test` completó **78/78** en 18 archivos.
- En `127.0.0.1:8101`, router, complementos, integraciones, seguridad y capacidades respondieron correctamente; workspace desconocido 400, confirmación inválida 400 y origen hostil 403. No se realizaron mutaciones ni llamadas remotas opcionales.
- El puerto 8101 quedó detenido y libre. 0.1 continúa con threads, turns y SSE (0.1e).
- Tras cargar el corte en 8095, health, Codex Suite, `/apps` y Lliria Properties devolvieron 200; router/capacidades autenticados devolvieron 200, capacidades anónimas 401 y las respuestas comprobadas no contenían el token del bridge.

### Modular Foundation v1 · corte 0.1e · 5 de agosto de 2026

- `lib/codex-thread-routes.js` es ahora propietario de 19 rutas de threads, runtime, controles, turns, aprobaciones y SSE.
- Las catorce mutaciones conservan mismo origen; borrado, selección de modelo, fallback de aprobación y replay SSE mantienen sus contratos.
- `node --check` pasó en módulo y servidor. `npm test` completó **81/81** en 19 archivos.
- En `127.0.0.1:8101`, sesión/listado de threads y runtime devolvieron 200, origen hostil 403 y SSE 200 con estado/replay; el cliente cerró explícitamente la conexión.
- El PID temporal quedó detenido y 8101 libre. 0.1 continúa con Evidence, checkpoints, staging y deploy (0.1f).
- Tras cargar el corte en 8095, health, Codex Suite, `/apps` y Lliria Properties devolvieron 200; threads/runtime autenticados y SSE devolvieron 200, threads anónimos 401 y las respuestas comprobadas no contenían el token del bridge.

### Modular Foundation v1 · corte 0.1f · 5 de agosto de 2026

- `lib/codex-evidence-routes.js` es ahora propietario de 16 rutas de Evidence, Twin, deployment, contratos, checkpoints, preflight, decisiones y rollback.
- Las ocho mutaciones conservan mismo origen; aceptación individual mantiene los gates y deployment limitado a paths aceptados.
- `node --check` pasó en módulo y servidor. `npm test` completó **84/84** en 20 archivos.
- En `127.0.0.1:8101`, las lecturas principales devolvieron 200, scope desconocido 400 y mutaciones hostiles 403; no se realizaron escrituras ni deploy.
- El puerto 8101 quedó detenido y libre. 0.1 continúa con composición y error boundary (0.1g).
- Tras cargar el corte en 8095, health, Codex Suite, `/apps` y Lliria Properties devolvieron 200; Evidence, Twin, deployment y checkpoints autenticados devolvieron 200, Evidence anónimo 401 y las respuestas no contenían el token del bridge.

### Modular Foundation v1 · cierre 0.1g · 5 de agosto de 2026

- `lib/codex-suite-router.js` compone UI, sesiones y los cinco módulos de rutas: exactamente 75 rutas `/api/codex` bajo un error boundary uniforme.
- El boundary mantiene status/payload compatibles y evita registrar query strings o mensajes potencialmente sensibles. El cierre de recursos es idempotente e intenta todos los propietarios.
- `node --check` pasó en router, servidor y prueba modificada. Las pruebas específicas completaron **8/8** y `npm test`, **87/87** en 21 archivos.
- En `127.0.0.1:8101`, las superficies públicas y autenticadas esperadas respondieron 200, acceso anónimo 401, origen hostil 403 y error controlado 400; el marcador de query no apareció en logs ni el token en respuestas.
- El proceso temporal terminó y 8101 quedó libre. En Windows, la señal usada terminó el proceso sin evidencia del manejador JavaScript: el cierre ordenado se acredita mediante su prueba automatizada, no mediante esa señal.
- Tras reiniciar 8095, health, Codex Suite, `/apps` y Lliria Properties devolvieron 200; API autenticada 200 con 30 workspaces, anónima 401 y origen hostil 403. No apareció el token en las respuestas comprobadas.
- Inventario: 27 módulos Codex; `server.js`, 83.851 bytes. El backend 0.1 queda cerrado y el siguiente subbloque es 0.2 modularización frontend.

### Modular Foundation v1 · corte 0.2a · 5 de agosto de 2026

- `static/codex-suite/modules/core.js` concentra estado único, DOM, API, autenticación visual, traducciones y conexión; `app.js` es ahora un entrypoint ES.
- La PWA se elevó a v29 y precarga el módulo core. El verificador CDP importa una superficie de auditoría explícita sin crear globals de producción.
- Sintaxis correcta; contratos específicos **4/4** y batería completa **91/91** en 22 archivos.
- Chromium/CDP completó escritorio 1440×900 y móvil 390×844 sin overflow, con compositor visible, controles táctiles y todas las superficies avanzadas auditadas.
- Diagnóstico: 22 correctas, 1 aviso y 0 errores. Catálogo MCP real verificado al repetir el servidor temporal con red autorizada; no se usaron mocks.
- 8101, 9331 y 9332 quedaron libres. 0.2 continúa con ajustes y administración (0.2b).

### Modular Foundation v1 · corte 0.2b · 5 de agosto de 2026

- `static/codex-suite/modules/settings.js` es propietario de preferencias, configuración administrativa, credenciales write-only y diagnóstico visual.
- Los listeners de settings/reset/credencial/diagnóstico se registran una sola vez desde el módulo; `app.js` no conserva implementaciones ni listeners duplicados.
- PWA elevada a v30 con core y settings precargados. Sintaxis correcta, contratos específicos **4/4** y batería completa **95/95** en 23 archivos.
- Chromium/CDP completó escritorio y móvil; ajustes/admin cargaron y el diagnóstico interactivo devolvió 22 correctas, 1 aviso y 0 errores sobre 23 resultados.
- No se mutaron ajustes ni credenciales en la auditoría. Cero overflow horizontal, compositor visible, scroll y targets táctiles verificados.
- 8101, 9331 y 9332 quedaron libres. 0.2 continúa con workspace, explorer e integraciones (0.2c).

### Modular Foundation v1 · cierre 0.2c · 6 de agosto de 2026

- `static/codex-suite/modules/workspace.js` es propietario de catálogo/reset, AGENTS.md, explorer/preview/contexto, memoria y áreas; `modules/integrations.js` lo es de análisis, MCP/plugins, complementos, deployment y seguridad read-only.
- Ambos módulos reciben dependencias transversales por configuración explícita y registran listeners idempotentes. Las implementaciones y listeners duplicados fueron retirados de `app.js`; el cambio transversal de workspace permanece en composición hasta 0.2f.
- PWA elevada a v31 y precarga core, settings, workspace e integraciones. `app.js` se redujo a 122.314 bytes.
- Sintaxis correcta; contratos 0.2c **5/5**, regresión frontend seleccionada **35/35** y batería completa **100/100** en 24 archivos.
- La primera auditoría CDP reveló una carrera al activarse el service worker. El verificador se corrigió para tolerar únicamente navegaciones transitorias durante sus sondeos y la repetición completó toda la auditoría.
- Escritorio 1440×900 y móvil 390×844: cero overflow horizontal, targets ≥48 px, explorer/preview/contexto, complementos/deployment, diálogo MCP/integraciones y seguridad read-only verificados. Diagnóstico: 22 correctas, 1 aviso, 0 errores.
- La auditoría histórica creó dos snapshots Twin redacted de metadatos. El servidor temporal fue detenido y 8101, 9331 y 9332 quedaron libres.
- 0.2 continúa con control, modelos y evidencia (0.2d).

### Modular Foundation v1 · cierre 0.2d · 6 de agosto de 2026

- `static/codex-suite/modules/control.js` es propietario de navegación de Control, modelos y evaluaciones, modo automático, presupuesto, certificación, Misiones, Evidence, contratos, Workspace Twin y preflight staging.
- `app.js` configura sus dependencias transversales de forma explícita y activa una frontera idempotente de listeners; no conserva implementaciones duplicadas del dominio.
- PWA elevada a v32 y precarga `control.js` junto con core, settings, workspace e integraciones. `app.js` se redujo a 82.027 bytes y `control.js` mide 43.171 bytes.
- Sintaxis correcta; contratos específicos 0.2d **5/5** y batería completa **105/105** en 25 archivos.
- Chromium/CDP completó escritorio 1440×900 y móvil 390×844: cero overflow horizontal, controles táctiles ≥48 px, scroll operativo y compositor visible. Modelos, Misiones, Contratos, Twin y Staging fueron verificados desde la UI.
- Diagnóstico: 22 correctas, 1 aviso y 0 errores. Contratos mostró tres gates; Staging conservó gates y bloqueo selectivo sin inputs de comandos; Twin permaneció redacted y sin contenido de código.
- La auditoría histórica creó dos snapshots Twin adicionales de metadatos redacted. El servidor temporal fue detenido y 8101, 9331 y 9332 quedaron libres.
- 0.2 continúa únicamente con chat, runtime, revisión y eventos (0.2e).

### Modular Foundation v1 · cierre 0.2e · 7 de agosto de 2026

- `static/codex-suite/modules/chat.js` es propietario de threads, historial, render incremental, SSE/replay, watchdog, recuperación, aprobaciones, checkpoints, revisión de cambios y ciclo de turns.
- Las superficies de Control necesarias se inyectan explícitamente. Listeners y vigilancia periódica se registran desde una única frontera idempotente; `app.js` no conserva propietarios duplicados.
- PWA elevada a v33 y precarga chat junto al grafo modular anterior. `app.js` se redujo a 39.876 bytes y `chat.js` mide 43.316 bytes.
- Sintaxis correcta; contratos específicos **5/5** y batería completa **110/110** en 26 archivos.
- Chromium/CDP completó escritorio 1440×900 y móvil 390×844 sin overflow, con compositor visible y targets ≥48 px. Se verificaron deduplicación optimista, aislamiento entre threads y revisión de dos archivos con acciones individuales y masivas.
- Diagnóstico: 22 correctas, 1 aviso y 0 errores. Contratos, Twin y staging selectivo siguieron operativos; los dos snapshots Twin creados contienen únicamente metadatos redacted.
- El servidor temporal fue detenido y 8101, 9331 y 9332 quedaron libres.
- 0.2 continúa únicamente con composición, bindings y error boundary visual (0.2f).

### Modular Foundation v1 · cierre 0.2f · 7 de agosto de 2026

- `modules/composition.js` es la única raíz de configuración y bindings; `app.js` queda en 281 bytes y solo inicia/reexporta la auditoría ES.
- El arranque, configuración de dominios y bindings son idempotentes. Un boundary visual accesible captura fallos de bootstrap y errores/promesas globales, limita el detalle visible y ofrece recarga.
- PWA elevada a v34 con el grafo modular completo precargado. Sintaxis correcta, contratos 0.2f **5/5** y batería completa **115/115** en 27 archivos.
- La primera ejecución CDP descubrió un registro DOM incompleto del boundary. Tras corregir `core.js` y reforzar la prueba, la repetición completó escritorio y móvil.
- Boundary: visible, dentro del viewport, accesible, recuperable, redactado y con targets móviles ≥48 px. La UI completa mantuvo cero overflow; diagnóstico 22 correctas, 1 aviso y 0 errores.
- El servidor temporal fue detenido y 8101, 9331 y 9332 quedaron libres. La fase 0.2 queda cerrada; el siguiente bloque es 0.3.

### Adaptador Cursor SDK · 7–8 de agosto de 2026

- Motor de respaldo `cursor` en el selector de la PWA (`codex-suite-shell-v36`).
- Módulos `codex-cursor-routes.js` y `codex-cursor-sessions.js`; streaming vía `/api/chat/stream` del bridge.
- Rutas absorbidas después en `registerCodexSuite` junto con el corte 0.3.

### Modular Foundation v1 · cierre 0.3 · 8 de agosto de 2026

- `lib/codex-persistence.js` define el registry de stores versionados, IDs estables (`workspaceFileKey`, `threadFileKey`, prefijos de entidad), escrituras atómicas, locking en proceso, cuarentena de JSON corrupto, migraciones `schemaVersion` y auditoría read-only.
- Stores cableados al facade: settings, checkpoints, turn metadata, evidence JSONL, twin, staging, deployment, mission contracts, model evals y cursor sessions.
- API `GET /api/codex/persistence/audit` y check de diagnóstico `persistence`; herramienta `tools/audit-codex-persistence.mjs`.
- Adaptador Cursor integrado en la composición raíz.

### Control UX + Guardrails vecinas · cierre 0.4 · 8 de agosto de 2026

- Hub de Control en 4 áreas (Operar / Proyecto / Calidad / Sistema); Catálogo con instalados + mcp.so; carga centralizada de MCP/plugins/security; PWA **v37**.
- Pasada de legibilidad v37: placeholders/contraste en oscuro, tipografía secundaria ≥12px, panel Control más ancho, selects del compositor con color explícito, acento verde cableado.
- `lib/codex-neighbor-guardrails.js` + rutas `/api/codex/neighbors/*`: inventario puerto/health/propietario, preflight env sin valores, verify multi-ronda, registro/rollback de catálogo.
- Inventario: **32** módulos `lib/codex-*.js`; **85** rutas `/api/codex/*`; `npm test` **126/126**.
- Siguiente bloque: **0.5 Git** (decisión) o **1.1 Pending Checkpoints durables**.

### MCP catálogo + Pending Checkpoints 1.1 · 8 de agosto de 2026

- Corrección del flujo Catálogo MCP: extracción de endpoints HTTPS desde mcp.so, scope por defecto `remote-servers`, prefills en ficha/instalación avanzada, rechazo de URLs `mcp.so` como endpoint.
- Store `pendingCheckpoint` (16 kinds): snapshot `before` + lease en disco bajo `codex-checkpoints/pending/`; recuperación tras reinicio; finalización idempotente y limpieza por retención/expiración.
- PWA **v38**. Inventario: **16** stores de persistencia; `npm test` **129/129**. Siguiente bloque: **1.2 Event Log durable** (0.5 Git bloqueado).

### Control installs + threads · hotfix 8 de agosto de 2026

- MCP: escritura directa a `.codex/config.toml` del proyecto (App Server rechaza `filePath`); endpoint del catálogo ya no se borra al analizar.
- Plugins: 409 claro si el catálogo remoto exige ChatGPT con API key; habilitación desde caché local cuando existe.
- Threads: `thread/read` tolera conversaciones aún no materializadas (`includeTurns` fallback).
- CSP Codex Suite: `style-src 'self' 'unsafe-inline'` para variables de viewport.
- PWA **v39**; `tools/smoke-codex-control.mjs`; `npm test` **134/134**.

### Documentación Control + migración `.16` · 8 de agosto de 2026 (noche)

- Guía canónica [CODEX-SUITE-CONTROL-GUIDE.md](CODEX-SUITE-CONTROL-GUIDE.md): mapa de 16 pestañas, cuándo/cómo/por qué, matriz de verificación honesta (API smoke vs clic UI) y cómo leer el modelo efectivo.
- Estado de migración [MIGRACION-EQUIPITELLO-16-STATUS-2026-08-08.md](MIGRACION-EQUIPITELLO-16-STATUS-2026-08-08.md): Ollama/Supervisor/Qdrant en `.16` verificados; FCC `:8082` y Bridge en EQUIPITELLO; Baileys `:3030` cerrado en el corte; Codex default sigue en `freemodel`/`gpt-5.6-sol`.
- FCC: `C:\Users\Paterna\.fcc\.env` + `codex-model-catalog.json` alimentan Control → Modelos; admin en `http://127.0.0.1:8082/admin`.
- Matriz de las **47 apps** del launcher: [APPS-MIGRATION-MATRIX-2026-08-08.md](APPS-MIGRATION-MATRIX-2026-08-08.md) (`stay` 21 · `already_remote` 16 · `migrate_candidate` 1 · `hybrid` 8 · `unknown` 1). CaptaJaus = hybrid; FCC `:8082` fuera del launcher pero candidata aparte.
- **1.2 Event Log completada**: JSONL durable, cursor por cliente, lag (`ok|catching_up|stale|reset`), compaction + `bridge/eventLogCompacted`, APIs `events/window` y `events/cursors`, PWA **v40**.
- **Lab Fabric v1**: `GET /api/codex/lab/status` + Control → Sistema → **Lab IA**.
- **Cursor SDK en Suite**: `GET /api/codex/cursor/sources` + transcript + UI (picker IDE/SDK, Serena, resume, tools/diffs en vivo).
- **Fix listado de conversaciones (9 ago 2026)**: `thread/list` del App Server no trae `cwd`; el filtro en memoria se perdía al reiniciar el bridge y las conversaciones parecían «no guardadas». Ahora se resuelve cwd desde el rollout jsonl + índice durable `storage/codex-thread-index.json`. Aviso de reconciliación de turn suavizado (no alarma en compleción normal).
- **Áreas + Cursor móvil v1 (9 ago 2026)**: create/attach allowlist; perfil IDE; sources paginados + transcript; streaming Cursor. Hotfix: mapeo correcto `summary`/`diffString`, `done.changes` en timeline, sin `mobileLight` por defecto, SDK limitado (12, cwd, IDE primero). Rutas Codex **94**. PWA **v44**. `npm test` **149/149**.
- **Sync IDE/Composer v1 premium (9 ago 2026)**: análisis [CODEX-SUITE-IDE-COMPOSER-SYNC-ANALYSIS-2026-08-09.md](CODEX-SUITE-IDE-COMPOSER-SYNC-ANALYSIS-2026-08-09.md); binding `codex-conversation-bindings.json`; `newChat` + espejo JSONL; append `suite_turn` enriquecido; picker + nota reload; Composer privado `GET /api/codex/private/composer-index` (`CODEX_COMPOSER_PRIVATE=1`). Rutas Codex **95**. PWA **v45**. `npm test` **154/154**.
- **Fix threads no listados (9 ago 2026)**: App Server omite conversaciones nuevas sin rollout; Suite fusiona el índice durable y abre vía `read` si `resume` falla. Crítico con motor Cursor (no materializa App Server). PWA **v46**.
- **Fix multi-create Nueva conversación (9 ago 2026)**: un clic abría N hilos (p. ej. 5) con la misma hora; mutex UI + dedupe servidor de `thread/start` + `updatedAt` estable al listar. PWA **v47**.
- **Sesiones / continuidad (9 ago 2026)**: borrado/archivo soft (índice aunque App Server falle), prune de shells vacíos, `POST .../delete`, reenganche SSE Cursor por `suiteThreadId` al reabrir/cambiar proyecto sin cancelar el job. PWA **v48**. `npm test` **160/160**. Rutas Codex **96**.
- **Claridad de turno Cursor (9 ago 2026)**: banner de estado (en curso/finalizado/fallido), hidratación de tools desde `GET /api/chat/jobs/:id`, card de resumen en timeline, panel Actividad con herramientas Cursor, labels «Enviado»/«Respondió». PWA **v49**. `npm test` **162/162**.
- **Shell Suite sin rollout (9 ago 2026)**: abrir conversaciones Cursor cuyo App Server ya no tiene el thread (índice durable → shell); deja de mostrarse el aviso «ya no está disponible». PWA **v50**. `npm test` **163/163**.
- **P0 audit + sesiones (9 ago 2026 noche)**: SEC-16 vault → **410** (sin valores `.env`); UX español `Insufficient balance`/freemodel; tools sin «En curso…» fantasma; dedupe mensajes usuario; mutex `openThread`; `git init` + `.gitignore` reforzado (**sin commit baseline**). PWA **v51**. `npm test` **166/166**. Smoke IDE↔Suite **OK**. Doc: [CODEX-SUITE-SELF-AUDIT-2026-08-09.md](CODEX-SUITE-SELF-AUDIT-2026-08-09.md).
- **Freemodel multi-key (9 ago 2026 noche)**: vault `storage/codex-freemodel-keys.json` + sonda de saldo; activación escribe `%USERPROFILE%\.codex\auth.json`; Control → Freemodel (listar/añadir/activar/probar/eliminar); CTA en aviso de saldo; Archivar/Eliminar en lista de chats. Rutas Codex **102**. PWA **v52**. `npm test` **170/170**.
- **Providers8082 dual motor (10 ago 2026)**: tercer engine (FCC razonamiento → Cursor ejecución); modal preflight; Control → Providers8082; default chat **Cursor SDK**; `FCC_BASE_URL` en router/evals; Freemodel/FCC/Cursor siguen siendo sistemas distintos. Rutas Codex **105**. PWA **v53**. `npm test` **176/176**.
- **Timeline Cursor UX (10 ago 2026)**: dedupe respuesta live+persistida; orden tools → respuesta → diffs → resumen; sin «Sin salida» engañoso; timestamps estables. PWA **v54**. `npm test` **176/176**.
- **Review Cursor archivo a archivo (10 ago 2026)**: tray Aceptar/Rechazar como IDE (`/api/changes`); sesión de cambios por hilo; reconcile diffs si el SDK no emite `completed`; colapso de tools ruidosos; prompt de resumen final. PWA **v55**. `npm test` **179/179**.
- **Oleada premium A–D + captajaus B (10 ago 2026)**: Diff Guardian; excellence-metrics + Evidence Replay; Control → Excelencia; intent router / reviewer scorecard / vault23 / heatmap / continue-until-ship / ide-parity todos; captajaus higiene stuck runs + Fotocasa `__initial_props__` + PM2 anti-EADDRINUSE. PWA **v56**. Rutas Codex **115**. `npm test` **184/184**.
- **Hotfix carga + 12 fails (12 ago 2026)**: restaurado export `detachCursorStreamUi` / `attachCursorStream`; índice durable de threads (merge/shell/dedupe/prune/archive); helpers frontend Providers8082, banner turno, review Cursor, guards `creatingThread`/`openingThreadId`. PWA **v59**. `npm test` **184/184**. Informe: [INFORME-ESTADO-2026-08-12.md](INFORME-ESTADO-2026-08-12.md).
- **1.3 Mission Evidence Graph v1 (12 ago 2026)**: `lib/codex-evidence-graph.js` derive-on-read; `GET .../evidence/:threadId/graph|export`; Control → Misiones vistas Simple/Avanzado + Exportar; PWA **v60**. Rutas Codex **117**. `npm test` **186/186**.
- **2.1 Secure Project Creation v2 (12 ago 2026)**: junctions/symlinks exhaustivos; preview create/attach; rollback transaccional; plantilla `imported` + checklist; PWA **v61**. Rutas Codex **119**. `npm test` **190/190**.
- **2.2 Workspaces compuestos v1 (12 ago 2026)**: `roots[]` con consent/policy/owner; scope de turno (`rootIds`/`writeRootIds`); explorer por `rootId`; deploy filtrado; health v2 con checks 1.3/2.1/2.2. PWA **v62**. Rutas Codex **122**. `npm test` **193/193**.
- **2.3 Control → Claves APIs v1 + Lab .16 (12 ago 2026)**: vault 2ª contraseña (scrypt/AES-GCM), rutas `/api/codex/keys/*`, UI Control → Claves write-only; Lab Fabric taxonomía + `GET /lab/wave16` + FCC remoto opcional. PWA **v63**. Rutas Codex **133**. `npm test` **197/197**.
- **2.4 Policy Studio + Lab residuals (16 ago 2026)**: schema/preview/rollback Suite; scopes honestos; Lab retries `LAB_PROBE_*` + card FCC plane; `restartAppServer` cableado. PWA **v64**. Rutas Codex **139**. `npm test` **202/202**.
- **3.3/3.4 parciales (16 ago 2026)**: presupuesto de contexto (`POST /context/budget`) + recomendaciones con utilidad vs evidencia. PWA **v65**. Rutas Codex **140**. `npm test` **204/204**.
- **1.4 Concurrencia multi-cliente v1 (16 ago 2026)**: `expectedRevision` en decisiones de checkpoint; 409 `VERSION_CONFLICT`/`DISK_CHANGED`/`ALREADY_DECIDED`; banner actividad background; `GET /activity/background`. PWA **v66**. Rutas Codex **141**. `npm test` **207/207**.

## Checklist brainstorming 1–11 (sin omitir)

| # | Frente | Estado |
|---|--------|--------|
| 1 | Reviewer FCC scorecard | **done** API `POST /reviewer/scorecard` |
| 2 | Lab `.16` / FCC plane | **done** API `GET /lab/fcc-plane` + `GET /lab/wave16` (Docker externo documentado) |
| 3 | Router por intención | **done** API `POST /intent-router/classify` |
| 4 | Paridad IDE todo list | **done** API `POST /ide-parity/plan-todos` |
| 5 | Vault 2.3 | **done** Claves APIs + `GET /vault23/status` (write-only, SEC-16 410) |
| 6 | Métricas excelencia | **done** API + Control Excelencia |
| 7 | Pipeline paralelo | **done** API `GET /pipeline/parallel-status` |
| 8 | Evidence Replay | **done** JSONL + `GET /evidence-replay` |
| 9 | Continue until ship | **done** API status + env flag |
| 10 | Diff Guardian | **done** accept gated + UI confirm |
| 11 | Conversation heatmap | **done** API `GET /conversation-heatmap` |
- Siguiente: **1.5** chaos / **3.1–3.2**. Commit baseline Git **aplazado**. **1.3–2.4** + Lab + 3.3/3.4 parciales + **1.4** entregadas.
- Migración `.16`: Evolution/Baileys pueden seguir `timeout/unreachable`; FCC remoto requiere `FCC_REMOTE_BASE_URL` + despliegue operador.
