Interpretación de reportes

Formatos disponibles

licit report                              # Markdown (default)
licit report --format json -o report.json # JSON estructurado
licit report --format html -o report.html # HTML auto-contenido

Los tres formatos contienen la misma información; solo cambia la presentación.


Estructura del reporte

Todo reporte tiene tres niveles:

1. Overall Summary    →  Estadísticas agregadas de todos los frameworks
2. Per-framework      →  Resumen + detalle para cada framework evaluado
3. Per-requirement    →  Status, evidencia y recomendaciones por requisito

1. Resumen overall

  Overall: [####................] 19.0%
  4/21 controls compliant
CampoSignificado
Compliance ratecompliant / (compliant + partial + non_compliant) * 100. No incluye N/A ni not-evaluated
Total controlsEU AI Act (11) + OWASP Agentic (10) = 21 controles
CompliantRequisitos con evidencia suficiente
PartialEvidencia parcial — mejoras posibles
Non-compliantSin evidencia — acción requerida

Cómo interpretar la tasa

RangoInterpretaciónAcción
80-100%Postura de compliance sólidaMantener y monitorear
50-79%Compliance parcial, brechas manejablesCerrar gaps prioritarios con licit gaps
20-49%Compliance débilPlan de remediación urgente
0-19%Compliance mínimo — típico de proyecto recién inicializadoEjecutar licit fria, licit annex-iv, licit trace

Un proyecto nuevo sin FRIA ni Annex IV empezará con ~5-20%. Esto es normal. Cada comando de licit que ejecutas sube la tasa.


2. Sección por framework

EU AI Act

  eu-ai-act (2024/1689)
    [##..................] 9.1%
    1 compliant | 4 partial | 6 non-compliant

Los 11 artículos evaluados cubren obligaciones del deployer (quien usa el sistema de IA), no del provider (quien lo fabrica):

ArtículoQué evalúaCómo subir el score
Art. 9Gestión de riesgosConfigurar guardrails en architect, añadir vigil/semgrep
Art. 10Gobernanza de datosSiempre PARTIAL (deployer no entrena) — documentar prácticas del provider
Art. 12Registro automáticolicit trace para provenance, habilitar audit trail
Art. 13Transparencialicit annex-iv + licit changelog
Art. 14Supervisión humanaConfigurar PR reviews, architect dry-run
Art. 26Obligaciones deployerTener configs de agentes (CLAUDE.md, .cursorrules)
Art. 27FRIAlicit fria
Annex IVDoc. técnicalicit annex-iv

OWASP Agentic Top 10

  owasp-agentic (2025)
    [....................] 0.0%
    0 compliant | 5 partial | 5 non-compliant

Los 10 riesgos evalúan la postura de seguridad para agentes de IA:

RiesgoQué evalúaCómo subir el score
ASI01Permisos excesivosGuardrails, quality gates, budget limits
ASI02Inyección de promptvigil scanning, guardrails de input
ASI03Supply chainSnyk/Semgrep/CodeQL, changelog de configs
ASI04Logging insuficientelicit trace, audit trail, OTel
ASI05Output sin validarHuman review gates, quality gates, test suite
ASI06Sin supervisión humanaPR reviews, dry-run, rollback
ASI07Sandboxing débilGuardrails, CI/CD isolation
ASI08Consumo sin límitesBudget limits en architect
ASI09Error handling pobreTest suite, CI/CD, rollback
ASI10Exposición de datosProtected files, security scanning

3. Detalle por requisito

Cada requisito muestra:

En Markdown

### [FAIL] ART-27-1: Fundamental Rights Impact Assessment (FRIA)

- **Status**: non-compliant
- **Reference**: Article 27(1)
- **Evidence**: No FRIA document found

**Recommendations:**
- Run: licit fria -- to complete the Fundamental Rights Impact Assessment

En JSON

{
  "id": "ART-27-1",
  "name": "Fundamental Rights Impact Assessment (FRIA)",
  "status": "non-compliant",
  "evidence": "No FRIA document found",
  "recommendations": [
    "Run: licit fria -- to complete the Fundamental Rights Impact Assessment"
  ]
}

En HTML

Status con badge de color: verde (compliant), ámbar (partial), rojo (non-compliant), gris (n/a).


Gap analysis

licit gaps

Los gaps son un subconjunto del reporte: solo muestran requisitos non-compliant y partial, ordenados por severidad.

Cómo leer un gap

  1. [X] [ART-27-1] Fundamental Rights Impact Assessment (FRIA)
     Missing: Before putting an AI system into use...
     -> Run: licit fria -- to complete the FRIA
     Tools: licit fria
ElementoSignificado
[X]Non-compliant (prioridad alta). [!] = partial
[ART-27-1]ID del requisito
Missing:No hay evidencia. Incomplete: = evidencia parcial
->Recomendación concreta
Tools:Herramientas específicas que ayudan

Estrategia de remediación

  1. Primero los [X] (non-compliant) — son los que harían fallar licit verify en CI/CD
  2. Dentro de [X], los de effort “low” primero — ganancias rápidas
  3. Los [!] (partial) después — mejoran la tasa pero no bloquean el pipeline

Esfuerzo estimado

Cada gap tiene un effort implícito por categoría:

EffortTiempo típicoEjemplo
low<1 horaEjecutar licit trace, licit annex-iv, licit changelog
medium1-4 horasCompletar licit fria, configurar guardrails, añadir PR reviews
high1-3 díasConfigurar vigil/semgrep, implementar sandboxing, configurar budget limits

Configuración de reportes

En .licit.yaml:

reports:
  output_dir: .licit/reports        # Dónde se guardan
  default_format: markdown          # Formato por defecto
  include_evidence: true            # Incluir campo Evidence en cada requisito
  include_recommendations: true     # Incluir recomendaciones

Sin evidencia

Con include_evidence: false, los reportes omiten la línea de evidencia. Útil para reportes ejecutivos que solo necesitan el status.

Sin recomendaciones

Con include_recommendations: false, se omiten las recomendaciones. Útil si ya las conoces y solo quieres el snapshot de status.


Comparar reportes en el tiempo

Genera reportes JSON periódicamente y compara:

# Semana 1
licit report --format json -o report-w1.json

# Semana 2
licit report --format json -o report-w2.json

# Comparar manualmente
diff <(jq '.overall' report-w1.json) <(jq '.overall' report-w2.json)

Ejemplo de mejora:

-  "compliance_rate": 4.8
+  "compliance_rate": 33.3
-  "non_compliant": 11
+  "non_compliant": 5

En versiones futuras, licit diff automatizará esta comparación.