PDF-008I-D - SOURCE-002 Official RAW Copy Backup Param Hotfix¶
Fecha: 2026-06-21
Estado: HOTFIX DOCUMENTAL-TECNICO / RAW COPY Y BACKUP PARAM CORREGIDOS / SIN EJECUCION
portal_visible = yes
Scope: tenant
tenant_id: alpuntodeventa
Owner: Gabi / Carlos Canu
1. Contexto¶
PDF-008I-C quedo AMARILLO CONTROLADO / NO-GO PARA RELOAD.
El preflight oficial paso, el backup pre-rehearsal retry fue creado y validado,
el JSONL operativo quedo identificado y SOURCE-002 y SOURCE-003
permanecieron intactos. El script RAW fallo antes de INSERT/COMMIT, sin
writes efectivos nuevos y sin rollback.
Evidencia recibida para este hotfix:
| Control | Resultado |
|---|---|
| backup pre-rehearsal retry | /opt/backups/openclaw/business-observer-prod/postgres/pre-source-002-reload-rehearsal-retry/20260621T115714Z/openclaw-bo-prod-postgres-pre-source-002-reload-rehearsal-retry-20260621T115714Z.dump |
| backup SHA256 retry | 24ce2979739d09f39d1a6308ef1be3ca411960c8338dfb707a72989b9085b08b |
| JSONL operativo | /tmp/pdf008f-source002-products.jsonl |
| JSONL SHA256 | 30fb804deba1d6492622f1f64c78f6e2ecbd207fd9a9c3d75bef36b516919531 |
| SOURCE-002 final | RAW/CORE/catalog/inventory/economic 314/314/314/314/314/314, mart alerts 100 |
| SOURCE-003 final | RAW/CORE/MART 1886/1886/1/25/173/180 |
2. Causa Del NO-GO¶
La causa directa del fallo RAW fue el uso de variable psql dentro de
\\copy:
sql
\copy pdf008h_source_002_products_stage(raw_line) FROM :'pdf008h_controlled_jsonl_path' WITH (FORMAT text);
En psql, \\copy procesa el archivo desde el cliente y esta forma puede no
expandirse como path de archivo. El resultado observado fue busqueda de un
archivo invalido y error :: No such file or directory.
La segunda causa de bloqueo era que los scripts oficiales seguian ligados al
SHA256 del backup anterior 05df70e1.... Cada rehearsal debe validar el backup
pre-rehearsal creado para esa corrida, no uno historico.
3. Hotfix RAW Copy¶
Archivo modificado:
infra/business-observer/production/postgres/products/PDF-008H/002-source-002-products-official-load-raw.candidate.sql
Cambio aplicado:
- el
\\copydeja de usarFROM :'pdf008h_controlled_jsonl_path'; - el
\\copyusa el path controlado literal/tmp/pdf008f-source002-products.jsonl; - se preservan SHA256 JSONL, conteo
314, SKUs unicos314,batch_id, target productivo dedicado, bloqueo de staging/sandbox y sin credenciales.
4. Hotfix Backup SHA Parametrizado¶
Archivos modificados:
infra/business-observer/production/postgres/products/PDF-008H/001-source-002-products-official-load-preflight.candidate.sqlinfra/business-observer/production/postgres/products/PDF-008H/002-source-002-products-official-load-raw.candidate.sqlinfra/business-observer/production/postgres/products/PDF-008H/003-source-002-products-official-load-core.candidate.sqlinfra/business-observer/production/postgres/products/PDF-008H/004-source-002-products-official-load-catalog-inventory-economic.candidate.sqlinfra/business-observer/production/postgres/products/PDF-008H/005-source-002-products-official-load-marts.candidate.sqlinfra/business-observer/production/postgres/products/PDF-008H/rollback-source-002-products-official-load.candidate.sql
Cambio aplicado:
pdf008h_expected_pre_rehearsal_backup_sha256deja de quedar hardcodeado;- el gate debe pasar ese SHA por variable explicita;
- si falta, el script aborta;
- los scripts de write y rollback tambien exigen
pdf008h_pre_rehearsal_backup_pathpresente; pdf008h_confirm_pre_rehearsal_backupdebe coincidir conpdf008h_expected_pre_rehearsal_backup_sha256;- si falta o no coincide, el script aborta.
El hotfix no calcula backups ni hashes. Solo corrige las guardas oficiales para aceptar el backup validado de la corrida aprobada.
5. Scripts Modificados¶
Paquete:
infra/business-observer/production/postgres/products/PDF-008H/
Scripts:
001-source-002-products-official-load-preflight.candidate.sql002-source-002-products-official-load-raw.candidate.sql003-source-002-products-official-load-core.candidate.sql004-source-002-products-official-load-catalog-inventory-economic.candidate.sql005-source-002-products-official-load-marts.candidate.sqlrollback-source-002-products-official-load.candidate.sql
No se modifico 006-source-002-products-official-load-post-checks.candidate.sql
porque no valida backup pre-rehearsal ni ejecuta \\copy.
6. Restricciones Respetadas¶
Durante este hotfix:
- no se ejecuto SQL;
- no se ejecuto carga;
- no se ejecuto
COPY; - no se ejecuto
INSERT/UPDATE/DELETE/TRUNCATE; - no se ejecuto DML;
- no se toco PostgreSQL produccion con writes;
- no se toco PostgreSQL staging;
- no se uso sandbox;
- no se toco WooCommerce;
- no se llamo API WooCommerce;
- no se ejecuto sync;
- no se ejecuto scheduler;
- no se ejecuto cron;
- no se ejecutaron pipelines;
- no se creo snapshot nuevo;
- no se creo backup nuevo;
- no se creo dump nuevo;
- no se versionaron JSONL, CSV ni snapshots temporales;
- no se leyeron secretos;
- no se imprimieron passwords ni connection strings reales;
- no se modifico OpenClaw, NPM, Portainer ni Docker.
7. Estado De Recarga¶
La recarga todavia no fue ejecutada.
WooCommerce, sync, scheduler, cron y pipelines siguen NO-GO.
8. Proximo Gate Recomendado¶
PDF-008I-E SOURCE-002 products controlled reload rehearsal retry
Alcance recomendado:
- safe point nuevo;
- backup pre-rehearsal autorizado por gate separado;
- SHA256 del backup pasado como
pdf008h_expected_pre_rehearsal_backup_sha256; - path del backup informado como
pdf008h_pre_rehearsal_backup_path; - confirmacion
pdf008h_confirm_pre_rehearsal_backupigual al SHA esperado; - JSONL
/tmp/pdf008f-source002-products.jsonlcon SHA256 confirmado; - ejecucion ordenada RAW, CORE, derivadas, MART y post-checks solo con autorizacion explicita;
- WooCommerce, sync, scheduler, cron y pipelines en
NO-GO.
9. Estado Final¶
Estado final: VERDE DOCUMENTAL-TECNICO / HOTFIX PUBLICABLE.
La recarga sigue NO-GO hasta un gate separado.