Skip to content

Revisão de conformidade: modo review do verify.sh e skill revisao-conformidade - #12

Merged
argentinaluiz merged 1 commit into
mainfrom
feature/skill-revisao-conformidade
Oct 15, 2026
Merged

argentinaluiz merged 1 commit into
mainfrom
feature/skill-revisao-conformidade

Conversation

@argentinaluiz

Copy link
Copy Markdown
Contributor

Resumo

A revisão de conformidade tinha o passo a passo no AGENTS.md da raiz, lido em toda sessão, e dependia de o agente lembrar o git add -N de cada arquivo novo: um arquivo esquecido ficava fora da revisão sem aviso.

  • scripts/verify.sh review <pai> <ticket> e review sem-ticket <nome> geram os insumos do revisor na pasta do ticket. O diff vai do merge-base com a base até a pasta de trabalho, com todo arquivo novo que o Git não ignora, por um índice temporário que não mexe no índice real. Com ticket, o modo acha o commit de plano (e falha sem ele), grava a mensagem dele e o desvio do contrato, este sempre, pela mesma régua do aviso da CI. Sem ticket, exige o criterios.md. Confere antes de gravar que os insumos seriam ignorados pelo Git.
  • Skill nova revisao-conformidade, que o modelo pode chamar, com duas partes: Review (insumos, revisor só com caminhos, revisao.md com o relatório na íntegra e a tabela, triagem que para e pergunta antes de deixar sem corrigir um achado alto) e Publish (um comentário por ticket, a partir do revisao.md).
  • AGENTS.md: a seção fica só com a regra e aponta para a skill (290 para 253 linhas).
  • A implement, a implement-spec, a definição do revisor-conformidade e uma frase do REVIEW.md passam a apontar para a skill e para o arquivo de critérios.
  • scripts/test/verify-review.test.sh: 47 casos no passo "Testes do harness" do full. Conferi que reprovam três mutações (sem os arquivos novos, mensagem do HEAD no lugar da do plano, base sem o merge-base).

Aceite

nenhum: mudança no harness

Guarda do harness

Este PR altera scripts/ e .claude/agents/, então a Guarda do harness reprova, e o merge só entra por override do admin. Espere o Veredito verde antes do bypass.

Verificação

  • scripts/verify.sh full aprovado na máquina (base origin/main).
  • A revisão de conformidade desta mudança foi feita com a própria skill nova, sem ticket; o resultado está no comentário do PR.

Para o revisor humano

  • Hook do push com worktree: o push-verify.sh roda o prepush na pasta do CLAUDE_PROJECT_DIR, e não no checkout de onde sai o push. Trabalhando num git worktree, ele confere a branch errada e nega o push, que aqui foi feito pelo usuário no terminal. Fica para uma mudança à parte.
  • Aceite congelado desatualizado: o cenário do LUI-173-CA9 (docs/tickets/LUI-156/LUI-173/aceite.md) cita o comando do diff "como o AGENTS.md manda", que saiu do AGENTS.md. Descongelar é do usuário.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgE8sJLFxENgwV47XrwDGP

…nd a skill

The review steps lived in the root AGENTS.md, loaded in every session, and
depended on the agent running git add -N on every new file: a forgotten one
stayed out of the review without warning. The procedure moves to the
revisao-conformidade skill, and the inputs come from `verify.sh review`, which
diffs from the merge-base with every new file through a temporary index, finds
the plan commit, always writes the contract drift, and fails before writing
when the plan commit or the criteria file is missing. The review result is kept
in revisao.md, so another session can publish it, one comment per ticket.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgE8sJLFxENgwV47XrwDGP
Copilot AI lite review requested due to automatic review settings October 15, 2026 21:15
@argentinaluiz

Copy link
Copy Markdown
Contributor Author

Revisão de conformidade: sem ticket (skill-revisao-conformidade)

# Severidade Achado Situação Motivo
1 média O teste do modo review não cobre um <ticket> inválido com <pai> válido nem três argumentos Corrigido Casos review PROJ-1 ticket e review PROJ-1 PROJ-2 extra no verify-review.test.sh, os dois com código 2 e a mensagem das duas formas
2 baixa A skill repete regras que agora são do AGENTS.md (quem faz não confere, não bloqueia, a CI não lê o comentário) Corrigido A abertura da skill e a parte "Publish" apontam para a seção "Revisão de conformidade" do AGENTS.md, sem repetir as regras
3 baixa Na implement-spec, "fix all issues" contradiz a triagem da skill, e o "siga para o full" da skill seria lido a cada ticket Corrigido O passo 7 da implement-spec diz que a sessão principal faz a triagem de cada ticket, que o implementador corrige só os achados aceitos e que o full vem depois de todos; o passo 6 da skill diz o mesmo
Relatório do revisor, na íntegra

Achados

