Saltar a contenido

PDF-003 Staging DDL Preflight Read-Only

Fecha local: 2026-06-19

Estado: PREFLIGHT READ-ONLY COMPLETADO / NO-GO PARA PDF-004 / CERO CAMBIOS

portal_visible = yes

Scope: tenant

tenant_id: alpuntodeventa

Owner: Gabi / Carlos Canu

Fuente de verdad: docs/tenants/alpuntodeventa/business-observer/production/PDF-003-STAGING-DDL-PREFLIGHT-READONLY.md

1. Objetivo

Ejecutar un preflight estrictamente read-only para determinar si el DDL candidato de PDF-002 esta listo para una futura ejecucion en staging-vps.

Esta etapa no ejecuto DDL, no creo DB, no creo roles, no creo schema, no creo tablas, no aplico grants, no escribio datos y no expuso secretos.

2. Safe point

Control Valor
workspace C:\APV\openclawai
rama observada main
git status -sb inicial ## main...origin/main
HEAD/origin observado 7838b1061b4c9f290a501eb6924b94507d2339d2
ultimo commit observado docs: prepare business observer staging ddl candidate
git diff --check inicial PASS
decision SAFE POINT PASS / READ-ONLY ONLY

3. Acceso read-only usado

Acceso seguro observado y utilizado:

  • ssh -o BatchMode=yes openclaw-vps
  • inspeccion read-only de Docker y runtime
  • consultas de catalogo via: docker exec openclaw-postgres-sandbox psql -X -U openclaw_admin -d openclaw_sandbox

Reglas preservadas:

  • no se imprimieron passwords ni secretos;
  • no se editaron archivos del VPS;
  • no se creo ni modifico ningun objeto PostgreSQL;
  • las consultas SQL se ejecutaron con SET default_transaction_read_only = on.

4. Contexto remoto observado

Identidad remota confirmada:

  • host SSH: srv977009
  • usuario SSH: root
  • tipo de acceso: alias openclaw-vps ya documentado en el repo

Topologia PostgreSQL visible en runtime:

  • contenedor PostgreSQL observable: openclaw-postgres-sandbox
  • imagen: postgres:16-alpine
  • estado: Up ... (healthy)
  • red observable: IP interna 172.24.0.3
  • PortBindings: {}

Conclusion de topologia:

  • el unico PostgreSQL visible y accesible en esta auditoria es openclaw-postgres-sandbox;
  • no hay evidencia de una instancia PostgreSQL separada y ya promovida como staging del Business Observer;
  • el entorno observable sigue siendo candidate-only / sandbox-visible.

5. Fingerprint observado

Fingerprint observable consolidado:

text srv977009|openclaw-postgres-sandbox|172.24.0.3:5432|no-host-port-binding|openclaw_sandbox|openclaw_admin|PostgreSQL 16.14

Notas:

  • la conexion observada fue por socket interno del contenedor;
  • el endpoint no esta publicado al host;
  • el fingerprint esperado por PDF-002 para una futura staging no pudo validarse porque la DB target aun no existe.

6. Estado actual de DB, roles y schema

Databases objetivo

Check Resultado
openclaw_business_observer_staging existe NO
openclaw_business_observer_prod existe NO
DBs visibles del cluster observado openclaw_sandbox, postgres, template0, template1

Schema objetivo

Check Resultado
schema business_observer en openclaw_business_observer_staging N/A, la DB staging no existe
schema business_observer en openclaw_sandbox NO

Roles objetivo

Rol Existe
openclaw_bo_staging_owner NO
openclaw_bo_staging_writer NO
openclaw_bo_staging_reader NO
openclaw_bo_staging_reporting_ro NO

Conflictos de naming

Check Resultado
DBs con patron openclaw%business%observer% NINGUNA
roles con patron openclaw%bo%staging% o openclaw%business%observer% NINGUNO

7. Permisos observados

Permisos actuales relevantes

Observado en el cluster visible:

  • no existen los roles objetivo, por lo tanto no existen grants reales para ellos;
  • no existe la DB target, por lo tanto no existen grants reales sobre openclaw_business_observer_staging;
  • no existe el schema target business_observer en el cluster observado.

PUBLIC

Hallazgos read-only en el cluster visible:

