Saltar a contenido

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: 673320c84109e4ab45da9dccc66e938a63b38630
  • origin/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: PASS
  • validate_pdf_010o_permissions_plan.py: PASS
  • validate_pdf_010m_read_only_package.py: PASS
  • validate_pdf_010n_execution_result.py: PASS
  • pytest 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: detectada
  • APV_DESTINATION_POSTGRES_PORT: detectada
  • APV_DESTINATION_POSTGRES_DATABASE: detectada
  • APV_DESTINATION_POSTGRES_DB: faltante
  • APV_DESTINATION_POSTGRES_USER: detectada
  • APV_DESTINATION_POSTGRES_PASSWORD: detectada
  • APV_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 target business_observer requerido 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: PostgreSQL 15.15
  • C:\Program Files\PostgreSQL\15\bin\psql.exe: PostgreSQL 15.15

No se imprimieron secretos, passwords ni connection strings.

Usuario y Permiso DDL

Conexion read-only confirmada contra PostgreSQL real:

  • current_user: openclaw_writer
  • current_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
  • USAGE sobre schema business_observer: true
  • CREATE sobre schema business_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 gate
  • business_observer.b2b_product_price: no creado por este gate
  • business_observer.b2b_pricing_decision_log: no creado por este gate
  • business_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_observer y aplicar grants a openclaw_bo_*
  • variables APV_DESTINATION_POSTGRES_* apuntando a ese usuario, cargadas sin imprimir valores
  • pg_dump y psql disponibles 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.