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:
ABSENTendocker ps -a; - volumen productivo Business Observer:
ABSENTen nombres visibles Docker; - red productiva Business Observer:
ABSENTen nombres visibles Docker; - DB
openclaw_business_observer_prod:ABSENTen 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:ABSENTporque no existe DB productiva detectada; - tablas productivas
SOURCE-003:ABSENTporque no existe DB productiva detectada; - datos productivos
SOURCE-003:ABSENTporque no existen tablas/DB productivas detectadas; - backup productivo vigente Business Observer:
UNKNOWN, sin evidencia de carpeta productiva bajo/opt/backups/openclawen 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.sqlpara 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:
- Backup prod o baseline inicial.
- Si existe produccion, generar backup productivo autorizado y validar restore/listado.
- Si no existe produccion, documentar baseline inicial antes de crear objetos.
- DDL prod.
- Crear o confirmar DB, schema y roles productivos con gate propio.
- Ejecutar DDL de tablas
SOURCE-003solo despues de preflight y backup. - Carga inicial prod.
- Preparar CSV fuera de Git desde
SOURCE-003-SNAPSHOT-001o snapshot nuevo autorizado. - Ejecutar manualmente
raw -> core -> mart, sin jobs ni scheduler. - Validacion prod.
- Confirmar RAW
1886, CORE1886, MART1/25/173/180, importes, CMV, hashes, duplicados, grants y objetos fuera de alcance. - Cierre documental.
- 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_idautorizado, 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_keyyline_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.