Ir al contenido

Las dos barreras: frescura y riesgo

El flujo RDD exige pasar dos barreras secuenciales antes de afirmar conformidad. Ninguno sustituye al otro: una evidencia fresca con métricas fuera de umbral no es conforme, y unas métricas válidas sobre evidencia obsoleta tampoco.


Pregunta: ¿la evidencia firmada está al día respecto a froga.lock?

froga status compara los digests actuales de la tripleta (código, modelo, dataset) con los anclajes en froga.lock. Si cualquier digest ha divergido, la barrera de frescura falla:

Barrera de frescura en CI/CD
froga status # exit 0 → fresco; exit ≠ 0 → obsoleto

Esta barrera puede integrarse como condición necesaria en cualquier pipeline CI/CD. Su fallo no indica un problema de métricas; indica que el bundle firmado no describe el sistema que está en ejecución, lo que hace inválida cualquier afirmación de conformidad sobre él.

La lógica de la barrera de frescura se describe en detalle en Deriva tipada.


Pregunta: ¿pasan todos los controles blocking sus umbrales?

froga run ejecuta el pipeline, mide las métricas y evalúa cada control declarado en froga.yaml (ISO 23894 §6.4.4 — evaluación del riesgo vs apetito). Si algún control blocking supera su umbral, la barrera de riesgo falla con exit ≠ 0:

Barrera de riesgo
froga run # exit 0 → todos los controles blocking en verde

El bundle de evidencia se firma y ancla independientemente del resultado de la barrera: la evidencia del fallo también queda registrada, lo que permite trazar el arco empírico FALLA → PASA a través de los commits de tratamiento.

Los detalles de cómo un control define el estado rojo/verde están en El bucle rojo/verde.


froga status → barrera 1: ¿fresco?
↓ (exit 0)
froga run → barrera 2: ¿riesgo dentro del apetito?
↓ (exit 0)
froga conformance → proyección sobre catálogos ISO 23894 / prEN 18228

Ambas barreras deben estar verdes para que froga conformance emita una conformidad sin bloqueos. Una barrera roja —o un control INCONCLUSO/subpoderado— en cualquiera de los dos pasos interrumpe la cadena. En los demos públicos actuales esto NO ocurre: los siete sistemas quedan en GAP («Con brechas») por controles medidos honestamente (p.ej. la equidad de loan es INCONCLUSA, no verde). La conformidad limpia se reserva para sistemas con evidencia suficiente, no para los escenarios ilustrativos.


Los escenarios de demostración —loan, retina-screening y spine-segmentation— colapsan al mismo motor porque el motor no distingue entre tipos de tratamiento, solo entre estados de barrera:

EscenarioTipo de tratamientoMarco regulatorio
loan (crédito, EU AI Act Anexo III §5(b))Tratamiento del sesgo vía flag mitigate (params.yaml: false → true, fairlearn) → control de equidad INCONCLUSODORA
retina-screening (retina, SaMD MDR Clase IIa, EU AI Act Art.6(1))Mismo flag mitigate (false → true, reentrenar con clase balanceada + umbral 0.30) → barrera de sensibilidad recall_score > 0.80MDR
spine-segmentation (imagen médica, SaMD MDR Clase IIb, EU AI Act Art.6(1))Barrera medida de Dice (> 0.85) + supervisión humana HOTL (Art.14) sobre el peor subgrupoMDR

El campo frameworks en la evidencia firmada dirige la proyección a los catálogos de cláusulas correspondientes (froga conformance --standard eu/pren-18228@2026 / --standard iso/23894@2023). El mismo bundle se proyecta sobre marcos distintos.

Las modalidades de tratamiento (cambio de código / flag mitigate, supervisión humana HOTL, ajuste de prompt) se describen en Modalidades de tratamiento.


BarreraCláusula cubierta
Barrera 1 (frescura)EU AI Act Art. 9(1)(d) — supervisión continua; ISO 23894 §6.5 (evidencia del tratamiento)
Barrera 2 (riesgo)ISO 23894 §6.4.4 — evaluación vs apetito; EU AI Act Art. 9(2) — proporcionalidad de controles
froga conformance post-barrerasISO 23894 §6.4–§6.5 completo; prEN 18228 §9–§10; EU AI Act Art. 9 y Art. 11 (parcial)

Consulta la Referencia del CLI froga para los flags de froga status, froga run y froga conformance.