PDF-010Q - B2B Controlled DDL Retry Execution¶
Estado final: NO-GO PRE-DDL.
Resumen Simple¶
Se valido el safe point esperado, se corrieron los validadores previos y se
confirmo la presencia de credenciales de entorno sin imprimir valores. Tambien
se encontro pg_dump/psql con ruta absoluta local. El gate se detuvo antes
del backup porque el usuario conectado no esta autorizado para ejecutar DDL.
No se ejecuto backup nuevo, no se ejecuto el DDL corregido PDF-010P y no se
crearon tablas B2B reales.
Evolucion posterior: PDF-010S resolvio la habilitacion de credenciales
admin/owner. El proximo paso sigue siendo un nuevo gate de DDL B2B con backup
nuevo y autorizacion explicita.
SAFE POINT Inicial¶
HEAD:673320c84109e4ab45da9dccc66e938a63b38630origin/main:673320c84109e4ab45da9dccc66e938a63b38630- ultimo commit:
673320c docs: add pdf-010p b2b ddl retry candidate - repo inicial: con cambios pendientes de PDF-010Q
git diff --check:PASS
Validaciones Previas¶
validate_pdf_010p_ddl_retry_candidate.py:PASSvalidate_pdf_010o_permissions_plan.py:PASSvalidate_pdf_010m_read_only_package.py:PASSvalidate_pdf_010n_execution_result.py:PASSpytest infra/business-observer/production/b2b-pricing/PDF-010I:24 passed
Credenciales Seguras¶
Se reviso presencia de variables sin imprimir valores.
Resultado:
APV_DESTINATION_POSTGRES_HOST: detectadaAPV_DESTINATION_POSTGRES_PORT: detectadaAPV_DESTINATION_POSTGRES_DATABASE: detectadaAPV_DESTINATION_POSTGRES_DB: faltanteAPV_DESTINATION_POSTGRES_USER: detectadaAPV_DESTINATION_POSTGRES_PASSWORD: detectadaAPV_DESTINATION_POSTGRES_SSLMODE: detectada
Se acepto APV_DESTINATION_POSTGRES_DATABASE como nombre de base.
Recuperacion de entorno seguro reintentada:
- archivo local
C:\APV\openclawai\.env: existe y esta ignorado por Git .env.local: no existe- variables
APV_DESTINATION_POSTGRES_*: completas para conexion destino - variables
APV_LOCAL_POSTGRES_ADMIN_*: completas, pero no apuntan al targetbusiness_observerrequerido para este gate - variables
APV_BO_VPS_PROD_POSTGRES_*: presentes solo parcialmente y no completas para credencial admin/owner - variables
APV_BO_VPS_SANDBOX_POSTGRES_*: presentes solo parcialmente y no completas para credencial admin/owner
Se reviso el VPS por SSH con el alias openclaw-vps, sin imprimir valores:
/opt/openclawai/.env: no contiene credenciales reales del gate/opt/openclawai/**/.env: no contiene las variables aceptadas para ejecutar este DDL/opt/openclawai/.env.example: contiene placeholders, no credenciales reales
No se copiaron credenciales desde el VPS y no se modifico .env.
Herramientas PostgreSQL¶
No estaban en PATH, pero se encontraron con ruta absoluta:
C:\Program Files\PostgreSQL\15\bin\pg_dump.exe: PostgreSQL15.15C:\Program Files\PostgreSQL\15\bin\psql.exe: PostgreSQL15.15
No se imprimieron secretos, passwords ni connection strings.
Usuario y Permiso DDL¶
Conexion read-only confirmada contra PostgreSQL real:
current_user:openclaw_writercurrent_database:gestion_de_negocios_core- PostgreSQL:
15.15 - schema
business_observer: existe - owner del schema
business_observer:postgres - objetos B2B candidate antes del DDL:
none - roles
openclaw_bo_admin,openclaw_bo_writer,openclaw_bo_reader: existen
Permisos observados para openclaw_writer:
- superuser:
false USAGEsobre schemabusiness_observer:trueCREATEsobre schemabusiness_observer:false- miembro de
openclaw_bo_admin:false
El candidato APV_LOCAL_POSTGRES_ADMIN_* fue probado solo con consulta
read-only y se descarto para este gate porque no apunta al target requerido:
la conexion no encontro el schema business_observer.
Resultado: NO-GO: ddl_user_not_authorized.
Por regla del gate, se detuvo antes del backup y antes de cualquier DDL.
Backup Real Pre-DDL Nuevo¶
No ejecutado.
Motivo: usuario conectado openclaw_writer no autorizado para DDL. Aunque
pg_dump estaba localizado, el gate exige confirmar usuario admin/owner
aprobado antes del backup.
DDL Corregido PDF-010P¶
No ejecutado.
Archivo que queda como unico DDL autorizado para un reintento posterior:
infra/business-observer/production/b2b-pricing/PDF-010P/PDF-010P-B2B-PERSISTENCE-DDL-RETRY-CANDIDATE.sql
Objetos Creados¶
Ninguno.
business_observer.b2b_customer_mapping: no creado por este gatebusiness_observer.b2b_product_price: no creado por este gatebusiness_observer.b2b_pricing_decision_log: no creado por este gatebusiness_observer.v_b2b_customer_effective_price: no creada por este gate
Grants, Permisos y RLS¶
No se aplicaron grants ni RLS porque no se ejecuto DDL.
El candidate PDF-010P mantiene como objetivo:
- owner
openclaw_bo_admin - grants a
openclaw_bo_reader - grants a
openclaw_bo_writer - RLS habilitado en las tres tablas B2B
Post-Checks¶
No se ejecutaron porque el gate se detuvo antes de backup y DDL.
El checker read-only queda disponible en:
infra/business-observer/production/b2b-pricing/PDF-010Q/check_b2b_ddl_retry_post_execution.py
Rollback Candidate Disponible¶
Rollback retry candidate disponible y no ejecutado:
infra/business-observer/production/b2b-pricing/PDF-010P/PDF-010P-B2B-PERSISTENCE-ROLLBACK-RETRY-CANDIDATE.sql
No fue ejecutado porque no hubo cambios en PostgreSQL y porque rollback requiere gate separado.
Que NO Se Hizo¶
WooCommerce API no fue tocada.
- no se toco WooCommerce API
- no se modifico
.env - no se imprimieron secretos
- no se imprimieron passwords
- no se imprimieron connection strings completas
- no se modifico runtime WooCommerce
- no se ejecuto sync
- no se ejecuto scheduler
- no se ejecuto cron
- no se ejecutaron pipelines
- no se cargaron datos B2B
- no se ejecutaron inserts masivos
- no se ejecutaron updates/deletes/truncate
- no se ejecuto rollback candidate
GO/NO-GO Final¶
NO-GO PRE-DDL.
Motivo: ddl_user_not_authorized. El entorno PostgreSQL y las herramientas
fueron detectados, pero el usuario conectado openclaw_writer no tiene permiso
suficiente para crear objetos/aplicar ownership y grants en business_observer.
Proximo Paso¶
Preparar una nueva sesion con:
- usuario admin/owner aprobado para crear objetos en
business_observery aplicar grants aopenclaw_bo_* - variables
APV_DESTINATION_POSTGRES_*apuntando a ese usuario, cargadas sin imprimir valores pg_dumpypsqldisponibles en PATH o path absoluto validado- nuevo preflight read-only final
- backup real pre-DDL nuevo fuera de Git
Solo despues reintentar la ejecucion controlada del DDL PDF-010P.
Nota posterior: PDF-010S dejo evidencia read-only de credenciales
admin/owner habilitadas. El DDL B2B debe ejecutarse en un gate separado, con
backup nuevo y autorizacion explicita.