Estado real y fronteras de despliegue¶
Este documento es la referencia corta para evitar que la documentación confunda fixtures, conexiones live, persistencia local y despliegue público. La implementación y sus pruebas siguen siendo la autoridad final.
Modos de ejecución¶
| Modo | Fuente de evidencia | Persistencia | Qué demuestra | Qué no demuestra |
|---|---|---|---|---|
fixture |
Snapshots sintéticos versionados | SQLite local o PostgreSQL configurado | Contrato, reglas, UI, escenarios y reproducibilidad | Volumen, distribución o permisos de una base productiva |
local |
Motor configurado por el operador | SQLite por defecto o PostgreSQL por referencia | Conexión, discovery e inspección read-only acotada | Certificación de producción o equivalencia entre motores |
secure |
Motor live con TLS, scope y referencias de secretos | SQLite o PostgreSQL por referencia | La misma inspección con controles de transporte/configuración | SLO, RPO/RTO, KMS, alta disponibilidad o datos reales autorizados |
Una evidencia sample o incomplete conserva su límite, no publica métricas
globales que no pueda justificar y nunca puede producir APROBADO. Los
adaptadores live solo conectan, descubren e inspeccionan dentro de sus
capabilities; no ejecutan migraciones ni certifican la salud de producción.
ReportStore¶
ReportStore mantiene el mismo contrato en ambos proveedores:
- SQLite (
DATABASE_PATH) es el modo local/demo y la opción predeterminada cuando no se configuraDATABASE_URL_REF. - PostgreSQL se habilita con
DATABASE_URL_REF=env:SCHEMASAFE_DATABASE_URL; usa la migración001, índices, retención y transacciones. - Ningún frontend accede directamente a cualquiera de los dos stores ni se guardan credenciales en reportes, logs o el repositorio.
Despliegue M10¶
La topología pública documentada y seleccionada es:
GitHub Actions → imagen GHCR → Azure Container Apps Consumption
├─ minReplicas=0, maxReplicas=1
├─ fixtures sintéticos por defecto
└─ PostgreSQL opcional y separado
Revisor → Cloudflare Pages Free → API HTTPS
Cloudflare Pages Free fue la decisión de proveedor para el frontend y los manuales. Azure Static Web Apps se evaluó como alternativa, pero no forma parte de la topología seleccionada; no debe aparecer como un recurso desplegado ni como una URL pública garantizada. El workflow permanece credential-gated: si faltan Azure OIDC, Cloudflare o los secretos de demo, no se ejecuta una provisión ni se inventa una URL.
Container Apps puede despertar en frío y escala a cero fuera de las solicitudes. MongoDB, CouchDB y Cassandra no se publican: sus fixtures se incluyen para la demo y los adaptadores live se validan localmente/CI.