Objeto observable Privilegios PUBLIC
DB openclaw_sandbox CONNECT, TEMPORARY
DB postgres CONNECT, TEMPORARY
DB template0 CONNECT
DB template1 CONNECT
schema public de openclaw_sandbox USAGE

Decision:

  • para el objetivo de PDF-002, esto no cumple la politica esperada de PUBLIC = none on target db/schema;
  • como la DB staging todavia no existe, el hallazgo se clasifica como riesgo de defaults peligrosos si se ejecuta PDF-004 sin remediacion previa.

8. Extensiones observadas

Estado observado en el cluster visible:

Check Resultado
extensiones instaladas plpgsql 1.0
pgcrypto disponible SI
pgcrypto instalada NO
uuid-ossp disponible SI
uuid-ossp instalada NO

Decision:

  • PDF-002 no requiere extensiones;
  • no hay bloqueo por extensiones para el candidate documental;
  • no existe aun una DB staging donde confirmar estado final de extensiones del target real.

9. Backups y restore drill

Estado documental observado:

  • la politica de backups + restore drill esta exigida en PRODUCTION-DATA-FOUNDATION-INTAKE-001.md;
  • PDF-002 exige backup previo y restore plan asociado antes de PDF-004;
  • no se encontro todavia un runbook/versionado especifico de backup/restore para la futura DB openclaw_business_observer_staging;
  • no se encontro evidencia cerrada de restore drill especifico para esta futura DB de staging.

Decision:

  • backup/restore para la etapa Business Observer staging-vps sigue AUSENTE / NO CERRADO;
  • este punto por si solo bloquea llamar staging al entorno operativo.

10. Readiness para PDF-004

Checklist minimo contra PDF-002:

Gate Estado
host remoto observable PASS
PostgreSQL observable PASS
fingerprint de target staging real FAIL
DB openclaw_business_observer_staging existente y validable FAIL
DB openclaw_business_observer_prod separada PASS por ausencia, pero no desplegada
schema business_observer target validable FAIL
roles staging reales validables FAIL
PUBLIC sin privilegios peligrosos en target FAIL / N-A target absent / defaults visibles no conformes
conflictos de naming PASS
extensiones requeridas para PDF-002 PASS, ninguna requerida
backup previo + restore plan/versionado especifico FAIL
entorno apto para llamarse staging FAIL

11. Riesgos

  • riesgo alto de ejecutar PDF-004 sobre un sandbox visible en vez de una DB staging formal;
  • riesgo de heredar privilegios por defecto de PUBLIC si la futura DB/schema se crean sin endurecimiento previo o post-checks estrictos;
  • riesgo de confundir sandbox con staging por compartir el mismo VPS;
  • riesgo de ejecutar DDL sin runbook especifico de backup/restore para la futura DB;
  • riesgo de llamar staging a un entorno que aun no tiene DB target, roles ni schema reales.

12. Dictamen

text PDF-003 RESULT = PASS AS READ-ONLY PREFLIGHT PDF-004 RESULT = NO-GO CURRENT ENVIRONMENT = CANDIDATE-ONLY / SANDBOX-VISIBLE STAGING DB = NOT PRESENT STAGING ROLES = NOT PRESENT TARGET SCHEMA = NOT PRESENT ZERO CHANGES CONFIRMED

13. Checklist minimo antes de cualquier PDF-004

  1. confirmar y documentar si la futura staging va a vivir en este mismo VPS o en otra instancia PostgreSQL separada;
  2. publicar el fingerprint esperado exacto del target real de staging;
  3. confirmar backup previo especifico de la futura DB target;
  4. publicar runbook/versionado de restore para esa futura DB;
  5. definir y validar endurecimiento de PUBLIC para DB y schema target;
  6. confirmar que el endpoint elegido no es postgres-sandbox;
  7. reejecutar un nuevo preflight read-only contra la DB target real ya creada o ya provisionada como staging.

14. Confirmacion de cero cambios

Confirmacion final:

  • DDL: NO EJECUTADO
  • CREATE/ALTER/GRANT/REVOKE/DROP: NO EJECUTADO
  • INSERT/UPDATE/DELETE/COPY/TRUNCATE: NO EJECUTADO
  • Docker/NPM/Portainer/runtime: NO MODIFICADO
  • La Directa / SGC / O4: NO TOCADO
  • resultado persistente remoto: SIN CAMBIOS