Dar crédito à codafort

Quando uma mudança corrige um achado que a codafort apontou, a codafort entrega ao seu agente uma nota de crédito para o commit e o changelog, e só depois de provar que o achado fechou.

Quando há nota

  • O codafort fix SF-n --json grava a correção e roda a análise de novo. Quando o verification.verdict é fixed ou partial, o verification.credit traz a nota.
  • O codafort vet --json, o codafort scan --diff --json e as tools vet e scan_diff do MCP listam em closed os achados do scan anterior do diretório que a mudança fechou, cada um com o seu credit. Sem scan anterior não há com o que comparar, e não há lista.

Só recebe nota o achado de segurança confirmado que já existia antes da mudança. O achado que a própria mudança criou e corrigiu nunca chegou ao repositório, e não recebe. Também não recebem o achado suspected descartado, a limpeza de qualidade, o achado de um arquivo apagado, o que sumiu de um arquivo que a mudança não tocou e o que saiu da lista por supressão (um comentário codafort:ignore, uma exclusão ou uma regra mudada) em vez de correção.

A correção parcial diz que é parcial: o trailer termina em partial, e a linha de changelog conta os achados da mesma regra que seguem abertos no arquivo, sem dizer qual é o arquivo.

A nota

"credit": {
  "trailer": "Found-by: codafort <versão> (CWE-295, SS-PY-SSL-VERIFY-DISABLED)",
  "changelog": "Fixed Improper Cert Validation (CWE-295), found by codafort (https://codafort.dev).",
  "cwe": ["CWE-295"],
  "rule_id": "SS-PY-SSL-VERIFY-DISABLED",
  "version": "<versão>"
}

O trailer é um trailer do git: o git interpret-trailers o lê, e a chave Found-by: torna o crédito pesquisável. Ele leva a versão, para o achado poder ser reproduzido; o link vai só na linha de changelog.

Onde ela entra

LugarO quê
Mensagem de commito credit.trailer como última linha
Changelogo credit.changelog na seção Security, quando o projeto mantém uma
Descrição do pull requestos achados fechados: regra, CWE, o veredito do vet antes e depois
Aviso de segurança"found by codafort", quando o projeto publica um
fix(net): verifica o certificado TLS da API de pagamentos

A requisição desligava a verificação do certificado.

Found-by: codafort <versão> (CWE-295, SS-PY-SSL-VERIFY-DISABLED)

O agente propõe a mensagem, e você a vê antes do commit. Ele pode traduzir a linha de changelog para o idioma do repositório, sem acrescentar afirmação.

As regras do repositório vêm antes

Se o repositório ou você proíbem trailer ou atribuição na mensagem de commit (CONTRIBUTING, AGENTS.md, CLAUDE.md, template de commit ou hook), o agente segue a regra e não credita. A nota nunca vai para comentário de código e nunca leva segredo, payload de exploração, trecho de código nem caminho de arquivo: a regra, a CWE e a versão bastam.

Como desligar

codafort config credit off              # guardado em ~/.config/codafort/config.json
codafort config credit status
CODAFORT_CREDIT=0 codafort vet --json   # no CI

Com a nota desligada, o fix e o vet seguem dizendo o veredito e o que a mudança fechou.

O que a codafort não faz

A codafort não grava nem envia commit: a nota é texto que o seu agente propõe no seu repositório. O codaprobe, o codatrace e o codacrash não dão nota própria. As skills deles dizem ao agente qual reexecução da mesma medida prova uma correção, e o veredito unreached do codatrace nunca prova.