CL-2026-05-02-BK-CORE-008-runtime-hygiene
Escopo
- Projeto: cerebro-kernel
- Projetos afetados: cerebro-kernel
- Aprovação humana necessária: não
Contexto
Necessidade de utilitário para detectar e remover runtime artifacts stale (locks e sessões CLI) usando as mesmas regras do heartbeat existente, evitando acúmulo de arquivos órfãos que consomem espaço e confundem o operacional.
Entrega
Componentes criados
| Arquivo | Descrição |
|---------|------------|
| kernel/runtime_hygiene.js | Modulo principal com funções scanLocks, scanCliSessions, buildHygieneSnapshot, applyHygiene, reaproveitando as regras do heartbeat_readonly |
| kernel/scripts/runtime_hygiene.js | CLI wrapper com parsing de argumentos --dry-run / --apply / --json |
| kernel/tests/unit/runtime-hygiene.test.js | Suite de testes unitários (12 casos cobrindo ageInfo, pidExists, detecção stale) |
| docs/specs/BK-CORE-008-runtime-hygiene.md | Especificação técnica do BK |
Scripts npm adicionados
```json
{
"hygiene:dry-run": "node scripts/runtime_hygiene.js --dry-run",
"hygiene:apply": "node scripts/runtime_hygiene.js --apply"
}
```
Regras de stale (iguais ao heartbeat_readonly.js)
- PID morto:
process.kill(pid, 0)falha (processo não existe mais) - Idade > 6h:
age_ms > 6 60 60 * 1000(21600000ms)
Diretórios monitorados
- Locks:
/root/.cerebro-locks/(arquivos.lock) - Sessões CLI:
/root/cerebro/.runtime/cli-sessions/(arquivos.session)
Modos de operação
dry-run (default)
- Executa detecção de stale
- Lista locks e sessões stale detectados
- NÃO remove nenhum arquivo
- Retorna JSON estruturado com summary
apply
- Mesma deteccao do dry-run
- Remove apenas arquivos stale detectados
- Retorna JSON com
removed.locks[]eremoved.sessions[]
Validação
- Sintaxe JS:
node --checkem todos os arquivos criados - Testes:
npm --prefix kernel test -- --runInBand tests/unit/runtime-hygiene.test.js tests/unit/heartbeat-readonly.test.js - Dry-run inicial detectou
1lock stale e7sessoes stale - Apply real removeu
1lock stale e7sessoes stale - Dry-run final voltou com
total_locks=0etotal_sessions=0
Evidencias
node --check kernel/runtime_hygiene.js- OKnode --check kernel/scripts/runtime_hygiene.js- OKnode --check kernel/heartbeat_readonly.js- OKnpm --prefix kernel test -- --runInBand tests/unit/runtime-hygiene.test.js tests/unit/heartbeat-readonly.test.js- verdenpm --prefix kernel run hygiene:apply -- --jsonremoveu1lock e7sessoes stalenpm --prefix kernel run hygiene:dry-run -- --jsonvoltou zerado