Saltar a contenido

PDF-007A SOURCE-003 Production Controlled Preparation

Fecha local: 2026-06-20

Estado: SOURCE-003 PRODUCTION CONTROLLED PREPARATION / PREPARED / PRODUCTION NOT EXECUTED

portal_visible = yes

Scope: tenant

tenant_id: alpuntodeventa

Owner: Gabi / Carlos Canu

Fuente de verdad: docs/tenants/alpuntodeventa/business-observer/production/PDF-007A-SOURCE-003-PRODUCTION-CONTROLLED-PREPARATION.md

1. Contexto desde PDF-006D

PDF-006D documento la ejecucion real verde de SOURCE-003 en PostgreSQL staging. La carga quedo conciliada en RAW, CORE y MARTS con el snapshot autorizado SOURCE-003-SNAPSHOT-001.

Estado heredado:

  • HEAD local/origin/VPS observado: cd3a6fa96cc6f3807f8367c33fe296b0567e2fdb;
  • ultimo commit observado: cd3a6fa docs: record source-003 staging initial load execution;
  • RAW staging: 1886;
  • CORE staging: 1886;
  • MART daily/seller/customer/sku: 1 / 25 / 173 / 180;
  • importe total staging: 48087486.8300;
  • CMV total staging: 37881269.3025;
  • line_key_v4: AMARILLO ACEPTADO;
  • produccion, sync diaria, scheduler, cron y pipelines: NO-GO.

2. Objetivo produccion

Preparar el gate controlado para una futura puesta inicial de SOURCE-003 en produccion, sin ejecutar DDL, carga, COPY, DML ni automatizaciones durante esta tarea.

Este documento habilita solo revision, decision humana y preparacion de paquete candidate. La ejecucion productiva real requiere un gate posterior separado.

3. Estado actual de staging

Staging queda como referencia validada:

Control Resultado
DB staging openclaw_business_observer_staging
contenedor staging openclaw-business-observer-postgres-staging, healthy
RAW 1886
CORE 1886
MART daily 1
MART seller 25
MART customer 173
MART sku 180
importe total 48087486.8300
CMV total 37881269.3025
bad hashes 0
empty line_key 0
bad line_sequence 0
PUBLIC grants 0

4. Estado read-only detectado de produccion

Inspeccion read-only realizada:

  • VPS host: srv977009;
  • VPS Git HEAD/origin: cd3a6fa96cc6f3807f8367c33fe296b0567e2fdb;
  • contenedor productivo Business Observer: ABSENT en docker ps -a;
  • volumen productivo Business Observer: ABSENT en nombres visibles Docker;
  • red productiva Business Observer: ABSENT en nombres visibles Docker;
  • DB openclaw_business_observer_prod: ABSENT en catalogo visible del cluster inspeccionado;
  • roles openclaw_bo_prod_owner, openclaw_bo_prod_writer, openclaw_bo_prod_reader, openclaw_bo_prod_reporting_ro: ABSENT;
  • schema productivo business_observer: ABSENT porque no existe DB productiva detectada;
  • tablas productivas SOURCE-003: ABSENT porque no existe DB productiva detectada;
  • datos productivos SOURCE-003: ABSENT porque no existen tablas/DB productivas detectadas;
  • backup productivo vigente Business Observer: UNKNOWN, sin evidencia de carpeta productiva bajo /opt/backups/openclaw en la inspeccion read-only.

La inspeccion no creo DB, schema, roles, tablas, backups ni dumps.

5. Alcance

Alcance autorizado en PDF-007A:

  • leer documentacion obligatoria;
  • ejecutar safe point local;
  • inspeccionar VPS y Docker en read-only;
  • consultar catalogo PostgreSQL en read-only para detectar DB/roles visibles;
  • crear documento PDF-007A;
  • preparar scripts candidate .candidate.sql para revision futura;
  • actualizar navegacion y estado documental.

6. Exclusiones

Queda fuera de alcance:

  • DDL productivo real;
  • carga productiva real;
  • COPY;
  • INSERT, UPDATE, DELETE, TRUNCATE;
  • sync;
  • scheduler;
  • cron;
  • pipelines;
  • OpenClaw runtime;
  • NPM;
  • Portainer;
  • Docker changes;
  • reinicios;
  • backups nuevos;
  • dumps;
  • lectura o impresion de secretos;
  • connection strings reales;
  • uso de openclaw-postgres-sandbox.

7. Estrategia propuesta

Estrategia recomendada para un gate posterior:

  1. Backup prod o baseline inicial.
  2. Si existe produccion, generar backup productivo autorizado y validar restore/listado.
  3. Si no existe produccion, documentar baseline inicial antes de crear objetos.
  4. DDL prod.
  5. Crear o confirmar DB, schema y roles productivos con gate propio.
  6. Ejecutar DDL de tablas SOURCE-003 solo despues de preflight y backup.
  7. Carga inicial prod.
  8. Preparar CSV fuera de Git desde SOURCE-003-SNAPSHOT-001 o snapshot nuevo autorizado.
  9. Ejecutar manualmente raw -> core -> mart, sin jobs ni scheduler.
  10. Validacion prod.
  11. Confirmar RAW 1886, CORE 1886, MART 1/25/173/180, importes, CMV, hashes, duplicados, grants y objetos fuera de alcance.
  12. Cierre documental.
  13. Publicar evidencia, decision VERDE/AMARILLO/ROJO, rollback usado o no usado, y proximo gate.

