Repository navigation
Open
Labels
status:needs-reviewAwaiting product review by the repository ownerAwaiting product review by the repository ownertype:bugBug fixBug fix
Description
Problema
scripts/security/code-safety.mjs scan falla de forma intermitente en GitHub Actions. Termina con exit 2 y solo imprime code-safety-failed, sin indicar qué falló. Al relanzar el mismo commit sin cambios, pasa.
Evidencia
Consumidor: egdev6/cadencia, workflow Code safety (.github/workflows/code-safety.yml), TRUSTED_BASELINE 176ae636fdd80ce60d6fffec188ce558c5f6692b, ubuntu-24.04.
El 2026-11-13, 8 de 12 ejecuciones fallaron al primer intento. Todas eran commits que solo tocaban docs o tests, y cada falla relanzada pasó:
| Run | Evento | Resultado |
|---|---|---|
| 43471452145 | workflow_dispatch main | falla |
| 43479115736 | PR fix/ci-runner-baseline | falla → pasa en el intento 2 |
| 43483179689 | PR fix/07-contract-closure | falla → pasa en el intento 2 |
| 43485117633 | push main | falla |
| 43487463944 | PR docs/14-v3a-evidence | falla → pasa en el intento 2 |
| 43488758867 | push main | falla → pasa en el intento 2 |
| 43493315598 | push main | falla |
| 43493995633 | PR docs/14-criteria-revision | falla → reintento en curso |
Lo que se ve en el log de las corridas que fallan (paso Analyze inert Git blobs offline):
- Ni stderr ni el resumen del job dicen qué falló: solo
code-safety-failedyProcess completed with exit code 2. - Fallan a los ~2m14s; las que pasan tardan entre 2m21s y 2m38s e imprimen el JSON de semgrep (
"status":"completed"). Parece que el error ocurre al final del análisis o en la etapa de resultados, no en un timeout global. - No se sube ningún artefacto con el detalle.
Propuesta
- Que ante cualquier fallo el script imprima en stderr y en
$GITHUB_STEP_SUMMARYla etapa que falló (provision, semgrep, comparación de resultados u otra), el error sanitizado, el código de salida de la herramienta interna y, si los hay, los hallazgos que bloquean. Sin rutas privadas ni secretos. - Distinguir «hallazgo bloqueante» (fallo legítimo, determinista) de «error de infraestructura o de herramienta» (con un código de salida distinto), para que el consumidor sepa si relanzar tiene sentido.
- Con ese diagnóstico, encontrar la causa raíz de la intermitencia y corregirla: sin reintentos automáticos que la oculten y sin relajar reglas.
Criterios de aceptación
- Una falla de
code-safety.mjs scaninforma la etapa y el motivo en el log y en el resumen del job. - Hallazgos y errores de infraestructura usan códigos de salida distintos y documentados.
- Causa de la intermitencia identificada y corregida, o documentada con evidencia si es externa.
- El mismo commit da el mismo resultado en ejecuciones repetidas.
Metadata
Metadata
Assignees
Labels
status:needs-reviewAwaiting product review by the repository ownerAwaiting product review by the repository ownertype:bugBug fixBug fix
Activity