# Severidade Onde Achado Direção da correção
1 média /home/argen/ti/fullcycle-events/techweekia/techweekia16-live-revisao/scripts/test/verify-review.test.sh:92-105 O critério 13 pede que o teste cubra os argumentos, mas faltam três casos. Nenhum teste passa um <ticket> inválido com um <pai> válido (como review PROJ-1 ticket). O único caso de regex recusada é o de <pai> inválido (review pai PROJ-2). Também não há teste com três argumentos. Se alguém tirar && "$2" =~ ... da condição em scripts/verify.sh:665, a suíte continua passando, e um <ticket> arbitrário chega a run_review e vira caminho em docs/tickets/<pai>/<ticket>. Acrescentar os casos review PROJ-1 ticket e review PROJ-1 PROJ-2 extra, os dois esperando código 2 e a mensagem com as duas formas do comando.
2 baixa /home/argen/ti/fullcycle-events/techweekia/techweekia16-live-revisao/.claude/skills/revisao-conformidade/SKILL.md:6, :8, :54 O critério 1 deixa a regra no AGENTS.md e manda para a skill só o passo a passo. Mesmo assim, a skill repete regras que agora são do AGENTS.md (seção "Revisão de conformidade", linhas 170 e 172): "Who wrote the code is not who checks it", "The review does not block... the user's decision at merge" e "the CI does not read it". Pelo REVIEW.md, item 4, isso é texto que repete outro documento em vez de apontar para ele, e as duas cópias podem divergir. Trocar essas frases na skill por um ponteiro para a seção "Revisão de conformidade" do AGENTS.md da raiz.
3 baixa /home/argen/ti/fullcycle-events/techweekia/techweekia16-live-revisao/.claude/skills/implement-spec/SKILL.md:36 O passo 7 manda o agente chamar revisao-conformidade uma vez por ticket e diz "Fix all issues raised by ... the conformance review". O critério 10 e o passo 5 da skill são outra coisa: o agente decide cada achado, pode deixar sem correção aquele de que discorda, e para e pergunta ao usuário antes de deixar sem correção um de severidade alta. Há ainda um conflito de ordem: o passo 6 da skill ("Go on to the full") seria lido ao fim de cada chamada por ticket, antes de os outros tickets serem revisados. Na implement-spec, então, a triagem do critério 10 fica ambígua: não está claro se tudo é corrigido sem decisão nem quem preenche a situação e o motivo de cada linha do revisao.md. Na implement-spec, dizer que a sessão principal faz a triagem de cada ticket, conforme o passo 5 da skill, que o subagente corrige só os achados aceitos e que o full vem depois de todos os tickets.

O que não consegui conferir

  • Não rodei o scripts/test/verify-review.test.sh nem o scripts/verify.sh review. Que a suíte passa e que o diff com índice temporário (git read-tree HEAD + git add -A) traz exatamente o que a branch mudou no repositório real, e em tempo aceitável, conferi só pela leitura do código e das asserções.
  • Não confirmei na prática os comandos da parte "Publish" (gh pr comment --body-file, a busca por startswith(... "\n") no --jq e o gh api -X PATCH ... -F body=@arquivo) contra um PR real.
  • Os critérios 8, 9 e 11 falam das partes "Revisar" e "Publicar", e a skill usa as seções "Review" e "Publish". Li isso como tradução, porque as outras skills do repositório, inclusive a plan-ticket, são escritas em inglês. Se os nomes deviam ser literais, o critério não foi cumprido.
  • O critério 5 exige o contêiner api, e o código o exige (require_container api em scripts/verify.sh:525). A suíte usa um docker falso que sempre passa, então o caso do contêiner fora do ar não é testado. O critério 13 não pede esse caso.
  • Mudança sem ticket e sem commit de plano: não consultei o Linear, não houve critérios com ID para comparar com um arquivo de aceite, e o desvio do contrato ficou de fora. O diff não toca apps/api/openapi.json nem apps/api/prisma/schema.prisma.
  • Não verifiquei se o agents/openai.yaml com allow_implicit_invocation: true é de fato lido pelo agente da OpenAI. Conferi só que segue o formato dos outros openai.yaml do repositório.

@argentinaluiz
argentinaluiz merged commit fc6b74f into main Oct 15, 2026
1 of 3 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

An unresolved moderate finding remains, and the harness and skill changes warrant final human review.

1 open finding
What changed in this PR

Adds a dedicated conformance-review workflow and verify.sh review mode.

Changes:

  • Generates review diffs, plan messages, and contract-drift reports.
  • Adds harness tests for ticketed and unticketed reviews.
  • Introduces the revisao-conformidade skill and updates related guidance.
File Summary
scripts/​verify.sh Implements review mode; has an unresolved moderate criteria-validation finding and a Markdown-formatting nit.
scripts/​test/​verify-review.test.sh Adds tests for review input generation and validation.
REVIEW.md Updates criteria-source guidance.
AGENTS.md Delegates the workflow to the new skill.
.claude/​skills/​revisao-conformidade/​SKILL.md Documents review, triage, and publication.
.claude/​skills/​revisao-conformidade/​agents/​openai.yaml Registers skill metadata.
.claude/​skills/​implement/​SKILL.md Integrates conformance review into implementation.
.claude/​skills/​implement-spec/​SKILL.md Integrates reviews into specification implementation.
.claude/​agents/​revisor-conformidade.md Updates reviewer input instructions.

🧠 Review effort: Lite

Comment thread scripts/verify.sh
Comment on lines +511 to +513
[[ -f "$dir/criterios.md" ]] ||
abort "não há critérios para a revisão: $dir/criterios.md não existe." \
"escreva nele os critérios de aceite da mudança, antes de revisar, e rode \`scripts/verify.sh review sem-ticket $2\` de novo."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants