O canal com a Platform

codafort platform entrega os resultados da análise, da máquina do dev ou do CI, à codafort Platform. Nada sai sem você ligar o canal.

Na Platform ficam a fila por organização, o estado de cada finding entre execuções e o placar antes/depois.

Estado (setembro de 2026): a Platform roda como piloto provisionado por nós; o SaaS em app.codafort.com ainda não está no ar. Apontado para lá, o push não entrega: na sua máquina o envelope fica na fila; no CI, o passo reprova. Para um piloto, use a URL que você recebeu (--url ou CODAFORT_PLATFORM_URL).

Ligar, entregar, desligar

codafort platform login              # abre o navegador; você aprova este computador na Platform
codafort platform connect            # liga ESTE repositório à sua organização
codafort engine analyze --source . --git --format json --output envelope.json
codafort platform push envelope.json # entrega (ou deixa na fila, se a Platform não responder)
codafort platform status             # sessão, repositório ligado e quantos envios na fila
codafort platform disconnect         # desliga o repositório e DESCARTA a fila
codafort platform logout             # revoga a sessão e apaga a credencial

O login usa o fluxo de autorização de dispositivo (RFC 8628): o terminal mostra um código, você o confirma logado na Platform, e a sessão criada só entrega evidência e lê work orders.

O que sai, e quando

  • push de um coda-fort/1: o nome do repositório, a branch, o commit e só os artefatos que a Platform lê, que são issues (cada finding com regra, severidade, mensagem e o trecho de código onde está), dependencies e files. O resto do envelope fica na máquina. Com --with-graph, vai também o grafo do código que a tela de grafo desenha. Caminho absoluto não sai: tudo é relativizado à raiz do repositório, e o envio é recusado se sobrar algum.
  • push de outra modalidade (coda-dast/1, coda-iast/1, coda-crash/1…): o envelope como o emissor o escreveu.
  • Depois do connect: um registro de uso por comando do codafort neste repositório, com o verbo, o digest SHA-256 dos argumentos, quantos findings foram tocados e a duração. Quando o agente propõe dispensar um finding, vai também a proposta: o hash do finding, o tipo e o motivo que ele escreveu, com até 500 caracteres. Nenhum caminho de arquivo e nenhum código.
  • Sem login (ou sem token no CI), o push não tem com quem falar. Sem connect, ou depois do disconnect, nenhum registro de uso é gravado. O connect também amarra o repositório à organização: um push com a sessão de outra organização é recusado antes de sair.

No CI

export CODAFORT_PLATFORM_TOKEN=…   # token de ingestão da organização: só escreve, não lê nem decide
export CODAFORT_PLATFORM_URL=https://…
codafort platform push envelope.json

Com o token no ambiente, o push entrega como máquina, sem login. Se a Platform não receber, o comando reprova. No CI não há fila: ela se perderia junto com o runner, e o passo ficaria verde sem entrega.

Sem rede (air-gapped)

O build air-gapped não tem o canal: os verbos de codafort platform existem e respondem que não há canal.