PDF-010P - B2B DDL Retry Candidate¶
Fecha: 2026-06-23
Estado: CANDIDATE LOCAL / SIN SQL WRITE / SIN EJECUCION DDL / SIN PUSH
A. Causa del NO-GO de PDF-010N¶
PDF-010N intento ejecutar el DDL candidate PDF-010K con ON_ERROR_STOP=1
y transaccion unica despues de un backup real. PostgreSQL rechazo el primer
statement por permission denied for database gestion_de_negocios_core.
Resultado operativo:
- no se crearon tablas B2B;
- no se creo la vista B2B;
- no se aplicaron grants;
- no se aplico RLS;
- no se ejecuto rollback candidate.
B. Hallazgos de PDF-010O¶
El preflight read-only PDF-010O confirmo:
- DB
gestion_de_negocios_core; - schema
business_observerexistente; - DB/schema propiedad de
postgres; - usuario observado
openclaw_writersinCREATEsobre DB ni schema; - roles reales existentes:
openclaw_bo_admin,openclaw_bo_writer,openclaw_bo_reader; - roles
business_observer_*ausentes; - objetos B2B ausentes antes del retry.
C. Decision de roles¶
PDF-010P usa los roles reales:
openclaw_bo_admin;openclaw_bo_writer;openclaw_bo_reader.
No usa roles business_observer_* porque no existen en el target observado.
Crear aliases nuevos agregaria una decision operativa innecesaria para este
retry; la opcion simple y robusta es adaptar el DDL a la realidad actual.
D. Que cambio respecto de PDF-010K¶
- Se elimina la dependencia de
CREATE SCHEMA IF NOT EXISTS. - El schema
business_observerse trata como preexistente. - Los grants cambian de
business_observer_*aopenclaw_bo_*. - Los objetos B2B se mantienen:
business_observer.b2b_customer_mapping,business_observer.b2b_product_price,business_observer.b2b_pricing_decision_logybusiness_observer.v_b2b_customer_effective_price. - Se mantienen checks, constraints, RLS candidate e indices unique parciales.
- El rollback queda alineado a los mismos roles y objetos.
E. Seguridad comercial¶
El candidate no expone costos, proveedor, margenes ni secretos a WooCommerce. La vista publica solo el precio efectivo B2B necesario para runtime controlado.
F. Que NO se ejecuto¶
No se ejecuto SQL write.
No se ejecuto DDL, no se crearon tablas, no se crearon roles, no se cambiaron
permisos reales, no se tocaron datos, no se toco WooCommerce API, .env,
secretos, runtime, sync, scheduler, cron ni pipelines.
G. GO/NO-GO para ejecucion posterior¶
Estado actual: NO-GO PARA EJECUCION.
Motivo: este documento solo prepara el paquete corregido. La ejecucion real requiere un gate separado.
Condiciones minimas de GO posterior:
- safe point limpio;
- backup nuevo pre-DDL;
- revalidacion read-only de DB/schema/roles/objetos;
- autorizacion explicita SQL write;
- usuario ejecutor admin/owner aprobado;
- plan de rollback confirmado.
H. Archivos del paquete¶
infra/business-observer/production/b2b-pricing/PDF-010P/PDF-010P-B2B-PERSISTENCE-DDL-RETRY-CANDIDATE.sqlinfra/business-observer/production/b2b-pricing/PDF-010P/PDF-010P-B2B-PERSISTENCE-ROLLBACK-RETRY-CANDIDATE.sqlinfra/business-observer/production/b2b-pricing/PDF-010P/validate_pdf_010p_ddl_retry_candidate.pyinfra/business-observer/production/b2b-pricing/PDF-010P/README.md
I. Proximo paso recomendado¶
Abrir un gate nuevo con backup nuevo y ejecucion DDL corregida, solo con autorizacion explicita para SQL write.