PDF-010M - B2B PostgreSQL Real Read-Only Preflight¶
Fecha: 2026-06-23
Estado: PREFLIGHT REAL READ-ONLY / GO OPERATIVO / SIN DDL / SIN SQL WRITE /
SIN RUNTIME
portal_visible = yes
Safe Point¶
- HEAD esperado:
435bb76fcce32e04d060f5d9783f3bebe2fd945f. origin/mainesperado:435bb76fcce32e04d060f5d9783f3bebe2fd945f.- Ultimo commit esperado:
435bb76 docs: add pdf-010l b2b ddl execution preflight. - Repo esperado: cambios pendientes de
PDF-010M. git diff --check: sin errores; solo warnings locales LF/CRLF en archivos documentales ya modificados.
Credenciales y Conexion¶
Credenciales seguras detectadas sin imprimir valores:
APV_DESTINATION_POSTGRES_HOSTAPV_DESTINATION_POSTGRES_PORTAPV_DESTINATION_POSTGRES_DATABASEAPV_DESTINATION_POSTGRES_USERAPV_DESTINATION_POSTGRES_PASSWORDAPV_DESTINATION_POSTGRES_SSLMODE
El checker tambien acepta APV_DESTINATION_POSTGRES_DB y equivalentes PG*.
Herramienta usada: Python con psycopg2. psql no estaba disponible en
PATH, pero no fue necesario.
Resultado Preflight Read-Only¶
Resultado del checker: GO.
transaction_read_only:on- DB objetivo:
gestion_de_negocios_core - usuario conectado:
openclaw_writer - version PostgreSQL:
PostgreSQL 15.15 ddl_executed=falsesql_write_executed=falsesecrets_printed=falsedotenv_read=falseen el checker;.envse cargo fuera del script solo en memoria de la sesion, sin imprimir valores y sin modificar el archivo.
Resultado Roles¶
Roles confirmados:
openclaw_bo_adminopenclaw_bo_writeropenclaw_bo_reader
Roles alias no presentes/no aplicables en este target:
business_observer_adminbusiness_observer_writerbusiness_observer_reader
Resultado Schema¶
business_observer: existe.
Resultado Objetos Existentes / No Existentes¶
Objetos B2B a confirmar por PDF-010K, todos ausentes antes de DDL:
business_observer.b2b_customer_mapping: no existe.business_observer.b2b_product_price: no existe.business_observer.b2b_pricing_decision_log: no existe.business_observer.v_b2b_customer_effective_price: no existe.
Lectura operativa: ausencia esperada antes del gate DDL. No hay drift por objetos B2B preexistentes.
Resultado Permisos¶
Privilegios observados sobre schema:
openclaw_bo_admin: rol existe;USAGE=false;CREATE=false.openclaw_bo_writer: rol existe;USAGE=false;CREATE=false.openclaw_bo_reader: rol existe;USAGE=false;CREATE=false.- aliases
business_observer_*: roles no presentes.
Privilegios sobre objetos B2B: sin filas, porque los objetos B2B todavia no existen.
Backup / Rollback Checklist¶
Backup logico candidate, sin secretos y no ejecutado:
powershell
pg_dump --format=custom --file=<secure_backup_path> --schema=business_observer <database_name> # candidate gate posterior; no ejecutar en PDF-010M
Ubicacion segura sugerida:
text
/opt/backups/openclaw/business-observer-prod/postgres/pre-pdf-010k-b2b-ddl/<UTC>/
Restore candidate, sin ejecutar:
powershell
pg_restore --clean --if-exists --dbname=<database_name> <secure_backup_path> # candidate gate posterior; no ejecutar en PDF-010M
Rollback candidate:
infra/business-observer/production/b2b-pricing/PDF-010K/PDF-010K-B2B-PERSISTENCE-ROLLBACK-CANDIDATE.sql- no ejecutado en
PDF-010M. - requiere backup valido, aprobacion explicita y gate separado.
GO / NO-GO¶
Estado de PDF-010M: GO.
El GO aplica solo al preflight real read-only. Ejecutar DDL, SQL write,
creacion de tablas, grants, runtime WooCommerce, sync, scheduler, cron o
pipelines sigue NO-GO hasta gate posterior separado.
Riesgos¶
- El gate DDL posterior debe aplicar grants reales porque los objetos B2B aun no existen.
- Ejecutar DDL sin backup logico validado complica rollback.
- Los roles alias
business_observer_*no existen en este target; si se requieren como compatibilidad, deben tratarse en el gate DDL posterior.
Proximo Paso¶
Abrir gate posterior separado para backup real pre-DDL y autorizacion explicita
de ejecucion del DDL PDF-010K.
Cierre¶
No se ejecuto DDL, no se ejecuto SQL write, no se tocaron datos, no se toco
WooCommerce API, no se modifico .env, no se imprimieron secretos, no se
modifico runtime, no se ejecuto sync, scheduler, cron ni pipelines.