Arc OS — Hoja de ruta
Oficina de IA nativa. Claude Code Agent Teams + Arquitectura CLI-First + Canales. 70+ endpoints, SQLite SSOT, Sage Worker + Benchmarks + Marketplace Discovery + Knowledge Harvester. Última actualización: 2026-05-04 (Phase 52.1 DONE — códigos de invitación F&F + tier beta plan; Phase 52.2-7 IN PROGRESS)
Cronograma de fases
timeline
title Arc OS — From Native Birth to Public Beta
section Foundation (Feb 2026)
18 : Native Birth + Phaser
19 : Rich Integration
20 : Federated Bots
section Intelligence (Mar 2026)
21 : Binary Evals + Context Router + Learnings
22 : CRM Dashboard
24-26 : Dual Agent + Dynamic Workers
28-30 : Auto-ingest + Knowledge Harvester
section Marketplace (Apr 2026)
32-35 : Knowledge Dashboard + Live Terminal
36 : Cloud PM + NotebookLM Bridge
38 : ARC CLI compiled
40 : Sage + A/B + Marketplace Discovery
section Hardening (Apr 2026)
41 : UI Refresh + Context Rail
42 : Multi-tenancy + Loopback bind
44 : Analytics + Docs Coverage 95%
45 : Zero-Knowledge E2EE
section Architecture (Late Apr 2026)
47 : Timeline + Issues Redesign
48 : Decomposition 10779→373 LOC + Worker lazy lifecycle
49 : Doc-coverage pre-push hook
section Beta (May 2026)
50 : Trial Credits
51 : Stripe Billing Stage 1
52.1 : F&F Invite Codes + beta plan
52.2-7 : Sample Project · Funnel · Status · Uptime
Dónde estamos: Phase 52.1 completada (registro con código de invitación, códigos
arc-XXXX-XXXX, plan beta sin medición). El lanzamiento público depende de los criterios de éxito de F&F — ver §Phase 52.
Phase 18: El nacimiento nativo (COMPLETADA)
18.0 — Bootstrap del repositorio (DONE)
- Crear repo, CLAUDE.md, .clauderules
- Transferir activos de propiedad intelectual (configs, blueprints, skills)
- Crear Issue #35 paraguas en Claude-CEO
18.1 — Fundación de Agent Teams
- Activar Agent Teams con TeamCreate
- Crear tareas iniciales para Morty, Squanchy, Beth
- Definir Acuerdos de trabajo por agente
- Probar mensajería entre agentes
- Protocolo de actualización de estado (office-state.json)
18.2 — Canal nativo de Telegram
- Nuevo bot via @BotFather
- Plugin oficial de canal de Telegram
- Comandos de texto: /status, /tasks, delegación
- Subida de archivos → auto-clasificar → dirigir al agente
- Progreso mediante edit_message, reactions
18.3 — Arc OS Bridge MCP Server
- Bun + TypeScript MCP server
- 4 herramientas MCP: get_office_state, update_agent_state, get_tasks, get_knowledge
- API HTTP: /api/state, /api/tasks, /api/knowledge, /api/events
- Stream SSE para actualizaciones del frontend en tiempo real
- File watcher sobre el directorio state/
18.4 — Restauración visual (Phaser Frontend)
- Phaser 3.80 + Vite 6 configuración nueva
- OfficeScene, UIScene, entidades Agent
- StatePoller (SSE desde el MCP server)
- Texto HD (fuentes del sistema, DPI alto)
- Sprites de agentes (pixel art o fallback de colores)
- Sin UI de entrada de comandos (Telegram es la interfaz)
18.5 — Despliegue VPS y disponibilidad 24/7
- Docker Compose (3 servicios: session, bridge, frontend)
- Reverse proxy Nginx (:18888 → frontend, :19200 → API)
- Persistencia de estado mediante volúmenes Docker
- Integración de heartbeat con Morty SRE
- SSL via Let's Encrypt (opcional)
Phase 19: Integración enriquecida (COMPLETADA)
19.1 — Polling de estado delta (DONE)
- El frontend sondea solo el estado cambiado via el parámetro
?since= - StateManager rastrea
lastModifiedpor archivo - SSE envía eventos delta, no volcados completos de estado
19.2 — Barra de contexto y tema del canvas (DONE)
- Barra CTX mostrando agente activo, tarea, info de sesión
- Tema Phaser nativo del canvas (sin overlays HTML)
- Corrección de la secuencia de arranque asíncrono
19.3 — Lifecycle Hooks (DONE)
- Hook
SubagentStop→ agent=idle en office-state.json - Hook
Stop→ resumen de sesión + todos los agentes inactivos - Registrado en
~/.claude/settings.json
19.4 — Integración Library / NotebookLM (DONE)
- Comando CLI
/citadel-wrapup→ exportar a docs/library-export/ - Comando CLI
/citadel-recall <query>→ búsqueda grep local - README con instrucciones de configuración de NotebookLM
- Bridge basado en archivos (pendiente de API para integración completa)
19.5 — Skills de operación CLI (DONE)
/citadel-status— dashboard de agentes (trabajando/inactivo, tareas, estadísticas de library)/citadel-task <text>— creación de tareas estructuradas WISC desde texto plano/citadel-deploy— despliegue VPS (git push, SSH, Docker rebuild, health check)
Phase 20: Arquitectura de bots federados (COMPLETADA)
Documento de arquitectura:
docs/architecture/PHASE_20_FEDERATION.mdDecisión: Federación (Master + Children) sobre Single Bot + Switcher.
20.1 — Fundación del Master Bot (DONE)
- Bot de Telegram Bun + TypeScript (long-polling, NO es una sesión de Claude)
config/bot_registry.json— registro de children- Comandos:
/status,/emergency-stop,/list,/deploy,/health - Contenedor Docker en
docker/docker-compose.yml - Endpoint de salud:
/api/master/health
20.2 — Protocolo de Child Bot (DONE)
child-bot/bot.ts— proxy Telegram ↔ Claude CLI (claude -p)- Archivo heartbeat cada 60s en
state/heartbeat_<name>.json - Smart Context Middleware:
reply_to_message→ inyección de GSD CONTEXT - Historial de hilo: últimos 50 mensajes en
state/thread_history.json - Apagado graceful (SIGINT/SIGTERM para emergency-stop)
- Endpoint de salud:
/api/child/healthen puerto 19211 - Se ejecuta en HOST (necesita CLI
claude), no en Docker - Endurecido: timeout de 5 minutos, reintento en fallo, límite de max-turns (20), diagnóstico
20.3 — Motor de onboarding (DONE)
/new_project <name>— entrevista interactiva (4 pasos: descripción → links → token → confirmar)- Matching de skills: auto-detección desde registry + library
- Detección de blueprint: web, gamedev, debug, legal, service
- Auto-aprovisionamiento: mkdir, CLAUDE.md, MANIFEST.md, .env, git clone, registry, tmux
- Asignación de puertos desde el registry
- Soporte de carga de archivos
.mdde descripción de proyecto
20.4 — Skill Library y eliminación de proyectos (DONE)
/remove_project <name>— seguridad de triple confirmación con nombres protegidos- Skills de library:
skills/library/*.mdauto-emparejadas durante el onboarding - Copiadas al directorio
skills/del nuevo proyecto durante el aprovisionamiento - Hook de recarga de registry: actualización en memoria después del aprovisionamiento/eliminación
20.5 — Infraestructura Phantom-Ready (DONE)
shared/logger.ts— logger JSONL estructurado con salida dual (archivo + consola)- División diaria de archivos:
system-YYYY-MM-DD.log,dialog-YYYY-MM-DD.log,error-YYYY-MM-DD.log - Categorías: system (ciclo de vida), dialog (usuario↔Claude), error (→ ambos error + system)
- Sin dependencias externas — APIs Bun puras
- División diaria de archivos:
shared/vault.ts— almacenamiento de secretos cifrado AES-256-GCM- Clave: variable de entorno → archivo
config/vault-key→ auto-generada - Caché en memoria después del init, fallback a
process.env - Escrituras atómicas (tmp + mv)
- Clave: variable de entorno → archivo
master-bot/watchdog.ts— monitor de background autorreparable- Health check HTTP cada 30s (timeout de 5s)
- Auto-reinicio de children caídos via tmux (token desde vault)
- Backoff exponencial: 30s → 1m → 5m → 15m → 60m (tope)
- Desactivación permanente tras 10 fallos consecutivos
- Notificaciones al CEO: primer reinicio, fallo, desactivación permanente
- Estado persistido en
config/watchdog-state.json
- Comando
/watchdog— estado de salud de child bots en tiempo real en Telegram - El onboarding almacena tokens en vault (no en
.env), crea/var/log/citadel/<name>/ config/logrotate-citadel.conf— rotación diaria, retención de 7 días, compresiónscripts/setup-vps-logging.sh— configuración de infraestructura de logs en VPS- Todo
console.log/console.error→ logger estructurado (child-bot + master-bot)
Phase 21: Interfaz de comandos Arc OS (COMPLETADA)
Telegram se convierte en un dashboard interactivo completo con teclados inline, control de subprocesos y stubs de enlace al CRM.
21.0 — Capa de UI táctica (DONE)
shared/ui_templates.ts— módulo central de construcción de tecladosmasterMainMenu()— teclado de respuesta persistente 2×2projectCard(name, crmBase)— teclado inline de 4 filas (Restart/Delete/Manifest/Skills/CRM)deleteConfirm(name)— inline YES/CANCELchildResponseButtons(skills?, crmBase?, projectName?)— STOP/PAUSE/RESUME/BTW/FixItparseCallback(data)— parser"action:target"
- Mejoras del Master bot:
- Enrutamiento de texto del teclado de respuesta (Мої Проєкти → project cards, Web UI → enlace CRM)
handleCallbackQuery()— reinicio, flujo de eliminación, visor MANIFEST, lista de skills- Helpers
tgSendMarkup,tgEditMessage,tgAnswerCallback,tgSetMyCommands /startenvía ayuda CON teclado de respuesta- Botones de URL del CRM (configurable
CRM_BASE_URL, dev:http://62.171.128.248:18888)
- Mejoras del Child bot:
- Estado de módulo
currentProc/isPaused/btwQueue handleStop()→ SIGKILL,handlePause()→ SIGSTOP,handleResume()→ SIGCONT- Modo BTW: recopila contexto → añade al inicio del siguiente prompt GSD
- Estado de módulo
21.5 — Motor de inteligencia (DONE)
shared/evals.ts— Binary Evals: 6 tipos de reglas (string_contains, string_not_contains, regex_match, regex_not_match, max_length, min_length)shared/context-router.ts— Context Router: puntuación de skills por mensaje, inyección de las 5 más relevantesshared/learnings.ts— Reflect Loop: Fix It / thumbs-down → reglas persistentes → inyectadas en cada prompt futuroscripts/nightly-improve.ts— Karpathy Loop: análisis nocturno de métricas → propuestas de mejora → aprobación del CEO- Botones: STOP, PAUSE, RESUME, BTW, Fix It, thumbs-up, thumbs-down
- Comandos:
/ping,/quality,/learnings,/thread
Phase 22: CRM Dashboard (COMPLETADA)
Dashboard web de gestión de proyectos completo.
22.1 — API REST (DONE)
- Servidor HTTP Bun integrado en el Master Bot
- Autenticación JWT (HMAC-SHA256, TTL de 24h)
- Endpoints de proyectos: CRUD, estado, despliegue
- Endpoints de skills: listar, actualizar, crear
- Endpoints de workers: listar, crear, actualizar
- Endpoints de analytics: métricas, historial de sesiones
22.2 — Frontend React (DONE)
- React 18 + Vite 6 + Tailwind CSS
- Páginas: Workspace, Skills, Workers, Analytics, Settings
- Autenticación: login con email/contraseña
- Responsive móvil (Phase 39)
Phases 24–26: Agente dual y workers dinámicos (COMPLETADAS)
24.5 — Sistema de workers (DONE)
config/workers_registry.json— registry de workers dinámicos- Tipos: Chat (conversacional) y Terminal (flujo de herramientas)
- Configuración: modelo, herramientas, system prompt, bot de Telegram
/cConsultant (sonnet, solo lectura),/dDeveloper (opus, acceso completo)/w:<worker_id>— worker personalizado por ID
26 — Workers dinámicos v2 (DONE)
- Worker Studio: creación/edición de workers mediante UI
- System prompt generado por IA
- Herramientas configurables por worker
- Bot de Telegram dedicado por worker (token independiente)
- Focus Dirs: acceso a directorios con alcance
Phases 28–30: Auto-ingest y Knowledge Harvester (COMPLETADAS)
28 — Auto-ingest Watcher (DONE)
- File watcher sobre
knowledge-base/raw/ - Auto-clasificación de archivos nuevos
- Procesamiento y almacenamiento en base de conocimiento
- Notificación al CEO al finalizar
30 — Knowledge Harvester (DONE)
- Extracción automática de conocimiento de conversaciones
- Síntesis y categorización semántica
- Integración con NotebookLM Bridge (Phase 36)
Phases 32–35: Knowledge Dashboard y Terminal en vivo (COMPLETADAS)
32–33 — Knowledge Dashboard (DONE)
- Wiki por proyecto: base de conocimiento editable
- Knowledge Graph: visualización de entidades (canvas con grafo de fuerzas)
- Búsqueda semántica integrada
34–35 — Terminal en vivo (DONE)
- Terminal xterm.js integrada en el CRM Dashboard
- WebSocket bidireccional con el servidor
- Soporte de workers tipo Terminal
- Streaming de logs en tiempo real
Phase 36: Cloud PM y NotebookLM Bridge (COMPLETADA)
36.3 — NotebookLM Bridge (DONE)
- Python FastAPI en
services/notebooklm-bridge/(puerto 19213, solo localhost) POST /query— búsqueda semántica via Google NotebookLMPOST /sync— encolar fuente para sincronización asíncronaPOST /notebooks/init— crear notebook para nuevo proyectoGET /health— estado de autenticación, conteo de notebooks, estadísticas de cola- Auto-activado por el CRM: cierre/apertura de issue →
/sync, actualización de wiki →/sync, creación de proyecto →/notebooks/init notebook_mapping.jsonmapea nombres de proyectos a IDs de notebooks
36.6 — Neural Skill Generator (DONE)
- Asistente de generación de skills potenciado por IA
- Análisis del stack tecnológico del proyecto
- Plantillas de skills por dominio (Odoo, React, Next.js, etc.)
Phase 38: ARC CLI compilado (COMPLETADA)
38 — CLI compilado (DONE)
clients/arc-cli.ts— binario compilado Bun- Subcomandos:
arc skill,arc report,arc kb,arc learnings,arc issue,arc issues,arc wiki,arc roadmap - Autenticación JWT con el servidor CRM
- Enlace local entre IDE y workers cloud
Phase 40: Sage Worker + A/B + Marketplace Discovery (COMPLETADA)
40 — Sage Worker (DONE)
- Worker Haiku dedicado para análisis de skills
- Analizar: recomendaciones de mejora por skill
- Benchmarks: pruebas A/B entre versiones de skills
- Descubrir: skills de la comunidad en claudemarketplaces.com
- Instalar: skills del marketplace globalmente o por proyecto
- SSRF protegido: allowlist de esquema HTTPS + host
claudemarketplaces.com
Phase 41: UI Refresh + Context Rail (COMPLETADA)
41.7 — Context Rail (DONE)
- Panel derecho fijo de 320px visible ≥1280px
- Objetivo actual desde roadmap + métricas 2×2
- Skills activas + notas ancladas + pie de git
- Actualización en tiempo real via SSE
Phase 42: Multi-tenancy + Bind de loopback (COMPLETADA)
Auditoría de seguridad completa:
docs/security/audit-2026-04-23.md
42.1–42.10 — Hardening de multi-tenancy (DONE)
canAccessProject(registry, chatId, project)en todas las rutas protegidas- SSE logs + SSE consultant + WebSocket terminal: gate de acceso por proyecto
/api/cli/*+/api/mcp/*: fail-closed, 400 en nombre de proyecto inválido- Bun enlaza
127.0.0.1:19210solo (UFW bloquea externo, nginx proxy via loopback) /api/internal/*: rechaza cualquier petición conX-Forwarded-For,X-Real-IP,Forwarded- SSRF allowlist en
handleScoutAnalyze— HTTPS + hostclaudemarketplaces.com - Path traversal:
isValidProjectName()regex +safePath()en todas las rutas controladas por usuario - Escrituras atómicas:
tmp.${pid}+mvpara mutaciones del registry - CORS: whitelist
CRM_ALLOWED_ORIGINS(configurable), headers en respuestas de error también
Phase 44: Analytics Redesign + Cobertura de docs al 95% (COMPLETADA)
44 — Analytics Redesign (DONE)
- Dashboard de analytics rediseñado
- Métricas de rendimiento por skill
- Historial de sesiones y duración
- Exportación de datos
44.5 — Cobertura de docs 65%→95% (DONE)
- Auditoría completa de documentación
- Docs de arquitectura, seguridad, API, guías de usuario
- Referencia completa de endpoints CRM
44.6.1 — Design System v2.0 (DONE)
- Espacio de color OKLCH — acento warm clay (#c25b3f)
- Superficies off-white cálidas (#f7f5f1 → #ffffff)
- Colores específicos por worker (6 roles)
design-system.csscentralizado (300+ líneas) → única fuente de verdad- Escala de espaciado (base 4px), tipografía (Inter Display + JetBrains Mono)
- Escalera de sombras de 5 niveles, estados de status con animación de glow
Phase 45: Zero-Knowledge E2EE (COMPLETADA ✅)
Documento de arquitectura:
docs/architecture/PHASE_45_E2EE.md
45 — Cifrado de extremo a extremo (DONE)
- Cliente: WebCrypto PBKDF2 (100k iter) → clave maestra AES-256-GCM (
sessionStorage) - Servidor: vault AES-256-GCM para API keys, SQLite at-rest para mensajes de chat
- Recuperación: claves formato 1Password (
XXXX-XXXX-XXXX-XXXX-XXXX), backup de clave maestra cifrada - Headers CSP:
default-src 'self',X-Frame-Options: DENY,X-Content-Type-Options: nosniff - Sanitizador PII: redacta emails, API keys, JWTs, números de tarjeta de logs JSONL
Phase 47: Timeline + Issues Redesign (COMPLETADA)
47 — Timeline (DONE)
- Estilo DAW: carriles por worker, chips de eventos, controles M/S, cabezal de reproducción
- Observabilidad de sesiones: qué workers estaban activos, cuándo y por cuánto tiempo
47.8 — Issues Redesign (DONE)
- Tabla agrupada por fase + panel de detalle deslizante
- Pulso P0, barras de progreso, responsive móvil
- Integración con
arc issue logpara trail de actividad auditable
Phase 48: Descomposición de arquitectura (COMPLETADA)
48 — Descomposición (DONE)
- 10.779→373 líneas en API server principal
- 19 módulos de dominio en
shared/routes/: projects, workers, skills, chat, sage, onboarding, files, wiki, etc. master-bot/api-server.ts(196 líneas) delega amaster-bot/routes/
48.5 — Bandeja de entrada CRM dirigida por eventos (DONE)
fs.watchreemplaza polling de 500ms- Latencia de entrega de mensajes 100× más rápida
48.6 — Ciclo de vida lazy de workers (DONE)
- Idle-kill + wake-up automático
- ~298 MB liberados (39%), capacidad 2→6-10 usuarios
Phase 49: Hook pre-push de cobertura de docs (COMPLETADA)
49.1 — Hook pre-push (DONE)
.githooks/pre-push→scripts/check-docs-coverage.ts- Bloquea pushes que cambian código sin actualizar la documentación correspondiente
- Mapeo: migrations → database-schema.md, routes → api-reference.md, commit Phase NN → ROADMAP.md
Phase 50: Créditos de prueba (COMPLETADA ✅)
50 — Trial Credits (DONE)
- Únicos por email, 100K tokens
- Habilitan: creación de nuevo proyecto + acceso a API de Anthropic
- Expiración automática al agotar créditos o pasado el período de prueba
Phase 51: Stripe Billing Stage 1 (COMPLETADA ✅)
51 — Billing (DONE)
- Tablas
subscriptions+stripe_events - Middleware
checkPlanLimit()(semántica OR), 402 en límite alcanzado - Tiers de plan: Free / Min / Max / Beta (sin medición)
- Webhooks de Stripe procesados y almacenados en
stripe_events
Phase 52: F&F Beta Launch (COMPLETADA ✅ + EN PROGRESO)
Lanzamiento de beta cerrada Friends & Family.
52.1 — Códigos de invitación + plan beta (DONE)
- Códigos de invitación formato
arc-XXXX-XXXX - Plan
betasin medición (acceso completo sin límites de tokens) - Canal
@arcos_beta_feedbackpara feedback - Registro solo por invitación — obtén un código de un Founding Member o contactando al CEO
52.2–52.7 — En progreso
- Proyecto de muestra, embudo de onboarding, página de estado, uptime monitoring
Phase 53: Hardening Sentinel (COMPLETADA ✅)
2 sprints P0 (#62-67) + 13 sprints P1 (#68-80) + fast-wins P2 (#102-#109), seguimientos de pentest, infra repo SSOT.
53.1 — Notificaciones TG por worker (DONE)
- Notificaciones de Telegram por worker al finalizar tareas largas
- Token de bot dedicado por worker (independiente del bot de proyecto)
53.2 — Sistema de tipos de evals (DONE)
- 6 tipos de reglas: string_contains, string_not_contains, regex_match, regex_not_match, max_length, min_length
- Evals por skill, por proyecto
53.3 — Métricas de calidad (DONE)
quality-metrics.jsonpor proyecto- Tasa de éxito por skill, historial de feedback
- Duración promedio de respuesta por skill
53.4 — Email [email protected] (PLANNED)
- Configuración DNS/MX
- No es código — configuración de infraestructura
53.5 — Widget de feedback (DONE)
- Widget de feedback flotante en el CRM Dashboard
- Tipos: bug, feature request, general feedback
- Almacenado en base de datos, visible en dashboard de admin
53.6 — Watchdog mejorado (DONE)
- Backoff exponencial mejorado
- Health checks más robustos
- Mejor logging de eventos de reinicio
53.7 — Comandos de Telegram adicionales (DONE)
/issue— gestión de issues desde Telegram/thread— resumen del hilo actual/quality— métricas de calidad por skill
53.10 — Infraestructura de notificaciones (DONE)
- Pipeline de notificaciones reutilizable
- Soporte para notificaciones TG, email
- Umbral configurable por tipo de alerta
53.11 — Multi-Worker TG UX Overhaul (DONE/PLANNED)
- #48 Wizard (DONE ✅ 2026-05-10) — asistente de configuración de bots por worker
- #49 Topics mode (WAIT-FOR-DATA) — modo de temas de Telegram, opt-in, requiere diseño
53.12 — Higiene de despliegue (DONE)
vps-sync.shguarda registry antes degit pull, restauraowner_iddespués- Enriquecimiento de arranque:
master-bot/bot.tsrellenaowner_idfaltante desde DB al iniciar
53.13 — Invariante TypeScript (DONE)
tsc --noEmitlimpio en todo momento- Validación en pre-push hook
53.14 — Migración issues.json → SQLite (DONE)
issues/issues.jsonreemplazado por tablas SQLiteissueQueriesenshared/db.ts- Trail de actividad auditable en
activity_log
53.15–53.16 — Sentinel Sprint 1 + 2 (DONE)
- Sprint 1: 5 issues P0 de pentest
- Sprint 2: 13 issues P1 de pentest
- Hardening de path traversal, SSRF, multi-tenancy, CORS
53.17.x — Seguimientos de pentest (DONE)
- CF lockdown (solo el IP del VPS aceptado)
- Child-bot a loopback (bind 127.0.0.1)
- Rotación de secretos via runbook
- Fix de wrapper-script
53.19 — mTLS CF Authenticated Origin Pulls (PLANNED)
- Certificados mTLS Cloudflare ↔ nginx
- Dashboard toggle en UI
53.20–53.21 — Sentinel P2 batch (PLANNED)
- trial-tenant hardening
- feedback gate
- Docker pin de versiones
Phase 54: Capa de engagement de onboarding (COMPLETADA ✅)
6 sub-fases (54.1-54.6), issues #56-#61, ~8.5d total. CLI-first checklist cierra el hueco "dashboard → primer comando arc" post-Phase-50.
54.1 — Checklist de onboarding (DONE)
OnboardingChecklist.jsxcon pasos progresivos- Estado persistido por usuario en DB
- Integración con UserDropdown "Replay onboarding"
54.2 — Tour interactivo CLI (DONE)
arc tour— tour interactivo de onboarding en CLI- 5 pasos: login, primer proyecto, skill, issue, report
54.3–54.6 — Fases de onboarding avanzado (DONE)
- Hints contextuales por paso con navegación concreta
- Modal de onboarding con barra de progreso circular
- Paginación de contenido de ayuda
Phase 55: Rediseño del login Cosmic Editorial (COMPLETADA ✅ 2026-05-13)
Backdrop animado de planeta, CosmicCard con glassmorphism, flujo de magic-link, panel editorial lateral; 7/8 sub-issues cerradas, #87 2FA aún bloqueado en diseño Sentinel.
55.1 — Backdrop animado (issue #82, P0 — DONE ✅)
LoginBackdrop.jsx— canvas WebGL con partículas orbitales- CSS
prefers-reduced-motionrespetado - Re-exportación desde
login/index.js
55.2 — CosmicCard glassmorphism (issue #83, P1 — DONE ✅)
CosmicCard.jsx— tarjeta de login con efecto glass- Acento clay, sombra multicapa
- Formulario de email/contraseña integrado con E2EE
55.3 — Flujo OAuth (issue #84, P1 — DONE ✅)
- Botones Google + GitHub con iconos SVG
- CSRF state token (TTL 10min, uso único)
- Auto-detect de registro vs login por código de invitación
55.4 — Panel editorial (issue #85, P1 — DONE ✅)
EditorialPanel.jsx+CapabilitySlider.jsx+Tickertape.jsx- Rotador de 5 slides con avance automático, tickertape de 8 líneas con máscara fade
clamp()en headline (48–84px), sintransform-scale
55.5 — Flujo magic-link (issue #86, P2 — DONE ✅)
- Backend:
generateMagicToken/consumeMagicToken(TTL 10min, uso único, acuña JWT) POST /api/auth/magic-link/request+POST /api/auth/magic-link/verify- Frontend: UI de estado
magic+ cuenta regresiva de 60s para reenvío
55.6 — 2FA / TOTP (issue #87, P2 — BLOQUEADO en diseño Sentinel)
- Schema + diseño de endpoint desde Sentinel aún requeridos
- La máquina de estados de login tiene espacio para el estado
2facuando llegue el diseño
55.7 — Mobile + responsive (issue #88, P2 — DONE ✅)
- Hook
useViewportMode+ CSS Grid template enLoginOverlay.jsx - ≥1024px: columnas 60/40. <1024px: columna única, editorial oculta, tarjeta centrada
55.8 — A11y + i18n + auditoría reduced-motion (issue #89, P1 — DONE ✅)
aria-invalid,role=alert,aria-live=assertive,aria-label, focus ringprefers-reduced-motion: reducecolapsa toda animación a no-op- 44 nuevas strings lingui extraídas + traducidas al UK
55.9 — Animación de éxito + cuenta regresiva (issue #90, P2 — DONE ✅)
- Pulso de check animado + "Welcome back" + barra de progreso de 1.5s antes de
onLogin - Keyframes respetados por
prefers-reduced-motion
55.10 — Correcciones QA vs diseño canónico (issue #110, P1 — DONE ✅)
- Copy de header revertido a strings de diseño
- Expander de beta-invite siempre disponible
FooterRowportado:Docs · Terms · Privacy · ● Status · EN / UK- Toggle EN/UK vinculado a
activateLocale
Phase 56: Capa de interoperabilidad IA — Exportación de contexto de proyecto (COMPLETADA ✅ 2026-05-13)
Feature para power users sobre la tesis "OS para equipos de IA": permite a los propietarios de proyectos entregar un snapshot completo y saneado del proyecto a cualquier IA externa (Gemini, ChatGPT, Perplexity, Claude.ai) sin teatro de copiar y pegar.
56.1 — Módulo secret scanner (issue #97, P0 — DONE ✅)
shared/secret-scanner.ts— escáner de 3 niveles: Tier 1 regex, Tier 2 entropía Shannon (≥4.5 bits/char), Tier 3 heurísticas de contexto- Whitelist suprime UUIDs, git SHAs, SHA-256, chars repetidos
- Niveles de severidad: critical (auto-redact por defecto) / high / medium / low
- 51 tests, 1 MB / <500ms presupuesto de rendimiento verificado
56.2 — Endpoint de exportación + renderizador de secciones (issue #98, P0 — DONE ✅)
shared/routes/context-export.ts—GET /api/crm/projects/:name/context-export?include=...- 7 renderizadores de sección: identity (CLAUDE.md) / workers / architecture / issues / activity / commits / learnings
- Multi-tenancy: solo propietario puede exportar (admin role no bypasa)
- 28 tests, presupuesto <2s
56.3 — Modal de exportación (issue #99, P0 — DONE ✅)
ProjectContextExportModal.jsx— 3 pasos (secciones → escaneo de secretos → previsualización y descarga)- Paso 2: gate de reconocimiento por cada hallazgo high/medium antes de continuar
- Paso 3: previsualización markdown + checkbox "Revisé este archivo" obligatorio + Descargar/Copiar
56.4 — Configuración + log de auditoría (issue #100, P1 — DONE ✅)
- Migración 024: tablas
export_audit_log+export_preferences - Preferencias:
auto_redact_critical(ON por defecto),notify_on_export - Rutas:
GET /api/crm/projects/:name/exports,GET+PATCH /api/crm/projects/:name/settings/export
56.5 — Telemetría + alertas (issue #101, P2 — DONE ✅)
- Log de auditoría como sink de telemetría
- Alerta via pipeline de notificaciones Phase 53.10 cuando ≥3 exportaciones en 24h (opt-in)
GET /api/crm/analytics/exports→aggregateExportStats(hours)
Phase 57: UI de configuración de plataforma (COMPLETADA ✅ 2026-05-15)
Cierra el vector de fuga detrás de #103: la rotación de secretos de plataforma (Anthropic / OAuth / TG / Resend) ya no requiere flujo ssh + editar-.env + pegar-en-chat. El super-admin hace clic en "Rotate" en la UI del CRM → nuevo valor aterriza atómicamente en vault.json → bots asociados reinician → fila de auditoría escrita.
57.1 — Backend MVP (Stage 1 — DONE ✅ 2026-05-15)
- Migración 026: tabla
platform_audit_logappend-only shared/routes/platform.ts— 5 handlers: list / rotate / test / restart / audit- Allowlist de 9 claves. Exclusión
NEVER_EXPOSE:CRM_SECRET+SECRET_ENCRYPTION_KEY - Redacción:
prefix(12)…suffix(4)+ longitud, valor completo nunca cruza el límite HTTP - Probes SaaS: Anthropic
/v1/models, TelegramgetMe, Resend/api-keys
57.2 — Frontend (Stage 2 — DONE ✅ 2026-05-15)
PlatformSettings.jsx(~620 LOC) — grid de tarjetas responsivo (9 tarjetas)- Modal de rotación con
<input type="password">+ confirmación y toggle Eye/EyeOff - Drawer de log de auditoría con filtro por clave
- Entrada Platform (icono Shield) en el nav global,
adminOnly: true
57.3 — Integración hot-reload (Stage 3 — DONE ✅ 2026-05-15)
shared/auth.ts loadOAuthConfig()leegetSecret()por llamada- GitHub/Google/Resend: hot-reload inmediato sin reinicio del master
- ANTHROPIC + Telegram: requieren reinicio de child-bot (consumidos en spawn)
57.3.1–57.3.4 — Polish de UI + i18n (DONE ✅ 2026-05-16)
- Grid refactorizado en 4 secciones categorizadas (Anthropic / OAuth Providers / Telegram Bots / Transactional Email)
- Panel de ayuda colapsable por tarjeta (USADO EN / OBTENER NUEVO VALOR / EFECTO TRAS ROTAR / RIESGO SI SE FILTRA)
- Catálogo UK i18n: 65 strings nuevas traducidas
- Fix de MessageDescriptor map: helper
tx(_, source)para lookup correcto en tiempo de ejecución
Phase 58: Header / UserDropdown UX (COMPLETADA ✅ 2026-05-16)
Refactor UX siguiendo el patrón Claude.ai: píldora de usuario en la esquina inferior izquierda en lugar del cluster superior derecho de Docs/Help/Lang/Theme/Avatar.
58.1 — Píldora de usuario inferior izquierda (DONE)
UserDropdown.jsxreescrito como píldora de posición fija en la esquina inferior izquierda del viewport (240px de ancho, sobre AppFooter de 28px)- Popover se abre hacia arriba. Menú de 3 niveles: cuenta (Profile/Bridge/Billing/Subscriptions) → app (Docs/Replay onboarding/Language/Theme) → Logout
58.2 — Limpieza de TopHeader (DONE)
- Eliminados botón Docs, menú Help, LangSwitcher, ThemeToggle, UserDropdown del área derecha
- Zona derecha vacía; zona izquierda (hamburger + logo + BETA + project switcher + nav global) ocupa toda la barra de header
58.3 — Padding inferior de Sidebar (DONE)
Sidebar.jsxañadepaddingBottom: 60pxpara que el scroll del nav de proyectos no quede bajo la píldora fija
58.1.1 — Modal wizard de onboarding + hints por paso (DONE ✅ 2026-05-16)
OnboardingModal.jsxnuevo con desenfoque de fondo + cierre con ESCOnboardingProgressPill— botón flotante inferior derecho con anillo de progreso SVG circular + etiqueta "Setup N/5"- Cada entrada
STEP_METAcon nuevo campohintcon breadcrumbs de navegación concretos UserDropdown.jsx"Replay onboarding" abre modal directamente
Phase 59: Expansión de localización — 6 nuevos idiomas (PLANIFICADA)
Arc OS hoy: EN + UK (438 strings, lingui v5). Phase 59 añade 6 idiomas en paralelo: DE (alemán), ES (español), PL (polaco), RU (ruso), pt-BR (portugués Brasil), FR (francés). Estrategia: solo traducción IA con bucle de feedback in-app en beta — sin traductores humanos pagados de antemano. RU incluido explícitamente por el CEO (2026-05-16).
Prerequisito de habilitación (FUERA del alcance de Phase 59): La deuda UK debe cerrarse primero — issues #32 (revisión humana de 17 docs UK traducidos por IA), #33 (traducir 6 docs de arquitectura profunda enlazados simbólicamente), #34 (10 walkthroughs en video). Replicar un pipeline no revisado en 6 idiomas = 6× la deuda de contenido no revisado.
Idiomas permanentemente fuera de alcance (no diferidos — categoría de ingeniería diferente):
- JA / zh-CN — renderizado CJK, subsetting de fuentes, line-height — clase de problema separada
- AR — layout RTL requiere manejo de dirección a nivel de componente, fase separada si alguna vez
- HI / KO / TR / IT / NL — LTV bajo vs esfuerzo
59.1 — Infraestructura lingui + glosario + convenciones de tono (issue #119, P0 — DONE ✅ 2026-05-17)
- 6 nuevos archivos
messages.posembrados desde el master EN,lingui.config.jsactualizado, vite build verificado para 8 idiomas - Convenciones de tono BLOQUEADAS por idioma: DE "du", ES "tú", PL formas verbales en 2ª persona, RU "ты", pt-BR "você", FR "tu"
- Glosario por idioma
config/i18n-glossary/<lang>.json: términos de marca, comandos CLI (nunca traducidos), nombres de workers (Rick/Morty/Beth/etc., nunca traducidos), reglas de retención de jerga técnica - Esqueleto del pipeline de traducción IA (
scripts/i18n-translate.ts) consume glosario + tono + string fuente → prompt Claude → candidato de traducción
59.2 — Pipeline de traducción IA + strings UI × 6 (issue #120, P0 — DONE ✅ 2026-05-17)
- Traducción por lotes: ~438 strings × 6 idiomas = ~2628 traducciones via Claude API
- Reglas de preservación de placeholders: ICU
{name}, plurales lingui, tags React<0>tags</0>, links markdown — todos preservados - Verificaciones de calidad automáticas: integridad de placeholder, conformidad con glosario, cordura de longitud (0.5×-2.5× fuente)
- lingui compile + vite build limpios para los 8 idiomas
59.3 — Traducción de docs públicos × 6 (issue #121, P0 — PARTIAL ⏸ 2026-05-17, 64/216 archivos = 30%)
- Espejo de la estructura
docs/public/uk/para 6 nuevos idiomas: ~40 archivos markdown × 6 = 240+ docs - Pipeline Markdown-aware: omite bloques de código, código inline, URLs, alt de imágenes; traduce title/description del frontmatter pero no slug/tags; preserva anclajes de headings para links entre docs
- Estrategia de fallback: docs no traducidos muestran EN con banner por idioma
- Sub-fase más grande por volumen de contenido
59.4 — Widget de feedback de traducción + dashboard de revisión por idioma (issue #122, P1 — PLANIFICADO)
- Extender el widget de feedback de Phase 53.5 con nuevo tipo
translation_issue - Nuevo dashboard
/admin/translationscon filtros + acciones (Aceptar sugerencia → actualiza .po; Re-traducción IA con contexto; Marcar como no-arreglar; Editar manualmente) - Auto-actualización de glosario: 3+ sugerencias aceptadas para el mismo término → sugerir añadir al glosario
- Tarjeta de analytics: estado de traducción por idioma (open_count, resolved, accuracy_score)
59.5 — Regresión visual UI × 6 idiomas (issue #123, P1 — PLANIFICADO)
- Diff de screenshots Chrome DevTools / Playwright vs baseline EN en 9 páginas clave × 3 viewports × 6 idiomas = 162+ screenshots
- Detecta palabras compuestas largas DE, glifos más estrechos en cirílico, verbos largos ES/FR/pt-BR, diacríticos PL, plurales de 3 formas RU
- Responsive móvil ≥360px probado por idioma
- Nuevo
scripts/i18n-visual-regression.tsgenera informe HTML diff; CI falla con >2% de diff de píxeles en elementos críticos (CTAs, nav, modales)
59.6 — Analytics de idioma + auto-detección de browser + polish del switcher (issue #124, P2 — PLANIFICADO)
- Migración 026: columna
users.preferred_locale+ preferencia sincronizada con DB entre dispositivos - Auto-detección de browser:
navigator.language→ toast puntual "¿Cambiar a {locale}?" en la primera visita - Rediseño del switcher de idioma: bandera + nombre nativo + buscable cuando >5 idiomas
GET /api/crm/analytics/locale-usage(admin) — agregados de 30 días por idioma
Stack tecnológico
| Capa | Tecnología |
|---|---|
| Cerebro | Sesiones Claude Code (Agent Teams) |
| CRM API | Servidor HTTP Bun en Master Bot (:19210) — 62+ endpoints REST + SSE + WebSocket + Cloud PM chat + Sage Worker + Marketplace Scout + Knowledge Graph, auth JWT + OAuth |
| Proxy | Nginx (:18888) — frontend estático, reverse proxy API/SSE/WS |
| ARC CLI | Binario compilado Bun — 8 subcomandos cloud (skill, report, kb, learnings, issue, issues, wiki, roadmap) + memory refresh/fetch-artifact |
| Frontend | React CRM (responsive, mobile-first) + Phaser 3.80 (oficina gamificada) + terminal xterm.js + i18n @lingui/react (EN/UK) |
| Comandos | Bots de Telegram federados (Master + Children) |
| Auth | JWT (HMAC-SHA256) + OAuth (Google, GitHub) + registro email/contraseña |
| Estado | SQLite SSOT (shared/db.ts, modo WAL) + JSON solo para infra (bot_registry, heartbeat) |
| Inteligencia | Binary Evals + Context Router + Learnings + Karpathy Loop + Sage Worker (Haiku) + Benchmarks A/B + Marketplace Scout |
| Secretos | Vault AES-256-GCM (shared/vault.ts) |
| Logging | JSONL estructurado (shared/logger.ts) → /var/log/citadel/ |
| Resiliencia | Watchdog autorreparable (master-bot/watchdog.ts) |
| NotebookLM Bridge | Python FastAPI (:19213) — búsqueda semántica via notebooklm-py + auto-sync |
| Memoria | 3 niveles: Caliente (JSON) / Templada (GitHub) / Fría (búsqueda semántica NotebookLM) |
| Despliegue | Docker Compose, Nginx, VPS Contabo |
Migración legacy
| Componente | Líneas v1 | Reemplazo v2 |
|---|---|---|
| FastAPI backend | ~3.000 | Sesión Claude Code |
| telegram_bridge.py | ~2.800 | Plugin oficial de canal |
| hybrid_engine.py | ~1.000 | Ejecución nativa de Claude |
| bridge_processor.sh | ~500 | Eliminado |
| database.py | ~700 | Archivos de estado JSON |
| WebSocketManager.js | ~200 | StatePoller.js (SSE) |
| Total | ~11.321 | ~3.700 |
Reducción del 67% en el tamaño del codebase.
Mantenido por Rick (Orchestrator). Actualizado tras completar cada fase.