Cerebro Studio · Backlog · Changelog
Cerebro • /root/cerebro/docs/changelog/2026/CL-2026-03-01-BK-62.md • 2026-03-01T16:09:52.052Z

CL-2026-03-01-BK-62 · Persistência e Histórico do Studio Terminal (Kernel + Studio)

  • Status: (V) conferido e aprovado
  • Escopo: multi-projeto
  • Projetos afetados: cerebro-studio, cerebro-kernel
  • BK relacionado: BK-62
  • Aprovação humana obrigatória: não
  • Data: 2026-03-01
  • Autor: Codex (GeJoRei-VPS)

Resumo

Implementação de infraestrutura de persistência real para o Studio Terminal, eliminando a dependência exclusiva de memória e logs JSONL para a UI. Agora, as conversas são salvas em um banco de dados relacional (SQLite/Postgres) e recuperadas dinamicamente via WebSocket ao selecionar sessões no sidebar.

Entregas Técnicas

1. Kernel (Backend)

  • Módulo de Dados: Criado kernel/studio_chat_store.js usando better-sqlite3.
  • Suporte a modo WAL (concorrência leitura/escrita).
  • Schema com tabelas studio_chat_sessions e studio_chat_messages.
  • Ordenação determinística via coluna seq.
  • Persistência de metadados JSON (request_id, model, workflow_phase).
  • Integração:
  • Dual-write mantido (SQLite + logs JSONL legados).
  • Sincronização de status de aprovação (has_pending_approval) em tempo real.
  • Protocolo WS: Novos handlers:
  • studio_chat_sessions_list: Listagem com previews e contagem de msgs.
  • studio_chat_session_history: Recuperação de histórico completo por sessionKey.

2. Studio (Frontend)

  • UI de Sidebar:
  • Exibição de metadados reais (contagem de mensagens, badges de pendência).
  • Previews de mensagens no seletor de thread.
  • Fluxo de Recuperação:
  • Carregamento assíncrono ao trocar de sessão.
  • Deduplicação inteligente via requestId para mesclar histórico do DB com mensagens locais pendentes.
  • Tratamento de estados de loading e erro inline no feed.

Limites e Configurações

  • Paginação: Default de 50 sessões e 100 mensagens por requisição (configurável).
  • Retenção: Ilimitada no SQLite local nesta fase.
  • Caminho DB: /root/cerebro/kernel/data/studio-chat.db (override via STUDIO_CHAT_DB_PATH).

Plano de Rollback

  1. O sistema é resiliente: se o banco de dados falhar na inicialização, o Kernel loga o erro e continua operando (apenas o histórico histórico na UI ficará indisponível, mas o chat em tempo real e logs JSONL continuam).
  2. Para reverter completamente: remover a dependência better-sqlite3 e apagar o diretório kernel/data/.

Evidências Objetivas

  • Bateria de Integração: 7 cenários validados com 100% de sucesso.
  • Output do Teste:

```text

[2026-03-01T16:02:32.791Z] [TEST] INICIANDO BATERIA BK-62...

[1] Cenário: Sessão Nova + Salvar no DB -> OK

[2] Cenário: Kernel Restart + Recuperação WS -> OK

[3] Cenário: Isolamento de Sessões -> OK

[4] Cenário: Reset de Sessão -> OK

[5] Cenário: Falha de DB (Resiliência) -> OK

[6] Cenário: Deduplicação (requestId) -> OK

[7] Cenário: Ordem Temporal (seq) -> OK

[2026-03-01T16:02:36.855Z] [RESULTADO] 7/7 VERDE

```

  • Log Bruto: docs/runs/bk62-history-battery-2026-03-01.txt