Pular para conteúdo

AUR-523: corpus multilinguagem mede o recall do gate real

Card: .board/cards/backlog/AUR-523.md. Estende o benchmark do AUR-511 (docs/benchmark.md).

Contrato

  • AC-001: o harness compila e executa o binário real; veredito e achados vêm do registro de auditoria e do SARIF que ele escreve. O controle de proveniência (CheckOutputProvenance) entrega ao binário uma fixture que acusa um achado em arquivo fora do diff; o binário o descarta. Um leitor fiel ao binário vê 0 achados; um leitor de fixture vê 1 e a checagem falha. MUT-001 troca o leitor por ReadFixture e exige essa falha.
  • AC-002: corpus em tests/benchmark/testdata/multilang com 8 linguagens, defeitos rotulados (arquivo, linha, regra) e casos limpos; manifest.json com sha256 por caso e do conjunto; VerifyMLCorpus recusa divergência.
  • AC-003: relatório por linguagem (JSON e Markdown) em tests/benchmark/out com recall, precisão, Wilson 95% e "aprovado com defeito presente".
  • AC-004: o relatório não contém data, caminho nem duração e grava corpus_sha256 e policy_sha256; duas rodadas e o arquivo versionado são idênticos byte a byte.

Decisões

  • Provider fake: fixture derivada do rótulo; simulated_model (hit, miss, silent, false_alarm) é dado do caso. É prova do harness, não nota de modelo.
  • Aprovado = saída 0 e gate.decision == "pass" no registro de auditoria.
  • Detecção = achado no arquivo do defeito, até 2 linhas, com a mesma classe de regra (id depois de # ou /). Outra classe no mesmo lugar é ruído. Achados de mesma classe e linha vindos de duas origens contam uma vez.
  • O repositório de cada caso é construído em objetos git soltos (base com só o README, head com o arquivo), sem precisar do binário git.
  • A política vem de diretório fora do repositório do caso (regra do AUR-518).

Fora de escopo

Comparação com produtos hospedados; modelo pago no CI; rodada com modelo real.

Observação sobre o gate

A análise estática embutida (analysis/*) acha SQL injection em Java e Python mesmo quando o modelo falso se cala, mas o gate de política só reprova achados de seção de skill da política; o caso fica "aprovado com defeito presente".