Saltar a contenido

PDF-012P - PROD OUTBOX GUARDED SINGLE SEND

Objetivo

Ejecutar una prueba productiva manual controlada sobre VPS/prod usando solo la notification sintetica de PDF-012O: PDF-012O:BILLING_CUSTOMER_REQUEST:TEST001.

Flujo: READY_BLOCKED -> guard global -> aprobacion manual -> SMTP real -> SENT -> event log -> retry bloqueado antes de SMTP.

Autorizacion explicita

Se autorizo exactamente 1 email real interno a facturacion@ladirecta.com.ar.

Se autorizo SQL write controlado solo en VPS/prod, base openclaw_business_observer_prod, schema business_observer, para registrar aprobacion manual, intento de envio, exito, update de status a SENT despues de SMTP OK y retry bloqueado.

Backup pre-PDF-012P

PDF-012P confirma primero el backup PDF-012O esperado: /opt/openclawai/backups/PDF-012O/business_observer_four_tables_pre_pdf_012o_20260625T161247Z.dump.

Tambien crea un backup pre-PDF-012P de las cuatro tablas target en: /opt/openclawai/backups/PDF-012P/.

Backup ejecutado:

  • Path: /opt/openclawai/backups/PDF-012P/business_observer_four_tables_pre_pdf_012p_20260625T163025Z.dump
  • Timestamp: 20260625T163025Z
  • Tamano: 26908
  • SHA256: fe5bc7ee2aaa8a9e1857bb1ec2cd3d7b6b044030e24b61b88bd64e69c0199cb4

Notification usada

  • Idempotency key: PDF-012O:BILLING_CUSTOMER_REQUEST:TEST001
  • Recipient: facturacion@ladirecta.com.ar
  • Type: BILLING_CUSTOMER_REQUEST
  • Status antes: READY_BLOCKED
  • Status despues esperado: SENT
  • send_blocked_by_default=true

Resultado del envio

Resultado del gate: PDF-012P_PROD_OUTBOX_GUARDED_SINGLE_SEND_GO.

El primer intento envio exactamente 1 email real interno, sin CC, sin BCC y sin adjuntos. La actualizacion a SENT ocurrio solo despues de confirmacion SMTP OK.

  • Notification id: 1
  • Status antes: READY_BLOCKED
  • Status despues: SENT
  • Subject: Solicitud alta ecommerce pendiente de revision SGC - PDF-012O
  • Message id sanitizado: <178240502929.797709.15169280561079786438@alpuntodeventa.com.ar>
  • SMTP response sanitizada: SMTP send completed; provider message id not returned by smtplib.

Eventos registrados

  • SEND_APPROVED_MANUAL
  • SEND_ATTEMPTED
  • SEND_SUCCEEDED
  • ALREADY_SENT_GLOBAL_BLOCKED

Retry bloqueado

El retry se ejecuto como prueba controlada y quedo bloqueado por guard global antes de cualquier SMTP: ALREADY_SENT_GLOBAL_BLOCKED.

Evidencia sanitizada

  • tmp/pdf-012p/prod_outbox_guarded_single_send_result.json
  • tmp/pdf-012p/prod_outbox_guarded_single_send_result.txt
  • tmp/pdf-012p/prod_outbox_guarded_single_send_retry_result.json
  • tmp/pdf-012p/prod_outbox_guarded_single_send_retry_result.txt

La evidencia no incluye passwords, secrets, connection strings ni contenido de archivos secrets.

SQL write prod ejecutado

SQL write acotado a:

  • insert de evento SEND_APPROVED_MANUAL;
  • insert de evento SEND_ATTEMPTED;
  • update de business_observer.ecommerce_notification_outbox.status = 'SENT';
  • insert de evento SEND_SUCCEEDED;
  • insert de evento retry ALREADY_SENT_GLOBAL_BLOCKED.

Que no se hizo

No se enviaron emails a clientes, proveedores ni listas. No se uso CC/BCC ni adjuntos. No se usaron datos reales de clientes. No se imprimieron secrets/passwords/connection strings. No se escribio en SGC. No se toco WooCommerce API. No se activo runtime, sync, scheduler, cron ni pipelines.

Proximo paso hacia produccion

Revisar evidencia PDF-012P y abrir un gate separado para worker dry-run/worker manual sobre nuevas notifications sinteticas o para aprobar el siguiente paso operativo. Scheduler, cron y runtime automatico siguen en NO-GO.