Saltar a contenido

PDF-010L - B2B DDL Execution Preflight

Estado: PREFLIGHT / SIN SQL WRITE / SIN EJECUCION DDL / SIN RUNTIME

Safe Point

  • PDF-010K publicado en origin/main.
  • Commit publicado: b93538b0e06afb6d951b4a419cbb087581001cdc.
  • Knowledge Portal desplegado y validado con HTTP 200.
  • Repo local limpio antes de iniciar PDF-010L.

DDL Candidate Source

  • DDL candidate: infra/business-observer/production/b2b-pricing/PDF-010K/PDF-010K-B2B-PERSISTENCE-DDL-CANDIDATE.sql
  • Rollback candidate: infra/business-observer/production/b2b-pricing/PDF-010K/PDF-010K-B2B-PERSISTENCE-ROLLBACK-CANDIDATE.sql
  • Ambos archivos son candidate. No ejecutar sin gate posterior y autorizacion explicita.

Preflight Read-Only

El preflight read-only debe confirmar, sin imprimir secretos:

  • DB objetivo mediante SELECT current_database().
  • Schema business_observer.
  • Roles esperados por PDF-010K: business_observer_admin, business_observer_writer, business_observer_reader.
  • Aliases solicitados para compatibilidad del gate: openclaw_bo_admin, openclaw_bo_writer, openclaw_bo_reader.
  • Ausencia o presencia controlada de objetos candidate: business_observer.b2b_customer_mapping, business_observer.b2b_product_price, business_observer.b2b_pricing_decision_log, business_observer.v_b2b_customer_effective_price.
  • Permisos minimos esperados para reader/writer/admin sobre tablas y vista.
  • Que no se imprimen passwords, DSN, tokens, .env ni connection strings.

Comando local seguro para validar solo la construccion estatica de consultas read-only:

powershell python infra/business-observer/production/b2b-pricing/PDF-010L/check_b2b_ddl_preflight_read_only.py

Para revisar las consultas candidate sin conectarse a PostgreSQL:

powershell python infra/business-observer/production/b2b-pricing/PDF-010L/check_b2b_ddl_preflight_read_only.py --print-sql

Backup / Restore Checklist

  • Backup logico candidate antes del DDL: pg_dump en formato custom, ejecutado solo en gate posterior con credenciales disponibles por canal seguro.
  • Comando candidate sin secretos:

powershell pg_dump --format=custom --file=<secure_backup_path> --schema=business_observer <database_name> # candidate gate posterior; no ejecutar en PDF-010L

  • Ubicacion segura sugerida: /opt/backups/openclaw/business-observer-prod/postgres/pre-pdf-010l-ddl/<UTC>/.
  • No ejecutar backup si requiere credenciales no disponibles o si obliga a imprimir secretos.
  • Restore plan candidate sin ejecucion:

powershell pg_restore --clean --if-exists --dbname=<database_name> <secure_backup_path> # candidate gate posterior; no ejecutar en PDF-010L

  • El restore debe ensayarse o revisarse en un entorno autorizado antes de cualquier rollback real.

Rollback Plan

  • Rollback candidate revisado: PDF-010K-B2B-PERSISTENCE-ROLLBACK-CANDIDATE.sql.
  • Riesgos: perdida de tablas/vista B2B si ya contienen datos, invalidacion de dependencias futuras, necesidad de restaurar desde backup si hay drift.
  • No ejecutar rollback en PDF-010L.
  • El rollback solo se ejecutara con autorizacion explicita y evidencia de backup disponible.

Execution Safety Gate

  • El DDL solo se ejecutara en un gate posterior con autorizacion explicita.
  • Comando exacto candidate para ese gate posterior:

powershell psql --set=ON_ERROR_STOP=1 --file=infra/business-observer/production/b2b-pricing/PDF-010K/PDF-010K-B2B-PERSISTENCE-DDL-CANDIDATE.sql <database_name> # candidate gate posterior; no ejecutar en PDF-010L

  • El comando anterior es candidate. No ejecutarlo durante PDF-010L.
  • Criterio operativo: si cualquier check queda incierto, el estado es NO-GO.

GO Criteria

  • Repo limpio.
  • Backup confirmado y ubicado en path seguro.
  • Roles confirmados.
  • Schema business_observer confirmado.
  • Validador PDF-010K PASS.
  • Preflight read-only PASS.
  • mkdocs build --strict PASS.
  • Sin secretos impresos.

NO-GO Criteria

  • Roles faltantes o inconsistentes.
  • Schema faltante.
  • Tablas candidate ya existen con drift.
  • Backup no disponible.
  • Rollback no validado.
  • Secretos expuestos.
  • Repo sucio.
  • Cualquier necesidad de SQL write durante preflight.

Restricciones

PDF-010L mantiene no SQL write, no DDL execution, no WooCommerce API, no .env, no secretos, no runtime WooCommerce, no sync, no scheduler, no cron y no pipelines.