Production¶
Espacio documental para la etapa Business Observer Production Data
Foundation.
Documento rector actual:
PRODUCTION-DATA-FOUNDATION-INTAKE-001.mdPDF-013AD-CROSS-REPO-WOOCOMMERCE-PRODUCTION-DRY-RUN-EXECUTION-CLOSED-CHECKPOINT.mdPDF-013AC-CROSS-REPO-WOOCOMMERCE-PRODUCTION-DRY-RUN-EXECUTION-PLAN-CHECKPOINT.mdPDF-013AB-CROSS-REPO-WOOCOMMERCE-PRODUCTION-DRY-RUN-AUTHORIZATION-PLAN-CHECKPOINT.mdPDF-013AA-CROSS-REPO-WOOCOMMERCE-PRODUCTION-AUTHENTICATED-RENDER-CHECKPOINT.mdPDF-013Z-CROSS-REPO-WOOCOMMERCE-PRODUCTION-PRIVATE-PAGE-ACCESS-VALIDATION-CHECKPOINT.mdPDF-013Y-CROSS-REPO-WOOCOMMERCE-PRODUCTION-PRIVATE-PAGE-CREATE-CHECKPOINT.mdPDF-013X-CROSS-REPO-WOOCOMMERCE-PRODUCTION-PRIVATE-PAGE-PLAN-CHECKPOINT.mdPDF-013W-CROSS-REPO-WOOCOMMERCE-PRODUCTION-PLUGIN-ACTIVATION-CHECKPOINT.mdPDF-013V-CROSS-REPO-WOOCOMMERCE-PRODUCTION-PLUGIN-AVAILABILITY-CHECKPOINT.mdPDF-013U-CROSS-REPO-WOOCOMMERCE-PRODUCTION-PROMOTION-PLAN-CHECKPOINT.mdPDF-013T-CROSS-REPO-WOOCOMMERCE-RATE-LIMIT-LOGGING-HARDENING-CHECKPOINT.mdPDF-013S-CROSS-REPO-WOOCOMMERCE-STAGING-TO-PROD-SECURITY-REVIEW-CHECKPOINT.mdPDF-013R-CROSS-REPO-WOOCOMMERCE-STAGING-PROMOTION-READINESS-CHECKPOINT.mdPDF-013Q-CROSS-REPO-WOOCOMMERCE-STAGING-HARDENING-CHECKPOINT.mdPDF-013P-CROSS-REPO-WOOCOMMERCE-STAGING-DRY-RUN-CHECKPOINT.mdPDF-013O-CROSS-REPO-WOOCOMMERCE-STAGING-PRIVATE-PAGE-CHECKPOINT.mdPDF-013N-CROSS-REPO-WOOCOMMERCE-STAGING-PLUGIN-ACTIVATION-CHECKPOINT.mdPDF-013M-CROSS-REPO-WOOCOMMERCE-STAGING-PLUGIN-AVAILABILITY-CHECKPOINT.mdPDF-013L-CROSS-REPO-WOOCOMMERCE-STAGING-WORDPRESS-READINESS-CHECKPOINT.mdPDF-013K-CROSS-REPO-WOOCOMMERCE-SAME-VPS-STAGING-BASE-CHECKPOINT.mdPDF-013J-CROSS-REPO-WOOCOMMERCE-STAGING-PREP-PLAN-CHECKPOINT.mdPDF-013I-CROSS-REPO-WOOCOMMERCE-RESTORE-POINTS-CHECKPOINT.mdPDF-013H-CROSS-REPO-WOOCOMMERCE-SAME-VPS-RESTORE-READINESS-CHECKPOINT.mdPDF-013G-CROSS-REPO-WOOCOMMERCE-SAME-VPS-CONTROLLED-STAGING-STRATEGY.mdPDF-013F-CROSS-REPO-WOOCOMMERCE-LOCAL-STAGING-TOOLING-CHECKPOINT.mdPDF-013E-CROSS-REPO-WOOCOMMERCE-STAGING-READY-PLAN-CHECKPOINT.mdPDF-013D-CROSS-REPO-WOOCOMMERCE-INTAKE-CHECKPOINT.mdPDF-013C-FORM-PLUGIN-INTAKE-CONTRACT.mdPDF-013B-PROD-REQUEST-INTAKE-SYNTHETIC-WRITE.mdPDF-013A-MVP-REQUEST-INTAKE-PRODUCTION-PATH.mdPDF-012P-PROD-OUTBOX-GUARDED-SINGLE-SEND.mdPDF-012O-PROD-SYNTHETIC-BLOCKED-SEED.mdPDF-012N-PROD-POST-DDL-READINESS.mdPDF-012M-PROD-DDL-PROMOTION.mdPDF-002-STAGING-DB-ROLES-SCHEMAS-DDL-CANDIDATE.mdPDF-003-STAGING-DDL-PREFLIGHT-READONLY.mdPDF-003B-STAGING-TARGET-DEFINITION.mdPDF-003C-STAGING-PREREQUISITES-BACKUP-RESTORE-ACCESS.mdPDF-003D-STAGING-TARGET-PROVISIONING-DECISION-RECORD.mdPDF-003E-STAGING-BACKUP-RESTORE-RUNBOOK-CANDIDATE.mdPDF-003F-BLOCKER-STAGING-TARGET-OPERATIONAL-HANDOFF.mdPDF-003F-A-STAGING-TARGET-NON-SENSITIVE-INTAKE.mdPDF-003F-B-STAGING-FINGERPRINT-READONLY-EVIDENCE.mdPDF-004A-STAGING-POSTGRES-STACK-PREFLIGHT-PLAN.mdPDF-004B-STAGING-POSTGRES-STACK-PROVISIONING.mdPDF-004C-STAGING-POSTGRES-REAL-TARGET-READONLY-PREFLIGHT.mdPDF-004D-STAGING-POSTGRES-BACKUP-BASELINE-EXECUTION.mdPDF-004E-STAGING-POSTGRES-RESTORE-DRILL.mdPDF-004F-DDL-BUSINESS-OBSERVER-STAGING-CANDIDATE-PREFLIGHT.mdPDF-004G-DDL-BUSINESS-OBSERVER-STAGING-EXECUTION.mdPDF-005A-SOURCE-003-STAGING-INITIAL-LOAD-CANDIDATE-PREFLIGHT.mdPDF-005B-SOURCE-003-STAGING-TARGET-TABLES-DDL-CANDIDATE.mdPDF-005C-SOURCE-003-STAGING-TARGET-TABLES-DDL-EXECUTION.mdPDF-006A-SOURCE-003-STAGING-INITIAL-LOAD-CANDIDATE.mdPDF-006B-SOURCE-003-STAGING-SNAPSHOT-PREFLIGHT.mdPDF-006C-SOURCE-003-STAGING-INITIAL-LOAD-EXECUTION-PACKAGE.mdPDF-006D-SOURCE-003-STAGING-INITIAL-LOAD-EXECUTION.mdPDF-007A-SOURCE-003-PRODUCTION-CONTROLLED-PREPARATION.mdPDF-007B2-SOURCE-003-PRODUCTION-DEDICATED-POSTGRES-PROVISIONING.mdPDF-007D-SOURCE-003-PRODUCTION-INITIAL-LOAD-EXECUTION.mdPDF-008A-SOURCE-002-PRODUCTS-WOOCOMMERCE-READY-CANDIDATE.mdPDF-008B-SOURCE-002-PRODUCTS-FULL-USE-CASE-PREFLIGHT.mdPDF-008C-SOURCE-002-PRODUCTS-RUNTIME-PREFLIGHT-SNAPSHOT.mdPDF-008D-SOURCE-002-PRODUCTS-DDL-LOAD-CANDIDATE.mdPDF-008E-SOURCE-002-PRODUCTS-PRODUCTION-DDL-EXECUTION.mdPDF-008G-SOURCE-002-PRODUCTS-PRODUCTION-INITIAL-LOAD-EXECUTION.mdPDF-008H-SOURCE-002-PRODUCTS-OFFICIAL-LOAD-SCRIPTS-FORMALIZATION.mdPDF-008I-B-SOURCE-002-OFFICIAL-LOAD-SCRIPTS-HOTFIX.mdPDF-008I-D-SOURCE-002-OFFICIAL-RAW-COPY-BACKUP-PARAM-HOTFIX.mdPDF-008I-F-SOURCE-002-DERIVED-SNAPSHOT-DATE-HOTFIX.mdPDF-008I-G-SOURCE-002-PRODUCTS-CONTROLLED-RELOAD-REHEARSAL.mdPDF-009A-WOOCOMMERCE-PRODUCTS-MAPPING-API-CANDIDATE.mdPDF-009B-1-WOOCOMMERCE-PRODUCT-API-EXTENSION-DESIGN.mdPDF-009B-WOOCOMMERCE-READ-ONLY-PREFLIGHT.mdPDF-009C-SOURCE-002-WOOCOMMERCE-COMPARISON-DRY-RUN.mdPDF-009D-WOOCOMMERCE-PRODUCT-LIFECYCLE-STOCK-SYNC-POLICY.mdPDF-009E-WOOCOMMERCE-PRODUCT-RULES-PRE-WRITE-CANDIDATE.mdPDF-009F-WOOCOMMERCE-FINAL-PAYLOAD-DRY-RUN.mdPDF-009G-WOOCOMMERCE-CATEGORIES-IMAGES-ATTRIBUTES-MAPPING-CANDIDATE.mdPDF-009H-FRONTEND-FACETS-PRODUCT-DISPLAY-CONTRACT.mdPDF-009I-WOOCOMMERCE-MARCA-MEDIA-LIBRARY-DISCOVERY.mdPDF-009J-WOOCOMMERCE-MARCA-GLOBAL-ATTRIBUTE-CONTROLLED-WRITE.mdPDF-009K-WOOCOMMERCE-MARCA-TERMS-CONTROLLED-WRITE.mdPDF-009L-WOOCOMMERCE-CATEGORIES-CONTROLLED-WRITE.mdPDF-009M-WOOCOMMERCE-PRODUCT-DRAFT-PILOT-WRITE.mdPDF-010A-B2B-PRICE-LISTS-CUSTOMER-SYNC-CONTRACT.mdPDF-010B-B2B-PRICE-LIST-AUTHORITY-READ-ONLY-VALIDATION.mdPDF-010C-SOURCE-001-PRICE-LIST-CATALOG-READ-ONLY-VALIDATION.mdPDF-010D-SOURCE-001-VCLIENTES-READ-ONLY-SNAPSHOT.mdPDF-010E-B2B-CUSTOMER-PRICE-DRY-RUN.mdPDF-010F-B2B-COMMERCIAL-PRICE-RULES-SERVER-SIDE-PRICING-DESIGN.mdPDF-010G-B2B-COMMERCIAL-PRICE-RULES-APPROVAL.mdPDF-010H-B2B-RUNTIME-DRY-RUN-DESIGN.mdPDF-010I-B2B-PRICING-ENGINE-LOCAL-PROTOTYPE.mdPDF-010J-B2B-CUSTOMER-MAPPING-CART-CHECKOUT-DRY-RUN.mdPDF-010K-B2B-PERSISTENCE-CONTRACT-DDL-CANDIDATE.mdPDF-010L-B2B-DDL-EXECUTION-PREFLIGHT.mdPDF-010M-B2B-POSTGRESQL-REAL-READ-ONLY-PREFLIGHT.mdPDF-010N-B2B-CONTROLLED-DDL-EXECUTION.mdPDF-010O-B2B-POSTGRESQL-PERMISSIONS-DDL-RETRY-PLAN.mdPDF-010P-B2B-DDL-RETRY-CANDIDATE.mdPDF-010Q-B2B-CONTROLLED-DDL-RETRY-EXECUTION.mdPDF-010R-POSTGRESQL-ADMIN-OWNER-CREDENTIAL-RECOVERY.mdPDF-010S-POSTGRESQL-ADMIN-OWNER-ENABLEMENT-EVIDENCE.mdPDF-010T-B2B-CONTROLLED-DDL-EXECUTION-WITH-ADMIN-OWNER.mdPDF-010U-B2B-BACKUP-STRATEGY-DDL-RETRY-PLAN.mdPDF-010V-B2B-LOCAL-DEV-DDL-EXECUTION.mdPDF-010W-B2B-SCHEMA-ONLY-BACKUP-LOCAL-DEV-PLAN.mdPDF-010X-B2B-LOCAL-DEV-DDL-EXECUTION.mdPDF-010Y-B2B-BACKUP-PERMISSIONS-PLAN.mdPDF-010Z-B2B-BACKUP-PERMISSIONS-LOCAL-DEV.mdPDF-011A-B2B-OWNER-BACKUP-PERMISSIONS-LOCAL-DEV.mdPDF-011B-B2B-LOCAL-DEV-DDL-EXECUTION.mdPDF-011C-B2B-LOCAL-DEV-SEED-DATA-PLAN.mdPDF-011D-B2B-LOCAL-DEV-SEED-EXECUTION.mdPDF-011E-B2B-FUNCTIONAL-READ-ONLY-VALIDATION.mdPDF-011F-LADIRECTA-CUSTOMER-ACTIVATION-AND-NEW-CUSTOMER-REQUEST-MODEL.mdPDF-011G-CUSTOMER-ACTIVATION-DDL-CANDIDATE.mdPDF-011H-CUSTOMER-ACTIVATION-DDL-PREFLIGHT.mdPDF-011I-CUSTOMER-ACTIVATION-LOCAL-DEV-DDL-EXECUTION.mdPDF-011J-CUSTOMER-ACTIVATION-DRY-RUN.mdPDF-011K-CUSTOMER-ACTIVATION-WRITER-CONTRACT.mdPDF-011L-CUSTOMER-REQUEST-WRITER-LOCAL-DEV.mdPDF-011M-SGC-READ-ONLY-CUSTOMER-REQUEST-REVIEW.mdPDF-011N-LADIRECTA-BILLING-NOTIFICATION-SECRETS-DRY-RUN.mdPDF-011O-LADIRECTA-SMTP-SECRET-PREFLIGHT.mdPDF-011P-LADIRECTA-SMTP-SECRET-READY-CHECK.mdPDF-011Q-LADIRECTA-SMTP-CONNECTION-PREFLIGHT.mdPDF-011R-LADIRECTA-SMTP-SINGLE-SEND-CONTROLLED-TEST.mdPDF-011S-SMTP-SINGLE-SEND-FINAL-REVIEW.mdPDF-011T-SMTP-SINGLE-SEND-REAL-CONTROLLED-TEST.mdPDF-012A-MVP-BILLING-NOTIFICATION.mdPDF-012B-BILLING-NOTIFICATION-REAL-SINGLE-SEND.mdPDF-012C-MVP-NOTIFICATION-OUTBOX-LOCAL-DEV.mdPDF-012D-REQUEST-TO-OUTBOX-DRY-RUN-LOCAL-DEV.mdPDF-012E-OUTBOX-WORKER-DRY-RUN-LOCAL-DEV.mdPDF-012F-OUTBOX-SINGLE-SEND-REAL-LOCAL-DEV.mdPDF-012G-OUTBOX-WORKER-READINESS.mdPDF-012H-OUTBOX-WORKER-MANUAL-CONTROLLED-SEND-LOCAL-DEV.mdPDF-012I-OUTBOX-WORKER-IDEMPOTENCY-HARDENING.mdPDF-012J-WORKER-GLOBAL-GUARD-INTEGRATION.mdPDF-012K-WORKER-GUARDED-SINGLE-SEND-LOCAL-DEV.mdPDF-012L-PROMOTION-PREFLIGHT-VPS-PROD.mdIMPORT-RUNTIME-STANDARD-SAFE-BATCHED-IMPORTS.md
SQL candidatos de esta etapa:
sql/PDF-002-staging-db-roles-schemas-candidate.sqlinfra/business-observer/staging/postgres/ddl/PDF-004F/infra/business-observer/staging/postgres/load/PDF-006C/infra/business-observer/production/postgres/ddl/PDF-007A/infra/business-observer/production/postgres/load/PDF-007A/infra/business-observer/production/postgres/products/PDF-008A/infra/business-observer/production/postgres/products/PDF-008D/infra/business-observer/production/postgres/products/PDF-008H/infra/business-observer/production/woocommerce/products/PDF-009A/infra/business-observer/production/postgres/docker-compose.business-observer-prod.candidate.yml
Estado vigente:
-
PDF-013ADregistra el cierre publicado WooCommerce La DirectaPDF-013U-Y PRODUCTION DRY-RUN EXECUTION / SYNTHETIC PAYLOAD / NO EXTERNAL SEND: unico POST sintetico ejecutado y cerrado, HTTP200, resultadoDRY_RUN_READY_BLOCKED / PENDING_SGC_REVIEW / READY_BLOCKED,emails_sent=false,send_blocked_by_default=true, rollback confirmado, home/tienda200, private endpoint404, feature flag efectiva finalfalse. Gate maestroPDF-013C; checkpoint anterior OpenClawPDF-013AC; rama WooCommercerelease/intake-pdf013; HEAD WooCommerce registrado5b4d09f40bb8c5b01896b34c3b8efb14cb42065f; commit publicado en origin5b4d09f docs: record pdf-013u-y production dry-run execution. OpenClaw parte desde HEAD6aa59e9a46ea0eb644703b8c37547181200430c7. EstadoVERDE DOCUMENTAL / PDF-013U-Y EJECUTADO Y CERRADO / RUNTIME PRODUCTIVO VUELTO A ESTADO CERRADO. No repetir POST sin nuevo gate explicito. No se imprimieron nonce, cookies ni auth headers; no se usaron datos reales,SGC, WooCommerce API, SMTP ni emails reales. Desde OpenClaw no se toco produccion, VPS WooCommerce, Docker, runtime, staging, SQL, push ni deploy. -
PDF-013ACregistra el avance WooCommerce La DirectaPDF-013U-Y PRODUCTION DRY-RUN EXECUTION / SYNTHETIC PAYLOAD / NO EXTERNAL SEND: WooCommerce dejo preparado el plan de ejecucion futura del dry-run productivo con payload sintetico, nonce efimero, feature flag temporal reversible, rollback inmediato y evidencia sanitizada. Gate maestroPDF-013C; checkpoint anterior OpenClawPDF-013AB; rama WooCommercerelease/intake-pdf013; HEAD WooCommerce registradob25cea2cef8b3d23ef6454cf52b8a9c4be43db1e; commit registradob25cea2 docs: add pdf-013u-y production dry-run execution plan. OpenClaw parte desde HEADa9f065fefef1eefcff24bfec5fcdbebad5e6de4f. EstadoVERDE DOCUMENTAL / NO-GO RUNTIME / PDF-013U-Y NO EJECUTADO. Validadores WooCommerce registrados:PDF-013U_Y_PRODUCTION_DRY_RUN_EXECUTION_PLAN_VALIDATION_PASSyPDF-013U_X_PRODUCTION_DRY_RUN_AUTHORIZATION_PLAN_VALIDATION_PASS. No se ejecuto produccion, endpoint, POST, nonce, feature flag, rollback real, WooCommerce API,SGC, SMTP, emails, SQL, Docker, staging, VPS, push ni deploy. No se usaron datos reales. Cualquier ejecucion futura requiere autorizacion separada, nueva y explicita. -
PDF-013ABregistra el avance WooCommerce La DirectaPDF-013U-X Production Dry-Run Authorization Plan / No Post: WooCommerce dejo planificada la autorizacion futura del primer dry-run productivo controlado. Gate maestroPDF-013C; checkpoint anterior OpenClawPDF-013AA; rama WooCommercerelease/intake-pdf013; HEAD WooCommerce validadoadd289e91acf0768bdb410ab48e8e9b7cbe829cc; commit nuevoadd289e docs: add pdf-013u-x production dry-run authorization plan. Estado final recomendado WooCommerceVERDEdocumental. OpenClaw parte desde HEADc7ba47b95b0ace9f9da46ada9119ae0c14770a5a. No se ejecuto produccion, no se ejecuto endpoint, no se ejecuto POST, no se capturo nonce, no se habilito feature flag productiva, no se uso WooCommerce API,SGC, SMTP real ni emails. No se toco VPS WooCommerce; SSH WooCommerce VPS queda pendiente/no validado. Los untracked WooCommerceartifacts/ytools/visual-factory/quedan fuera de alcance. PDF-013U-Y no queda autorizado y requiere autorizacion separada, nueva y explicita. -
PDF-013AAregistra el resultado WooCommerce La DirectaPDF-013U-W Production Private Page Authenticated Render / No Form Post: WooCommerce valido el render autenticado controlado de la pagina privada productiva para usuario autorizado. Gate maestroPDF-013C; checkpoint anterior OpenClawPDF-013Z; rama WooCommercerelease/intake-pdf013; HEAD remotoa561776f0d7d2766ef2b2a2124e354d81b7e8e13; commit nuevoa561776 test: validate pdf-013u-w production authenticated render. Estado final recomendado WooCommerceVERDE. Plugin produccionprivate-intake-form active, 0.2.0-candidate. Page ID32, slugprivate-intake-candidate, statusprivatey shortcode presente. Render OK, estructura formulario presente,14/14campos esperados y submit presente. Feature flag productiva efectivafalse. Endpoint produccion no ejecutado, POST productivo no ejecutado, nonce no capturado/no impreso/no guardado, cookies/auth headers no impresos ni guardados y HTML completo no impreso ni guardado con nonce. Publico no autenticado sigue sin acceso:HEADyGETa/private-intake-candidate/devuelven404. Sin link publico/menu; home/tienda sin link al slug. Home/tienda200 OK. No-side-effects visibles: usuarios1 -> 1, customers0 -> 0y paginas con slug1 -> 1. No hubo WooCommerce API,SGC, SMTP real ni emails; no se imprimieron ni versionaron secretos. Proximo paso recomendado:PDF-013U-X PRODUCTION DRY-RUN AUTHORIZATION PLAN / NO POST. -
PDF-013Zregistra el resultado WooCommerce La DirectaPDF-013U-V Production Private Page Access Validation / No Form Post: WooCommerce valido que la pagina privada productiva no queda expuesta publicamente. Gate maestroPDF-013C; checkpoint anterior OpenClawPDF-013Y; rama WooCommercerelease/intake-pdf013; HEAD remoto8cadbea567ebe2e03ad37272454682997e774707; commit nuevo8cadbea test: validate pdf-013u-v production private page access. Estado final recomendado WooCommerceVERDE. Page ID32, tituloLa Directa Private Intake, slugprivate-intake-candidate, statusprivatey shortcode[ladirecta_private_intake_form]. Plugin production activeprivate-intake-form,active,0.2.0-candidate. Feature flag productiva efectivafalse. Publico no autenticado no accede:HEADyGETa/private-intake-candidate/devuelven404. Formulario no visible publicamente. Sin link publico, menu, navegacion ni sitemap expuesto. Endpoint produccion no ejecutado, POST productivo no ejecutado, nonce produccion no capturado y render autenticado con nonce no ejecutado. Produccion home/tienda200 OK. No-side-effects visibles: usuarios1 -> 1, customers0 -> 0y pagina slug count1 -> 1. No hubo WooCommerce API,SGC, SMTP real ni emails; no se imprimieron ni versionaron secretos. Proximo paso recomendado:PDF-013U-W PRODUCTION PRIVATE PAGE AUTHENTICATED RENDER / NO FORM POST. -
PDF-013Yregistra el resultado WooCommerce La DirectaPDF-013U-U Production Private Page Create / Endpoint Blocked / No Form Post: WooCommerce creo la pagina privada productiva del intake. Gate maestroPDF-013C; checkpoint anterior OpenClawPDF-013X; rama WooCommercerelease/intake-pdf013; HEAD remoto34fbd31737a5c7db90cc2018e0e0c1cb8c014ca8; commit nuevo34fbd31 ops: create pdf-013u-u production private page. Estado final recomendado WooCommerceVERDE. Page ID32, tituloLa Directa Private Intake, slugprivate-intake-candidate, statusprivatey shortcode[ladirecta_private_intake_form]. Plugin production activeprivate-intake-form,active,0.2.0-candidate. Feature flag productiva efectivafalse. Endpoint produccion no ejecutado, POST productivo no ejecutado y nonce produccion no capturado. Sin link publico agregado;/private-intake-candidate/publico no autenticado devolvio404. Produccion home/tienda200 OK. Reversa pre-page-create:/var/backups/ladirecta/pdf-013u-u-20260629-014903. No-side-effects visibles: usuarios1 -> 1, customers0 -> 0, sin cambios Nginx/wp-config y sin reload/restart. No hubo WooCommerce API,SGC, SMTP real ni emails; no se imprimieron ni versionaron secretos. Proximo paso recomendado:PDF-013U-V PRODUCTION PRIVATE PAGE ACCESS VALIDATION / NO FORM POST. -
PDF-013Xregistra el resultado WooCommerce La DirectaPDF-013U-T Production Private Page Plan / No Form Post: WooCommerce dejo aprobado el plan de creacion de pagina privada productiva futura. Gate maestroPDF-013C; checkpoint anterior OpenClawPDF-013W; rama WooCommercerelease/intake-pdf013; HEAD remotoa59ca6425a8d6ecf3e73ddb54b7cab066628f0dc; commit nuevoa59ca64 docs: add pdf-013u-t production private page plan. Estado final recomendado WooCommerceVERDE. Produccion no modificada. Pagina productiva no creada, endpoint produccion no ejecutado, nonce produccion no capturado y feature flag productiva bloqueada. Plugin production active0.2.0-candidate; home/tienda200 OK. Plan futuro: tituloLa Directa Private Intake, slugprivate-intake-candidate, statusprivate, shortcode[ladirecta_private_intake_form]y autor admin operativo existente. Perimetromanage_woocommerce/manage_options, sin link publico, sin difusion, sin datos reales y endpoint bloqueado. No hubo WooCommerce API,SGC, SMTP real ni emails; no se imprimieron ni versionaron secretos. Proximo paso recomendado:PDF-013U-U PRODUCTION PRIVATE PAGE CREATE / ENDPOINT BLOCKED / NO FORM POST. -
PDF-013Wregistra el resultado WooCommerce La DirectaPDF-013U-S Production Plugin Activation / Endpoint Blocked: WooCommerce activo el pluginprivate-intake-formen produccion, version0.2.0-candidate, con WP-CLI confirmando estadoACTIVE. Gate maestroPDF-013C; checkpoint anterior OpenClawPDF-013V; rama WooCommercerelease/intake-pdf013; HEAD remoto6ea98dbce91a877f854c268369eeda2020ce6b59; commit nuevo6ea98db ops: activate pdf-013u-s production plugin with endpoint blocked. Estado final recomendado WooCommerceVERDE. Endpoint produccion bloqueado por feature flag; feature flag efectiva en produccionfalse. Produccion home/tienda200 OK. Pagina productiva no creada, nonce produccion no capturado y POST productivo no ejecutado. No-side-effects visibles: usuarios WordPress1, usuarios customer0y sin pagina intake. Reversa pre-activation creada:/var/backups/ladirecta/pdf-013u-s-20260629-005111. No hubo WooCommerce API,SGC, SMTP real ni emails; no se imprimieron ni versionaron secretos. Proximo paso recomendado:PDF-013U-T PRODUCTION PRIVATE PAGE PLAN / NO FORM POST. -
PDF-013Vregistra el resultado WooCommerce La DirectaPDF-013U-R Production Plugin Availability / No Activation: WooCommerce dejo el pluginprivate-intake-formcopiado a produccion, detectado por WordPress produccion yINACTIVE. Gate maestroPDF-013C; checkpoint anterior OpenClawPDF-013U; rama WooCommercerelease/intake-pdf013; HEAD remotodf269775799916c80edf44183cc908abc3f081c5; commit nuevodf26977 ops: add pdf-013u-r production plugin availability. Estado final recomendado WooCommerceVERDE. Produccion home/tienda200 OK. Reversa file-only creada:/var/backups/ladirecta/pdf-013u-r-20260629-003257. Endpoint produccion no ejecutado, nonce produccion no capturado y pagina productiva no creada. No hubo prod runtime ni activacion, SQL writes, WooCommerce API,SGC, SMTP real ni emails. Proximo paso recomendado:PDF-013U-S PRODUCTION PLUGIN ACTIVATION / ENDPOINT BLOCKED. -
PDF-013Uregistra el resultado WooCommerce La DirectaPDF-013U-Q Production Promotion Plan / No Prod Change: WooCommerce dejo documentado el plan exacto de promocion productiva sin ejecutar cambios en produccion. Gate maestroPDF-013C; checkpoint anterior OpenClawPDF-013T; rama WooCommercerelease/intake-pdf013; HEAD remotoef6b0b6a1b131fbe46894efa2fffb9952f4bc62b; commit nuevoef6b0b6 docs: add pdf-013u-q production promotion plan. Estado final recomendado WooCommerceVERDE. Produccion no modificada, plugin no copiado a produccion, plugin no activado en produccion y endpoint produccion no ejecutado. No hubo WooCommerce API,SGC, SMTP real ni emails.GOsolo para plan documental sin cambios;NO-GOpara produccion runtime/write. Proximo paso recomendado:PDF-013U-R PRODUCTION PLUGIN AVAILABILITY / NO ACTIVATION. -
PDF-013Tregistra el resultado WooCommerce La DirectaPDF-013U-P Rate Limit and Logging Hardening: rate limit real implementado con transients, rate limit por IP/request context hasheado por hora y por identidad CUIT/email hasheada por dia,429 RATE_LIMITEDvalidado en staging en tercer intento, logging sanitizado implementado sin logging persistente sensible por defecto, feature flag productiva bloqueada por defecto, respuesta positiva minimizada y JS sin payload normalizado en DOM. Dry-run staging sigue bloqueado conDRY_RUN_READY_BLOCKED,PENDING_SGC_REVIEW,READY_BLOCKED,send_blocked_by_default=true,writes_executed=falseyemails_sent=false. No-side-effects confirmados: usuarios2 -> 2y customers0 -> 0. Produccion read-only200 OKen home y tienda. No hubo WooCommerce API,SGC, SMTP real ni emails. No se imprimieron ni versionaron secretos. Produccion runtime/write sigueNO-GO. Proximo paso recomendado:PDF-013U-Q PRODUCTION PROMOTION PLAN / NO PROD CHANGE. -
PDF-013Sregistra el resultado WooCommerce La DirectaPDF-013U-O Staging to Prod Diff and Security Review: staging hardeningPASS, estado final recomendadoAMARILLO,GOsolo para plan documental de promocion yNO-GOpara produccion runtime/write. Produccion no fue modificada, endpoint produccion no fue ejecutado y no hubo WooCommerce API,SGC, SMTP real ni emails. Security review: REST route con permission callback, capabilitymanage_woocommerce/manage_options, nonce REST, entorno privado/flag, dry-run sin WooCommerce API/SGC/SMTP, outboxREADY_BLOCKEDy validacion y sanitizacionOK. Hallazgos: rate limit solo candidate, falta enforcement real, falta logging persistente sanitizado y respuesta positiva expone payload/candidate completo. Bloqueantes: rate limit real, logging sanitizado, feature flag default bloqueado, decision endpoint productivo, perimetro adicional, rollback productivo, plan sin writes externos y minimizacion de respuesta. Proximo paso recomendado:PDF-013U-P RATE LIMIT AND LOGGING HARDENING. -
PDF-013Rregistra el resultado WooCommerce La DirectaPDF-013U-N Staging Promotion Readiness / No Prod Write: staging hardeningPASS, estado final recomendadoAMARILLO,GOpara plan documental de promocion yNO-GOpara produccion runtime/write. Produccion no fue modificada, endpoint produccion no fue ejecutado y no hubo WooCommerce API,SGC, SMTP real ni emails. Bloqueantes: security review del plugin, rate limit real con enforcement, logging sanitizado, rollback productivo, feature flag default bloqueado, decision explicita sobre endpoint productivo, perimetro Basic Auth/admin-only/allowlist y plan sinSGC/WooCommerce API writes ni SMTP real. Proximo paso recomendado:PDF-013U-O STAGING TO PROD DIFF AND SECURITY REVIEW. -
PDF-013Qregistra el resultado WooCommerce La DirectaPDF-013U-M Staging Dry-Run Hardening and Negative Cases: casos positivos persona juridica B2B sintetica y comercio/persona fisica sintetica conHTTP 200,DRY_RUN_READY_BLOCKED,PENDING_SGC_REVIEW,READY_BLOCKED,send_blocked_by_default=true,writes_executed=falseyemails_sent=false. Casos negativos confirmados: sin nonce403 rest_forbidden, nonce invalido403 rest_forbidden, sin capability401 rest_forbidden, CUIT/email/telefono invalidos, requerido faltante, honeypot, challenge, payload vacio, JSON malformado yGETsin ruta. No-side-effects confirmados: usuarios staging2 -> 2, usuarios customer0 -> 0, sin creacion de usuario WooCommerce, sin cliente real, sin WooCommerce API, sinSGC, sin SMTP real ni emails. Nonce usado efimeramente; nonce/cookies/auth headers no guardados. Produccion read-only sigue200 OK; staging protegido sigue401 Unauthorized, Basic Auth,noindexyno-store. No se imprimieron ni versionaron secretos. Proximo paso recomendado:PDF-013U-N STAGING PROMOTION READINESS / NO PROD WRITE. -
PDF-013Pregistra el resultado WooCommerce La DirectaPDF-013U-L Staging Nonce Capture and Dry-Run Request: nonce capturado efimeramente, nonce/cookies/auth headers no guardados y dry-run POST ejecutado solo contra staging. Resultado sanitizadoHTTP 200,DRY_RUN_READY_BLOCKED,request_status=PENDING_SGC_REVIEW, outboxREADY_BLOCKED,send_blocked_by_default=true,writes_executed=falseyemails_sent=false. Casos negativos: sin nonce401, nonce invalido403y payload invalido422 VALIDATION_ERROR. Produccion read-only sigue200 OK; staging protegido sigue401 Unauthorized, Basic Auth,noindexyno-store. No hubo WooCommerce API,SGC, SMTP real ni emails externos; no se imprimieron ni versionaron secretos. Proximo paso recomendado:PDF-013U-M STAGING DRY-RUN HARDENING AND NEGATIVE CASES. -
PDF-013Oregistra el resultado WooCommerce La DirectaPDF-013U-K Staging Private Page and Nonce Readiness: pagina privada staging creada con Page ID32, slugprivate-intake-candidate, statusprivatey shortcode[ladirecta_private_intake_form]. Pluginprivate-intake-formactivo en staging. Staging protegido responde401 Unauthorizedy conservanoindex/no-store; produccion read-only sigue200 OKen home y tienda. Usuario staging no creado, endpoint intake no ejecutado, nonce no capturado y POST no enviado. No hubo WooCommerce API,SGC, SMTP real ni emails; no se imprimieron ni versionaron secretos; no se creo.envreal niconfig/private-staging.env. Proximo paso recomendado:PDF-013U-L STAGING NONCE CAPTURE AND DRY-RUN REQUEST / NO EXTERNAL SEND. -
PDF-013Nregistra el resultado WooCommerce La DirectaPDF-013U-J Staging Plugin Activation / No Endpoint Post: pluginprivate-intake-formactivo en staging comoLa Directa Private Intake Form Candidate, version0.2.0-candidate, statusActiveywp plugin is-active private-intake-formexit0. Endpoint intake no ejecutado, nonce no capturado y sin pagina/formulario/ usuario creado. -
PDF-013Jregistra el resultado WooCommerce La DirectaPDF-013U-F Same VPS Internal Staging Prep Plan: restore pointPDF-013U-Ecomo prerequisito cumplido y plan exacto de staging interno privado sobre el mismo VPS, con directorio/var/www/ladirecta-staging/public, DBladirecta_staging, usuarioladirecta_staging_usery server block/etc/nginx/sites-available/ladirecta-staging. No hubo staging real, cambios funcionales de produccion, SQL/write/reload/restart/restore, plugin activation, endpoint intake, WooCommerce API writes,SGCwrites, SMTP, emails, sync, scheduler, cron ni pipelines. -
PDF-013Iregistra el resultado WooCommerce La DirectaPDF-013U-E Same VPS Restore Points: restore points reales creados y validados en/var/backups/ladirecta/pdf-013u-e-20260626-205755, backup DB, backupwp-content, backup Nginx, manifest sanitizado e integridad verificada. No hubo restore, staging real, cambios funcionales de produccion, reload/restart de servicios, SQL write, WooCommerce API,SGC, SMTP, emails, sync, scheduler, cron ni pipelines. -
PDF-013Hregistra el resultado read-only de WooCommerce La DirectaPDF-013U-D Same VPS Restore Readiness: restore readinessAMARILLOy same VPS internal stagingVIABLE CON BLOQUEANTES. El HEAD remoto Woo relacionado escd6fceca185ff09b54c012441ee14c984a522456, con commit nuevocd6fcec docs: add pdf-013u-d same vps restore readiness; validadores WooPASS. El VPS WooCommerce fue inspeccionado read-only, sin backup real, restore, SQL, staging real, WordPress runtime, plugin activation, endpoint intake, produccion, WooCommerce API,SGC, SMTP, emails, sync, scheduler, cron ni pipelines. Proximo paso recomendado:PDF-013U-E SAME VPS RESTORE POINTS AND ROLLBACK PLAN / BACKUP AUTHORIZED. -
PDF-013Cdefine el contrato ejecutable del formulario/plugin futuro de La Directa para solicitudes de alta ecommerce. Incluye campos, validaciones, payload schema, endpoint interno candidate, idempotenciaREQUEST_INTAKE:<normalized_cuit>:<email_hash>:<date_bucket>, rate-limit por CUIT/email/IP, seguridad con captcha/honeypot/logs sanitizados, outboxBILLING_CUSTOMER_REQUESTenREADY_BLOCKED, event logNOTIFICATION_CREATEDy handoff paraC:\APV\vps-woocommerce-ladirecta. Genera candidates sanitizados entmp/pdf-013c/. No se enviaron emails reales, no se conecto SMTP para envio, no se ejecuto SQL write en prod, no se escribio enSGC, no se toco WooCommerce API, no se usaron datos reales, no se abrio endpoint publico, no se creo plugin real y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-013Aprepara el camino productivo minimo para solicitud de alta ecommerce: contrato de request, audit, notification outboxREADY_BLOCKEDy event log, con idempotencia candidateREQUEST_INTAKE:<normalized_cuit>:<email_hash>:<date_bucket>y seed sinteticoPDF-013A:REQUEST_INTAKE:TEST001. Genera payloads sanitizados entmp/pdf-013a/y valida rate-limit, allowlist, bloqueo por defecto y hash deterministico. No se enviaron emails reales, no se conecto SMTP para envio, no se ejecuto SQL write en prod, no se escribio enSGC, no se toco WooCommerce API, no se usaron datos reales y no se activo worker, runtime, sync, scheduler, cron ni pipelines. -
PDF-012Pejecuta el gate productivo manual controlado sobre la notification sintetica de PDF-012OPDF-012O:BILLING_CUSTOMER_REQUEST:TEST001. El flujo autorizado envia exactamente1email real interno afacturacion@ladirecta.com.ar, cambiaREADY_BLOCKED -> SENTsolo despues de SMTP OK, registraSEND_APPROVED_MANUAL,SEND_ATTEMPTED,SEND_SUCCEEDEDy bloquea el retry antes de SMTP comoALREADY_SENT_GLOBAL_BLOCKED. No se envian emails a clientes/proveedores/listas, no se usa CC/BCC/adjuntos, no se imprimen secrets/passwords, no se escribe enSGC, no se toca WooCommerce API, no se usan datos reales y no se activa runtime, sync, scheduler, cron ni pipelines. -
PDF-012Lejecuta preflight read-only para promocion del flujo worker guarded/outbox hacia VPS/prod. Local/devgestion_de_negocios_coretiene los 4 objetos requeridos (ecommerce_customer_requests,ecommerce_customer_request_audit,ecommerce_notification_outbox,ecommerce_notification_event_log) con RLS habilitado. VPS/prodopenclaw_business_observer_prodtiene schemabusiness_observer, owneropenclaw_bo_prod_ownery secrets esperados presentes sin valores, pero los 4 objetos de requests/outbox estan ausentes. Estado:OBJECT_DRIFT_DETECTED / NO-GO. Se requiere snapshot VPS y estrategia de backup antes de cualquier DDL/write prod. No se enviaron emails reales, no se conecto SMTP para envio, no se imprimieron secrets/passwords, no se ejecuto SQL write ni DDL en VPS/prod, no se escribio enSGC, no se toco WooCommerce API y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-012Kejecuta el worker manual real con guard global integrado sobre PostgreSQL local/devgestion_de_negocios_core.business_observer, usando la notification sintetica limpiaPDF-012K:BILLING_CUSTOMER_REQUEST:TEST001. El primer intento envia exactamente 1 email real interno afacturacion@ladirecta.com.ar, registra aprobacion manual, intento y exito, cambiaREADY_BLOCKED -> SENTsolo despues de SMTP OK y el retry queda bloqueado antes de SMTP comoALREADY_SENT_GLOBAL_BLOCKED. No se enviaron emails a clientes/proveedores/ listas, no se uso CC/BCC/adjuntos, no se imprimieron secrets/passwords, no se escribio enSGC, no se toco WooCommerce API, no se usaron datos reales, no se toco VPS/prod con datos y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-012Jintegra el guard global del worker real/manual antes de fallback y antes de cualquier SMTP real. Crea/reusa notifications sinteticasPDF-012J:*, detecta exitos historicosSEND_SUCCEEDEDdePDF-012HyPDF-012F, bloquea conALREADY_SENT_GLOBAL_BLOCKEDyFALLBACK_BLOCKED_BEFORE_SMTP, y registraSEND_ELIGIBLE_BUT_BLOCKEDpara la notification nueva sintetica cuando no hay exito compatible. No se enviaron emails reales nuevos, no se conecto SMTP para envio, no se escribio enSGC, no se toco WooCommerce API, no se usaron datos reales, no se toco VPS/prod con datos y no se activo runtime, sync, scheduler, cron ni pipelines. Produccion sigue bloqueada hasta nuevo GO. -
PDF-012Iendurece la idempotencia global posterior al NO-GO dePDF-012H. Ejecuta solo dry-run local/dev, crea/reusaPDF-012I:BILLING_CUSTOMER_REQUEST:TEST001enREADY_BLOCKEDy registra bloqueosALREADY_SENT_GLOBAL_BLOCKEDpara primary/retry antes de cualquier SMTP o fallback. No se enviaron emails reales nuevos, no se conecto SMTP para envio, no se escribio enSGC, no se toco WooCommerce API, no se usaron datos reales, no se toco VPS/prod con datos y no se activo runtime, sync, scheduler, cron ni pipelines. Produccion sigue bloqueada hasta nuevo GO. -
PDF-012Hejecuta el worker real de outbox en modo manual controlado sobre PostgreSQL local/dev y SMTP real, pero cierraNO-GO_VALIDATION_FAILED: se enviaron2emails reales internos afacturacion@ladirecta.com.arpor una desviacion de idempotencia global durante el reintento. La primera notification fuePDF-012C:BILLING_CUSTOMER_REQUEST:TEST001(id=1) y la segunda fue fallbackPDF-012H:BILLING_CUSTOMER_REQUEST:TEST001(id=7). No se enviaron emails a clientes, proveedores ni listas; no se uso CC/BCC/adjuntos; no se imprimieron secrets/passwords; no se escribio enSGC; no se toco WooCommerce API; no se usaron datos reales; no se toco VPS/prod con datos; y no se activo runtime, sync, scheduler, cron ni pipelines. El validador preserva el NO-GO comoPDF-012H_NO_GO_CONFIRMED, conglobal_success_event_count=2,expected_single_send=1yproduction_blocked=true. -
PDF-012Gprepara el readiness operativo del worker de outbox para produccion controlada, sin activarlo automaticamente. Define worker manual/controlado, allowlist internafacturacion@ladirecta.com.aryoperaciones@ladirecta.com.ar, tipo permitidoBILLING_CUSTOMER_REQUEST, rate-limit, idempotencia, estados operativos, retry policy, error handling y observabilidad minima. Genera snapshot sanitizado entmp/pdf-012g/con conteos de pendientes, bloqueadas, enviadas, fallidas, ultimo evento y ultimo error sanitizado. No se enviaron emails reales, no se ejecuto--confirm-send, no se conecto SMTP para envio, no se activo worker persistente, scheduler, cron, runtime automatico ni pipeline, no se toco WooCommerce API, no se escribio enSGC, no se usaron datos reales, no se tocaron datos VPS/prod y no hubo SQL write local/dev en esta preparacion. -
PDF-012Fejecuta exactamente un envio real SMTP desde la outbox local/dev usando la notification sinteticaPDF-012D:BILLING_CUSTOMER_REQUEST:TEST001, destinatario permitidofacturacion@ladirecta.com.ar, sin CC/BCC/adjuntos y sin datos reales de clientes. El estado cambia deREADY_BLOCKEDaSENTsolo despues del SMTP OK, se registran eventos sanitizadosSEND_ATTEMPTEDySEND_SUCCEEDED, y el reintento queda bloqueado comoALREADY_SENT_BLOCKEDsin segundo envio. SQL write local/dev limitado abusiness_observer.ecommerce_notification_event_logybusiness_observer.ecommerce_notification_outbox. No se imprimieron secrets/passwords/connection strings, no se escribio enSGC, no se toco WooCommerce API, no se toco VPS/prod con datos y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-012Aprepara el primer MVP funcional de notificacion interna para solicitud de alta ecommerce: payload candidate sintetico/sanitizado con razon social, CUIT, email, WhatsApp, domicilio fiscal, domicilio pedido, rubro, comentario y estadoPENDING_SGC_REVIEW; email interno candidate afacturacion@ladirecta.com.ar; sin CC/BCC/adjuntos; y script de envio bloqueado por defecto, habilitable solo con autorizacion explicita posterior y--confirm-send. No se envio email real, no se imprimieron secrets ni passwords, no se ejecuto SQL write, no se escribio enSGC, no se toco WooCommerce API, no se tocaron datos reales, no se toco VPS/prod con datos y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-012Ccrea y valida en PostgreSQL local/devgestion_de_negocios_core.business_observeruna base minima de notification outbox para futuras altas ecommerce: tablasecommerce_notification_outboxyecommerce_notification_event_log, idempotencia porPDF-012C:BILLING_CUSTOMER_REQUEST:TEST001, destinatario permitidofacturacion@ladirecta.com.ar, template versionadobilling_customer_request_v1, estadoREADY_BLOCKEDysend_blocked_by_default=true. Se genero backup schema-only local/dev fuera de Git y se inserto unicamente una notification candidate sintetica con un eventoNOTIFICATION_CREATED. No se enviaron emails reales, no se ejecuto--confirm-send, no se toco WooCommerce API, no se escribio enSGC, no se usaron datos reales de clientes, no se imprimieron secrets/passwords, no se toco VPS/prod con datos y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-012Dconecta una solicitud ecommerce sintetica con la outbox local/dev:business_observer.ecommerce_customer_requests,business_observer.ecommerce_customer_request_audit,business_observer.ecommerce_notification_outboxybusiness_observer.ecommerce_notification_event_log, con idempotencia porPDF-012D:REQUEST:TEST001yPDF-012D:BILLING_CUSTOMER_REQUEST:TEST001, rate-limit local/conceptual,status=READY_BLOCKEDysend_blocked_by_default=true. No se enviaron emails reales, no se conecto SMTP para envio, no se toco WooCommerce API, no se escribio enSGC, no se usaron datos reales, no se imprimieron secrets/passwords, no se toco VPS/prod con datos y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-012Eejecuta un worker dry-run local/dev sobre la notificationPDF-012D:BILLING_CUSTOMER_REQUEST:TEST001: leeREADY_BLOCKED, confirma recipient permitidofacturacion@ladirecta.com.ar, idempotencia, rate-limit conceptual ysend_blocked_by_default=true, y registra una decisionSEND_ELIGIBLE_BUT_BLOCKEDenbusiness_observer.ecommerce_notification_event_logconevent_type=SEND_BLOCKEDyevent_payload_sanitized.semantic_event=WORKER_DRY_RUN_EVALUATED. La notification permaneceREADY_BLOCKED. No se enviaron emails reales, no se conecto SMTP para envio, no se toco WooCommerce API, no se escribio enSGC, no se usaron datos reales, no se imprimieron secrets/passwords, no se toco VPS/prod con datos y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-011Tejecuta un unico envio real SMTP autorizado aoperaciones@ladirecta.com.arcon asuntoPrueba tecnica SMTP La Directa - PDF-011R, usandosend_pdf_011r_smtp_single_test.py --confirm-sendexactamente una vez. El resultado fueSENT_SINGLE_EMAIL, conemail_sent=true,single_send=trueyrecipient_allowed=true. La evidencia sanitizada quedo entmp/pdf-011t/, sin password, secret, connection string ni datos reales de clientes. No se envio a clientes, proveedores ni listas; no se uso CC/BCC/adjuntos; no se ejecuto SQL write; no se escribio enSGC; no se toco WooCommerce API; no se tocaron datos reales ni VPS/prod con datos; y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-011Sdocumenta la revision final operativa del gate single-send SMTP preparado porPDF-011R, sin enviar email real y sin ejecutar--confirm-send. Confirma destinatario permitidooperaciones@ladirecta.com.ar, asunto permitidoPrueba tecnica SMTP La Directa - PDF-011R, cuerpo de prueba tecnica unica, limites de un unico email sin CC/BCC/adjuntos/listas/clientes reales/ proveedores reales/datos reales de solicitudes, bloqueo por defecto y evidencia esperada para un gate posterior. No se ejecutaronMAIL FROM,RCPT TOniDATA, no se imprimieron secrets/passwords/connection strings, no se ejecuto SQL write, no se escribio enSGC, no se toco WooCommerce API, no se tocaron datos reales, no se toco VPS/prod con datos y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-011Rprepara un gate para un unico envio SMTP real de prueba aoperaciones@ladirecta.com.ar, con envio bloqueado por defecto y habilitable solo con autorizacion final separada mediante--confirm-send. Genera payload candidate sanitizado entmp/pdf-011r/, no permite CC/BCC ni adjuntos, no usa datos reales de clientes, no imprime secrets, passwords, usuario SMTP ni connection strings, no se envio email real, no se ejecuto SQL write, no se escribio en PostgreSQL niSGC, no se toco WooCommerce API, no se tocaron datos reales, no se toco VPS/prod con datos y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-011Qprueba conexion tecnica SMTP Hostinger de La Directa desde local/dev, partiendo dePDF-011P = SECRET_READY, sin enviar email real y sin ejecutar comandos SMTP de envio. Usa la ruta local real verificadaC:\APV\openclawai\.venv-portal\secrets\ladirecta-hostinger-email.env; la ruta declaradaC:\APV\openclawai.venv-portal\secrets\ladirecta-hostinger-email.envqueda documentada como no existente en esta estacion. El preflight abre conexion, negocia SSL/TLS o STARTTLS segunLADIRECTA_EMAIL_SMTP_SECURE, autentica, cierra conexion y genera output sanitizado entmp/pdf-011q/. No se imprimieron secrets, passwords, usuario ni connection strings. No se ejecutoMAIL FROM,RCPT TO,DATA,sendmailnisend_message.SGCpermanece read-only, no se ejecuto SQL write, no se escribio en PostgreSQL niSGC, no se toco WooCommerce API, no se tocaron datos reales, no se toco VPS/prod con datos y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-011Pverifica si el secret privado SMTP Hostinger de La Directa ya fue completado localmente:C:\APV\openclawai\.venv-portal\secrets\ladirecta-hostinger-email.env. El archivo real no existe en este gate y quedaPENDING_SECRET; la ruta esta ignorada por Git y no aparece engit status. SMTP quedaPENDING_SMTP_CONFIG. El ready check genera output sanitizado entmp/pdf-011p/con nombres de variables y estadosPRESENT/MISSING, sin imprimir valores. No se envio email real, no se conecto SMTP, no se ejecuto SQL write, no se escribio en PostgreSQL niSGC, no se toco WooCommerce API, no se modifico.env, no se imprimieron secrets y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-011Ovalida en local la ruta real del secret SMTP Hostinger para La Directa:C:\APV\openclawai\.venv-portal\secrets\ladirecta-hostinger-email.env. El archivo real no existe en este gate y quedaPENDING_SECRET; el template local ignorado por Git queda enC:\APV\openclawai\.venv-portal\secrets\ladirecta-hostinger-email.env.template. SMTP quedaPENDING_SMTP_CONFIGporque no hay host/port/secure confirmados desde Hostinger. El preflight genera output sanitizado entmp/pdf-011o/con nombres de variables esperadas/presentes y estados OK/MISSING/PENDING, sin imprimir valores. No se envio email real, no se conecto SMTP, no se ejecuto SQL write, no se escribio en PostgreSQL niSGC, no se toco WooCommerce API, no se modifico.env, no se imprimieron secrets y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-011Nvalida el estado de secrets/email de La Directa sin imprimir valores y prepara un email candidate de aviso a facturacion para solicitudes de alta ecommerce. El secret esperadoC:\APV\openclawai.venv-portal\secrets\ladirecta-hostinger-email.envno existe en este gate, por lo que quedaPENDING_SECRET; SMTP quedaPENDING_SMTP_CONFIGporque no hay host/port confirmados. Se genera output local ignorado por Git entmp/pdf-011n/con payload sanitizado, domicilio fiscal, domicilio pedido y estadoPENDING_SGC_REVIEW. El email candidate queda afacturacion@ladirecta.com.aren modoDRY_RUN_NOT_SENT. No se envio email real, no se conecto SMTP, no se ejecuto SQL write, no se escribio enSGC, no se toco WooCommerce API, no se modifico.env, no se imprimieron secrets y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-011Majusta el modelo de revision de solicitudes ecommerce y deja explicito queSGCes autoridad comercial y fuente read-only para OpenClaw, WooCommerce, el plugin La Directa y cualquier flujo automatizado ecommerce. OpenClaw registra solicitudes en PostgreSQL, genera email/tarea para facturacion, leeSGCen la proxima sincronizacion y solo vinculacodigo_cliente/sgc_customer_idcuando detecta un alta o cambio manual ya realizado enSGCpor personal autorizado. Define estados candidatePENDING_SGC_REVIEW,NEEDS_MORE_INFO,APPROVED_FOR_MANUAL_SGC_ENTRY,REJECTED,SGC_MANUALLY_CREATED_PENDING_SYNC,SGC_SYNCEDyACTIVATION_READY. Quedan prohibidos writes directos haciaSGC, SQL write contraSGC, API write haciaSGCy automatizacion de modificacion de clientesSGC. -
PDF-011Lejecuta el writer local/dev controlado para insertar una solicitud sintetica de alta ecommerce en PostgreSQL local/devgestion_de_negocios_corecon usuarioopenclaw_bo_admin, usando la credencial repo-local ignorada por Git sin imprimir valores. Se insertaron unicamente1request con seedPDF-011Lenbusiness_observer.ecommerce_customer_requestsy1auditoria asociada enbusiness_observer.ecommerce_customer_request_audit. La solicitud quedoPENDING_SGC_REVIEW, con email sinteticotest-pdf011l@example.invalid, razon socialCLIENTE TEST PDF011L SRLy auditoriaREQUEST_CREATED. Queda cleanup candidate con--confirm. No se enviaron emails reales, no se toco WooCommerce API, no se tocaron datos reales, no se toco VPS/prod con datos, no se imprimieron secrets y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-011Kprepara el contrato local/dev del writer controlado para solicitudes de alta ecommerce, sin ejecutar SQL write. Genera payload candidate entmp/pdf-011k/ignorado por Git parabusiness_observer.ecommerce_customer_requests, audit candidate parabusiness_observer.ecommerce_customer_request_audit, email candidate sin envio afacturacion@ladirecta.com.ary cleanup candidate para un gate futuro. Cubre contacto nuevo sin codigo SGCPENDING_SGC_REVIEW, cliente existente SGCACTIVATION_READY_CANDIDATE, codigo/CUIT invalidoVALIDATION_BLOCKEDy email duplicadoEMAIL_ALREADY_USED_CANDIDATE. Mantiene domicilio fiscal y domicilio pedido sanitizados. Hostinger quedaPENDING_SECRET / PENDING_SMTP_CONFIGsi el secret no existe, sin imprimir valores. No se ejecuto SQL write, no se enviaron emails reales, no se toco WooCommerce API, no se crearon usuarios, no se modifico.env, no se imprimieron secrets, no se tocaron datos, no se toco VPS/prod con datos y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-011Jsimula en local/dev el onboarding ecommerce de La Directa sin writes: cliente existente SGC queda como candidateACTIVATION_READY, contacto nuevo sin codigo SGC genera payload candidatePENDING_SGC_REVIEWparabusiness_observer.ecommerce_customer_requests, email candidate sin envio afacturacion@ladirecta.com.ar, caso codigo/CUIT invalido quedaVALIDATION_BLOCKEDcon mensaje generico y email ya usado quedaEMAIL_ALREADY_USED_CANDIDATE. El script usa transaccionREAD ONLY, confirma las cuatro tablas de activacion creadas porPDF-011Iy verifica secret Hostinger sin imprimir valores.PDF-011J = GO DRY-RUN LOCAL DEV. No se ejecuto SQL write, no se enviaron emails reales, no se toco WooCommerce API, no se crearon usuarios, no se modifico.env, no se imprimieron secrets, no se tocaron datos, no se toco VPS/prod con datos y no se activo runtime, sync, scheduler, cron ni pipelines. -
PDF-011Iejecuta el DDL candidatePDF-011Gen PostgreSQL local/devgestion_de_negocios_corecon usuarioopenclaw_bo_admin, usando la credencial repo-local ignorada por Git sin imprimir valores. Se genero backup schema-only fuera de Git enC:\APV\backups\openclawai\PDF-011I\business_observer_schema_pre_pdf011i_20260624-113325.dumpcon28676bytes. Se ejecuto unicamentePDF-011G-CUSTOMER-ACTIVATION-DDL-CANDIDATE.sqlconON_ERROR_STOP=1y transaccion unica. Se crearonbusiness_observer.clientes_ecommerce,business_observer.ecommerce_customer_requests,business_observer.ecommerce_customer_request_auditybusiness_observer.customer_activation_audit; post-checks confirmaron owneropenclaw_bo_admin, RLS habilitado, indices, constraints, grants y columnas domicilio fiscal/pedido esperadas, sin duplicados fuera del schema.PDF-011I = GO.PDF-011H = preflight historico: su validacion viva falla despues del DDL porque los objetos ya existen; esto es esperado, no representa drift negativo y no debe revalidarse con expectativa de objetos ausentes. La evidencia valida post-DDL esPDF-011Iy sus post-checks propios. No se toco VPS/prod con SQL, WooCommerce API,.env, secrets, emails reales, datos de negocio, runtime, sync, scheduler, cron ni pipelines. -
PDF-011Hvalida en PostgreSQL local/dev, en modo read-only, que el DDL candidatePDF-011Gesta listo para un gate separado de ejecucion controlada: DBgestion_de_negocios_core, usuarioopenclaw_bo_admin, schemabusiness_observerowned poropenclaw_bo_admin, permisosCREATE, rolesopenclaw_bo_admin/openclaw_bo_writer/openclaw_bo_reader, objetosclientes_ecommerce,ecommerce_customer_requests,ecommerce_customer_request_auditycustomer_activation_auditausentes, backup schema-onlyPDF-011Avalido y DDL sinDROP DATABASE,TRUNCATEni DML. No se ejecuto SQL write, no se crearon tablas, no se tocaron datos, WooCommerce API, emails reales,.env, secrets, VPS/prod con datos, runtime, sync, scheduler, cron ni pipelines. -
PDF-011Gdisena el DDL candidate para persistir clientes ecommerce derivados desde SGC, solicitudes de alta de contactos nuevos sin codigo SGC, auditoria de solicitudes, auditoria de activaciones y domicilios fiscal / pedido. Incluye constraints candidate paraactivation_status,onboarding_status,request_status,quality_status, CUIT normalizado, emails lower-case, WhatsApp normalizado, unique por tenant + codigo_cliente, unique por tenant + cuit_normalizado activo y unique email_real activo. Hostinger quedaPENDING_SECRET / PENDING_SMTP_CONFIG; no se invento SMTP, no se imprimieron valores y no se envio email real. No se ejecuto SQL write, no se crearon tablas, no se toco PostgreSQL, WooCommerce API, datos, VPS/prod con datos, runtime, sync, scheduler, cron ni pipelines. PDF-011Fdocumenta el contrato de onboarding B2B La Directa para clientes existentes SGC y contactos nuevos sin codigo SGC. Define solicitudPENDING_SGC_REVIEW, email candidate a facturacion, campos de domicilio fiscal/pedido, tablas/capas candidate y auditoria. El secreto Hostinger quedaPENDING_SECRETen ruta privada fuera del repo; no se imprimieron valores. No se ejecuto SQL write, no se enviaron emails reales, no se toco WooCommerce API, no se crearon usuarios, no se tocaron datos, VPS/prod, runtime, sync, scheduler, cron ni pipelines.PDF-011Evalida en modo read-only local/dev que las tablas B2B reales seeded porPDF-011Dresponden precios efectivos por cliente sintetico, lista y SKU. La credencial local repo-ignorada existe y no imprimio valores. Se consultaron soloSELECTsobreb2b_customer_mapping,b2b_product_price,b2b_pricing_decision_logyv_b2b_customer_effective_price. Resultado:seed_mappings=2,seed_prices=6,manual_decision_logs=0,effective_l1=3,effective_l5=3, casoL1 + 2442B2B_PRICE_OK, casoL5 + 2442B2B_PRICE_OKy SKU sin seed con0filas efectivas /BLOCKED_PRICE_MISSINGcandidate. No se ejecuto SQL write, no se tocaron datos, VPS/prod, WooCommerce API,.env, secrets, runtime, sync, scheduler, cron ni pipelines.PDF-011Dejecuta el seed B2B minimo y controlado en PostgreSQL local/devgestion_de_negocios_corecon usuarioopenclaw_bo_admin, usando la credencial repo-local ignorada por Git sin imprimir valores. Preflight confirmo objetos B2B presentes y seed previo0. Se insertaron solo2mappings sinteticos y6precios sinteticos para SKUs2442,2443,2444en listasL1/L5;b2b_pricing_decision_logquedo con0inserts manuales. La vistav_b2b_customer_effective_pricedevolvioeffective_l1=3yeffective_l5=3, sin duplicados inesperados. Quedo cleanup candidate acotado porsource_hash; no se uso VPS/prod, no se toco WooCommerce API,.env, secrets, datos personales reales, runtime, sync, scheduler, cron ni pipelines.PDF-011Cprepara el plan y scripts candidate para un seed B2B minimo en PostgreSQL local/dev sobre las tablas creadas enPDF-011B. El diseno usa clientes sinteticos para listasL1yL5, SKUs pilotoPDF-009Mcon SKU obligatorio2442, payload JSON/SQL candidate bajotmp/pdf-011c/ignorado por Git y cleanup candidate porsource_hash LIKE 'pdf011c_seed_%'. No se ejecuto SQL write, no se cargaron datos, no se tocaron VPS/prod, WooCommerce API,.env, secretos, runtime, sync, scheduler, cron ni pipelines.PDF-011Bejecuta el DDL B2B corregidoPDF-010Pen PostgreSQL local/devgestion_de_negocios_corecon usuarioopenclaw_bo_admin, usando como evidencia previa el backup schema-only valido dePDF-011AC:\APV\backups\openclawai\PDF-011A\business_observer_schema_only_post_owner_grants.dumpde13895bytes. Preflight read-only confirmo schema owneropenclaw_bo_admin, permisosCREATE, rolesopenclaw_bo_*y objetos B2B ausentes. Se ejecuto unicamentePDF-010P-B2B-PERSISTENCE-DDL-RETRY-CANDIDATE.sqlconON_ERROR_STOP=1y transaccion unica. Se crearonbusiness_observer.b2b_customer_mapping,business_observer.b2b_product_price,business_observer.b2b_pricing_decision_logybusiness_observer.v_b2b_customer_effective_price; post-checks confirmaron24constraints, indices esperados, owneropenclaw_bo_admin, RLS activo, grants paraopenclaw_bo_admin/writer/readery duplicados0. No se cargaron datos B2B y no se tocaron VPS/prod, WooCommerce API,.env, secretos, runtime, sync, scheduler, cron ni pipelines.PDF-011Aejecuta el gate local/dev con owner/admin realpostgrespara resolver el bloqueo de backup dePDF-010Z. Se usaron variablesAPV_LOCAL_POSTGRES_ADMIN_*desde.envignorado por Git, sin imprimir valores, contragestion_de_negocios_core. Se ejecutaron soloGRANT USAGE,GRANT SELECT ON ALL TABLESyGRANT SELECT ON ALL SEQUENCESenbusiness_observerparaopenclaw_bo_admin; el backuppg_dump -Fc -s -n business_observerquedo valido enC:\APV\backups\openclawai\PDF-011A\business_observer_schema_only_post_owner_grants.dumpcon13895bytes. No se ejecuto DDL B2B, no se crearon objetos B2B y no se tocaron datos, VPS/prod, WooCommerce API,.env, secretos, runtime, sync, scheduler, cron ni pipelines.PDF-010Zdocumenta el gate local/dev de permisos minimos para backup posterior a publicarPDF-010Y. Local, origin y VPS quedaron alineados en3f134c5e23500d54063ec4d1f64e06c5274f87f0, con HTTP local/publico200. La credencial admin/owner local existe, esta ignorada por Git y no imprimio valores. El preflight read-only paso comoopenclaw_bo_admin, con DBgestion_de_negocios_core, schemabusiness_observer, rolesopenclaw_bo_*presentes, tablasource_003_sales_itemsexistente y objetos B2B ausentes. Se intento solo el SQL write autorizado:GRANT USAGEsobre schema,GRANT SELECT ON ALL TABLESyGRANT SELECT ON ALL SEQUENCESenbusiness_observer; el gate quedoNO-GO GRANT/BACKUP FAILEDporquesource_003_sales_itemspertenece apostgresyopenclaw_bo_adminno pudo concederseSELECT. El backuppg_dump -Fc -s -n business_observerfallo y quedo en0bytes fuera de Git enC:\APV\backups\openclawai\PDF-010Z\. No se ejecuto DDL B2B, no se crearon tablas/vista B2B, no se tocaron datos, VPS/prod, WooCommerce API,.env, secretos, runtime, sync, scheduler, cron ni pipelines.PDF-010Ydocumenta el plan para resolver el bloqueo de backup local/dev detectado enPDF-010X:pg_dump -Fc -s -n business_observerfallo conpermission denied for table source_003_sales_itemsy dump de0bytes. Evalua tres opciones: credencial admin/backup real, permiso minimo aopenclaw_bo_adminsobre objetos existentes debusiness_observer, o excepcion local/dev basada solo en rollback. La recomendacion unica para local/dev esOpcion Bsi governance autoriza SQL admin minimo en gate separado; para VPS/prod exige snapshot o backup full con rol adecuado. No se ejecuto DDL, SQL write,GRANT, permisos, datos, WooCommerce API,.env, secretos, runtime, sync, scheduler, cron ni pipelines.PDF-010Xdocumenta el gate local/dev posterior a desplegarPDF-010Wen el Knowledge Portal. Local, origin y VPS quedaron alineados endb0698b9dd021261d9aa24329725f2c49a0411cf; HTTP local VPS y publico devolvieron200. La credencial admin/owner local existe bajo.venv-portal/secrets/, esta ignorada por Git y no imprimio valores. El preflight read-only paso comoopenclaw_bo_admin, owner debusiness_observer, conCREATEsobre DB/schema, rolesopenclaw_bo_*presentes y objetos B2B ausentes. El backup schema-onlypg_dump -Fc -s -n business_observerfallo antes del DDL porpermission denied for table source_003_sales_items; quedo un artefacto fallido de0bytes fuera de Git enC:\APV\backups\openclawai\PDF-010X\. Estado:NO-GO BACKUP FAILED / SIN DDL B2B. No se ejecutoPDF-010P, no se crearon objetos B2B, no se aplicaron grants/RLS, no se ejecuto rollback y no se tocaron VPS/prod con SQL, WooCommerce API,.env, secretos, runtime, sync, scheduler, cron ni pipelines.PDF-010Waprueba para local/dev una estrategia de backup schema-only conpg_dump -Fc -s -n business_observerdespues delNO-GO BACKUP FAILEDdePDF-010V. La evidencia revisada confirma que el backup data+schema fallo porpermission denied for table source_003_sales_items, el dump quedo en0bytes,PDF-010Pno se ejecuto y los objetos B2B siguen ausentes. La decision aplica solo a local/dev porque el DDL B2B crea objetos nuevos y no modificasource_003_sales_itemsni datos existentes; el rollback candidate dePDF-010Pcubre la eliminacion de objetos B2B nuevos. Para VPS/prod se mantiene exigencia de snapshot externo o backup full con rol adecuado. No se ejecuto DDL, no se ejecuto SQL write, no se tocaron datos, WooCommerce API,.env, secretos, runtime, sync, scheduler, cron ni pipelines.PDF-010Vdocumenta el gate local/dev posterior a publicarPDF-010Upara ejecutar el DDL B2B corregidoPDF-010P. Local, origin y VPS quedaron alineados enf9c4a4f7cd57050476e8cafd59a00fa936c429a5; la credencial admin/owner local real existe bajo.venv-portal/secrets/, esta ignorada por Git y no imprimio valores. El preflight read-only paso comoopenclaw_bo_admin, owner debusiness_observer, conCREATEsobre DB/schema, rolesopenclaw_bo_*presentes y objetos B2B ausentes. El backup acotadopg_dump -Fc -n business_observerfallo antes del DDL porpermission denied for table source_003_sales_itemsal intentar bloquearbusiness_observer.source_003_sales_items; quedo un artefacto fallido de0bytes fuera de Git enC:\APV\backups\openclawai\PDF-010V\. Estado:NO-GO BACKUP FAILED / SIN DDL B2B. No se ejecutoPDF-010P, no se crearon objetos B2B, no se aplicaron grants/RLS, no se ejecuto rollback y no se tocaron VPS/prod, WooCommerce API,.env, secretos, runtime, sync, scheduler, cron ni pipelines.PDF-010Udocumenta la estrategia de backup posterior alNO-GO BACKUP FAILEDdePDF-010T. La decision aprobada para local/dev es usar backup acotado al schemabusiness_observerconpg_dump -Fc -n business_observer, porquePDF-010Psolo toca ese schema y los objetos B2B siguen ausentes. Para VPS/prod se exige backup full DB con rol backup/admin aprobado o snapshot externo antes de DDL productivo. Estado:GO BACKUP STRATEGY APPROVED FOR LOCAL DEV / SIN DDL / SIN SQL WRITE.PDF-010Tdocumenta el gate controlado con credencial admin/owner local para ejecutar el DDL B2B corregidoPDF-010P. Safe point8aeb04aconfirmado, validadores previosPASS, secret repo-local.venv-portal/secrets/postgres-target-admin-owner.envexistente e ignorado por Git,openclaw_bo_adminconfirmado como usuario actual, owner debusiness_observery conCREATEsobre DB/schema; rolesopenclaw_bo_*presentes y objetos B2B ausentes.psql/pg_dump15.15confirmados. El gate quedoNO-GO BACKUP FAILEDantes del DDL porquepg_dump -Fcfallo conpermission denied for schema cobranzasal intentar bloquearcobranzas.bank_entity. Quedo un artefacto fallido de0bytes fuera de Git enC:\APV\backups\openclawai\PDF-010T\; no es backup valido. No se ejecutoPDF-010P, no se crearon objetos B2B, no se aplicaron grants/RLS, no se ejecuto rollback y no se tocaron WooCommerce API,.env, secretos, runtime, sync, scheduler, cron ni pipelines.PDF-010Sdocumenta la evidencia read-only de habilitacion admin/owner PostgreSQL posterior aPDF-010R: secrets reales bajo.venv-portal/secrets/existen, estan ignorados por Git y no aparecen engit status. Localgestion_de_negocios_coreconecta comoopenclaw_bo_admin, conLOGIN,CREATEsobre DB/schema y ownership debusiness_observer; VPSopenclaw_business_observer_prodconecta desde el contenedor comoopenclaw_bo_prod_owner, conLOGIN,CREATEsobre DB y schema, y ownership debusiness_observer. Los objetos B2B siguen ausentes en este check. No se imprimieron secretos, no se commitearon secrets, no se ejecuto DDL B2B, no se tocaron datos de negocio, WooCommerce API, runtime, sync, scheduler, cron ni pipelines.PDF-010Rdocumenta la recuperacion segura de credencial PostgreSQL admin/owner para el DDL B2B corregidoPDF-010P. Confirma que el diseno B2B y el DDL ya estan listos, pero el bloqueo real sigue siendo credencial/permisos:openclaw_writerconecta al targetgestion_de_negocios_corey puede leer, pero no tieneCREATEsobrebusiness_observer, no es superuser y no es miembro deopenclaw_bo_admin..envlocal esta ignorado por Git y contieneAPV_DESTINATION_POSTGRES_*yAPV_LOCAL_POSTGRES_ADMIN_*sin imprimir valores; el VPS fue revisado sin secretos y no aporto credencial admin/owner target. Resultado:NO-GO CREDENTIAL; recomendacion unica: usar usuariopostgresreal del target u owner DB/schema aprobado en el proximo gate, o grant minimo candidate separado sin ejecutarlo. No se ejecuto DDL, SQL write, grants, backup,.env, WooCommerce API, runtime, sync, scheduler, cron ni pipelines.PDF-010Qdocumenta el gate de reintento controlado del DDL B2B corregidoPDF-010P. Safe point673320cconfirmado, variables PostgreSQL detectadas sin imprimir valores ypg_dump/psqlencontrados por ruta absoluta local, peroopenclaw_writerno esta autorizado para DDL sobrebusiness_observer. Resultado:NO-GO PRE-DDL; no hubo backup nuevo, no se ejecuto DDL, no se aplicaron grants/RLS, no se crearon objetos B2B y no hubo SQL write. La recuperacion segura confirmo.envlocal ignorado por Git con credenciales destino completas, VPS sin credencial admin/owner real del gate yAPV_LOCAL_POSTGRES_ADMIN_*descartado porque no apunta al schema target.PDF-010Ndocumenta el gate controlado de DDL B2B con backup real y SQL write acotado: safe point28249bcconfirmado, validadores previosPASS, preflight read-only finalGO, backuppg_dump -Fccreado fuera de Git y ejecucion del DDL candidatePDF-010Kintentada conON_ERROR_STOP=1y transaccion unica. ResultadoNO-GO: PostgreSQL rechazo el primer statement porpermission denied for database gestion_de_negocios_core; no se crearon tablas/vista B2B, no se aplicaron grants/RLS y no se ejecuto rollback candidate. Bloqueo vigente: permisos del rol ejecutor y rolesbusiness_observer_*ausentes frente a roles realesopenclaw_bo_*.PDF-010Odocumenta el preflight read-only de permisos y el plan de reintento: DB/schema son propiedad depostgres, el usuario observadoopenclaw_writerno tieneCREATEsobre DB ni schema, no es miembro deopenclaw_bo_*, los roles realesopenclaw_bo_*existen y los rolesbusiness_observer_*no existen. Recomendacion: ajustar el DDL a roles realesopenclaw_bo_*y ejecutarlo en gate posterior con usuario admin/owner aprobado. Estado:NO-GO PARA REINTENTO INMEDIATO.PDF-010Pprepara el DDL retry candidate local posterior aPDF-010O: tratabusiness_observercomo schema preexistente, cambia grants a roles realesopenclaw_bo_admin,openclaw_bo_writeryopenclaw_bo_reader, mantiene los objetos B2B dePDF-010Ky alinea rollback. No ejecuta DDL, no ejecuta SQL write y quedaNO-GO PARA EJECUCIONhasta backup nuevo y autorizacion explicita.PDF-010Mprepara el preflight real read-only contra PostgreSQL/OpenClaw para validar DB, usuario, version, schemabusiness_observer, roles, objetos B2B, permisos, extensiones visibles, backup/restore y rollback antes de cualquier DDL. En esta sesion quedoGOoperativo para preflight read-only: DBgestion_de_negocios_core, usuarioopenclaw_writer, PostgreSQL15.15, schema existente, roles canonicosopenclaw_bo_*presentes y objetos B2B ausentes sin drift previo. No se imprimieron secretos y no se ejecuto SQL write ni DDL; el DDL sigueNO-GOhasta gate posterior separado.PDF-010Lprepara el preflight para la ejecucion controlada futura del DDL B2B en PostgreSQL/OpenClaw. Documenta safe pointPDF-010Kpublicado, fuentes DDL/rollback candidate, checks read-only de DB/schema/roles/tablas/ permisos, backup/restore, rollback plan y criterios GO/NO-GO. Incluye validador estatico y generador de consultas read-only sin conexion por defecto. No ejecuta SQL write, no toca PostgreSQL real, WooCommerce API,.env, secretos, runtime, sync, scheduler, cron ni pipelines.PDF-010Kdisena el contrato persistente B2B real como DDL candidate para PostgreSQL/OpenClaw, sin ejecutar SQL: tablasbusiness_observer.b2b_customer_mapping,business_observer.b2b_product_price,business_observer.b2b_pricing_decision_logy vistabusiness_observer.v_b2b_customer_effective_price. Incluye rollback candidate, RLS/permisos candidate para roles reader/writer/admin y validador estatico. No se toco PostgreSQL real, WooCommerce API,.env, secretos, runtime, sync, scheduler, cron ni pipelines.PDF-010Jextiende el prototipo B2B con store local/simulado de mappingwc_customer_id -> sgc_customer_id, simulacion de catalogo, carrito, checkout y payload candidate de orden. Recalcula precios server-side por linea, bloquea mapping ausente/ambiguo, clientes suspendidos/de baja, listas invalidas, precios faltantes e inconsistencias de orden. Tests y dry-run local pasan sin tocar WooCommerce API, PostgreSQL,.env, runtime, sync, scheduler, cron ni pipelines.PDF-010Iimplementa un prototipo tecnico local del motor de precios B2B, con Python puro y tests, usando solo snapshots locales ignorados por Git. Visitante no logueado usaPrecioListaFinal; cliente activo con mapping usaPrecioL{Lista_Precio}; suspendidos/de baja quedanBLOCKED_CUSTOMER_STATUS; cliente sin mapping quedaBLOCKED_CUSTOMER_MAPPING; lista fuera de1..9quedaBLOCKED_PRICE_LIST; y SKU sin precio o con precio<= 0quedaBLOCKED_PRICE_MISSING. Tests locales y dry-run no sensible pasan. No se toco WooCommerce API, PostgreSQL,.env, runtime, sync, scheduler, cron, pipelines, push ni deploy.PDF-010Hdocumenta el diseno y dry-run del runtime B2B antes de cualquier implementacion: matchingwc_customer_id -> sgc_customer_idcon metadata WooCommerce como fuente candidate principal, email/CUIT/WhatsApp solo como senales no automaticas, catalogo con visitante usandoregular_price, cliente logueado usandoLista_Precio 1..9 -> PrecioL1..PrecioL9, carrito recalculado server-side y checkout/orden con validacion final y metadata por linea. Simula visitante, clientesLista_Precio 1y5, clientes suspendidos/de baja y SKUs3995/4010comoBLOCKED_PRICE_MISSING. No se toco WooCommerce API, PostgreSQL con writes, runtime, sync, scheduler, cron, pipelines, push ni deploy.PDF-010Gdocumenta la aprobacion comercial explicita de reglas B2B:Lista_Precio 1..9 -> PrecioL1..PrecioL9pasa dePENDING_BUSINESS_CONFIRMATIONaAPPROVED,PrecioListaFinalqueda aprobado como fuente delregular_pricepublico/default para visitante no logueado, yPrecioL1no queda aprobado como default publico. Cliente logueado debe usar la lista asignada, carrito y checkout deben recalcular server-side, y la orden debe guardar lista/precio aplicado por linea. No se tocaron WooCommerce API, PostgreSQL, SQL, sync, clientes, productos, precios, deploy, push ni runtime.PDF-010Fdocumenta el cierre de diseno comercial candidate para precios B2B server-side: confirma queLista_Precio 1..9 -> PrecioL1..PrecioL9quedaSUPPORTED_BY_RUNTIME_CATALOG / PENDING_BUSINESS_CONFIRMATION, mantieneregular_pricevigente respaldado porPrecioListaFinal, dejaL1como default publico enPENDING_VALIDATE, y disena el flujo futuro para cliente logueadowc_customer_id -> sgc_customer_id -> price_list_code -> sku + lista -> precio, con recalculo server-side en carrito y checkout y evidencia minima en orden. Define bloqueosBLOCKED_PRICE_LIST,BLOCKED_CUSTOMER_STATUS,BLOCKED_PRICE_MISSINGyBLOCKED_CUSTOMER_MAPPING, mas riesgos de cache, precio visual vs carrito, seguridad comercial, performance y duplicados CUIT/WhatsApp/email. No se tocaron WooCommerce API, PostgreSQL con writes, secretos, sync, scheduler, cron, pipelines, push ni deploy.PDF-010Edocumenta un dry-run B2B offline cliente -> lista de precio -> SKU -> precio usando solo snapshots locales sanitizados: SOURCE-001 confirmaLista_Precio 1..9y SOURCE-002 confirmaPrecioListaFinalyPrecioL1..PrecioL9. La matriz simula clientes activos y bloqueados, detecta SKUs3995y4010con precio0.000comoBLOCKED_PRICE_MISSING, mantieneLista_Precio -> L1..L9comoSUPPORTED_BY_RUNTIME_CATALOG / PENDING_BUSINESS_CONFIRMATIONy conservaL1default publico comoPENDING_VALIDATE. No se tocaron WooCommerce API, PostgreSQL,.env, sync, scheduler, cron, pipelines, push ni deploy.PDF-010Dejecuta snapshot runtime read-only autorizado contraecommerce.dbo.VCLIENTES, solo con consultasSELECT, sin imprimir secretos ni connection strings. Observa11448clientes, estados realesCLIENTE ACTIVO(5986),CLIENTE DE BAJA(5371) yCLIENTE SUSPENDIDO(91), y cierra el catalogo real deLista_Preciocomo1..9sin vacios ni nulos. Genera snapshot local sanitizado ignorado por Git con sha2565b7eb3bdbc6cc58c14247446c089fe8416eee1d2a296d261b03dca6da8166017. La correspondencia tecnica1 -> L1...9 -> L9queda soportada por catalogo runtime, pero pendiente de confirmacion comercial antes de activar precios B2B o tocar WooCommerce.PDF-010Cvalida en modo read-only el catalogo real requerido paraLista_PreciodesdeSOURCE-001 Clientes: confirma safe point72a2961, verifica que no existesnapshots/source-001/ni export alternativo local, marcaSOURCE_001_RUNTIME_SAMPLE_MISSING, mantieneLista_Precio -> L1..L9comoPENDING_VALIDATE, preservaPrecioListaFinalcomoregular_pricevigente y deja bloqueada toda creacion de clientes WooCommerce o activacion de precios B2B hasta obtener snapshot o autorizacion read-only separada. No ejecuta API, SQL, PostgreSQL writes, sync, cron, push ni deploy.PDF-010Bvalida en modo read-only la autoridad real de precios B2B y la lista asignada por cliente antes de sincronizar: confirma safe point24ad2aa, inventaria camposPrecioListaFinal,PrecioL1..L9,PrecioNetoL1..L9,IVAPrecioL1..L9yMargenL1..L9, mantieneL1comoPENDING_VALIDATE, confirma en SOURCE-001 el campoLista_Preciocomolista_precio/price_list_code_raw, y define modelos candidate de precios y clientes B2B. No ejecuta API, SQL, PostgreSQL writes, sync, cron, push ni deploy.PDF-010Adocumenta el contrato B2B para listas de precio por cliente y sync de clientesSGC -> PostgreSQL/OpenClaw -> WooCommerce: inventariaPrecioL1..PrecioL9,IVAPrecioL1..L9,PrecioNetoL1..L9yMargenL1..L9; marcaPENDING_VALIDATEqueL1sea precio publico default porque la evidencia vigente usaPrecioListaFinalcomoregular_price; define tablas conceptuales para precios porsku + price_list_codey mapping de cliente SGC/Woo; y fija que WooCommerce no debe ser fuente maestra de listas multiples. No ejecuta API, PostgreSQL, SQL, sync, cron, push ni deploy.PDF-009Mdocumenta el primer piloto write controlado de productos WooCommerce en estadodraftycatalog_visibility=hidden: se publico y desplego previamentePDF-009L, se valido.envignorado por Git y variables WooCommerce presentes sin imprimir valores, se confirmaron28categorias,Marca / pa_marca(attribute_id=1) y48terminos, y se crearon10productos draft (2442,2443,2444,2847,2446,2814,2815,2816,3514,0269) con GET posterior por SKU. No hubo publish, categorias nuevas, marcas nuevas, imagenes, Media Library, PostgreSQL writes, sync masivo ni scheduler/cron/pipelines.PDF-007Ddocumenta la carga inicial productiva controladaSOURCE-003comoVERDEen PostgreSQL productivo dedicado.PDF-008ApreparaSOURCE-002 Productoscomo candidate WooCommerce-ready, sin carga real, sin SQL ejecutado y sin tocar WooCommerce niLa Directa.PDF-008BampliaSOURCE-002 Productosa full use-case preflight: WooCommerce, stock actual, snapshot diario, faltantes, activos/inactivos, precios, costos, margen, proveedor, logistica, ventasSOURCE-003, alertas y reposicion; preflight runtime y snapshot quedan bloqueados hasta mecanismo seguro/autorizacion separada.PDF-008Cejecuta preflight runtime read-onlySOURCE-002con lectura segura autorizada de.env, registra conteos no sensibles (314productos,81columnas,0SKUs duplicados) y snapshot fuera de Git con SHA256.PDF-008Dprepara el paquete DDL/load candidate desde el snapshotPDF-008C, con modeloraw/core/catalog/inventory/economic/mart, scripts.candidate.sqlbloqueados por defecto y sin ejecutar carga,COPY, DML, PostgreSQL write ni WooCommerce.PDF-008Edocumenta la ejecucion real verde del DDL productivoSOURCE-002 Productos, con backup pre-DDL validado, siete tablas creadas vacias, owner/grants esperados,SOURCE-003intacto, carga de productosNO, WooCommerceNO TOCADOy sync/scheduler/cron/pipelinesNO-GO.PDF-008Gdocumenta la ejecucion real verde de la carga inicial productivaSOURCE-002 Productos: snapshot314filas,81columnas,314SKUs unicos, batch7dddfc3b-2026-48f0-8002-000000000008, RAW/CORE/catalog/ inventory/economic314, mart stock alerts100, stock> 0212, stock= 0100, con precio/costo312, sin precio/costo2, post-checksPASS,SOURCE-003intacto, WooCommerceNO TOCADOy sync/scheduler/cron/pipelinesNO-GO.- Warning vigente
PDF-008G: los scripts oficiales de loadPDF-008Dsiguen bloqueados por diseno conRAISE EXCEPTION; antes de sync, cron, scheduler, recarga o proceso repetible se debe formalizar el SQL operativo temporal dePDF-008Fdentro de scripts oficiales versionados. PDF-008Hformaliza ese camino repetible en scripts oficiales candidate versionados, sin ejecutar SQL ni carga.PDF-008Dqueda como referencia historica y tecnica, no como camino operativo recomendado para recarga.PDF-008IquedoAMARILLO CONTROLADO / NO-GO PARA RELOAD: preflight oficialPASS, backup pre-rehearsal creado,SOURCE-002ySOURCE-003intactos, pero RAW aborto por guarda incondicional antes de writes.PDF-008I-Bformaliza el hotfix de scripts oficialesPDF-008H: reemplaza guardas incondicionales por confirmaciones explicitas, agrega control del backup SHA256 esperado y corrige la regla precio/costo para tratarNULL OR 0como sin precio/costo. No ejecuta recarga, SQL,COPY, DML ni rollback.PDF-008I-CquedoAMARILLO CONTROLADO / NO-GO PARA RELOAD: preflight oficialPASS, backup pre-rehearsal retry validado,SOURCE-002ySOURCE-003intactos, pero RAW aborto en\copyantes de writes.PDF-008I-Dcorrige el\copyRAW con path literal controlado/tmp/pdf008f-source002-products.jsonly parametriza el SHA del backup pre-rehearsal esperado para que cada rehearsal valide su backup propio. No ejecuta recarga, SQL,COPY, DML ni rollback.PDF-008I-EquedoAMARILLO CONTROLADO / NO-GO: RAW retryPASS, CORE retryPASS, pero derived aborto antes deCOMMITporque daily snapshot usaba fecha hardcodeada y el post-check contaba snapshots diarios por batch sin filtrar fecha.PDF-008I-Fcorrigeinventory_snapshot_date: agregapdf008h_inventory_snapshot_dateobligatoria, usa esa fecha eninventory_source_002_daily_snapshoty valida314filas por fecha explicita y batch. No ejecuta rehearsal, SQL,COPY, DML ni rollback.PDF-008I-Gdocumenta el retry verde del rehearsal controladoSOURCE-002 Productos: preflightPASS, RAWCOPY 314y upsert314, CORE314, derivedPASScon catalog/inventory/economic314, MARTSDELETE 100eINSERT 0 100, post-checksPASS,SOURCE-002314/314/314/314/314/314/100ySOURCE-003intacto. WooCommerce API no fue tocada y sync/scheduler/cron/pipelines siguenNO-GO.PDF-009Aprepara el mapping/API candidate de productos haciaWooCommerce La Directa, sin llamar API real y sin writes. Documenta mapping PostgreSQL -> WooCommerce, reglas funcionales, gaps, dry-run, idempotencia,wc_product_idfuturo, create/update, logs seguros, rollback logico, rate limits, paginacion y errores. Crea paquete candidate eninfra/business-observer/production/woocommerce/products/PDF-009A/.PDF-009B-1define la estrategia de extension previa aPDF-009Bpara decidir que datos deSOURCE-002van por campos nativos WooCommerce, cuales quedan enmeta_data, cuales deben permanecer solo enPostgreSQL, que no debe exponerse y por que hoy no hace faltaplugin,register_rest_field,register_metani endpoint custom.PDF-009Bdocumenta el preflight real read-only de credenciales y acceso WooCommerce:.envignorado por Git, variables requeridas presentes sin valores, GET minimo HTTP200con JSON valido y autenticacionOK, productsper_page=5HTTP200con0productos como condicion inicial esperada, SKUs0135y0128HTTP200conmatched_count=0tambien esperados por catalogo WooCommerceLa Directalimpio antes de la primera carga, sin problema de API/autenticacion detectado, sin writes, sin PostgreSQL, sin secretos, sin push, sin deploy y sin sync/scheduler/cron/pipelines. Estado:VERDE TECNICO / AMARILLO FUNCIONAL ESPERADO.PDF-009Cdocumenta el dry-run read-only de comparacion SOURCE-002 contra WooCommerce: muestra local segura de10SKUs desde snapshot CSV validado por SHA256, GET productsper_page=5HTTP200con0productos, lookups por SKU HTTP200conmatched_count=0para toda la muestra, matriz conceptualCREATE/BLOCKEDsin writes, y matriz de arquitectura que confirmaWoo nativepara catalogo vendible,meta_dataprivada minima yPostgreSQL onlypara costos, proveedor, descuentos, margenes y listas multiples. Estado:DRY-RUN READ-ONLY / VERDE TECNICO / WOOCOMMERCE VACIO ESPERADO / NO WRITES.PDF-009Ddocumenta la politica futura de ciclo de vida de productos y sincronizacion frecuente de stock entre PostgreSQL/OpenClaw y WooCommerceLa Directa, sin ejecutar API nueva ni writes. SeparaStock Syncfrecuente con payload minimo (stock_quantity,stock_status,manage_stock) deProduct Catalog Synccontrolado, defineCREATEconceptual para productos existentes en PostgreSQL/OpenClaw y ausentes en WooCommerce,DEACTIVATEfuturo para estadoDE BAJA,BLOCKED / MANUAL_REVIEWpara productos existentes solo en WooCommerce y prohibe deletes automaticos. Estado:DISENO DOCUMENTAL / SIN API NUEVA / SIN WRITES.PDF-009Edefine reglas comerciales y tecnicas pre-write candidate para WooCommerceLa Directa:Category/SubCategoria -> product_catcomo arbol padre/hijo con mapping aprobado,Marcacomo atributo visible inicial,ACTIVOcomo elegible pero nopublishautomatico,DE BAJAcomostatus=draft, sin stock e imagen ausente comodraft, sin precio comoBLOCKED,PrecioListaFinalcomoregular_pricecandidate,sale_priceprotegido por guard de oferta,wc_product_idfuturo en PostgreSQL/OpenClaw y productos solo en WooCommerce comoBLOCKED / MANUAL_REVIEW. Estado:PUBLICADO EN origin/main / DESPLEGADO EN KNOWLEDGE PORTAL / DISENO DOCUMENTAL / DRY-RUN RULES / SIN API NUEVA / SIN WRITES.PDF-009Fdocumenta el payload final candidate dry-run paraSOURCE-002 Productos -> WooCommerce La Directa: confirma safe point ena2ad77ad85049f091ea7cb41d4ea59cf6117b98f, ejecuta solo GET read-only de categorias, atributos y muestra por SKU, observa una unica categoria realUncategorized(id=15) y0atributos, confirmamatched_count=0para los10SKUs previos, construye muestra representativa desde snapshot local SOURCE-002, arma payloads candidateCREATE,UPDATE_STOCK,UPDATE_CATALOG,DEACTIVATEyBLOCKED, y bloquea todo publish/write de catalogo hasta mapping real de categorias e imagen aprobada. Estado:PUBLICADO EN origin/main / DESPLEGADO EN KNOWLEDGE PORTAL / PAYLOAD FINAL CANDIDATE / DRY-RUN / READ-ONLY GET / SIN WRITES.PDF-009Gdocumenta el mapping candidate de categorias, imagenes y atributos paraSOURCE-002 Productos -> WooCommerce La Directa: confirma WooCommerce read-only con unica categoriaUncategorized(id=15),0atributos y0productos; inventaria el snapshot SOURCE-002 de314productos,21paresCategory/SubCategoria,49marcas,0columnas de imagen y2SKUs sin precio; deja todos los pares de categoria enNEEDS_CREATE_CATEGORY_GATEoBLOCKED,Marcaen atributo visible candidate con eventualNEEDS_CREATE_ATTRIBUTE_GATE, e imagenes enDRAFT_BLOCKEDhasta fuente o placeholder aprobado. Estado:MAPPING DOCUMENTAL / READ-ONLY DISCOVERY / SIN WRITES / CANDIDATE.PDF-009Hdocumenta el contrato frontend para filtros y datos visibles por producto:Articulose renderiza comonamey no es filtro;Marcase renderiza y debe ser filtro mediante atributo global/taxonomia optimizada;Unidades_x_BultoyCantVtaMinse renderizan en card/listado y ficha, pero no son filtros ni taxonomias;Imagesse renderiza, no es filtro y queda como coleccion ordenada candidateImages jsonben PostgreSQL/OpenClaw, conmedia_id,url, featured, orden, title/alt actual y esperado, ystatus; las imagenes no vienen desdeSGC, se cargan manualmente desde WooCommerce Admin y pueden descubrirse read-only para normalizacion y reporte de cleanup.pgvectorqueda descartado para imagenes y tabla hija normalizada queda como alternativa futura si performance/volumen/auditoria lo exige.meta_dataqueda prohibida para filtros masivos y WooCommerce queda bajo regla permanente de maxima performance. Estado:FRONTEND DATA CONTRACT / DISENO DOCUMENTAL / SIN WRITES / CANDIDATE.PDF-009Idocumenta la decision candidate deMarcacomo atributo global WooCommerce filtrable con slug sugeridopa_marcay el discovery read-only de Media Library: WooCommerce conserva0atributos,1categoriaUncategorized,0productos y1attachment visible por API; ese media item queda sinalt_text, sin SKU en title y unattached reciente. ConfirmaImages jsonboperativo conmedia_id,url,is_featured,sort_order, title/alt actual y esperado, ystatus. Estado:MARCA GLOBAL + MEDIA LIBRARY DISCOVERY / READ-ONLY GET / SIN WRITES / CANDIDATE.PDF-009Jdocumenta el primer write controlado minimo sobre WooCommerce La Directa: GET previo de atributoscount=0, POST unico autorizado HTTP201para crearMarca(attribute_id=1,slug=pa_marca,type=select,order_by=name,has_archives=true) y GET posteriorcount=1. Estado:WRITE CONTROLADO MINIMO / ATRIBUTO GLOBAL MARCA CREADO / SIN PRODUCTOS.PDF-009Kdocumenta el write controlado de terminos de marca bajoMarca / pa_marca(attribute_id=1): GET previo de terminoscount=0,49marcas detectadas desde SOURCE-002,NO APLICAbloqueada por revision manual,48terminos creados con HTTP201y GET posterior con48terminoscount=0. Estado:WRITE CONTROLADO / TERMINOS MARCA CREADOS / SIN PRODUCTOS.PDF-009Ldocumenta el write controlado de categorias WooCommerce paraSOURCE-002 Productos -> La Directa: GET previo de categorias con soloUncategorized(id=15),21paresCategory/SubCategoria,6paresVARIOSbloqueados comoMANUAL_REVIEW,12categorias padre creadas y15categorias hijas creadas (27categorias nuevas), con GET posterior HTTP200y todas las categoriascount=0porque no se tocaron productos. Estado:WRITE CONTROLADO / CATEGORIAS CREADAS / SIN PRODUCTOS.IMPORT-RUNTIME-STANDARD-SAFE-BATCHED-IMPORTSqueda como estandar obligatorio antes de recargas, importadores Python productivos, sync, scheduler, cron o pipelines sobre fuentesSGC. Documenta extraccion por lotes, snapshots fuera de Git, hash, timeouts, reintentos, throttling, idempotencia y compatibilidad conSQL Server 2012legacy leido por vistas.- RAW prod
1886, CORE prod1886, MART daily/seller/customer/sku1/25/173/180, importe total48087486.8300, CMV total37881269.3025. - El target prod vacio que quedo dentro de staging queda
LEGACY_EMPTY_TARGET / PENDING_CLEANUP. - Sync, scheduler, cron y pipelines siguen
NO-GO. - El proximo gate recomendado es un gate separado de mapping real de
categorias WooCommerce e imagenes, con IDs/slugs aprobados o bloqueos
explicitos antes de cualquier write. Create/update/delete,
sync/scheduler/cron/pipelines siguen
NO-GO.