8. Reutilizacion controlada

Se reutiliza el patron validado de:

  • DDL PDF-005B, adaptado a produccion;
  • load PDF-006C, adaptado a produccion;
  • snapshot SOURCE-003-SNAPSHOT-001;
  • mapping 68/68 MATCH;
  • estrategia raw -> core -> mart;
  • controles de idempotencia y rollback por batch.

9. Diferencias necesarias staging vs prod

Diferencias candidate:

Area Staging Produccion candidate
DB openclaw_business_observer_staging openclaw_business_observer_prod
roles openclaw_bo_staging_* openclaw_bo_prod_*
gate PDF-005B / PDF-006C PDF-007A
confirmacion carga staging-specific PDF-007A-EXECUTE-SOURCE-003-PRODUCTION-LOAD
path CSV preparado staging temporal /tmp/pdf007a-source003-prepared.csv
ejecucion ya ejecutada en staging no ejecutada

10. Rollback esperado

Rollback esperado para un gate posterior:

  • DDL: rollback candidate aborta si hay filas en tablas destino;
  • carga: rollback candidate elimina solo el sync_batch_id autorizado, en orden MART -> CORE -> RAW -> base;
  • no usar TRUNCATE;
  • no borrar batches no autorizados;
  • no hacer hard delete general;
  • preservar evidencia antes y despues;
  • rollback real requiere autorizacion separada.

11. Criterios GO / NO-GO

GO para ejecucion futura solo si:

  • hay autorizacion humana explicita separada;
  • existe target productivo confirmado;
  • existe backup prod o baseline inicial aceptado;
  • DB, schema y roles productivos estan presentes y validados;
  • tablas destino estan presentes y vacias antes de carga inicial;
  • snapshot/hash/filas/columnas coinciden o snapshot nuevo tiene gate propio;
  • rollback esta aceptado;
  • no se combina con sync, scheduler, cron ni pipelines.

NO-GO si:

  • falta target productivo o backup/baseline;
  • falta autorizacion separada;
  • aparece drift de snapshot, mapping o autoridad;
  • hay filas productivas no explicadas;
  • se requiere leer secretos o imprimir connection strings;
  • se intenta usar sandbox;
  • se intenta automatizar la carga inicial.

12. Evidencias requeridas

Evidencia minima del gate posterior:

  • safe point local/VPS inicial y final;
  • target productivo exacto;
  • backup prod o baseline inicial, con hash/listado si corresponde;
  • preflight read-only;
  • scripts ejecutados y orden;
  • conteos RAW/CORE/MART;
  • conciliacion de importe y CMV;
  • control de duplicados, hashes, line_key y line_sequence;
  • grants y PUBLIC;
  • rollback disponible, ejecutado o no ejecutado;
  • decision final y proximo gate.

13. Paquete candidate preparado

Ruta:

text infra/business-observer/production/postgres/

DDL candidate:

  • ddl/PDF-007A/001-source-003-production-target-tables-preflight.candidate.sql;
  • ddl/PDF-007A/002-source-003-production-target-tables-forward.candidate.sql;
  • ddl/PDF-007A/003-source-003-production-target-tables-post-checks.candidate.sql;
  • ddl/PDF-007A/rollback-drop-source-003-production-target-tables.candidate.sql.

Load candidate:

  • load/PDF-007A/001-source-003-production-initial-load-preflight.candidate.sql;
  • load/PDF-007A/002-source-003-production-initial-load-raw.candidate.sql;
  • load/PDF-007A/003-source-003-production-initial-load-core.candidate.sql;
  • load/PDF-007A/004-source-003-production-initial-load-marts.candidate.sql;
  • load/PDF-007A/005-source-003-production-initial-load-post-checks.candidate.sql;
  • load/PDF-007A/rollback-source-003-production-initial-load.candidate.sql.

Los scripts son candidatos no ejecutados. No contienen credenciales ni connection strings.

14. Restricciones vigentes

Siguen explicitamente NO-GO:

  • produccion real hasta gate posterior;
  • sync;
  • scheduler;
  • cron;
  • pipelines;
  • cargas automaticas;
  • openclaw-postgres-sandbox.

15. Proximo gate recomendado

Proximo gate recomendado:

text PDF-007B SOURCE-003 production baseline/target provisioning and backup gate

Ese gate debe decidir primero si se crea target productivo o se valida un target existente, y debe cerrar backup/baseline antes de cualquier DDL o carga.

16. Confirmacion de no ejecucion

Durante PDF-007A:

  • no se ejecuto DDL en produccion;
  • no se ejecuto carga en produccion;
  • no se ejecuto COPY;
  • no se ejecuto INSERT/UPDATE/DELETE/TRUNCATE;
  • no se ejecuto sync;
  • no se ejecuto scheduler;
  • no se ejecuto cron;
  • no se ejecutaron pipelines;
  • no se hicieron writes en produccion;
  • no se uso openclaw-postgres-sandbox;
  • no se crearon backups ni dumps;
  • no se leyeron secret files;
  • no se imprimieron passwords ni connection strings reales.