Schemas: los contratos publicados
Todo artefacto que emite codafort sigue un contrato público y versionado, cuyo $id apunta a esta página. Quien recibe un informe o una declaración contrafirmada valida el archivo contra el contrato, sin depender de quien lo generó.
Los contratos
El nombre coda-<modalidad>/1 dice el tipo de análisis; la herramienta que emitió el archivo va en el campo tool.
Declaración contrafirmada (Ed25519) sobre el resultado de un scan, con la evidencia de cada análisis en
evidence[] y los artefactos en artifacts[] (formato in-toto).
coda-finding/1El Finding canónico, común al análisis de código (src) y al de ejecución (run). coda-fort/1
Envelope del análisis de código fuente. coda-dast/1
Envelope DAST (app viva, desde fuera). coda-iast/1
Informe IAST: qué findings estáticos confirmó la ejecución y cuáles no midió. coda-vet/1
Veredicto de
vet sobre un cambio (código generado por IA), con los ejes que corrieron y los que no.
coda-crash/1Análisis de crash, heap y
hs_err de codacrash; el campo kind dice cuál.
coda-profile/1Perfil de rendimiento de codacrash. codafort-interaction/1
El uso de codafort por un agente en un repositorio conectado a la plataforma.
Ejemplos capturados de ejecuciones reales en /schemas/fixtures/. Cómo se enlazan los artefactos: La cadena de evidencia.
Versionado
Un campo nuevo es opcional y solo aparece cuando se usa. Un cambio incompatible pasa a ser una etiqueta nueva (/2). Un artefacto firmado nunca se vuelve a firmar: los tokens ya emitidos siguen siendo verificables, incluidos los del formato antiguo codafort-attestation/1.
Lo que estos artefactos no prueban
Una declaración contrafirmada prueba la integridad y la autoría del resultado, no la ausencia de vulnerabilidades. artifacts[] lo declara quien emite y no prueba el vínculo entre build y fuente (eso es provenance de build, SLSA L2+). El informe dice lo que no se midió (unreached, axes_skipped), y no medido nunca significa seguro. La verificación (/verify, offline) es gratis para cualquier parte, para siempre.