AUR-470: contexto recuperado explica impacto da mudança em outros arquivos
Absorve o legado AUR-470/526 (contexto por arquivo alterado).
Medido antes (leitura, base d8af13b2)
internal/context.Resolverjá usava as gramáticas do AUR-522 para símbolos e imports e devolviaReferences(arquivo, símbolo, linha) eDependents, mas nenhum trecho: o modelo via só queCaller.java:6referenciapriceOf, não a linha. O comentário do pacote ainda dizia "regexes over import statements" (stale desde o AUR-522).- O resolvedor não conhecia
ignorenem arquivos de segredo: um arquivo ignorado podia virar dependente; links simbólicos já eram pulados.
Decisão
Pack.Snippets(snippets.go): para cada referência (um por arquivo e linha), um trecho numerado de 2 linhas antes e depois, linha cortada em 240 bytes, rotuladousoouteste(detector de teste doanalyzer.LanguageDetector, por nome e diretório, sem lista de linguagem); ordem por arquivo e linha; teto de 24 trechos com a omissão emDropped. Um trecho não tem severidade, veredito nem regra: é contexto (AC-004); nada no engine transforma referência em achado.Resolver.WithExclude: caminho excluído nunca é lido, referenciado nem recortado, e a omissão é declarada.cmd/aurumcodepassaignore+ catálogo de segredo (codebaseExclude) no--base(resolveCodebaseContext), no--pr(o conjunto verificado filtrado porincludedFiles) e na ferramentacodebase_contextda deliberação.- O texto continua passando pela redação do prompt (
CodebaseContexté redigido emReviewer.preparePrompt). Nada de índice remoto nem embedding.
Como cada AC/MUT é provado (tests/acceptance/AUR-470.sh)
- AC-001:
TestAUR470CallerExcerptWithFileAndLine(contrato Java alterado, chamador não atualizado: trechoCaller.java:6com linhas numeradas; o teste rotuladoteste); o achado continua ancorado no diff pelo gate de escopo (AUR-526 AC-001). - AC-002:
TestAUR470ExcludedFilesAndSymlinksNeverEnter. - AC-003:
TestAUR470StableOrderAndDeclaredOmissions(duas resoluções iguais, ordem por arquivo/linha, teto declarado). - AC-004:
TestAUR470CompatibleCallerIsContextNotADefect. - MUT-001: a exclusão de
keepIncludedé desligada; o arquivo ignorado entra nas referências eTestAUR470ExcludedFilesAndSymlinksNeverEnterfica vermelho.
Documentação stale corrigida
internal/context/doc.go: "regexes over import statements" (substituído pelas gramáticas desde o AUR-522).docs/configuration.md: descrição decodebase_contextsem trechos nem exclusões.- As capturas de tutorial que mostram o JSON do contexto ganham o campo
snippets; a regravação fica para o fluxo final.
Correção da revisão estática
Confirmado pela leitura: o JSON do contexto (com snippets) vai ao prompt
por ReviewContext.CodebaseContext, redigido em Reviewer.preparePrompt
(r.filter.Redact); pela ferramenta codebase_context, o resultado passa
por Session.Redact (o mesmo filtro). Prova nova:
TestAUR470SnippetsAreRedactedBeforeTheModel (canário montado em tempo de
execução numa linha do chamador; o prompt capturado não o contém e contém
o trecho).