Pular para conteúdo

AUR-453 — Sugestões e resumo chegam completos ao terminal e ao PR

Documento histórico do board. Pode descrever componentes removidos; para uso atual, consulte o guia do produto.

O defeito medido

O caminho aurumcode review --base <ref> reconstruído pelo AUR-490 já imprime o resumo determinístico e o diagrama Mermaid, e o caminho --pr já publica as sugestões elegíveis como substituição nativa do GitHub (nativeSuggestionComment). O que faltava era o terminal do --base: ele imprimia resumo, diagrama e achados, mas nenhuma sugestão. Um usuário que nunca abre um pull request recebia o resumo incompleto: as sugestões do modelo existiam no resultado da revisão e simplesmente não chegavam ao stdout.

O que este card entrega

  • O relatório local do --base passa a mostrar a seção de sugestões (renderSuggestions, cmd/aurumcode/passes.go) depois do resumo/diagrama e antes do changelog/achados.
  • Cada sugestão é classificada pelo mesmo critério do PR (applicableSuggestionRange, que reutiliza suggestionRange e isInlineEligible): uma substituição só é aplicável quando todo o intervalo cai em linhas que o diff adicionou.
  • Uma sugestão sem localização, com faixa fora do diff, com faixa inconsistente ou sem código proposto é exibida como orientação e marcada como não aplicável — nunca vira uma substituição com aparência de "1 clique". A mensagem explica a limitação e nada é aplicado ou commitado automaticamente.
  • --pr continua publicando a substituição nativa com arquivo, faixa, código atual e proposto, e preserva a redação de segredos e a escolha de idioma do consumidor.

Compatibilidade

O comportamento é aditivo:

  • Zero sugestões: nenhuma seção é impressa, então o stdout de uma revisão sem sugestões permanece byte-idêntico ao já publicado (AUR-490).
  • Revisão de qualidade pulada ou falha: o resultado é o zero ReviewResult, sem sugestões, então nada novo aparece — a seção de achados determinísticos segue como antes (AUR-449/AUR-458).
  • O caminho --pr não é alterado por este card: ele já publicava a sugestão nativa; o terminal passa a compartilhar a mesma definição de elegibilidade.

Exit codes

Inalterados: 0 (revisão rodou), 1 (falha de revisão), 2 (erro de uso), 3 (--fail-on fechou). Sugestões não são achados e nunca mudam o código de saída.

Acceptance

./.board/bin/oci-run --profile go-unit-offline-v1 --card AUR-453 executa as asserções reais do pacote cmd/aurumcode:

  • TestAUR453TerminalSummaryAndSuggestion (AC-001 terminal): resumo e sugestão elegível chegam ao stdout com arquivo, faixa, código atual e proposto.
  • TestAUR453TerminalIneligibleSuggestion (AC-002 terminal): sugestão fora do diff ou sem código proposto é exibida com a limitação declarada, sem substituição aplicável.
  • TestAUR453FormalReviewCarriesSuggestion (AC-001 PR): o review formal carrega a sugestão nativa com arquivo, faixa e código proposto.
  • TestAUR453RedactionAndConsumerChoice (AC-003): a escolha de idioma do consumidor é preservada e um segredo canário é redigido antes da publicação.
  • TestAUR453NoSuggestionIsUnchanged (AC-003): revisão sem sugestões não ganha seção vazia.

Skeptical mutations

  • MUT-001: substituir a chamada renderSuggestions(result, diff, reviewLanguage) do terminal por uma string vazia suprime uma sugestão elegível e faz o cenário AC-001 falhar (tests/acceptance/AUR-453.sh AC-001-MUT-001). A mutação compila de propósito: falha de compilação nunca é evidência RED. A fonte versionada não é tocada: a mutação roda sobre uma cópia gravável no diretório de scratch.