Arc OS — Roadmap
Arquitetura native-first para escritório de IA. Claude Code Agent Teams + Arquitetura CLI-First + Channels. 70+ endpoints, SQLite SSOT, Sage Worker + Benchmarks + Marketplace Discovery + Knowledge Harvester. Última atualização: 2026-05-04 (Phase 52.1 CONCLUÍDA — códigos de convite F&F + tier de plano beta; Phases 52.2-7 EM ANDAMENTO)
Linha do Tempo das Fases
timeline
title Arc OS — Do Nascimento Nativo ao Beta Público
section Foundation (Feb 2026)
18 : Nascimento Nativo + Phaser
19 : Integração Rica
20 : Bots Federados
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 compilado
40 : Sage + A/B + Marketplace Discovery
section Hardening (Apr 2026)
41 : UI Refresh + Context Rail
42 : Multi-tenancy + Bind de loopback
44 : Analytics + Cobertura de docs 95%
45 : E2EE Zero-Knowledge
section Architecture (Late Apr 2026)
47 : Timeline + Redesign de Issues
48 : Decomposição 10779→373 LOC + Lazy lifecycle de workers
49 : Hook pre-push de cobertura de docs
section Beta (May 2026)
50 : Trial Credits
51 : Stripe Billing Stage 1
52.1 : Códigos de Convite F&F + plano beta
52.2-7 : Projeto de Amostra · Funil · Status · Uptime
Onde estamos: Phase 52.1 completa (cadastro por convite, códigos
arc-XXXX-XXXX, plano beta ilimitado). Lançamento público condicionado a critérios de sucesso do F&F — veja §Phase 52.
Phase 18: O Nascimento Nativo (COMPLETA)
18.0 — Bootstrap do Repositório (CONCLUÍDO)
- Criar repo, CLAUDE.md, .clauderules
- Transferir ativos de IP (configs, blueprints, skills)
- Criar issue umbrella #35 em Claude-CEO
18.1 — Fundação de Agent Teams
- Ativar Agent Teams com TeamCreate
- Criar tarefas iniciais para Morty, Squanchy, Beth
- Definir Acordos de Trabalho por agente
- Testar mensagens entre agentes
- Protocolo de atualização de estado (office-state.json)
18.2 — Canal Nativo do Telegram
- Novo bot via @BotFather
- Plugin oficial do Telegram Channel
- Comandos de texto: /status, /tasks, delegação
- Uploads de arquivos → auto-classificar → rotear para agente
- Progresso via edit_message, reações
18.3 — Servidor MCP Arc OS Bridge
- Servidor MCP Bun + TypeScript
- 4 ferramentas MCP: get_office_state, update_agent_state, get_tasks, get_knowledge
- HTTP API: /api/state, /api/tasks, /api/knowledge, /api/events
- Stream SSE para atualizações de frontend em tempo real
- File watcher no diretório state/
18.4 — Restauração Visual (Frontend Phaser)
- Phaser 3.80 + Vite 6 fresh setup
- OfficeScene, UIScene, entidades Agent
- StatePoller (SSE do servidor MCP)
- Texto HD (fontes do sistema, DPI alto)
- Sprites de agentes (pixel art ou fallback colorido)
- Sem UI de entrada de comandos (Telegram é a interface)
18.5 — Deploy no VPS e 24/7
- Docker Compose (3 serviços: session, bridge, frontend)
- Proxy reverso Nginx (:18888 → frontend, :19200 → API)
- Persistência de estado via volumes Docker
- Integração de heartbeat com Morty SRE
- SSL via Let's Encrypt (opcional)
Phase 19: Integração Rica (COMPLETA)
19.1 — Delta State Polling (CONCLUÍDO)
- Frontend consulta apenas estado alterado via parâmetro
?since= - StateManager rastreia
lastModifiedpor arquivo - SSE envia eventos delta, não dumps de estado completo
19.2 — Context Bar e Tema Canvas (CONCLUÍDO)
- Barra CTX mostrando agente ativo, tarefa, info da sessão
- Tema Phaser nativo em canvas (sem overlays HTML)
- Correção de sequência de boot assíncrono
19.3 — Lifecycle Hooks (CONCLUÍDO)
- Hook
SubagentStop→ agent=idle em office-state.json - Hook
Stop→ wrapup da sessão + todos os agentes idle - Registrado em
~/.claude/settings.json
19.4 — Integração com Library / NotebookLM (CONCLUÍDO)
- Comando CLI
/citadel-wrapup→ exportar para docs/library-export/ - Comando CLI
/citadel-recall <query>→ busca grep local - README com instruções de configuração do NotebookLM
- Bridge baseada em arquivos (API pendente para integração completa)
19.5 — Skills de Operação CLI (CONCLUÍDO)
/citadel-status— dashboard de agentes (trabalhando/idle, tarefas, estatísticas de library)/citadel-task <text>— criação de tarefa estruturada WISC a partir de texto simples/citadel-deploy— deploy no VPS (git push, SSH, rebuild Docker, health check)
Phase 20: Arquitetura de Bots Federados (COMPLETA)
Documento de arquitetura:
docs/architecture/PHASE_20_FEDERATION.mdDecisão: Federação (Master + Children) em vez de Single Bot + Switcher.
20.1 — Fundação do Master Bot (CONCLUÍDO)
- Bot Telegram Bun + TypeScript (long-polling, NÃO é uma sessão Claude)
config/bot_registry.json— registro de children- Comandos:
/status,/emergency-stop,/list,/deploy,/health - Container Docker em
docker/docker-compose.yml - Endpoint de health:
/api/master/health
20.2 — Protocolo do Child Bot (CONCLUÍDO)
child-bot/bot.ts— proxy Telegram ↔ Claude CLI (claude -p)- Arquivo de heartbeat a cada 60s em
state/heartbeat_<name>.json - Smart Context Middleware:
reply_to_message→ injeção de GSD CONTEXT - Histórico de thread: últimas 50 mensagens em
state/thread_history.json - Desligamento gracioso (SIGINT/SIGTERM para emergency-stop)
- Endpoint de health:
/api/child/healthna porta 19211 - Roda no HOST (precisa da CLI
claude), não em Docker - Hardened: timeout de 5 min, retry em falha, limite de turnos máximos (20), diagnósticos
20.3 — Motor de Onboarding (CONCLUÍDO)
/new_project <name>— entrevista interativa (4 etapas: descrição → links → token → confirmar)- Correspondência de skills: auto-detecção do registro + library
- Detecção de blueprint: web, gamedev, debug, legal, service
- Auto-provisionamento: mkdir, CLAUDE.md, MANIFEST.md, .env, git clone, registro, tmux
- Alocação de porta do registro
- Suporte a upload de arquivos para descrições de projetos
.md
20.4 — Biblioteca de Skills e Remoção de Projetos (CONCLUÍDO)
/remove_project <name>— segurança com confirmação tripla com nomes protegidos- Skills da biblioteca:
skills/library/*.mdauto-correspondidas durante onboarding - Copiadas para o diretório
skills/do novo projeto durante provisionamento - Hook de reload do registro: atualização em memória após provisionamento/remoção
20.5 — Infraestrutura Phantom-Ready (CONCLUÍDO)
shared/logger.ts— logger estruturado JSONL com saída dupla (arquivo + console)- Divisão de arquivos diária:
system-YYYY-MM-DD.log,dialog-YYYY-MM-DD.log,error-YYYY-MM-DD.log - Categorias: system (lifecycle), dialog (usuário↔Claude), error (→ ambos error + system)
- Zero dependências externas — APIs puras do Bun
- Divisão de arquivos diária:
shared/vault.ts— armazenamento de secrets criptografados AES-256-GCM- Chave: variável de ambiente → arquivo
config/vault-key→ auto-gerada - Cache em memória após init, fallback para
process.env - Escritas atômicas (tmp + mv)
- Chave: variável de ambiente → arquivo
master-bot/watchdog.ts— monitor de background auto-recuperável- HTTP health check a cada 30s (timeout de 5s)
- Auto-restart de children com crash via tmux (token do vault)
- Backoff exponencial: 30s → 1m → 5m → 15m → 60m (teto)
- Desabilitação permanente após 10 falhas consecutivas
- Notificações ao CEO: primeiro restart, falha, desabilitação permanente
- Estado persistido em
config/watchdog-state.json
- Comando
/watchdog— status de health de child bots em tempo real no Telegram - Onboarding armazena tokens no vault (não no
.env), cria/var/log/citadel/<name>/ config/logrotate-citadel.conf— rotação diária, retenção de 7 dias, compressãoscripts/setup-vps-logging.sh— configuração de infraestrutura de logs no VPS- Todos os
console.log/console.error→ logger estruturado (child-bot + master-bot)
Phase 21: Interface de Comando Arc OS (COMPLETA)
O Telegram se torna um dashboard interativo completo com teclados inline, controle de subprocessos e stubs de link CRM.
21.0 — Camada de UI Tática (CONCLUÍDO)
shared/ui_templates.ts— módulo central de construtor de tecladomasterMainMenu()— teclado de resposta persistente 2×2projectCard(name, crmBase)— teclado inline de 4 linhas (Restart/Delete/Manifest/Skills/CRM)deleteConfirm(name)— inline SIM/CANCELARchildResponseButtons(skills?, crmBase?, projectName?)— STOP/PAUSE/RESUME/BTW/FixItparseCallback(data)— parser"action:target"
- Upgrades do master bot:
- Roteamento de texto de teclado de resposta (Мої Проєкти → cartões de projeto, Web UI → link CRM)
handleCallbackQuery()— fluxo de restart, delete, visualizador MANIFEST, lista de skills- Helpers
tgSendMarkup,tgEditMessage,tgAnswerCallback,tgSetMyCommands /startenvia ajuda COM teclado de resposta- Botões de URL do CRM (configurável
CRM_BASE_URL, dev:http://62.171.128.248:18888)
- Upgrades do child bot:
- Estado
currentProc/isPaused/btwQueueem nível de módulo handleStop()→ SIGKILL,handlePause()→ SIGSTOP,handleResume()→ SIGCONT- Modo BTW: coleta contexto → antepõe ao próximo prompt GSD
- FixIt: constrói prompt de correção a partir da última resposta do bot no histórico de thread
- Botões inline apenas no último chunk de resposta
- Carregamento de skills mesclado: manifest JSON + diretório skills/, deduplicado
- Estado
- Exportar
restartChilddo watchdog,executeRemovaldo onboarding - Visualizador MANIFEST: verificação
existsSync, escape HTML, pretty-print JSON, detecção EACCES scripts/start-child-pt.sh— startup baseado em vault (bun + node:crypto, não Python)
21.5 — Inteligência Evolutiva (CONCLUÍDO)
shared/evals.ts— Motor de Binary Evals: 6 tipos de regras,.evals.jsonpor skill, avisos não bloqueantesshared/context-router.ts— Context Router: scoring por trigger/palavra-chave, injeção de SKILLS_HINT top-5shared/learnings.ts— Learnings Persistentes: Fix It / thumbs-down →learnings.md→ cada prompt futuroscripts/nightly-improve.ts— Karpathy Loop: análise noturna de métricas → propostas de melhoria → aprovação do CEO- Evals piloto: code-review, git-manager, system-audit (9 regras no total)
- Palavras-chave adicionadas a 11 skills do registro
docs/public/— 8 arquivos de documentação pública com índice de navegação
Phase 22: Bun CRM e Hub de Observabilidade (COMPLETA)
Arquitetura:
docs/planning/phase-22-bun-crm.md| Backend:docs/architecture/crm-backend.mdDébito técnico:docs/backlog/technical-debt.md(7 itens, 2 resolvidos)
22.0 — REST API do CRM (CONCLUÍDO)
shared/auth.ts— autenticação por token HMAC-SHA256, CRM_SECRET armazenado no vault, TTL de 24h (CONCLUÍDO — #7)shared/crm-routes.ts— 5 handlers CRM: projects, detail, logs, files, skills (CONCLUÍDO — #8)- Roteador Bun.serve: fetch assíncrono, middleware de autenticação, CORS em todas as rotas /api/crm/* (CONCLUÍDO — #10)
infra/nginx/citadel-crm.conf— proxy reverso unificado substituindo citadel-os (CONCLUÍDO — #14)/admin_loginTelegram command — gera link de login para o CRM dashboard (CONCLUÍDO — #7; REMOVIDO na Phase 40.19b)scripts/vps-sync.sh— deploy automatizado no VPS: sync git, troca nginx, restart de bots, health checks (CONCLUÍDO)- Deploy no VPS verificado: todos os 5 endpoints CRM ativos, guard de autenticação ativo, travessia de caminho bloqueada (CONCLUÍDO)
- Gerenciamento de config: PUT evals + skills por projeto (ADIADO — #9)
22.1 — Observabilidade em Tempo Real (CONCLUÍDO)
- Streaming de logs via SSE:
/api/sse/logs/:name— tail ao vivo de logs JSONL no browser (poll de 1s) - Endpoint de métricas de qualidade:
GET /api/crm/projects/:name/metrics?days=7— agregação diária do quality-events.log - Integração frontend CrmPoller: consulta
/api/crm/projects(15s), emite eventos para cenas Phaser
22.2 — Centro de Comando Unificado (CONCLUÍDO)
- Bridge CRM→Phaser: CrmPoller → entidades ProjectPod na cena Server Room
- LogPanel glassmorphism: consumidor SSE de logs com filtro de categoria + auto-scroll
- Seção PROJETOS na barra lateral com dots de health ao vivo (verde/amarelo/vermelho)
- Clicar no projeto → LogPanel abre com logs em streaming
frontend/src/config/constants.js— config CRM_TOKEN, CRM_BASE_URL- Build Docker multi-stage (node:22-alpine → nginx:alpine) com token CRM embutido
- Deploy no VPS:
scripts/vps-sync.shcom rebuild Docker + health checks
22.3 — Gráficos de Métricas, Terminal WebSocket e Controles de Energia (CONCLUÍDO)
frontend/src/ui/Sparkline.js— gráfico de barras empilhadas em canvas (120x24px, verde=sucesso, vermelho=falhas)frontend/src/ui/TerminalPanel.js— terminal WebSocket xterm.js com cores ANSI + FitAddon- Terminal WebSocket:
/ws/terminal/:name— polling tmux capture-pane (200ms), somente leitura padrão, interativo com?mode=interactive - Endpoint de restart:
POST /api/crm/projects/:name/restart— cooldown de 30s, chamarestartChild()via watchdog - Botão de energia do ProjectPod: hover para mostrar, clique para restart com diálogo de confirmação
- Abas do LogPanel: Logs | Terminal — troca de abas com importação dinâmica do TerminalPanel
- Sparkline no LogPanel: renderiza série temporal de métricas no cabeçalho do painel
- Hardening de segurança (DEBT-7): validação regex
isValidProjectName()nos 3 pontos de entrada da API (roteador CRM, roteador SSE, handler WS). Bloqueia travessia de caminho via nome de projeto. - Integridade de dados (DEBT-2):
atomicWriteJson()— escrever em.tmp.${pid}, depoismv. Aplicado a todos os 4 pontos de escrita do registro em onboarding.ts - Auditoria de débito técnico:
docs/backlog/technical-debt.mdcom 7 itens (DEBT-2 + DEBT-7 resolvidos)
Phase 24: Fluxo Dual-Agent e Melhorias do CRM (COMPLETA)
Documento de arquitetura:
docs/architecture/dual-agent-flow.mdTema: Slate & Silver (dark glassmorphism)
24.5 — Fluxo Dual-Agent (CONCLUÍDO)
/c→ Consultant (sonnet, somente leitura),/d→ Developer (opus, acesso total)- Sem prefixo → roteia para o papel ativo
- Specs auto-extraídas do padrão
### SPEC:na saída do consultant - Fluxo de
/approve <id>/ rejeição via CRM dashboard - 7 novos endpoints CRM: CRUD de specs, GET/POST de role ativo, SSE do consultant, POST de mensagem
- Frontend: 4 abas do painel de logs (Logs / Terminal / Consultant / Specs)
- Config:
config/project_roles.json - Tema Slate & Silver em todos os componentes de UI
Phase 25: Resolução de Débito Técnico + Fundação do Local Gateway (COMPLETA)
Débito técnico:
docs/backlog/technical-debt.md(6/7 resolvidos) Bridge: diretóriobridge/
25.0 — Varredura de Débito Técnico (CONCLUÍDO)
- DEBT-4: Poll do terminal 200ms→500ms (api-server.ts) — redução de 60% no CPU
- DEBT-1: Divisão do monolito
telegram.ts(881 linhas) em 4 módulos:tg-api.ts— wrapper da API Telegram (~120 linhas)child-state.ts— leitores de estado do child bot (~60 linhas)telegram-commands.ts— handlers de comandos/callbacks + roteador de mensagens (~440 linhas)telegram.ts— loop de polling slim + re-exports (~50 linhas)
- DEBT-5: Adiado para Phase 26+ (UIScene.js, esforço XL, P3)
bot.tsinalterado — backward compatible via re-exports
25.1 — Fundação da Bridge CLI (CONCLUÍDO)
- Diretório
bridge/com CLIbin/citadel-bridge.ts(commander.js) - 5 comandos:
connect,disconnect,pull,push,status src/auth.ts— validação de token JWT contra o CRMsrc/config.ts— persistência em~/.citadel/bridge.jsonsrc/inject.ts— marcadores<!-- CITADEL:START/END -->no CLAUDE.mdsrc/sync.ts— pull/push de bundle de skills + learningssrc/heartbeat.ts— reporter de atividade de sessãopackage.json+tsconfig.json
25.2 — Extensões de API no VPS (CONCLUÍDO)
- 4 novos endpoints em
shared/crm-routes.ts:GET /api/crm/projects/:name/skills-bundle— bundle JSON de skills + evalsGET /api/crm/projects/:name/learnings— array de learnings parseadoPOST /api/crm/projects/:name/learnings— adicionar novos learnings da bridgePOST /api/crm/projects/:name/heartbeat— armazenamento de heartbeat da bridge
25.3 — Hardening de Segurança (CONCLUÍDO)
- Tokens de bot migrados de
.envpara vault criptografado (getSecret()com fallback de env)master-bot/bot.ts—getSecret("MASTER_BOT_TOKEN")apósinitVault()child-bot/bot.ts— adicionadoinitVault()+getSecret("CITADEL_BOT_TOKEN")scripts/nightly-improve.ts— adicionadoinitVault()+getSecret("MASTER_BOT_TOKEN")
- CORS bloqueado: wildcard
"*"→ allowlistCRM_ALLOWED_ORIGINS(configurável por env) - Endpoint WebSocket genérico
/wsagora requer token JWT (parâmetro de query?token=)WebSocketManager.jsauto-injeta token deAuthManager
- Script de migração:
scripts/migrate-tokens-to-vault.ts(único uso, lê.env→ armazena no vault) .env.exampleatualizado com documentação deCRM_ALLOWED_ORIGINSeSECRET_ENCRYPTION_KEY- Suporte a upload de arquivos PDF para worker Knowledge Archivist (frontend + backend)
Phase 23: O Local Gateway — Workspace Híbrido (PLANEJADA)
Rascunho de arquitetura:
docs/planning/local-gateway.md(v3 — separação Body/Brain) Depende de: Phase 25 (COMPLETA — fundação bridge + API) Codinome: "Activate Local Power"
O desenvolvedor conecta seu IDE local ao VPS Arc OS. O código vive localmente; a inteligência é entregue pela Bridge CLI + diretório de config .citadel/.
23.1 — Bridge CLI + Fundação de API (CONCLUÍDO → Phase 25)
- Movido para Phase 25.1 + 25.2 (concluído)
23.2 — Inteligência Local (PLANEJADA)
- Vendor
shared/evals.ts,shared/learnings.ts,shared/context-router.tsem bridge/src/ citadel-bridge eval— executar evals localmente, sem redecitadel-bridge learn— adicionar regra de learning manual- Intervalo de pull automático (configurável, padrão 60 min)
- Divisão de docs (2026-05-14):
docs/public/guides/local-bridge.md(413 LOC, todos os SOs agrupados) decomposto em landing + 3 subpáginas de SO (local-bridge-{macos,linux,windows}.md) + espelho UK. Usuários chegam agora direto nas instruções específicas da plataforma pela página Bridge Setup ou barra lateral de Docs.
23.3 — Integração com CRM (PLANEJADA)
- Campo
local_sync_statusna resposta da API do projeto - Indicadores de atividade do desenvolvedor no escritório gamificado (badge IDE, timer de sessão)
- Geração + revogação de token no CRM dashboard
23.4 — Distribuição e Polimento (PLANEJADA)
- Compilar com Bun para binário único
- Publicar pacote npm (
@citadel/bridge) citadel-bridge doctor— comando de diagnóstico
Phase 26: Workers Dinâmicos (COMPLETA)
Arquitetura:
config/workers_registry.json+docs/architecture/dual-agent-flow.mdTema: Substituir o binário hardcoded Consultant/Developer por registro extensível de workers.
26.0 — Estágio 1: Fundação do Registro de Workers (CONCLUÍDO)
config/workers_registry.json— definições declarativas de workers (id, label, icon, type, model, tools, prompt_style, output_format, log_category, builtin)- 3 workers registrados: Consultant (chat, sonnet), Developer (terminal, opus), UI/UX Designer (chat, sonnet)
child-bot/bot.ts— substituiu oif/elsede 175 linhas (consultant vs developer) pelo dispatch unificadocallWorker()shared/crm-routes.ts— 3 mudanças:GET /api/crm/projects/:name/workers— retorna array do registro de workershandleSetActiveRole()— validação dinâmica contra IDs de workers do registrohandlePostMessage()— aceita e persiste campoworker_idno JSONL
- Frontend
Workspace.jsx:useSSEStream(projectName, worker)— hook SSE unificado para tipos chat e terminalWorkerPanel→ despacha paraChatPanelViewouTerminalPanelViewporworker.type- Barra
[WORKERS]com pílulas de workers (ativo=destaque, inativo=acinzentado)
26.1 — Estágio 2: Ativação de Grid Dinâmico (CONCLUÍDO)
- Pílulas de workers clicáveis —
toggleWorker(id)adiciona/remove painéis dinamicamente - Persistência do layout do Workspace: chave
localStoragecitadel-workspace-active-${project.name}
Phase 27: Base de Conhecimento e Wiki (COMPLETA)
27.0 — Visualizador de Wiki (CONCLUÍDO)
- 2 novos endpoints de API CRM:
GET /api/crm/projects/:name/wiki/tree— listagem recursiva de arquivos.mddeknowledge-base/wiki/GET /api/crm/projects/:name/wiki/file?path=— ler arquivo único da wiki com proteção contra travessia de caminho
- Frontend
pages/Wiki.jsx— layout em dois painéis:- Barra lateral (240px): árvore de arquivos,
index.mdfixado primeiro, destaque do arquivo ativo - Área de conteúdo:
ReactMarkdown+remarkGfmcom estilos.chat-markdown
- Barra lateral (240px): árvore de arquivos,
Phase 28: Watcher de Auto-Ingest (COMPLETA)
28.0 — Watcher de Auto-Ingest (CONCLUÍDO)
- Novo módulo
child-bot/ingest-watcher.ts:fs.watch()emknowledge-base/raw/com debounce de 3s por arquivo- Deduplicação via
ingest_processed.jsonpersistente no diretório de estado - Injeta mensagem na inbox CRM (
worker_id: "archivist") — sem necessidade de refatorar callWorker - Limpeza graciosa no desligamento do bot
Phase 29: i18n — Internacionalização EN/UK (COMPLETA)
29.0 — Infraestrutura i18n + Tradução Completa (CONCLUÍDO)
- Biblioteca: @lingui/react v5 + @lingui/core + @lingui/vite-plugin + babel macro
- Config:
lingui.config.js— locais: [en, uk], formato: po, compileNamespace: ts - 186 strings traduzidas em 25 componentes
Phase 30: Assistente de Onboarding (COMPLETA)
30.0 — Criação de Workspace Self-Service (CONCLUÍDO)
POST /api/crm/onboarding/setupaceita FormData (config JSON + arquivos)- Assistente de 5 etapas: Boas-vindas → Projeto → Time → Chaves de API → Integrações
- Presets de time: 7 presets de setor + 2 workers principais (Manager, Keeper)
Phase 31: Autenticação Web (COMPLETA)
31.0 — Auth de Sessão + Multi-Tenancy (CONCLUÍDO)
/admin_login→ código de 6 dígitos (TTL de 5min) → token JWT → localStorage- Guard de propriedade
canAccessProject()em todas as rotas CRM - Componentes frontend LoginOverlay + AuthManager
31.5 — ARC CLI + Knowledge MCP (CONCLUÍDO)
- Comandos CLI
arc login/logout/projects/start - 4 ferramentas MCP:
fetch_skill,report_mission,search_knowledge,get_learnings - 4 endpoints de API:
/api/cli/init,/api/mcp/skills,/api/mcp/report,/api/mcp/learnings - Injeção de CLAUDE.md com contexto cloud + auto-config .mcp.json
- Download de binário para 3 plataformas
Phase 32: Knowledge Dashboard (COMPLETA)
32.0 — Reports, Skills, Wiki, NotebookLM (CONCLUÍDO)
- Reports.jsx: feed em linha do tempo, agrupado por data, tags de fonte com código de cores
- ProjectSkills.jsx: CRUD em painel dividido para arquivos de skills
- Wiki.jsx: edição/salvar/criar inline com renderização Markdown
- NotebookLM.jsx: landing personalizada + cartões de casos de uso
- Backend:
handleWikiSave,handleSaveSkill,handleDeleteSkill
Phase 33: Criação de Projetos Multi-Tenant (COMPLETA)
33.0 — Chaves no Nível de Conta + Modal Leve (CONCLUÍDO)
- Refatorado
handleOnboardingSetupem 10 helpers reutilizáveis - Configurações de conta:
/opt/repos/.accounts/{chatId}/settings.json(0o600) - 3 novos endpoints:
GET/PUT /api/crm/account/settings,POST /api/crm/projects/create CreateProjectModal.jsx: modal de 3 campos (nome, nicho, preset) para usuários recorrentes- Diretórios por namespace de usuário:
/opt/repos/{chatId}_{projectName}/
Phase 34: Gerente de Projetos Autônomo (COMPLETA)
34.1 — Rastreamento Local de Issues (CONCLUÍDO)
- Armazenamento:
{cwd}/issues/issues.jsonpor projeto (auto-incremento, P0-P3, labels) - API:
POST/GET /api/mcp/issues/:project,PUT /api/mcp/issues/:project/:id - Ferramentas MCP:
create_issue(title, body, priority, labels),list_issues(status?)
34.2 — Ferramenta de Sincronização de Wiki (CONCLUÍDO)
- Ferramenta MCP:
update_wiki(filename, content)— criar/atualizar páginas Markdown da wiki
34.3 — Motor de Roadmap (CONCLUÍDO)
- Ferramenta MCP:
sync_roadmap(phase, status, notes)— atualização in-place do ROADMAP.md
34.7 — Injeção de Init (CONCLUÍDO)
handleCliInitinjeta lista de issues abertos (top 10) no CLAUDE.md- Próximo alvo do roadmap (primeira fase EM ANDAMENTO ou PLANEJADA) injetado
Phase 35: Sincronização de Terminal ao Vivo (COMPLETA)
35.1 — Ingestão de Logs no Backend (CONCLUÍDO)
POST /api/crm/projects/:name/terminal/log— recebe linhas JSONL em buffer do arc-cli
35.2 — Interceptor de Stdout do arc-cli (CONCLUÍDO)
Bun.spawn(["claude"], { stdout: "pipe", stderr: "pipe" })substitui stdio herdadoflushLogs()faz POST das linhas em buffer a cada 2s para o endpoint/terminal/log
35.3 — Terminal Live no Frontend (CONCLUÍDO)
TerminalPanelViewagora tem seletor de aba Bot / Live- Aba Live assina SSE
?category=terminalviauseSSEStream - Ponto verde pulsante quando logs ao vivo estão em streaming
Phase 36: Cloud Project Manager (COMPLETA)
36.1 — Endpoint de Chat SSE no Backend (CONCLUÍDO)
POST /api/crm/projects/:name/chat— proxy de streaming SSE para a API Anthropic Messages
36.2 — Cloud PM Chat no Frontend (CONCLUÍDO)
- Componente
CloudPmPanelView— interface de chat completa com parsing de stream SSE
36.3 — NotebookLM Bridge (CONCLUÍDO)
- Serviço Python FastAPI em
services/notebooklm-bridge/(porta 19213, somente localhost) - Cliente assíncrono
notebooklm-pypara busca semântica Google - SyncWorker:
asyncio.Queue(200), delay de 2s, 3 retentativas com backoff exponencial
36.6 — Assistente Neural de Geração de Skills (CONCLUÍDO)
POST /api/crm/projects/:name/skills/generate— consulta a bridge NotebookLM, retorna skill em Markdown
36.7 — Neural Memory na Barra Lateral (CONCLUÍDO)
GET /api/crm/projects/:name/notebooks— retorna notebooks NotebookLM vinculados por projeto
Phase 37: SSO e Auth Social (COMPLETA)
37.0 — OAuth Google + GitHub (CONCLUÍDO)
- Google + GitHub OAuth em
shared/auth.ts - 5 novas rotas:
/api/auth/google,/api/auth/callback/google,/api/auth/github,/api/auth/callback/github,/api/auth/providers - Callback URLs:
https://arc-os.co/api/auth/callback/{google,github}
Phase 38: Arquitetura CLI-First (COMPLETA)
38.0 — Migração MCP → CLI (CONCLUÍDO)
- 8 ferramentas MCP → 8 subcomandos CLI (
arc skill/report/kb/learnings/issue/issues/wiki/roadmap) clients/lib/api.ts— 8 funções wrapper de API- Impacto nos tokens: ~800 tokens de schema MCP → ~120 tokens de ref CLI = redução de 85%
38.1 — Padrão SKILL.md (CONCLUÍDO)
- Assistente de Skill gera formato SKILL.md com frontmatter YAML
Phase 39: Dashboard Responsivo para Mobile + Workspace Hub (COMPLETA)
39.0 — Layout Responsivo (CONCLUÍDO)
- Hook
useIsMobile()— baseado emmatchMedia, breakpoint em 768px CrmMainLayout.jsx— barra lateral como overlay no mobile,100dvh
39.3 — Workspace Hub e Gerenciamento de Lifecycle (CONCLUÍDO)
- Grid
ProjectCardna página de Analytics — cartões visuais de projetos com badges de status - Página
ProjectSettings— identidade, visual, vinculação de notebook, arquivamento
39.4 — Live Memory Cycle (CONCLUÍDO)
handleMemoryRefresh— equivalente TypeScript doseed_knowledge.py- ARC CLI: subcomandos
arc memory refresh+arc memory fetch-artifact [--type]
Phase 40: Tabula Rasa — SQLite SSOT + Sistema de Protocolo (COMPLETA)
40.0 — Migração SQLite (CONCLUÍDO)
shared/db.ts— singleton bun:sqlite, modo WAL,userQueries/projectQueries/accountQueriesshared/migrations/001_initial_schema.ts— tabelas users/projects/account_settings
40.7 — Sistema de Protocolo em Três Níveis (CONCLUÍDO)
shared/migrations/002_project_protocol.ts— colunaproject_protocol- Export
SYSTEM_PROTOCOLemcli-routes.ts— regras universais de agente (SSOT)
40.8 — WorkspaceSelector Centralizado e Monitor de Health (CONCLUÍDO)
- NOVO:
WorkspaceSelector.jsx— dropdown no header substituindo a barra de abas ProjectNav
40.10 — Histórico de Chat Persistente / Immortal Chat (CONCLUÍDO)
shared/migrations/003_chat_messages.ts— tabelachat_messages+ índice composto
Phase 40.11: Sistema Evolutivo de Skills + Sage Worker + Aprovações Data-Driven (COMPLETA)
40.11 — Sistema Evolutivo de Skills (CONCLUÍDO)
shared/migrations/004_skill_system.ts— 4 tabelas:skills_global,skills_project_forks,skill_evolution_logs,skill_update_requests- Frontend:
SkillEvolution.jsx(1113 linhas, dois painéis: explorer 280px + detalhe com 4 abas)
40.11c — Sage Worker (Melhoria Autônoma de Skills) (CONCLUÍDO)
shared/sage.ts(~220 linhas):runSageAnalysis()+callSageModel()+buildSagePrompt()
40.11d — Aprovações Data-Driven (Benchmarks) (CONCLUÍDO)
shared/migrations/005_skill_benchmarks.ts— tabelaskill_benchmarks
Phase 40.12: Marketplace Discovery (COMPLETA)
Encontre, analise e instale skills da comunidade em claudemarketplaces.com diretamente no Skill Evolution Center.
Backend — shared/sage.ts
- 2 novos prompts:
SCOUT_ANALYZE_SYSTEM(análise de compatibilidade 0–10, saída JSON),SCOUT_CLEAN_SYSTEM
Backend — shared/crm-routes.ts (3 novos handlers + 3 rotas)
POST /api/crm/sage/scout— busca em claudemarketplaces.comPOST /api/crm/sage/scout/analyze— análise de compatibilidade via HaikuPOST /api/crm/sage/scout/install— instalar global ou fork de projeto
Frontend — SkillEvolution.jsx
- 5ª aba "Discovery" na barra de abas
Phase 40.12.1: Smart Rank — Ordenação por Compatibilidade e Cache de Quick Scan (COMPLETA)
Backend — shared/sage.ts + shared/crm-routes.ts
shared/migrations/007_marketplace_cache.ts— tabelamarketplace_analysis_cachePOST /api/crm/sage/scout/quick-scan— scan em lote de até 40 skills em uma chamada (~2s)
Phase 40.13: Knowledge Harvester Autônomo (COMPLETA)
Backend — shared/harvester.ts (novo módulo)
shared/migrations/008_harvester.ts— adiciona colunasis_suggestion,source_querydetectGap(message, projectName)— extração de palavras-chave, busca no marketplace
Phase 40.14: UI de Roadmap e Issues no CRM (COMPLETA)
Backend
cli-routes.ts:handleMcpGetRoadmapagora retornacontentbruto (markdown completo)cli-routes.ts:loadIssues()— auto-recuperável:issues.jsoncorrompido/ausente é re-gerado automaticamente
Frontend — Roadmap.jsx (~220 linhas)
- Dois modos de visualização: Phases (lista compacta com badges de status coloridos) e Full View (markdown bruto via ReactMarkdown)
Frontend — Issues.jsx (~310 linhas)
- Lista de issues com filtro Abertas/Fechadas/Todas
- Badges de prioridade: P0 (vermelho + animação de pulse), P1 (laranja), P2 (azul), P3 (cinza)
Phase 40.15: Ícones Lucide React (COMPLETA)
Substituir todos os ícones Unicode/emoji por ícones SVG do Lucide React para iconografia consistente, responsiva ao tema e escalável.
Mudanças
- Instalado
lucide-react(tree-shakeable, MIT, 1500+ ícones SVG) - Substituídos ~100 emojis e símbolos Unicode em 22 arquivos CRM
Convenção de tamanho de ícones
- 16px — itens de barra lateral/nav
- 18px — botões de ação
- 14px — ícones inline
Phase 40.16: UI de Token por Worker no Telegram (COMPLETA)
Workers podem conectar/desconectar tokens individuais de bots Telegram no formulário Worker Studio.
Phase 40.17: Knowledge Graph + Open in Obsidian (COMPLETA)
Issue #007: Knowledge Graph
Backend:
- Endpoint
GET /api/crm/projects/:name/knowledge-graph - Varre arquivos
knowledge-base/wiki/**/*.md - Extrai
[[wikilinks]]e links Markdown[text](file.md)
Frontend:
KnowledgeGraph.jsx— grafo force-directed baseado em canvas (Fruchterman-Reingold)- Zero dependências externas (sem vis.js ou react-force-graph)
Phase 40.18: Segurança de Deploy — DB SSOT para Propriedade (COMPLETA)
Correção permanente para projetos desaparecendo após deploy (git pull sobrescreve owner_id em bot_registry.json).
Solução — 3 Camadas de Proteção
| Camada | O que faz | Quando |
|---|---|---|
| DB SSOT | handleGetProjects + isProjectOwner verifica projectQueries.findByName() primeiro, registro como fallback |
Em cada chamada de API |
| Backup no deploy | vps-sync.sh faz backup do registro antes do git pull, restaura campos owner_id depois |
Em cada deploy |
| Enriquecimento no startup | Master bot preenche owner_id ausente do DB na inicialização |
Em cada reinício |
Phase 40.19: Conclusão da Autenticação — Formulário de Login Completo (CONCLUÍDO)
40.19a — Credenciais OAuth Google (CONCLUÍDO) — Issue #6
- Projeto Google Cloud + tela de consentimento OAuth criados
40.19b — Login OTP via Telegram (REMOVIDO) — Issue #7
- Funcionalidade descontinuada em favor de email/senha + OAuth.
40.19c — Fluxo de Reset de Senha (CONCLUÍDO) — Issue #8
POST /api/auth/forgot-password— gerar token de reset (TTL de 30min)- Integração Resend: entrega real de email via
shared/email.ts
40.19d — Verificação de Email (CONCLUÍDO) — Issue #9
verificationTokensstore (TTL de 24h) emshared/auth.ts- Registro agora envia email de verificação
40.19e — Infraestrutura de Entrega de Email (CONCLUÍDO)
shared/email.ts— abstração sobre Resend + fallback para console- Templates HTML + texto para reset de senha + verificação de email
Phase 41: Renovação de UI — Adaptação do Design Vercel (COMPLETA)
41.1 — Design Tokens (Issue #10) — CONCLUÍDO
- Espaço de cores OKLCH em
frontend/src/crm/styles/globals.css - Deep teal primário, amber quente de destaque, ivory quente de fundo
41.2 — Pílulas do Seletor de Worker (Issue #11) — CONCLUÍDO
- Pílulas horizontais com avatares de ícones tone-ring (5 tons baseados em gráficos via hash de id)
41.3 — Balões de Mensagem de Chat + Barra de Ação (Issue #12) — CONCLUÍDO
- Balões de usuário invertidos para primeiro plano escuro (padrão Vercel)
41.4 — Renovação do Composer de Chat (Issue #13) — CONCLUÍDO
- Raio 24→16, anel de foco via halo box-shadow
41.5 — Badges de Contador na Barra Lateral + Atividade Recente (Issue #14) — CONCLUÍDO
- Badge de contagem de issues no item de nav
- Seção de Atividade ao Vivo: top 3 eventos de logs de issues agregados, poll de 30s
41.6 — Busca na TopBar com ⌘K (Issue #15) — CONCLUÍDO
- SearchButton com ⌘/Ctrl K consciente da plataforma
41.7 — Context Rail (Issue #16) — CONCLUÍDO
- Novo painel direito de 320px no CrmMainLayout
- Seções: Objetivo Atual (roadmap), Métricas 2×2, lista de Skills Ativas, Fixados do thread, rodapé git+sync
- Visível somente quando viewport ≥ 1280px E activePage é workspace
41.8 — Funcionalidade de Pinned Notes (Issue #17) — CONCLUÍDO
- Migração 009: tabela
pinned_notes GET/POST/DELETE /api/crm/projects/:name/pins[/:id]endpoints
Phase 42: Hardening de Segurança — Auditoria Sentinel 2026-04-23 (COMPLETA)
Referência:
docs/security/audit-2026-04-23.md(3 críticos + 2 sérios + menores). Desbloqueia produção para múltiplos usuários. Veredicto após patches: VERDE.
42.1 — Multi-tenancy: guard owner_id no SSE (SEC-1, Issue #6) — CONCLUÍDO
routeSseRequestestendido com parâmetrochatId+ verificaçãocanAccessProject
42.2 — Multi-tenancy: guard terminal WS + interativo somente para admin (SEC-2, Issue #7) — CONCLUÍDO
- Gate
canAccessProjectem/ws/terminal/:name
42.3 — Multi-tenancy: guard de bloqueio CLI/MCP (SEC-3, Issue #8) — CONCLUÍDO
- Gate
canAccessProjectde entrada em/api/cli/*+/api/mcp/*
42.4 — Bun.serve vinculado a 127.0.0.1 (SEC-4, Issue #9) — CONCLUÍDO
hostname: "127.0.0.1"no Bun.serve
42.9 — Correção de SSRF + hardening de relay (SEC-NEW1..3) — CONCLUÍDO
- SEC-NEW1 (P0 Crítico):
handleScoutAnalyzebuscava URLs controladas pelo usuário sem allowlist- Correção: parsear URL, exigir
https:, allowlist de hostname (claudemarketplaces.com+ www)
- Correção: parsear URL, exigir
42.10 — Fechamento de SSRF via redirect (SEC-NEW4, P3) — CONCLUÍDO
- Correção:
redirect: "manual"+ rejeição explícita de 3xx (502 "Redirects not allowed")
Phase 42 ENCERRAMENTO FINAL
| Métrica | Valor |
|---|---|
| Issues de segurança encontradas em 5 passagens de auditoria | 16 |
| Corrigidas | 16 |
| Débito de segurança (bloqueador) | 0 |
| Veredicto | 🟢 VERDE — Pronto para múltiplos usuários |
Phase 43: Implementação da Auditoria UI/UX (COMPLETA)
Referência:
docs/design/ui-ux-audit-2026-04-23.md(passagem profunda Vanguard #2) 21 issues criados (#13–#33), todos fechados. Pontuação da re-auditoria: A- (95/100).
43.1 — Acessibilidade (WCAG 2.1 Nível A) — CONCLUÍDO
- Foco visível (#13): estilos globais
*:focus-visible - Contraste no modo escuro (#14): text-tertiary bumped oklch 0.55→0.62
43.3 — Sistema de Design e Arquitetura — CONCLUÍDO
- Hierarquia z-index (#16): escala de 8 níveis de vars CSS
- Cores hardcoded (#17): 24 hex colors em Workspace → vars CSS
43.4 — Melhorias de UX — CONCLUÍDO
- Sistema de Toast (#21):
toast.error/success/infosubstitui todas as chamadasalert()(40+ ocorrências) - Backoff na barra lateral (#28): backoff exponencial (30s → máx 5min) em erros de API
Phase 44: Redesign da Página de Analytics (COMPLETA)
44.1 — Migração DB e Backend (Issues #47-#48) — CONCLUÍDO
- Tabela
project_phases(migração 010) para rastreamento de roadmap - Tabela
activity_log(migração 011) para logging estruturado de eventos
44.2 — Componentes Frontend (Issues #49-#50) — CONCLUÍDO
- ActivityTimeline — feed de atividade recente com ícones, timestamps relativos
- ActivePhasesList — cartões de resumo do roadmap com barras de progresso
44.4 — Benchmark de Token Economy + Otimização — CONCLUÍDO
- Resultado Final:
- CLAUDE.md reduzido: 6.702 → 5.430 tokens (−19%)
- Overhead caiu: 24,1% → 3,7% (melhoria de −82%!)
Phase 44.6: Redesign do Workspace — Evolução (COMPLETA)
44.6.1 — Sistema de Design Centralizado (Issue #6) — CONCLUÍDO
- Criado
frontend/src/crm/styles/design-system.css(cores OKLCH, espaçamento, tipografia) - Destaque warm clay (#c25b3f) substituindo teal (#44627A)
44.6.2 — Pontos de Status de Worker com Brilho (Issue #7) — CONCLUÍDO
- Componente status-dot (círculo de 6px) com 4 estados
44.6.3 — Componente ActionBar (Issue #8) — CONCLUÍDO
- Botões Resume/Pause/Stop para todos os workers ativos
44.6.4 — Hints de Slash Commands (Issue #9) — CONCLUÍDO
- Chips de pílula para /spec, /issue, /recall, /handoff, /review
Phase 45: Arquitetura E2EE Zero-Knowledge (CONCLUÍDO ✅)
45.1 — Fundação E2EE (Issue #16) — CONCLUÍDO ✅ (2026-04-28)
- Wrapper WebCrypto API (
frontend/src/crm/crypto/e2ee.ts, 214 linhas) - Derivação de chave PBKDF2 (100k iterações, SHA-256) → AES-256-GCM
45.2 — Criptografia de Chaves de API (Issue #17) — CONCLUÍDO ✅ (2026-04-28)
vault.ts:encryptField()/decryptField()/isFieldEncrypted()usando chave do vault AES-256-GCM
45.3 — Criptografia de Mensagens de Chat (Issue #18) — CONCLUÍDO ✅ (2026-04-28)
- Migração 015: coluna
encryptedemchat_messages
45.4 — Recovery Keys e Backup (Issue #19) — CONCLUÍDO ✅ (2026-04-28)
- Migração 016: tabela
recovery_keyscom backups criptografados da chave mestra - Formato de chave estilo 1Password:
XXXX-XXXX-XXXX-XXXX-XXXX
45.5 — Hardening de Segurança (Issue #20) — CONCLUÍDO ✅ (2026-04-28)
- Headers CSP em todas as respostas da API CRM:
default-src 'self',X-Frame-Options: DENY shared/pii-sanitizer.ts: remove emails, chaves de API, JWTs, números de cartão dos logs
Phase 44.5: Expansão de Cobertura de Documentação (COMPLETA)
Cobertura de docs: 65% → ~95%. Oito novos docs públicos, índice atualizado. Data da auditoria: 2026-04-27.
44.5.2 — Nova Documentação Pública (CONCLUÍDO)
Oito novos docs em docs/public/:
guides/arc-cli-reference.md(425 linhas) — todos os 16 comandos CLI, flags, variáveis de ambienteguides/telegram-bots.md(160 linhas) — arquitetura Master/Child botapi/api-reference.md(272 linhas) — 68+ endpoints em 13 categorias
Phase 46: Execução Paralela de Workers (COMPLETA)
Cada worker = processo separado. Sem mais mutex global
isProcessingbloqueando todos os workers.
46.1 — Evolução do Schema do Registro (Issue #57) — CONCLUÍDO
execution_mode: "parallel"+ arrayworkers[]embot_registry.json
46.2 — Utilitário de Spawn de Worker (Issue #58) — CONCLUÍDO
shared/worker-spawn.ts—spawnWorkerProcess(),spawnAllWorkers()
Phase 47: Observabilidade da Timeline — DAW para Times de IA (COMPLETA ✓)
Referência:
docs/design/prototype/WEB_REDESIGN_ANALYSIS.md(Variant B) Metáfora do Logic Pro — workers como lanes, eventos como clipes em timeline compartilhada. Inovação: IP único, nenhuma outra ferramenta de orquestração de IA tem essa visualização.
47.1 — Timestamps de Mensagens (Issue #10) — COMPLETO ✓
- Migração 013: adicionado
timestamp_ms INTEGERà tabela chat_messages
47.2 — Tabela de Eventos de Timeline (Issue #11) — COMPLETO ✓
- Migração 014: CREATE TABLE timeline_events
47.3 — Componentes Frontend da Timeline (Issue #12) — COMPLETO ✓
- 7 novos componentes (1009 linhas no total):
- TimelinePage.jsx — container principal com estado Mute/Solo/evento
- LaneHead.jsx — cabeçalhos de workers com controles M/S
- Lane.jsx — lanes horizontais de eventos com fundo de grid
- Event.jsx — chips de eventos posicionados
- TimeRuler.jsx — eixo de tempo com playhead
- ChatPanel.jsx — barra lateral direita (440px) com histórico de mensagens
- Transport.jsx — Play/Pause/Stop + scrubber de progresso
47.8 — Redesign de Issues (Variant B Hybrid) — COMPLETO ✓
- IssuesRedesign.jsx (1100+ linhas) — reescrita completa da UI:
- Agrupamento por fase: Extração automática do título (
Phase XX:) ou labels (phase-XX) - Seções recolhíveis: Componente PhaseGroup com expand/collapse
- Painel deslizante de detalhes: painel direito de 440px
- Agrupamento por fase: Extração automática do título (
47.16 — Assistente de Detalhes de Issue com Edição Inline — COMPLETO ✓
- Edição inline do título (textarea, Enter para salvar, Esc para cancelar)
- Dropdown de prioridade no cabeçalho (P0-P3, mudança instantânea)
Phase 48: Decomposição de Arquitetura — Limites Lógicos de Serviço (P0 COMPLETA)
Do monolito à arquitetura lógica. Três arquivos monolíticos (10.779 linhas) divididos em 30 módulos de domínio (373 linhas nos dispatchers). Deploy: 2026-04-28. Zero mudanças comportamentais — refatoração pura com re-exports backward-compat.
Antes / Depois
graph LR
subgraph "Before (10,779 LOC)"
M1[crm-routes.ts<br/>6,181 LOC<br/>~120 handlers]
M2[api-server.ts<br/>1,464 LOC]
M3[Workspace.jsx<br/>~3,134 LOC]
end
subgraph "After (373 LOC dispatchers + modules)"
R[router.ts<br/>512 LOC dispatch]
AS[api-server.ts<br/>196 LOC]
WP[Workspace.jsx<br/>168 LOC orchestrator]
subgraph "shared/routes 17 modules"
S1[projects · files · workers · skills · chat]
S2[wiki · sage · onboarding · pins · docs]
S3[learnings · specs · restart · system · analytics]
end
subgraph "master-bot/routes 4 modules"
B1[auth · internal · cli · websocket]
end
subgraph "pages/workspace 9 modules"
W1[ChatThread · Composer · TerminalPanel · CloudPmPanel]
W2[WorkerSelector · WorkerStudio · ThinkingTips]
W3[QuickActionBar · useSSEStream]
end
end
M1 -.refactor.-> R
R --> S1 & S2 & S3
M2 -.refactor.-> AS
AS --> B1
M3 -.refactor.-> WP
WP --> W1 & W2 & W3
48.5 — Inbox Orientada a Eventos via fs.watch — CONCLUÍDO ✅ (2026-04-28)
startInboxWatcher()—fs.watch(stateDir)com filtro emcrm_inbox*.jsonl- Resultado: latência 500ms→~5ms (100×), zero novas dependências
48.6 — Lazy Lifecycle de Workers (idle-kill + wake-up) — CONCLUÍDO ✅ (2026-04-28)
- Workers se encerram automaticamente após 10 min de inatividade + wake-up sob demanda
- Resultado:
- ~425 MB RAM liberados por usuário (5 workers idle × 85 MB).
- Capacidade 2 → 6-10 usuários simultâneos no mesmo VPS.
Phase 49: Enforcement de Documentação e Integração GitHub (COMPLETA)
49.1 — Hook pre-push de cobertura de docs — CONCLUÍDO ✅ (2026-04-28)
scripts/check-docs-coverage.ts— script Bun, lê stdin do protocolo pre-push- Regras de mapeamento:
shared/migrations/*→docs/public/architecture/database-schema.mdshared/routes/*→docs/public/api/api-reference.md- "Phase NN" na msg de commit →
docs/ROADMAP.md+docs/status/current-state.json - ≥3 arquivos backend & ≥50 LOC →
learnings.md
- Bypass:
git push --no-verify
49.2 — Helper CLI arc wrapup — CONCLUÍDO ✅ (2026-04-28)
arc wrapup— checklist somente leituraarc wrapup --generate— adiciona entradas esqueleto marcadas com TODO
49.3 — Integração GitHub Light — CONCLUÍDO ✅ (2026-04-28)
- Migração 017:
github_links POST /api/webhooks/github— receptor público, validado com HMAC-SHA256, limitação de taxa de 100 req/min
Phase 50: Aumento de Conversão de Cadastro (COMPLETA)
Conversão 4% → alvo 9,5% (+138%). Auditoria:
docs/design/REGISTRATION_UX_AUDIT.md.
50.1 — Remoção de gate de autenticação + scaffolding de trial credits (Estágio 1) — CONCLUÍDO ✅
Trial credits scaffolding (Issue #18):
- Migração 019:
users.trial_granted_at(flag único) +projects.trial_mode+projects.trial_tokens_remaining(padrão 100.000) trialQueries:grantToUser,hasReceivedTrial,activateForProject,consumeTokens,hasBudget,getStatus
50.2 — Assistente 5→3 etapas (Issue #19) — CONCLUÍDO ✅ (2026-04-28)
Novo fluxo (3 etapas, ~50 segundos):
- Quick Start — nome + projectName apenas (~30s)
- API Keys — opcional com fallback de período gratuito (pular = 100K trial credits, ~10s)
- Integrations — Local Bridge / Telegram (~10s)
Resultado: tempo até o primeiro projeto 5-8 min → ~50s.
50.3 — Redesign do Roadmap (Variant A) — CONCLUÍDO ✅ (2026-04-28)
- Novo componente
RoadmapRedesign.jsx, montado via rotaApp.jsx - Banner "Now" — ponto âmbar pulsante, lista todas as fases
EM ANDAMENTO - Tabela estilo Linear: chevron · badge
P{id}· pílula de status · título + tags · barra de progresso
Phase 51: Stripe Billing — Stage 1 (DB + middleware + status) — CONCLUÍDO ✅ (2026-04-29)
Modelo de preços (limites com semântica OR):
| Plano | Preço | Projetos | Workers |
|---|---|---|---|
| Free | $0 | 1 | 5 |
| Min | $4,99/mês | 5 OU 25 total | Semântica OR |
| Max | $11,99/mês | 20 OU 150 total | Semântica OR |
Componentes do Stage 1:
- Migração 020: tabela
subscriptions+stripe_events(log de idempotência) PLAN_LIMITS— única fonte de verdade para mapeamento de plano → limites → funcionalidadescheckPlanLimit(userId, action)middleware — semântica OR- 402 Payment Required — erro estruturado em
handleOnboardingSetup+handleCreateWorker
Phase 52: Lançamento Beta Friends & Family (EM ANDAMENTO)
Lançamento público adiado até a validação F&F passar pelos critérios de sucesso. 10-20 usuários × 1 mês = sinal real antes da ativação do Stripe.
Critérios de Sucesso (devem ser atingidos antes do lançamento público)
- ≥70% de conversão cadastro → first_message_sent
- ≥40% returned_after_24h (retenção no Dia 1; benchmark do setor 30-40%)
- ≥25% returned_after_7d (stickiness no Dia 7)
- 0 bugs P0 reportados nos últimos 3 dias do beta
- Tempo médio de onboarding <10 min (cadastro → primeira mensagem)
- ≥80% dos usuários F&F avaliam a experiência com 4-5/5
Protocolo de Triagem de Feedback
- 🔴 P0 (corrigir no mesmo dia): bugs bloqueadores, perda de dados, segurança
- 🟡 P1 (corrigir antes do público): fricção de UX mencionada por ≥50% do F&F
- 🟢 P2 (backlog): nice-to-have, casos extremos, menção <20%
Recrutamento + Cadência + Incentivo
- Recrutamento: 10-20 contatos pessoais via Telegram/email (rede do CEO + fundadores/engenheiros do LinkedIn). NÃO transmissão via Twitter/Discord.
- Cadência: Digest semanal (sexta) no canal Telegram — o que foi lançado, top feedback corrigido, ETA da próxima. DM em tempo real para bugs P0.
- Incentivo: 50% de desconto vitalício + badge de perfil "Founding Member" + acesso ao Slack/Discord após lançamento + nome no Founders Wall público.
Sub-fases
52.1.1 — Revisão Completa de Documentação (P0/P1) — CONCLUÍDO ✅ (2026-05-04)
- Auditoria do PO encontrou CLAUDE.md com 4 fases defasadas, PRODUCT.md com 10 fases defasadas.
- CLAUDE.md + PRODUCT.md sincronizados com a Phase 52.1.
52.1 UK debt closure (#32, #33, #34) — CONCLUÍDO ✅ (2026-05-17)
- Desbloqueia a Phase 59 (expansão para múltiplos locais). 3 issues fechados.
52.1 — Códigos de Convite + Canal de Feedback (P0, 1 dia) — CONCLUÍDO ✅ (2026-04-29)
- Migração 021: tabela
invites - Formato do código:
arc-XXXX-XXXX(8 chars hex hifenizados, crypto.randomBytes) - Gate de cadastro:
/api/auth/registerrequer campoinvite_code, 403 invite_required caso contrário
52.2 — Projeto de Amostra + Tour de Onboarding (P0, 0,5 dia)
- Após primeiro cadastro, criar automaticamente projeto de demonstração "Welcome to Arc OS"
- Tour React-joyride: 5 etapas
52.3 — Analytics de Funil (P0, 1 dia)
- 5 eventos rastreados no
activity_log:signup_completed,email_verified,first_project_created,first_message_sent,returned_after_24h
52.4 — UX de Erros + Página de Status (P1, 1 dia)
- Auditoria dos estados de erro comuns
- Página simples
status.arc-os.co
52.6 — Monitoramento de Uptime (P1, 0,5 dia)
- UptimeRobot tier gratuito — ping em
/api/master/healtha cada 5 min
Total: 5 dias até estar pronto para F&F.
Phase 53: Notificações Pós-F&F (EM ANDAMENTO)
53.11.1 — Assistente de Criação de Bot (fecha #48) — CONCLUÍDO ✅ (2026-05-10)
- Dados do beta F&F: mediana de 3-7 workers por projeto = 3-7 criações manuais no @BotFather × ~4-5 min cada = 20-25 min de dor no onboarding.
- Backend: novo
POST /api/crm/projects/:name/workers/:id/suggest-bot-username - Frontend:
BotCreationWizard.jsx(~505 LOC) — modal de 3 etapas com barra de progresso
53.21 — Sentinel P2 batch 2 — CONCLUÍDO ✅ (2026-05-12, fecha #107 #108 #109)
- #107 P2-10 — drain entre tenants em
/api/internal/trial/consume: endpoint não verificava propriedade. Correção: exigirowner_idno corpo + verificar contraprojects.owner_iddo DB. - #109 P2-12 — tags flutuantes nas imagens Docker:
oven/bun:1,node:22-alpine,nginxinc/nginx-unprivileged:alpinefixadas em digests@sha256:atuais.
53.17 — Follow-up do pentest Sentinel: lockdown CF + loopback child-bot + SSOT do repo (fecha #91) — CONCLUÍDO ✅ (2026-05-11)
- Pentest Sentinel 2026-05-10 encontrou 3 descobertas críticas de infra além da auditoria estática.
- PT-CF1 + PT-CF2: lockdown nginx com
geo $realip_remote_addr(22 ranges CF IPv4/IPv6)
53.16 — Sentinel Sprint 2: 13 × P1 — CONCLUÍDO ✅ (2026-05-10, fecha #68-80)
- Todos os 13 findings P1 restantes fechados em lote.
53.15 — Sentinel Sprint 1: 5×P0 + redação de PII — CONCLUÍDO ✅ (2026-05-10, fecha #62-67)
- Auditoria de segurança do Sentinel em 2026-05-10 sinalizou 5 P0 / 13 P1 / 12 P2 defeitos. Sprint 1 fechou todos os 5 P0.
53.14 — Migrar issues.json para SQLite (project_issues) — CONCLUÍDO ✅ (2026-05-10, fecha #53)
- Nova migração
023_project_issues— PK composta(project_name, id) issues/issues.jsonadicionado ao.gitignore. Elimina completamente a superfície de merge.
53.12 — Higiene de deploy: merge estrutural para arquivos SSOT de auto-append (fecha #51) — CONCLUÍDO ✅ (2026-05-10)
- Novo
scripts/preserve-auto-append.shexecuta o merge estrutural que ogitnão consegue fazer.
53.7 — Fundação CI/CD (fecha #43, #44, #45, #46) — CONCLUÍDO ✅ (2026-05-07)
- Projeto tinha zero infraestrutura CI e zero testes unitários antes desse trabalho.
- #43 — primeiro
.github/workflows/ci.yml. Três jobs paralelos: backend, frontend, python. - Total de testes: 52 casos / 139 expects / 113ms — determinístico, caminhos temporários isolados por suite.
53.5 — Badge BETA + widget de feedback in-app — CONCLUÍDO ✅ (2026-05-07)
- TopHeader: badge em pílula
BETA · 1.0.0.1ao lado do ArcLogo - Novo
FeedbackWidget(~280 LOC): botão flutuante no canto inferior direito
53.1 — Notificações de eventos TG por worker — CONCLUÍDO ✅ (2026-05-07)
- Novo
shared/tg-notify.ts: busca vaultworker:<project>:<id>:bot_token, enviasendMessagediretamente ao Telegram - 4 tipos de eventos:
worker_finished,spec_pending,subprocess_failed,quality_low
Phase 54: Camada de Engajamento de Onboarding (EM ANDAMENTO)
Phase 50 resolveu "cadastro → dashboard". Phase 54 fecha a lacuna restante: "dashboard → primeiro comando de IA bem-sucedido".
54.1 — Schema + fundação de telemetria (issue #56, P0) — CONCLUÍDO ✅
- Migração 025
onboarding_progress - 4 endpoints:
GET /api/crm/onboarding/progress,POST /event,POST /dismiss,POST /replay
54.2 — UI do checklist + botão de replay (issue #57, P0) — CONCLUÍDO ✅
- Novo
frontend/src/crm/components/OnboardingChecklist.jsx— cartão recolhível com barra de progresso, 5 linhas de etapas
54.3 — Etapa CLI-first com comando arc tour (issue #58, P0) — CONCLUÍDO ✅
- Novo subcomando interativo
arc tour— percorre as 5 etapas pelo terminal
54.4 — Assistente de geração de skills (issue #59, P1) — CONCLUÍDO ✅
- Extração do Neural Skill Generator (Phase 36.6) de
ProjectSkills.jsxparaSkillGeneratorWizard.jsxreutilizável
54.5 — Estados vazios + widget de conclusão de perfil (issue #60, P1) — CONCLUÍDO ✅
- Novo
frontend/src/crm/components/EmptyState.jsxreutilizável - Novo
frontend/src/crm/components/ProfileCompletionWidget.jsxmontado emSidebarContent
54.6 — Analytics de funil (issue #61, P2) — CONCLUÍDO ✅
- Nova agregação
analyticsQueries.onboardingFunnelStats(hours) OnboardingFunnelSectionadicionado aAnalytics.jsx
Follow-up Phase 54 — Tour de boas-vindas (issue #114) — CONCLUÍDO ✅
- Carrossel de 5 slides pós-registro (
WelcomeFeatureTour.jsx)
Follow-up Phase 54 — Enforcement de disciplina de issues (issue #115) — CONCLUÍDO ✅
- CLI: picker interativo
pickActiveIssue - Web Workspace: modal
ActiveIssuePicker.jsxespelha o fluxo CLI - Telegram: suíte
/issueemchild-bot/bot.ts - Audit cron noturno: sinaliza projetos sem atualizações de issues em 24h
Follow-up Phase 54 — Hook commit-msg exigindo #<id> (issue #116) — CONCLUÍDO ✅
- Novo
.githooks/commit-msgvalida que cada mensagem de commit contém#<n> - Allowlist: prefixos de manutenção Conventional-commits, Merge / Revert / fixup!
Follow-up Phase 54 — Reconstrução retrospectiva de issues (issue #117) — CONCLUÍDO ✅
- Novo subcomando CLI
arc retro <project>reconstrói issues retroativamente do histórico de sessão + git log
Phase 55: Redesign da Página de Login — Cosmic Editorial (PLANEJADA)
55.1 — Remover toggles do designer antes do merge (issue #82, P0) — CONCLUÍDO ✅ (2026-05-13)
- Removidos de
arc-os-login-page/project/:tweaks-panel.jsx,design-canvas.jsx, variantes B/C/D
55.2 — Backdrop cósmico animado (issue #83, P1) — CONCLUÍDO ✅ (2026-05-13)
LoginBackdrop.jsxsubstitui o gradiente estático legado (~290 LOC)- Composição de planeta em 9 camadas + parallax Starfield de 10 camadas
55.3 — Formulário CosmicCard (issue #84, P1) — CONCLUÍDO ✅ (2026-05-13)
CosmicCard.jsx~580 LOC, cartão de vidro + máquina de estadosidle / loading / error / magic / success
55.4 — Painel editorial (issue #85, P1) — CONCLUÍDO ✅ (2026-05-13)
EditorialPanel.jsx+CapabilitySlider.jsx+Tickertape.jsx
55.5 — Fluxo de magic-link (issue #86, P2) — CONCLUÍDO ✅ (2026-05-13)
- Backend:
generateMagicToken/consumeMagicToken(TTL de 10 min)
55.6 — 2FA / TOTP — BLOQUEADO no design do Sentinel (issue #87, P2) — AINDA BLOQUEADO
55.7 — Mobile + breakpoints responsivos (issue #88, P2) — CONCLUÍDO ✅ (2026-05-13)
- Hook
useViewportMode+ template CSS Grid emLoginOverlay.jsx. ≥1024px: colunas 60/40. <1024px: coluna única.
55.8 — Auditoria de A11y + i18n + reduced-motion (issue #89, P1) — CONCLUÍDO ✅ (2026-05-13)
- 44 novas strings lingui extraídas + traduzidas para UK
55.9 — Animação de sucesso + contagem regressiva de redirect (issue #90, P2) — CONCLUÍDO ✅ (2026-05-13)
- Animação de check pulsante + "Welcome back" + barra de progresso de 1,5s
55.10 — Correções de QA vs design canônico (issue #110, P1) — CONCLUÍDO ✅ (2026-05-13)
- Textos de cabeçalho revertidos para strings do design:
Sign in to continue+Your AI command center
Phase 56: Camada de Interoperabilidade com IA — Exportação de Contexto do Projeto (PLANEJADA)
Funcionalidade para usuários avançados: permite que proprietários de projetos passem um snapshot completo e sanitizado do projeto para qualquer IA externa (Gemini, ChatGPT, Perplexity, Claude.ai) sem o teatro de copiar e colar.
56.1 — Módulo de scanner de secrets (issue #97, P0) — CONCLUÍDO ✅ (2026-05-13)
shared/secret-scanner.ts— scanner em 3 camadas: Camada 1 regex, Camada 2 entropia Shannon (≥4,5 bits/char em runs de ≥20 chars), Camada 3 heurísticas de contexto- Níveis de severidade: crítico (auto-redação padrão) / alto / médio / baixo
56.2 — Endpoint de exportação + renderizador de seções (issue #98, P0) — CONCLUÍDO ✅ (2026-05-13)
shared/routes/context-export.ts—GET /api/crm/projects/:name/context-export?include=...- 7 renderizadores de seção: identidade / workers / arquitetura / issues / atividade / commits / learnings
- Multi-tenancy: somente o proprietário pode exportar (papel admin NÃO bypassa o gate do proprietário)
56.3 — Modal de Exportação de Contexto do Projeto (issue #99, P0) — CONCLUÍDO ✅ (2026-05-13)
frontend/src/crm/components/ProjectContextExportModal.jsx— 3 etapas- Etapa 2: scanner automático + gate de confirmação sobre cada finding alto/médio
- Etapa 3: painel de preview markdown + checkbox obrigatório "Revisei este arquivo"
MVP COMPLETO — 56.1 + 56.2 + 56.3 entregam o fluxo completo de exportação gerido pelo proprietário de ponta a ponta.
56.4 — Configurações + log de auditoria (issue #100, P1) — CONCLUÍDO ✅ (2026-05-13)
- Migração 024: tabelas
export_audit_log+export_preferences
56.5 — Telemetria + alertas (issue #101, P2) — CONCLUÍDO ✅ (2026-05-13)
- Log de auditoria é o sink de telemetria
- Alerta quando proprietário tiver ≥3 exportações em 24h E pref
notify_on_exporthabilitada