AssuranceProgram / OSCAL
✅ Estable
El AssuranceProgram es la fuente declarativa del sistema de gestión de riesgos Art. 9 del EU AI Act: contiene los riesgos del sistema, las medidas de control, la evaluación y la residualidad. Es lo que sei compile transforma en el assessment_plan.oscal.yaml — el contrato del gate de riesgo.
El AssuranceProgram no es un fichero separado: es la sección risk del manifiesto sei.yaml (junto con context.applicable_standards y system.potential_misuses). Un repositorio gobierna un solo sistema con un único sei.yaml. sei compile lee la sección risk directamente del manifiesto:
context: applicable_standards: # estándares aplicables (el primero, prioritario) - eu/pren-18228@2026 - iso/23894@2023risk: # programa de aseguramiento Art.9 (sei compile lo lee de aquí) appetite: { individual: MEDIUM, society: MEDIUM, organization: HIGH } criteria: { scale: "5x5" } overall_residual_criterion: HIGH risks: [ ... ] applicability: {}Ver referencia/sei-yaml para la especificación completa del manifiesto.
Estructura de la sección risk
Sección titulada «Estructura de la sección risk»La sección risk de sei.yaml tiene el siguiente esqueleto de primer nivel:
risk: appetite: # apetito por dimensión de impacto (umbral de evaluación 6.4.4) individual: MEDIUM society: MEDIUM organization: HIGH criteria: { scale: "5x5" } # escala de la matriz de análisis overall_residual_criterion: HIGH # criterio del residual GLOBAL (prEN 18228 cl. 10) risks: # riesgos concretos con su tratamiento y sus measures applicability: {} # Declaración de Aplicabilidad de controlesEl marco regulatorio se declara fuera de risk, en context.applicable_standards; el mal uso previsible, en system.potential_misuses. Ver referencia/sei-yaml.
context.applicable_standards
Sección titulada «context.applicable_standards»Los ids canónicos de estándares que sei conformance admite con catálogo:
| Id canónico | Estándar |
|---|---|
eu/pren-18228@2026 | prEN 18228 — gestión de riesgos de IA (Art. 9) |
iso/23894@2023 | ISO/IEC 23894 — gestión de riesgos de IA |
Anatomía de un riesgo
Sección titulada «Anatomía de un riesgo»Cada entrada de risk.risks sigue esta estructura (campos reales del manifiesto loan/sei.yaml):
risk: risks: - id: risk.unfair-credit-exclusion title: "Unfair Credit Exclusion of Minorities" impact: individual: HIGH society: HIGH organization: HIGH likelihood: LIKELY # análisis ISO 6.4.3 — inherente LIKELY×HIGH = HIGH treat: - method: REDUCE action: "Acotar la paridad demográfica de la decisión y el balance de clase por grupo." controls: [eu/ai-act@2024#art-15] residual_likelihood: UNLIKELY # objetivo 6.5: confirmado por el control bloqueante measures: - id: unfair-credit-exclusion metric: demographic_parity_diff constraint: "< 0.03" severity: high enforcement: gate # gate → bloqueante; audit → advisory lifecycle: [validation] article: "15" frameworks: [eu/dora@2022#art-6] control_tier: protective standard_clauses: - "eu/pren-18228@2026#9.2" - "eu/pren-18228@2026#7" - "iso/23894@2023#6.5" inputs: { prediction: prediction, dimension: gender }Campos del riesgo
Sección titulada «Campos del riesgo»| Campo | Descripción |
|---|---|
id | Identificador único del riesgo; sei reconstruct lo traza por git log -S |
title | Título legible |
impact | Impacto por dimensión (individual, society, organization): NEGLIGIBLE / LOW / MEDIUM / HIGH / CRITICAL |
likelihood | Probabilidad inherente antes del tratamiento: RARE / UNLIKELY / POSSIBLE / LIKELY / ALMOST_CERTAIN |
treat[].method | Método de tratamiento: REDUCE / AVOID / TRANSFER / ACCEPT |
treat[].residual_likelihood | Probabilidad objetivo post-tratamiento (ISO 23894 §6.5); el control bloqueante la confirma |
Campos de una medida (measures[])
Sección titulada «Campos de una medida (measures[])»| Campo | Descripción |
|---|---|
id | Id de la medida; enlaza con los control_results del bundle |
metric | Nombre de la métrica evaluada por el pipeline |
constraint | Umbral en notación < 0.03 / > 0.25 / >= 2 |
severity | high / medium / low |
enforcement | gate → bloqueante (gate de riesgo rojo si falla); audit → advisory |
lifecycle | Fases de ciclo de vida: data_preparation / validation |
article | Artículo del EU AI Act que justifica la medida ("10", "15", etc.) |
frameworks | Marcos regulatorios adicionales (eu/dora@2022#art-9, etc.) |
control_tier | Nivel jerárquico del control (prEN 18228 cl. 9.1.2): inherently_safe_design / protective / information |
standard_clauses | Cláusulas que esta medida satisface; sei conformance las usa para proyectar la cobertura |
inputs | Parámetros de entrada para la evaluación de la métrica |
Procedencia del riesgo (provenance)
Sección titulada «Procedencia del riesgo (provenance)»El bundle incluye, por riesgo, su procedencia de identificación:
| Valor | Significado |
|---|---|
declared | El humano lo declaró directamente en la sección risk |
proposed_by_kag | El KAG lo propuso; el humano lo curó y commitió |
derived_from_gap | Emergió de un data_gap (EU AI Act Art. 10(5)) |
La procedencia es parte del arco del registro vivo: sei reconstruct la muestra junto al commit ISO 23894 §6.4.2 que introdujo el riesgo. Ver metodologia/assurance-program-vivo.
sei compile — de DSL a OSCAL
Sección titulada «sei compile — de DSL a OSCAL»sei compile cruza la sección risk de sei.yaml con el catálogo de controles y genera el assessment_plan.oscal.yaml (el contrato del gate que sei run ejecuta):
sei compile --repo .# sei compile: sei.yaml (sección risk) → assessment_plan (shared_data/policies/assessment_plan.oscal.yaml)El assessment plan es el contrato ex-ante: define qué métricas se miden, con qué umbral y con qué severidad. sei run lo ejecuta contra el pipeline y escribe el bundle.json firmado con los resultados.
sei.yaml (sección risk) →(sei compile)→ shared_data/policies/assessment_plan.oscal.yaml ↓ (sei run ejecuta) ↓ .sei/bundle.json + .sigVer referencia/sei-cli para la referencia completa de subcomandos.
Identidad del sistema y mal uso previsible
Sección titulada «Identidad del sistema y mal uso previsible»El AssuranceProgram (la sección risk) no vive solo: se apoya en otras secciones del mismo sei.yaml:
system.potential_misuses— mal uso razonablemente previsible (ISO 42001 §6.1.4 / EU AI Act Art. 9(2)(b)): usos no previstos pero anticipables. Cada entrada (id,description,addressed_by) enlaza con el/los riesgo(s) que lo atienden.sei impactcruza el mal uso con el registro de riesgos y señala el no atendido (advisory).system(name,intended_purpose,organization,version,decisions,affected_persons,component_type) — la identidad y el alcance del sistema de IA evaluado.context.applicable_standards— los estándares aplicables a los quesei conformanceproyecta el mismo registro de riesgos.
Ver referencia/sei-yaml para el detalle de cada sección.
Relación con el resto del sistema
Sección titulada «Relación con el resto del sistema»- El AssuranceProgram vive en
sei.yaml, en el repo del usuario, versionado en git como cualquier otro fichero de código. - Cada commit que añade, modifica o cierra un riesgo es un acto auditable:
sei reconstructlo replaya desde la historia git del bundle. - La nube no recalcula: lee los
.sei/*firmados commiteados y los renderiza (incluido el Anexo IV, que ensambla a partir delbundle.jsonfirmado). Ver referencia/sei-artifacts. - Para el flujo completo del registro vivo (el KAG propone, el humano cura, el commit es la identificación ISO 23894 §6.4.2): metodologia/assurance-program-vivo.