Reescrita completa das secoes 10-13 do OPERATIONS.md:
- Secao 10: Historico completo do problema de memoria OOM
- Cronologia do problema (Nov/2025 ate 10/12/2025)
- Causa raiz identificada (versoes de documentos em memoria)
- Solucao em 3 partes: crons, limpeza, codigo do heartbeat
- Resultados: 450MB -> 17MB banco, 19GB -> 395MB memoria
- Secao 11: Erros shape_inference marcados como RESOLVIDOS
- Problema eliminado pela limpeza do banco
- Crons movidos = nenhum novo registro problematico
- Secao 12: Arquitetura final dos crons
- Diagrama da nova arquitetura (Linux crontab -> Next.js -> Convex)
- Mapeamento completo dos crons migrados
- Configuracao atual do crontab na VPS
- Secao 13 (NOVA): Guia de monitoramento pos-correcao
- Metricas esperadas para sistema saudavel
- Comandos de verificacao
- Procedimento de limpeza (se necessario)
- Resumo de commits e backups disponiveis
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Problema:
- Cron jobs do Convex criam registros em _scheduled_job_logs
- Convex self-hosted carrega TODAS as versoes em memoria
- 1488 execucoes/dia = ~45k registros/mes acumulando
- Uso de memoria chegando a 19GB, causando 12 OOM kills/dia
Solucao:
- Criar endpoints HTTP em /api/cron/* para substituir crons
- Desabilitar crons no Convex (comentados em crons.ts)
- Chamar endpoints via crontab do Linux
Novos arquivos:
- src/app/api/cron/chat-cleanup/route.ts
- src/app/api/cron/usb-cleanup/route.ts
- scripts-static/* (copiado da VPS para versionamento)
Documentacao:
- docs/OPERATIONS.md secao 12 com instrucoes do crontab
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Adicionar console.log no inicio de autoEndInactiveSessions (liveChat.ts)
- Adicionar console.log no inicio de cleanupStalePendingPolicies (usbPolicy.ts)
- Documentar problema de shape_inference e solucao em OPERATIONS.md (Secao 11)
- Atualizar .env.example com BETTER_AUTH_SECRET de 32+ caracteres
O shape_inference do Convex self-hosted falha ao unificar arrays vazios
(logLines: []) com arrays de strings (logLines: ["msg"]). Garantindo que
todo cron job produza ao menos um log, evitamos o conflito de tipos.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add docs/README.md as index
- Consolidate ops in docs/operations.md; mark legacy runbooks as archive
- Create docs/desktop/ and docs/admin/ structure and move relevant docs
- Update root README to link docs index
- Keep historical and planning notes under docs/archive/