# QA Sprint 21

## QA automático

1. PHP lint de todos los archivos modificados y nuevos.
2. Regresión completa de GeneaCase.
3. Validación específica de staging.
4. Preflight no estricto en el entorno local.
5. Comprobación directa del release y sus SHA-256.
6. Bash `-n` de todos los scripts operativos.
7. PowerShell parser, BAT sin BOM, rutas con espacios y pausa final.
8. Backup y restaurador del instalador.

## QA de staging

En el servidor destino:

1. PHP 8.4+ y extensiones requeridas.
2. MariaDB 11.8 LTS+.
3. HTTPS válido, HSTS y cookies seguras.
4. `.env` fuera del release y con permisos 600.
5. Almacenamiento persistente absoluto fuera de `public`.
6. SMTP real sin usar cuentas personales.
7. Tablas de cola presentes.
8. Backup generado antes del despliegue.
9. `/api/v1/health/live` responde 200.
10. `/api/v1/health/ready` responde 200.
11. `php tools/staging/preflight.php --strict` termina con `TOTAL_ERRORES=0`.

## Pruebas negativas

- Un `.env` incluido en el release debe ser rechazado.
- Un archivo fuera del manifiesto debe ser rechazado.
- Una migración aplicada cuyo checksum cambió debe bloquear readiness.
- `APP_DEBUG=true`, HTTP, cookie insegura o host vacío deben bloquear staging.
- Almacenamiento dentro de `public` debe bloquear staging.
- `MAIL_DRIVER=log` debe bloquear el preflight estricto.
