Cerebro Studio · Backlog · Changelog
Cerebro • /root/cerebro/docs/changelog/2026/CL-2026-03-01-BK-65.md • 2026-03-02T14:45:21.110Z

CL-2026-03-01-BK-65 · Log de Decisões Ignoradas (Kernel + Persistência)

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

Resumo

Implementado rastreamento persistente de decisões de "ignorar" por sessão do Studio Terminal, com detecção automática no texto do usuário, consulta via WS e supressão contextual do aviso de evidência insuficiente quando esse assunto foi explicitamente ignorado.

Entregas Técnicas

1) Persistência (SQLite + Postgres)

  • Nova tabela studio_chat_ignored_decisions em ambos os adapters.
  • Índice por sessão/tempo para leitura rápida (session_key, decided_at DESC).
  • Novos métodos no store:
  • recordIgnoredDecision(sessionKey, requestId, subject, subjectType, reason, decidedBy)
  • listIgnoredDecisions(sessionKey, { limit, before })
  • isIgnored(sessionKey, subject)

2) Kernel (Detecção e Registro)

  • Nova função detectAndRecordIgnoredDecisions(sessionKey, requestId, message) com regex para frases como:
  • "pode ignorar o arquivo X"
  • "ignore esse erro"
  • "não se preocupe com Y"
  • Registro automático executado no fluxo de studio_chat_request.
  • Log de falha de persistência do registro com contexto estruturado (sessionKey, requestId, subject, subjectType, error).

3) Supressão de Aviso de Evidência

  • appendReadOnlyEvidenceNotice migrada para fluxo assíncrono com consulta ao store.
  • Comparação robusta por normalização (NFD + remoção de diacríticos + lowercase) para cobrir variações como evidência/evidencia.
  • Se assunto equivalente já estiver ignorado na sessão, o aviso não é anexado.

4) Protocolo WS

  • Novo handler:
  • request: studio_chat_ignored_list
  • response: studio_chat_ignored_list_ok
  • Mantido sufixo _ok por compatibilidade com contrato WS legado atual.

Higiene de Repositório

  • Removidos do tracking:
  • kernel/data/studio-chat-test-battery.db-shm
  • kernel/data/studio-chat-test-battery.db-wal
  • kernel/data/studio-chat.db
  • .gitignore atualizado para ignorar artefatos de DB local:
  • *.db-shm
  • *.db-wal
  • kernel/data/studio-chat.db

Evidências Objetivas

  • Suite:
  • kernel/tests/bk65-ignored-decisions.test.js
  • Hotfix de Isolamento (2026-03-02):
  • Implementado Lazy Loading no StudioChatStore Singleton para evitar erros de IO durante o require em testes.
  • Testes do BK-65 agora usam DB temporário exclusivo via fs.mkdtempSync e fecham conexões com store.close().
  • Comando executado:
  • cd /root/cerebro/kernel && NODE_ENV=test npm test -- --runInBand tests/bk65-ignored-decisions.test.js
  • Resultado:
  • Test Suites: 8 passed, 8 total
  • Tests: 55 passed, 55 total (Estabilidade confirmada sem vazamento de estado).

Commits da Entrega

  • c669e53 feat(BK-65): log de decisões ignoradas + limpeza gitignore db artifacts
  • 3b68a93 chore: remover db-shm/db-wal do tracking
  • 2f8cbb8 test(BK-65): adicionar suíte de decisões ignoradas
  • f3e86a1 BK-65: Implementação de log de decisões ignoradas e supressão de alertas
  • d82aea6 fix(BK-65): restaurar teste, untrack studio-chat.db e normalizar supressão de evidência
  • Hotfix (vps/BK-65-hotfix-test-isolation): correção de isolamento de testes e Lazy Loading no Singleton.

Riscos Residuais / Dívida Técnica

  • Detecção por regex pode não capturar frases muito ambíguas.
  • O registro automático é assíncrono (fire-and-forget) com log de erro; garantia forte de durabilidade (await/fila) fica para BK futuro.
  • Contrato WS de ignorados permanece com sufixo _ok; padronização global de tipos deve ser feita em BK específico de contrato.