CL-2026-04-28-BK-CORE-004 - Project Context Layer sobre MemoryFtsStore
Status: (V)
Escopo: projeto
Projetos afetados: cerebro-kernel
Aprovacao humana obrigatoria: nao
Revisor IA: auto-revisao Codex por indisponibilidade temporaria dos revisores externos
Resumo
O kernel do Cérebro ganhou a camada ProjectContextLayer, construída sobre o MemoryFtsStore do BK-CORE-003, para ingerir e recuperar contexto por project_id antes do wiring real no Debate Runtime.
Alteracoes
- Criado
kernel/project_context.js. - Criada suite
kernel/tests/unit/project-context.test.js. - Atualizados backlog, changelog, lock e roadmap do Debate Runtime.
Comportamento entregue
- Ingestao idempotente de arquivos canonicos por projeto:
PRD.md,TDD.md,project.ymleconfig.json. - IDs deterministicos no formato
project_context:<projectId>:<fileName>. - Busca por contexto usando
MemoryFtsStore.searchcom isolamento obrigatorio porprojectId. - Filtro adicional por
sources, aplicado antes do corte final porlimit. - Formatacao de snippets para prompt com orcamento total de caracteres incluindo header.
enrichSystemPromptanexa contexto apenas quando ha snippets reais.- Hardening contra leitura fora de
projectsDiremingestProject, incluindo symlink que aponta para fora do projeto. - Entrega local: sem API pay-per-use, free tier ou provider externo.
Validacao
Comandos executados:
```bash
node --check kernel/project_context.js
node --check kernel/tests/unit/project-context.test.js
cd kernel && npm test -- --runInBand tests/unit/project-context.test.js
```
Resultado observado:
- sintaxe OK nos dois arquivos JS;
- Jest do kernel verde com
21 suitese147 testes.
Fora de escopo
O wiring real em squad_runtime.js/router.js, o toggle STUDIO_PROJECT_CONTEXT_ENABLED e a telemetria de contexto ficam para BK-CORE-004.1.
Observacoes operacionais
Claude adiantou a maior parte da implementacao. Codex retomou a rodada, auditou o diff, adicionou hardening de caminho/limite/source filter, criou o changelog detalhado ausente e revalidou a suite. A tentativa de revisao final pelo Claude CLI falhou por limite de conta, entao o fechamento usa auto-revisao Codex + validacao local completa.