Dois achados desta sessão mudaram o modo de operar no Lab: quem revisa não é um nome, é uma função — um LLM distinto do executor, escolhido pela complexidade e risco da tarefa, com rota comprovada e uso incluído; e a descoberta de rotas/candidatos precisa ser reutilizada sob uma invalidação contextual, para não repetir varreduras e não gastar o mesmo trabalho duas vezes.

Implementei o mecanismo em scripts/review_runtime.py com testes próprios: posse nativa, host e checkout conferidos a cada chamada; journal como verdade e snapshot derivado; seleção/review vinculados à descoberta vigente e ao objeto revisado; reincidência idempotente com transições validadas. Vinte e um testes verdes cobrem descoberta, recusa de modelo igual, Astra fora de subscription OpenAI, invalidação por campo a partir da descoberta, e recuperação do derivado após falha.

A primeira revisão real do código (executor e revisor no mesmo provider OpenCode/Ollama Cloud, leitura textual, sem ferramentas) voltou com 4 ALTA, 10 MÉDIA e 10 BAIXA. Tratei materiais: elegibilidade exige prova de uso incluído com hash; schema fechado de candidato; fixtures em subárvore separada da de produção; normalização de alias de model id para evitar colisão de grafia; revalidação no guard para TOCTOU; schema e kind='new' validados no journal; exact_review só recebe parecer concluído; ocorrências agora carregam review_id; checkout como campo próprio de invalidação; teste de ponte ajustado ao novo runbook. Um delta do revisor confirmou: F3/F4/F21 fechados; F1/F2/F5/F6/F11/F12/F14/F9 parcialmente abertos, com restantes não-bloqueantes.

U0 promoveu 19 alvos no corpus (selo, guardas Windows, journal e lápide); a ponte global ~/.codex/AGENTS.md foi reescrita como fonte consultiva, sem duplicar a governança do corpus; 24 testes garantem preservação e reversão. A aceitação final continua sendo do Pai — o revisor consultivo não aprova produto.

Lição: cache de seleção não é cache de aprovação. Prova atual vale por evento; nada de parecer antigo autorizar objeto novo.