audit-grounding
audit-grounding é a auditoria para o modo de falha que
nenhum formatter, linter ou type checker pega: um agent (ou um humano
apressado) que inventa uma convenção do time que ninguém combinou, ou
afirma um fato de domínio que não é verdade. O código compila, formata
e passa no linter — e mesmo assim está errado quanto ao que o time
decidiu. A única coisa capaz de julgar isso é um leitor segurando a
fonte de verdade do projeto em uma mão e o diff na outra.
A auditoria é signal-only. Ela nunca bloqueia um commit, uma tarefa ou um merge. Ela reporta divergências e deixa a decisão com o humano.
Por que grounding semântico precisa da sua própria auditoria
As outras auditorias — audit-security, audit-money, audit-tenant
— procuram modos de falha que têm uma assinatura sintática: um filtro
de tenant faltando, um float onde deviam ser centavos, um webhook não
assinado. audit-grounding procura falhas que não têm assinatura
sintática nenhuma:
- Um novo enum de status chamado
archivedquando todos os models existentes e o glossário chamam esse estado deinactive— uma convenção inventada. - Um comentário afirmando “reembolsos liquidam em 24h” quando o ADR relevante registra 72h — um fato de domínio sem suporte.
Nenhum dos dois dispara um linter. Ambos são exatamente o tipo de drift plausível que um LLM produz quando preenche uma lacuna em vez de consultar o que o time já escreveu.
Os dois findings
invented-convention— um padrão de nomenclatura, pasta, campo ou estrutura que o diff introduz e que não está ancorado noCONTEXT.mdnem em um ADR, e nunca foi combinado. O finding cita a localização no diff e a fonte que ele deveria ter casado.unsupported-domain-fact— uma afirmação sobre o domínio ou o negócio (em código, comentários ou docs tocadas) que contradiz ou está ausente das decisões de registro.
A fonte de verdade
A auditoria lê, nesta ordem, e degrada graciosamente quando um artefato está ausente:
CONTEXT.md— o glossário de domínio e o vocabulário do time; a referência primária para convenções inventadas.docs/adr/— decisões de registro; a referência primária para fatos de domínio sem suporte.knowledge/— fatos acumulados que o time escolheu preservar.CLAUDE.mdpor módulo — convenções locais aos diretórios que o diff toca.
Quando o CONTEXT.md está ausente, a auditoria recorre aos ADRs e à
base de knowledge e reporta o grounding parcial como uma nota
ℹ info — para o time saber que a verificação rodou em terreno
incompleto, em vez de assumir que não tinha nada a dizer.
Por que signal-only, nunca bloqueia
O veredito vem de uma leitura probabilística de documentos em prosa,
não de uma regra determinística. Um gate que bloqueia, construído
sobre um veredito não confiável, é pior que o problema que resolve —
ele treina as pessoas a burlá-lo. Então audit-grounding limita suas
severidades a ⚠ warn / ℹ info e não emite tier de bloqueio. A
camada determinística e bloqueante — formatter, type check, secret
scan — já vem no bundle guardrails e roda
no commit. Esta auditoria é o complemento semântico daquele piso
sintático.
Como ela roda
Por padrão, o Stop hook grounding-check a dispara ao fim de toda
tarefa do agent com um diff não commitado e roteia a revisão para a
fila .octopus/proposals/ para o /octopus:review-proposals. O
gatilho é determinístico — dispara sempre, ninguém precisa lembrar —
enquanto o julgamento permanece probabilístico e não-bloqueante. Um
revisor também pode invocar a auditoria diretamente antes do merge.