# Reporte de validación — v2.1.0

Fecha de preparación: 14 de julio de 2026.

## Resultado ejecutado en el entorno de construcción

- 97 archivos PHP revisados con `php -l`: **0 errores de sintaxis**.
- 2 archivos JavaScript revisados con `node --check`: **0 errores de sintaxis**.
- 74 pruebas de dominio y consistencia: **74 aprobadas, 0 fallos**.
- 25 strips de seis cartones validados durante la suite.
- Validación positiva y negativa de línea y bingo.
- Matriz RBAC verificada frente a las rutas protegidas.
- Esquema verificado para cuentas bancarias, métodos por evento, reservas, tokens, idempotencia y evidencias.
- Flujo estático verificado para aprobar/rechazar pagos y liberar inventario.
- Protección directa de `storage/private` incluida.

## Controles del checkout incorporados

- `SELECT ... FOR UPDATE` al seleccionar inventario.
- Transacción única para crear orden, ítems, pago y reserva.
- Clave de idempotencia única por organización.
- Token público de 256 bits para consultar la orden.
- Límite por orden y límite acumulado por jugador.
- Ventana de venta y disponibilidad comprobadas en backend.
- Rate limiting por IP y evento.
- CSRF en checkout, carga de comprobante y decisiones de caja.
- Vencimiento y liberación de reservas.
- Evidencias fuera del directorio público.
- MIME real, tamaño y carga HTTP verificados.
- Aprobación segregada mediante `public_orders.manage`.
- Auditoría para creación, comprobante, aprobación, rechazo, expiración y cancelación.

## No ejecutado en este entorno

No existe un servidor MySQL ni Docker disponible dentro del entorno de construcción. Por esa razón no se ejecutaron aquí:

- instalación real de `database/schema.sql` en MySQL 8;
- migración de una base v2.0.0 con datos reales;
- pruebas HTTP end-to-end con navegador;
- carga real de archivos mediante `multipart/form-data`;
- concurrencia con múltiples procesos contra InnoDB;
- tareas cron sobre órdenes vencidas;
- pruebas de correo, pasarela financiera o webhook, porque no forman parte de esta versión.

## Validación obligatoria en staging

```bash
php bin/upgrade_public_checkout.php   # sólo actualización
php bin/doctor.php
php tests/run.php
```

Después deben probarse dos navegadores en paralelo intentando comprar los últimos cartones, cargas de PDF/JPG/PNG, reemplazo de comprobante, aprobación, rechazo, expiración, cancelación de evento, restauración de backup y revisión de logs.

## Criterio de producción

La entrega contiene el código completo del flujo manual de compra pública. No debe declararse certificada para producción monetaria hasta completar staging, pruebas de seguridad, concurrencia, respaldo/restauración y revisión legal aplicable.
