Saltar a contenido

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 \\copy deja de usar FROM :'pdf008h_controlled_jsonl_path';
  • el \\copy usa el path controlado literal /tmp/pdf008f-source002-products.jsonl;
  • se preservan SHA256 JSONL, conteo 314, SKUs unicos 314, 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.sql
  • infra/business-observer/production/postgres/products/PDF-008H/002-source-002-products-official-load-raw.candidate.sql
  • infra/business-observer/production/postgres/products/PDF-008H/003-source-002-products-official-load-core.candidate.sql
  • infra/business-observer/production/postgres/products/PDF-008H/004-source-002-products-official-load-catalog-inventory-economic.candidate.sql
  • infra/business-observer/production/postgres/products/PDF-008H/005-source-002-products-official-load-marts.candidate.sql
  • infra/business-observer/production/postgres/products/PDF-008H/rollback-source-002-products-official-load.candidate.sql

Cambio aplicado:

  • pdf008h_expected_pre_rehearsal_backup_sha256 deja 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_path presente;
  • pdf008h_confirm_pre_rehearsal_backup debe coincidir con pdf008h_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.sql
  • 002-source-002-products-official-load-raw.candidate.sql
  • 003-source-002-products-official-load-core.candidate.sql
  • 004-source-002-products-official-load-catalog-inventory-economic.candidate.sql
  • 005-source-002-products-official-load-marts.candidate.sql
  • rollback-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_backup igual al SHA esperado;
  • JSONL /tmp/pdf008f-source002-products.jsonl con 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.