# Sprint 21 — Staging reproducible

## Objetivo

Preparar un release de staging verificable sin copiar secretos, documentos privados,
logs, backups ni dependencias descargadas.

## Entregables funcionales

- Plantilla `.env.staging.example` segura.
- Endpoints separados de liveness y readiness.
- Preflight detallado para PHP, MariaDB, migraciones, almacenamiento, correo,
  colas, backups y monitoreo.
- SMTP con TLS/SSL y validación de cabeceras.
- Generador de release con inventario y SHA-256.
- Verificador del release extraído.
- Plantillas Nginx/Apache y scripts operativos Linux.
- Endurecimiento equivalente para `APP_ENV=staging` y `APP_ENV=production`.

## Endpoints

- `GET /api/v1/health/live`: confirma únicamente que el proceso responde.
- `GET /api/v1/health/ready`: valida dependencias y devuelve solo nombres y
  estados; no expone excepciones, rutas ni secretos.
- `GET /api/v1/health`: alias compatible de readiness.

## Criterio de salida

La instalación local debe terminar con:

`DICTAMEN=PAQUETE_STAGING_REPRODUCIBLE_LISTO`

Esto no afirma que un servidor externo ya esté listo. El servidor de staging
debe ejecutar posteriormente:

`php tools/staging/preflight.php --strict`

y obtener cero errores.
