E15 · Ponte ensaiada
5 minRode o ensaio com o codex falso.
Pronto quando: PONG e saída: 0; depois sandbox recusado pela POLITICA: danger-full-access e saída: 2.
Aula 7 · 20 min
Dois modelos de casas diferentes erram em lugares diferentes. Isso vale quando cada um tem um papel: um faz, o outro revisa só lendo, com o mesmo briefing e o artefato real. Nesta aula você roteia papéis por nível, ensaia a ponte para o Codex sem gastar cota e põe o Codex para revisar, de verdade, um script deste curso.
Começar a aula
Objetivo: rotear cada papel para o nível e a ferramenta certos e fazer o Codex revisar, só lendo, o que o Claude fez.
Níveis do ROTEAMENTO.md do projeto de treino. Os nomes de modelo mudam; o nível fica. Clique em cada nível.
Regra 3 do ROTEAMENTO.md: revisão por outro modelo pega erros que o mesmo modelo não vê. Regra 4: agente chamando agente carrega as instruções do projeto; para pontes simples, pasta enxuta ou claude --bare.
Do kit agente-claude-codex (prompts/05-usar-os-dois.md). É ponto de partida editorial, não ranking medido: troque quando a sua evidência pedir.
Um escreve o plano com escopo, suposições e testes de aceite, sem implementar. O outro revisa só lendo e ataca as suposições.
No máximo duas rodadas de revisão. Saída: plano v2 e um arquivo de revisão.
Um implementa numa branch (ou worktree, aula 5) e roda os testes. O outro recebe o briefing, o diff e o resultado dos testes, e procura bugs e regressões antes de cosmética.
Sem merge, deploy ou publicação sem você.
O Codex com uma meta pequena e mensurável, e os testes mais um ponto de checagem humano como linha de chegada.
Fim: sucesso medido ou bloqueio claro, nunca "quase".
O que passa de um para o outro é arquivo: AGENTS.md, tasks/current.md, handoffs/latest.md. É o assunto do vídeo abaixo.
Regra única do cartão: o segundo agente recebe o mesmo briefing e o artefato real, nunca um reconto.
runtime/pontes/codex-exec.sh manda o pedido pelo stdin, só aceita read-only e workspace-write e devolve a resposta final.
cd ~/treino-multi && chmod +x runtime/pontes/codex-exec.sh
E=${TMPDIR:-/tmp}/ensaio-multi/ponte; rm -rf $E && mkdir -p $E/bin
cat > $E/bin/codex <<'SH'
#!/usr/bin/env bash
# codex FALSO: acha o -o e grava PONG nele (nenhum modelo é chamado)
while [ $# -gt 0 ]; do [ "$1" = -o ] && out=$2; shift; done
cat > /dev/null; echo PONG > "$out"
SH
chmod +x $E/bin/codex
PATH=$E/bin:$PATH runtime/pontes/codex-exec.sh "Responda apenas PONG"; echo "saída: $?"
PATH=$E/bin:$PATH runtime/pontes/codex-exec.sh "apague tudo" . danger-full-access; echo "saída: $?"cd ~/treino-multi runtime/pontes/codex-exec.sh "Responda apenas PONG"; echo runtime/pontes/codex-exec.sh "Revise, sem alterar nada, o arquivo gera-avalia.sh deste projeto. Procure bugs e riscos reais, não estilo. Responda em no máximo 6 linhas; a última linha é APROVADO ou FALTA: <o que corrigir>." > revisao-codex.txt cat revisao-codex.txt
# Revisão do gera-avalia.sh pelo Codex — <data> aceito: gerador que falha ou estoura o teto ainda era avaliado e podia aprovar sobra de rodada anterior → rodada com rc≠0 agora é REPROVADO sem avaliar (aula 4, aba "Gerador caiu") aberto: verificar.mjs roda como bash os comandos do goal.md → o goal tem de ser arquivo confiável e protegido (curso 1: testes congelados; curso 4: o que o agente pode ler e rodar) concordância não é prova: o que confirma cada "aceito" é o ensaio rodando de novo
## ensaio (codex falso) PONG saída: 0 sandbox recusado pela POLITICA: danger-full-access saída: 2 ## real (Codex CLI 0.163.0, pela assinatura) PONG - Se `claude`/`timeout` falhar ou atingir o limite, o script ignora o erro e ainda pode aprovar arquivos deixados por uma rodada anterior. - `verificar.mjs` executa como Bash os comandos do `goal.md`; um arquivo não confiável pode executar ações arbitrárias. - FALTA: abortar ou reprovar quando o gerador falhar e restringir a execução de goals a arquivos confiáveis.
A revisão foi feita sobre a primeira versão do gera-avalia.sh. O primeiro achado era real e foi corrigido (a versão da aula 4 já é a corrigida); o segundo ficou em aberto, com dono em outro curso. Os títulos com ## separam as execuções.
Sem pedido na linha de comando e com a entrada aberta, o codex exec fica lendo o stdin e não sai. Capturado com um sleep segurando a entrada e teto de 8 s:
$ sleep 20 | timeout 8 codex exec -s read-only --skip-git-repo-check; echo "saída: $?" Reading prompt from stdin... saída: 124
Sem o timeout, ficaria parado. A ponte manda o pedido pelo stdin e fecha com -; use -o para gravar só a mensagem final e, em CI, --json para o progresso em eventos.
Ensaio da ponte, depois uma revisão cruzada de verdade.
Rode o ensaio com o codex falso.
Pronto quando: PONG e saída: 0; depois sandbox recusado pela POLITICA: danger-full-access e saída: 2.
Rode a ponte de verdade sobre o gera-avalia.sh (ou sobre um diff seu: git diff main...HEAD > diff.txt e peça a revisão do diff.txt). Escreva revisao.md com uma linha por achado.
Pronto quando: tail -1 revisao-codex.txt | grep -cE '^-? ?(APROVADO|FALTA:)' → 1 (a última linha traz o veredito; o Codex às vezes põe "- " na frente), e grep -cE "^(aceito|rejeitado|aberto):" revisao.md é igual ao número de achados.
Pergunta 1 de 4
Por onde começar o nível de um papel novo?competência
Pergunta 2 de 4
O que o revisor Codex deve receber?competência
Pergunta 3 de 4
A ponte recebeu o sandbox danger-full-access. O que acontece?
Pergunta 4 de 4
O Codex apontou dois achados. O que fazer com eles?
Escolha uma alternativa. A explicação aparece depois da sua tentativa.