# Runbook de staging

## Estructura recomendada

```text
/srv/geneacase/
├── current -> releases/<release>
├── releases/
└── shared/
    ├── .env
    ├── backups/
    └── storage/
```

## Preparación

1. Ejecutar `deploy/scripts/prepare-shared-directories.sh`.
2. Copiar `.env.staging.example` como `/srv/geneacase/shared/.env`.
3. Reemplazar todos los marcadores `CHANGE_ME`.
4. Aplicar `chmod 600` al `.env`.
5. Configurar Nginx o Apache con DocumentRoot en `current/public`.
6. Instalar TLS válido.
7. Configurar PHP-FPM 8.4+ y MariaDB 11.8 LTS+.

## Despliegue

1. Transferir el ZIP generado por `GENERAR_RELEASE_STAGING.bat`.
2. Ejecutar `deploy/scripts/deploy-release.sh <zip> /srv/geneacase`.
3. El script realiza backup, verifica hashes, instala dependencias, ejecuta
   migraciones, corre preflight estricto y activa el release mediante symlink.

## Rollback de código

Cambiar `/srv/geneacase/current` al release anterior solo después de confirmar
compatibilidad de la base de datos. Si la migración requiere reversión, utilizar
el backup generado antes del despliegue y el procedimiento autorizado.

## Monitoreo

- Liveness: `/api/v1/health/live`.
- Readiness: `/api/v1/health/ready`.
- Alertar por dos fallos consecutivos.
- Conservar correlation IDs de errores 500.
- No registrar cuerpos de documentos, tokens ni contraseñas.

## Condiciones para Sprint 22

- Staging accesible por HTTPS.
- Preflight estricto con cero errores.
- Restauración real ensayada.
- E2E de registro, login, caso, documentos, evidencias y búsquedas.
- Prueba de aislamiento multiempresa.
- Hallazgos críticos y altos corregidos.
## Ejecución de Sprint 22

1. Establecer un `DEPLOY_RELEASE` inmutable para el candidato.
2. Crear la plantilla de evidencia fuera del release.
3. Ejecutar y documentar todos los controles de `docs/70_QA_SPRINT_22.md`.
4. Correr `deploy/scripts/run-release-candidate-audit.sh`.
5. No abrir tráfico hasta contar con aprobación manual y plan de piloto.

