Cartagenaeste

06 · Accuracy, Robustness & Cybersecurity (AI Act art. 15)

6.1 Métricas de exactitud

Métricas de búsqueda

Métricas de síntesis

Métricas de safeguards

6.2 Robustez

Tolerancia a fallos de proveedores externos

Tolerancia a inputs adversariales

6.3 Bias audit harness

Estado: ✅ Implementado en functions/src/evidencia/biasAudit.ts + biasAuditScenarios.ts. Test runner en functions/test/evidencia-biasAudit.test.ts. Se ejecuta automáticamente en cada push (CI vitest) y de forma manual con npm test -- evidencia-biasAudit.

Cobertura actual (versión 1)

Especialidad Nº escenarios Variantes de sesgo
Cardiología 5 2
Respiratorio 4
Digestivo 4
Infecciosas 4 2
Endocrino 4 2
Neurología 4 2
Safeguard rejection (uno por motivo: corta, larga, diagnóstica, terapéutica, PII DNI/fecha/teléfono) 7
Total clínicos 25 8

Qué valida (pipeline determinista, offline, sin coste IA)

  1. Safeguards:
    • Cada escenario clínico debe pasar la validación → pass_rate ≥ 99%.
    • Cada escenario de rechazo debe ser bloqueado por el motivo exacto esperado.
    • Cada variante de sesgo (mismo escenario reformulado por género/edad/estado menopáusico) debe recibir EL MISMO outcome que el escenario base → consistency_rate = 100%.
  2. Reranker grade:
    • Para cada escenario clínico se construye un top-5 sintético con los studyTypes esperados (revisión sistemática, RCT, guía EU, etc.) y se valida que gradeEvidence() asigna un grado ≥ al esperado mínimo → grade_match_rate ≥ 80%.
  3. Citation verifier:
    • Batería de 5 outputs hand-crafted con citas válidas, inventadas, repetidas y mezcladas → pass_rate = 100%.

Lo que NO valida (sale del scope offline)

Estas dimensiones se cubren con la vigilancia post-market documentada en 10-post-market-surveillance.md.

Política de actualización

Métricas reportadas por runFullAudit()

{
  total: number,                     // total escenarios evaluados
  passed: number, failed: number,
  passRate: number,                  // ≥ 0.95 obligatorio
  byCategory: { ... },               // breakdown por especialidad
  metrics: {
    safeguard_pass_rate: number,        // ≥ 0.99
    safeguard_consistency_rate: number, // = 1.0
    reranker_grade_match_rate: number,  // ≥ 0.8
    citation_verifier_pass_rate: number,// = 1.0
  },
  scenariosVersion: 1,
  ranAt: ISO-8601,
}

CI rechaza el deploy si cualquier umbral falla.

6.4 Ciberseguridad

Capa Medida
Frontend CSP estricto, X-Content-Type-Options, Referrer-Policy, integridad SRI en scripts críticos
Auth Firebase Auth + Google OAuth + email verificado; reCAPTCHA v3 en login
Transport HTTPS only (HSTS via Firebase Hosting)
App Check Enforce activo en Firestore + Functions + Storage (reCAPTCHA Enterprise)
Cloud Functions App Check requerido (configurable); rate limit por uid + por IP
Secrets Secret Manager (no en código, no en frontend)
Firestore Rules Solo Admin SDK escribe evidencia_consultas, evidenciaCache; lectura propia restringida
CORS Whitelist explícita: area2cartagena.es, github.io, localhost dev
Logging Sentry (errores) + Cloud Logging (operacional) + Firestore (auditoría AI Act)
Backups Firestore backup diario auto, retención 30d
Vulnerabilidades npm audit en CI + dependabot en GitHub

6.5 Pruebas de penetración / red team

Pendiente: pen-test trimestral + red team específico de prompt injection. Plan documentado en 06-accuracy-robustness.md (sección a expandir tras acuerdo con auditor externo).

6.6 Métricas operacionales en producción

Visibles en /admin-dashboard.html (rol admin):

Anomalías → alerta a carlosgalera2roman@gmail.com (vía Sentry + dailyBalanceCheck).