Cerebro Studio · Backlog · Changelog
Cerebro • /root/cerebro/docs/BACKLOG.md
Abrir Studio Selecione um BK para aprovar, delegar curadoria ou encaminhar.

Backlog Unificado

Projeto: Cerebro. Fonte principal: /root/cerebro/docs/BACKLOG.md.

Especificações Disponíveis (fora da fila pendente)

Detalhe do BK Selecionado

/root/cerebro/docs/specs/BK-38-heartbeat-readonly.md • 2026-05-02T12:38:38.810Z

BK-38 - Heartbeat Read-Only e Mission Control Real

Status: concluido em 2026-05-02

Escopo

Implementar a Fase 1 segura do heartbeat do Cerebro: visibilidade operacional sem automacao corretiva, sem execucao R2+ automatica e sem mudanca de estado em propostas.

Entrega

  • kernel/heartbeat_readonly.js agrega snapshot read-only de sistema, PM2, worker_health_registry, locks, sessoes CLI e propostas.
  • kernel/scripts/heartbeat_readonly.js adiciona CLI para gerar o snapshot em JSON e, opcionalmente, gravar relatorio JSON proprio.
  • kernel/package.json adiciona health:heartbeat e health:heartbeat:write.
  • studio/server.js expoe GET /api/heartbeat e inclui heartbeat em GET /api/ops-snapshot com cache de 15s.
  • Home do Studio passa a renderizar agentes com status calculado, modelo, tempo e detalhe operacional.
  • Aba Backlog passa a resumir a esteira pending_approval -> approved -> executing/running -> done/failed/rejected e exibir metadados de execucao quando existirem.

Guardrails

  • O heartbeat nao aprova, rejeita, executa, pausa ou conclui propostas.
  • O heartbeat nao reinicia PM2, nao mexe em locks e nao limpa sessoes CLI.
  • Os comandos externos usados sao somente leituras: pm2 jlist e df -Pk /.
  • Alertas sao informativos no JSON; nenhuma acao corretiva automatica foi adicionada.

Evidencias

  • node --check kernel/heartbeat_readonly.js
  • node --check kernel/scripts/heartbeat_readonly.js
  • node --check studio/server.js
  • npm --prefix kernel run health:heartbeat --silent retornou ok=true, system=true, agents=6, pm2=4.
  • Suite Jest acionada na rodada passou com 26 suites, 179 testes.
  • Studio temporario em PORT=9918 respondeu /api/heartbeat com mode=read_only, agents=6, pm2=4.
  • Studio temporario respondeu /api/ops-snapshot com heartbeat=true.
  • Script inline extraido do HTML temporario passou em node --check /tmp/cerebro-studio-bk38-inline.js.
  • Playwright headless no Studio temporario carregou sem pageerror e renderizou os 6 agentes calculados.

Revisao externa

  • OpenCode revisou o patch em modo read-only e aprovou os pontos de read-only, JS inline, endpoint, estados de propostas e status real de agentes.
  • OpenCode recomendou cache curto para evitar pm2 jlist em todo refresh; aplicado cache de 15s no consumo do Studio.
  • Gemini foi acionado para segunda revisao, mas a chamada terminou por timeout sem saida util; excecao registrada nesta entrega.

Achados atuais do heartbeat

  • Existe lock global stale para /root/cerebro/studio/server.js em /root/.cerebro-locks, com PID morto.
  • Existem sessoes CLI antigas/stale em .runtime/cli-sessions.
  • gemini/gemini-3-flash-preview aparece como degraded no worker_health_registry historico.

Esses achados foram apenas expostos; limpeza de locks/sessoes stale fica fora do escopo deste BK.