[OK] Rutas de asistencia QR registradas [OK] Ruta de exportación masiva registrada [OK] QR tolera normalización a mayúsculas del Router [OK] Controlador valida CSRF [OK] Controlador limita por sede [OK] Asistencia evita duplicado por día y tipo [OK] Migración crea permiso independiente [OK] QR del carnet usa token opaco [OK] Exportación genera ZIP y PDF [OK] Exportación crea carpetas por sede/grado/sección [OK] Selector Todos está activado por defecto [OK] Exportación filtra solo carpetas seleccionadas [OK] Render de fotocheck aislado fuera del área visible [OK] Eliminada espera fija por tarjeta [OK] Upgrade añade qr_token cuando falta [OK] Upgrade muestra la versión del archivo VERSION.txt [FALLO] QR masivo no se empuja al fondo con margen automático [OK] Plantilla masiva amplía título, institución y escudo [OK] QR conserva tamaño de 94 por 94 píxeles [OK] Carnet muestra el año del periodo académico debajo de la sede [OK] Año académico ocupa el espacio inferior del carnet 21 comprobaciones estáticas; 1 fallos.