ACAD-02: evidencia final de escenarios y aceptación

Propósito

El bundle ACAD-02 convierte la evidencia ya ejecutada por E2E-02 y E2E-03 en un anexo académico firmable sin agregar escenarios no ejecutados. Incluye entrada, salida esperada, salida obtenida, severidad, reglas, evidencia, aceptación API/UI, no mutación, timeout controlado, logs sanitizados y capturas SVG reproducibles.

Generación y verificación

Desde un checkout limpio:

python scripts/run_e2e_scenarios.py --check
python scripts/run_e2e_release.py --check
python scripts/build_academic_evidence.py --write
python scripts/build_academic_evidence.py --check

El primer gate exige exactamente 50 escenarios y 100 % de los 14 críticos. El segundo comprueba el hash before/after de la fuente sintética y un timeout que produce evidencia incompleta sin métricas. El último compara el bundle derivado, por lo que un cambio en el manifest, runners o artefactos fuente obliga a regenerarlo explícitamente.

Artefactos

  • Bundle JSON: matriz estructurada con entrada, esperado, obtenido, severidad, reglas y findings.
  • Informe Markdown: anexo legible con las 50 filas y la aceptación API/UI.
  • Log sanitizado: solo comandos, estado y contadores; no contiene secretos ni datos reales.
  • Captura resumen y cobertura crítica: renders reproducibles de los artefactos, no capturas de fuentes productivas.

Lectura de resultados y límites

cass-16, cross-01 y cross-02 son evidencia incomplete: mantienen REQUIERE REVISIÓN, no publican porcentaje global y conservan la limitación. sample tampoco es una garantía de impacto total. Las pruebas UI verifican que estas advertencias sean visibles y que los reintentos solo sean de lectura. El smoke live usa un fixture MongoDB sintético; no demuestra SLO productivo, RPO, RTO, KMS ni ausencia de riesgo en datos no observados.

Trazabilidad

ACAD-02 satisface RF-18 y RNF-05 con scripts/run_e2e_scenarios.py, scripts/run_e2e_release.py, scripts/build_academic_evidence.py, backend/tests/test_e2e_scenarios.py, backend/tests/test_academic_evidence.py, el manifest y los jobs E2E/CI. La especificación está en openspec/changes/acad-02-evidence/.