Inicio/Blog/Procedencia de PRs de IA
Software Supply Chain

Procedencia de software supply chain para pull requests generados con IA

Un artefacto firmado prueba qué workflow construyó un commit. Por sí solo no explica por qué un agente creó ese commit, qué autoridad inició la tarea, qué tools influyeron el diff o qué humano aceptó el resultado.

La IA agrega una etapa de origen antes de la procedencia tradicional de build

SLSA define procedencia como información verificable sobre dónde, cuándo y cómo un artefacto fue producido. Artifact attestations de GitHub conectan artefacto con repositorio, commit SHA, workflow y entorno de build. Esos controles son esenciales, pero un PR generado con IA agrega otra pregunta: ¿cómo se produjo el cambio de source?

La respuesta no debe ser una etiqueta vaga “AI-assisted”. Un registro útil conecta tarea aprobada, principal responsable, identidad del agente, modelo y tools, contexto recuperado, archivos generados, intentos, pruebas, reviews y commit final. La procedencia de build continúa la cadena hasta el artefacto.

Cadena de procedencia del PR generado con IA
01 IntenciónTarea aprobadaSpec, owner, riesgo, repositorios, tools y criterios permitidos.
02 GeneraciónRegistro del agenteIdentidad, modelo, tools, fuentes, permisos, prompts y sesión.
03 CambioDiff generadoArchivos, dependencias, migraciones, pruebas, manifest y commit.
04 ReviewDecisión humanaReviewers, findings, excepciones, aprobaciones y resultado de branch.
05 BuildBuilder confiableWorkflow, source SHA, materiales, parámetros, aislamiento y resultado.
06 DescripciónSBOM y attestationsComponentes, licencias, vulnerabilidades, procedencia, pruebas y políticas.
07 FirmaArtefacto verificableDigest, firma por identidad, certificado, transparencia y registry.
08 DeployLinaje runtimeEntorno, aprobación, digest, política, owner y rollback.

El código generado necesita manifest, no estigma

Las etiquetas de IA deben ayudar review e incident response, no crear un falso binario entre “código humano” y “código de IA”. Los humanos usan autocomplete, clientes generados, migrations, templates y agentes en el mismo PR. Registra qué archivos o hunks fueron generados o transformados, qué sistema lo hizo y qué humano asumió responsabilidad.

El manifest también captura dependencias y contexto externo introducidos. Si el código copió un patrón inseguro de documentación o agregó paquete comprometido, investigadores necesitan reconstruir la influencia sin guardar prompts sensibles para siempre.

Atribución¿Qué principal, agente, reviewer, builder y deployer fueron responsables?
Integridad¿Source revisado, artefacto, SBOM, firma y digest desplegado quedaron ligados?
Reproducibilidad¿Build y contexto importante pueden reconstruirse o compararse?
Política¿Admission verifica procedencia, firmas, componentes, reviews y excepciones?

SBOM y procedencia responden preguntas diferentes

SBOM describe componentes. Procedencia describe cómo se produjo un artefacto. Firma liga identidad a digest o attestation. Review explica por qué source fue aceptado. Deployment metadata dice dónde corre. Ninguno sustituye a los demás.

GitHub genera attestations de build y SBOM. Sigstore soporta firma basada en identidad con certificados cortos, y Cosign verifica attestations in-toto contra políticas. Así, el gate pregunta no solo “¿esta imagen está firmada?”, sino “¿este digest vino del commit aprobado, por workflow permitido, con SBOM y review exigidos?”

EvidenciaQué pruebaQué no pruebaGate de verificación
Registro de tareaPor qué comenzó, quién delegó y qué podía hacer el agente.Que el código es correcto o seguro.Exigir tarea aprobada, permisos limitados y owner.
Manifest de código generadoQué superficies y tools involucraron generación.Que toda influencia es conocida.Exigir disclosure en archivos y dependencias de alto riesgo.
Review del PRQué humanos y checks aceptaron source.Que el artefacto posterior coincide con source.Protected branches, required checks, CODEOWNERS y excepciones.
Procedencia SLSADónde, cuándo y cómo se construyó el artefacto.Por qué source fue creado o aprobado.Verificar builder, source SHA, parámetros y digest.
Attestation SBOMQué componentes declarados están en el artefacto.Que los componentes sean seguros o completos.Licencia, vulnerabilidad, política y allowlist.
Firma y deploymentIdentidad ligada al artefacto y dónde se desplegó.Que runtime siga seguro.Admission policy, digest pinning, aprobación y monitoreo.

La política debe verificar la cadena al promover

Evidencia que nadie verifica es documentación, no control. Reglas de PR exigen evidencia de source. Builders confiables emiten procedencia y SBOM. Registries preservan digests y firmas. Admission rechaza artefactos sin cadena aprobada o con excepciones vencidas.

La verificación también necesita failure modes. Si storage de procedencia cae, ¿producción para? ¿Qué ruta de emergencia existe? ¿Quién aprueba, por cuánto tiempo y qué evidencia se completa después? La ruta de excepción forma parte de la supply chain.

Lo que yo construiría

Construiría un ledger de procedencia indexado por PR, commit y artifact digest. Uniría tarea y agente, manifest, reviews, checks, SBOM, SLSA, firmas, storage, deployments e incidentes runtime.

La vista principal respondería en ambos sentidos: desde artefacto en producción, volver a tarea y sesión del agente; desde agente o tool comprometida, encontrar todos los PRs, artefactos y deployments afectados.

El principio de diseño

La generación con IA no debilita el valor de la procedencia; extiende la cadena que debe probarse. Preserva intención y evidencia de generación antes del commit, luego usa builds confiables, SBOMs, attestations, firmas y deployments para mantener esa evidencia ligada a producción.