Roadmap¶
Business Observer - PDF-013AD cross-repo WooCommerce production dry-run execution closed checkpoint¶
Etapa 17.5.213 - Cross-repo WooCommerce production dry-run execution closed checkpoint¶
- Estado:
PDF-013AD_CROSS_REPO_WOOCOMMERCE_PRODUCTION_DRY_RUN_EXECUTION_CLOSED_CHECKPOINT. - Alcance: registrar en OpenClaw el cierre publicado del gate WooCommerce
PDF-013U-Y PRODUCTION DRY-RUN EXECUTION / SYNTHETIC PAYLOAD / NO EXTERNAL SEND, sin tocar runtime ni modificar el repo WooCommerce desde OpenClaw. - Checkpoint anterior OpenClaw:
PDF-013AC. - HEAD OpenClaw base:
6aa59e9a46ea0eb644703b8c37547181200430c7. - HEAD WooCommerce registrado:
5b4d09f40bb8c5b01896b34c3b8efb14cb42065f. - Decision:
GOsolo documental para PDF-013AD;NO-GOpara repetir POST productivo. - Estado:
VERDE DOCUMENTAL / PDF-013U-Y EJECUTADO Y CERRADO / RUNTIME PRODUCTIVO VUELTO A ESTADO CERRADO. - Evidencia WooCommerce registrada:
unico POST sintetico ejecutado, HTTP
200, resultadoDRY_RUN_READY_BLOCKED / PENDING_SGC_REVIEW / READY_BLOCKED,emails_sent=false,send_blocked_by_default=true, rollback confirmado, home/tienda200, private endpoint404y feature flag efectiva finalfalse. - Restricciones preservadas:
no repetir POST, no imprimir nonce, cookies ni auth headers, no datos reales,
no WooCommerce API,
SGC, SMTP, emails, Docker, runtime, produccion tocada desde OpenClaw, staging, SQL, deploy ni push. - Siguiente paso recomendado: revision documental de cierre y gate nuevo, separado y explicito para cualquier trabajo futuro que requiera otra ejecucion.
Business Observer - PDF-013AC cross-repo WooCommerce production dry-run execution plan checkpoint¶
Etapa 17.5.212 - Cross-repo WooCommerce production dry-run execution plan checkpoint¶
- Estado:
PDF-013AC_CROSS_REPO_WOOCOMMERCE_PRODUCTION_DRY_RUN_EXECUTION_PLAN_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-Y PRODUCTION DRY-RUN EXECUTION / SYNTHETIC PAYLOAD / NO EXTERNAL SEND, sin tocar runtime ni modificar el repo WooCommerce desde OpenClaw. - Checkpoint anterior OpenClaw:
PDF-013AB. - HEAD OpenClaw base:
a9f065fefef1eefcff24bfec5fcdbebad5e6de4f. - HEAD WooCommerce registrado:
b25cea2cef8b3d23ef6454cf52b8a9c4be43db1e. - Decision:
GOsolo documental para PDF-013AC;NO-GOpara runtime/productivo. - Estado:
VERDE 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. - Restricciones preservadas:
no POST, nonce, feature flag activa, rollback real, WooCommerce API,
SGC, SMTP, emails, datos reales, VPS, Docker, runtime, produccion, staging, SQL, sync, scheduler, cron, pipelines, deploy ni push. - Siguiente paso recomendado:
autorizacion productiva separada, nueva y explicita para cualquier ejecucion
futura de
PDF-013U-Y; no se hereda autorizacion de este checkpoint.
Business Observer - PDF-013AB cross-repo WooCommerce production dry-run authorization plan checkpoint¶
Etapa 17.5.211 - Cross-repo WooCommerce production dry-run authorization plan checkpoint¶
- Estado:
PDF-013AB_CROSS_REPO_WOOCOMMERCE_PRODUCTION_DRY_RUN_AUTHORIZATION_PLAN_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-X Production Dry-Run Authorization Plan / No Post, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Checkpoint anterior OpenClaw:
PDF-013AA. - HEAD OpenClaw base:
c7ba47b95b0ace9f9da46ada9119ae0c14770a5a. - HEAD WooCommerce validado:
add289e91acf0768bdb410ab48e8e9b7cbe829cc. - Decision:
GOsolo documental para PDF-013AB;NO-GOpara runtime/productivo. - Restricciones preservadas:
no VPS, Docker, runtime, produccion, staging, WooCommerce API,
SGC, SMTP, SQL, nonce, cookies, auth headers, datos reales, sync, scheduler, cron, pipelines, deploy ni push. - Siguiente paso recomendado:
PDF-013U-Y PRODUCTION DRY-RUN EXECUTION / SYNTHETIC PAYLOAD / NO EXTERNAL SENDsolo con autorizacion separada para produccion, nonce efimero, feature flag temporal, unico POST sintetico y rollback inmediato.
Business Observer - PDF-013AA cross-repo WooCommerce production authenticated render checkpoint¶
Etapa 17.5.210 - Cross-repo WooCommerce production authenticated render checkpoint¶
- Estado:
PDF-013AA_CROSS_REPO_WOOCOMMERCE_PRODUCTION_AUTHENTICATED_RENDER_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-W Production Private Page Authenticated Render / No Form Post, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013Z. - Gate WooCommerce actual:
PDF-013U-W Production Private Page Authenticated Render / No Form Post. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
a561776f0d7d2766ef2b2a2124e354d81b7e8e13. - Commit WooCommerce nuevo:
a561776 test: validate pdf-013u-w production authenticated render. - Estado final recomendado WooCommerce
VERDE. - Estado operativo
PRODUCTION PRIVATE PAGE AUTHENTICATED RENDER / NO FORM POST. - Pagina privada productiva renderizada/validada para usuario autorizado:
Page ID
32, slugprivate-intake-candidate, statusprivate, shortcode[ladirecta_private_intake_form]. - Plugin production active
private-intake-form,active,0.2.0-candidate. - Render OK, estructura formulario presente,
14/14campos esperados y submit presente. - Feature flag productiva efectiva
false. - Publico no autenticado sigue sin acceso:
HEADyGETa/private-intake-candidate/devuelven404. - Sin link publico/menu; home/tienda sin link al slug.
- Endpoint produccion no ejecutado, POST productivo no ejecutado, nonce no capturado, no impreso y no guardado.
- Cookies/auth headers no impresos ni guardados; HTML completo no impreso ni guardado con nonce.
- Sin datos reales, sin payload/candidate completo y sin auto-submit.
- Produccion home/tienda
200 OK. - No-side-effects visibles: usuarios
1 -> 1, customers0 -> 0y paginas con slug1 -> 1. - No hubo WooCommerce API,
SGC, SMTP real ni emails. - No se imprimieron ni versionaron secretos.
- No se hace: no endpoint productivo, no POST productivo, no nonce productivo, no SQL, no sync, no scheduler, no cron y no pipelines desde OpenClaw.
- Proximo paso:
PDF-013U-X PRODUCTION DRY-RUN AUTHORIZATION PLAN / NO POST.
Business Observer - PDF-013Z cross-repo WooCommerce production private page access validation checkpoint¶
Etapa 17.5.209 - Cross-repo WooCommerce production private page access validation checkpoint¶
- Estado:
PDF-013Z_CROSS_REPO_WOOCOMMERCE_PRODUCTION_PRIVATE_PAGE_ACCESS_VALIDATION_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-V Production Private Page Access Validation / No Form Post, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013Y. - Gate WooCommerce actual:
PDF-013U-V Production Private Page Access Validation / No Form Post. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
8cadbea567ebe2e03ad37272454682997e774707. - Commit WooCommerce nuevo:
8cadbea test: validate pdf-013u-v production private page access. - Estado final recomendado WooCommerce
VERDE. - Estado operativo
PRODUCTION PRIVATE PAGE ACCESS VALIDATION / NO FORM POST. - Pagina privada productiva validada: Page ID
32, tituloLa Directa Private Intake, slugprivate-intake-candidate, statusprivatey shortcode[ladirecta_private_intake_form]. - Plugin production active
private-intake-form,active,0.2.0-candidate. - Feature flag productiva efectiva
false. - 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/tienda
200 OK. - No-side-effects visibles: usuarios
1 -> 1, customers0 -> 0y pagina slug count1 -> 1. - No hubo WooCommerce API,
SGC, SMTP real ni emails. - No se imprimieron ni versionaron secretos.
- No se hace: no creacion/modificacion de pagina desde OpenClaw, no endpoint productivo, no nonce productivo, no render autenticado con nonce, no POST productivo, no SQL, no sync, no scheduler, no cron y no pipelines desde OpenClaw.
- Proximo paso:
PDF-013U-W PRODUCTION PRIVATE PAGE AUTHENTICATED RENDER / NO FORM POST.
Business Observer - PDF-013Y cross-repo WooCommerce production private page create checkpoint¶
Etapa 17.5.208 - Cross-repo WooCommerce production private page create checkpoint¶
- Estado:
PDF-013Y_CROSS_REPO_WOOCOMMERCE_PRODUCTION_PRIVATE_PAGE_CREATE_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-U Production Private Page Create / Endpoint Blocked / No Form Post, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013X. - Gate WooCommerce actual:
PDF-013U-U Production Private Page Create / Endpoint Blocked / No Form Post. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
34fbd31737a5c7db90cc2018e0e0c1cb8c014ca8. - Commit WooCommerce nuevo:
34fbd31 ops: create pdf-013u-u production private page. - Estado final recomendado WooCommerce
VERDE. - Estado operativo
PRODUCTION PRIVATE PAGE CREATE / ENDPOINT BLOCKED / NO FORM POST. - Pagina privada productiva creada: Page ID
32, tituloLa Directa Private Intake, slugprivate-intake-candidate, statusprivatey shortcode[ladirecta_private_intake_form]. - Plugin production active
private-intake-form,active,0.2.0-candidate. - Feature flag productiva efectiva
false. - 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/tienda
200 OK. - Reversa pre-page-create:
/var/backups/ladirecta/pdf-013u-u-20260629-014903. - No-side-effects visibles: usuarios
1 -> 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.
- No se hace: no creacion/modificacion de pagina desde OpenClaw, no endpoint productivo, no nonce productivo, no POST productivo, no SQL, no sync, no scheduler, no cron y no pipelines desde OpenClaw.
- Proximo paso:
PDF-013U-V PRODUCTION PRIVATE PAGE ACCESS VALIDATION / NO FORM POST.
Business Observer - PDF-013X cross-repo WooCommerce production private page plan checkpoint¶
Etapa 17.5.207 - Cross-repo WooCommerce production private page plan checkpoint¶
- Estado:
PDF-013X_CROSS_REPO_WOOCOMMERCE_PRODUCTION_PRIVATE_PAGE_PLAN_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-T Production Private Page Plan / No Form Post, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013W. - Gate WooCommerce actual:
PDF-013U-T Production Private Page Plan / No Form Post. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
a59ca6425a8d6ecf3e73ddb54b7cab066628f0dc. - Commit WooCommerce nuevo:
a59ca64 docs: add pdf-013u-t production private page plan. - Estado final recomendado WooCommerce
VERDE. - Estado operativo
PRODUCTION PRIVATE PAGE PLAN / NO FORM POST. - Produccion no modificada.
- Pagina productiva no creada, endpoint produccion no ejecutado, nonce produccion no capturado y feature flag productiva bloqueada.
- Plugin production active
0.2.0-candidate; home/tienda200 OK. - Plan de pagina privada futura: titulo
La Directa Private Intake, slugprivate-intake-candidate, statusprivate, shortcode[ladirecta_private_intake_form]y autor admin operativo existente. - Perimetro:
manage_woocommerceomanage_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.
- No se hace: no creacion de pagina productiva desde OpenClaw, no endpoint productivo, no nonce productivo, no POST productivo, no SQL, no sync, no scheduler, no cron y no pipelines desde OpenClaw.
- Proximo paso:
PDF-013U-U PRODUCTION PRIVATE PAGE CREATE / ENDPOINT BLOCKED / NO FORM POST.
Business Observer - PDF-013W cross-repo WooCommerce production plugin activation checkpoint¶
Etapa 17.5.206 - Cross-repo WooCommerce production plugin activation checkpoint¶
- Estado:
PDF-013W_CROSS_REPO_WOOCOMMERCE_PRODUCTION_PLUGIN_ACTIVATION_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-S Production Plugin Activation / Endpoint Blocked, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013V. - Gate WooCommerce actual:
PDF-013U-S Production Plugin Activation / Endpoint Blocked. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
6ea98dbce91a877f854c268369eeda2020ce6b59. - Commit WooCommerce nuevo:
6ea98db ops: activate pdf-013u-s production plugin with endpoint blocked. - Estado final recomendado WooCommerce
VERDE. - Estado operativo
PRODUCTION PLUGIN ACTIVATION / ENDPOINT BLOCKED. - Plugin
private-intake-formactivado en produccion; WP-CLI confirmaACTIVE; version0.2.0-candidate. - Endpoint produccion bloqueado por feature flag y feature flag efectiva en
produccion
false. - Produccion home/tienda
200 OK. - Pagina productiva no creada, nonce produccion no capturado y POST productivo no ejecutado.
- No-side-effects visibles: usuarios WordPress
1, 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.
- No se hace: no endpoint productivo, no nonce productivo, no pagina productiva, no POST productivo, no SQL, no sync, no scheduler, no cron y no pipelines desde OpenClaw.
- Proximo paso:
PDF-013U-T PRODUCTION PRIVATE PAGE PLAN / NO FORM POST.
Business Observer - PDF-013V cross-repo WooCommerce production plugin availability checkpoint¶
Etapa 17.5.205 - Cross-repo WooCommerce production plugin availability checkpoint¶
- Estado:
PDF-013V_CROSS_REPO_WOOCOMMERCE_PRODUCTION_PLUGIN_AVAILABILITY_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-R Production Plugin Availability / No Activation, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013U. - Gate WooCommerce actual:
PDF-013U-R Production Plugin Availability / No Activation. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
df269775799916c80edf44183cc908abc3f081c5. - Commit WooCommerce nuevo:
df26977 ops: add pdf-013u-r production plugin availability. - Estado final recomendado WooCommerce
VERDE. - Estado operativo
PRODUCTION PLUGIN AVAILABILITY / NO ACTIVATION. - Plugin
private-intake-formcopiado a produccion, detectado por WordPress produccion yINACTIVE. - Produccion home/tienda
200 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. - No se imprimieron ni versionaron secretos.
- No se hace: no activacion de plugin desde OpenClaw, no endpoint productivo, no nonce productivo, no pagina productiva, no SQL, no sync, no scheduler, no cron y no pipelines.
- Proximo paso:
PDF-013U-S PRODUCTION PLUGIN ACTIVATION / ENDPOINT BLOCKED.
Business Observer - PDF-013U cross-repo WooCommerce production promotion plan checkpoint¶
Etapa 17.5.204 - Cross-repo WooCommerce production promotion plan checkpoint¶
- Estado:
PDF-013U_CROSS_REPO_WOOCOMMERCE_PRODUCTION_PROMOTION_PLAN_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-Q Production Promotion Plan / No Prod Change, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013T. - Gate WooCommerce actual:
PDF-013U-Q Production Promotion Plan / No Prod Change. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
ef6b0b6a1b131fbe46894efa2fffb9952f4bc62b. - Commit WooCommerce nuevo:
ef6b0b6 docs: add pdf-013u-q production promotion plan. - Estado final recomendado WooCommerce
VERDE. - Estado operativo
PRODUCTION PROMOTION PLAN / NO PROD CHANGE. - Produccion no modificada; plugin no copiado, no activado y endpoint produccion no ejecutado.
GOsolo para plan documental sin cambios.NO-GOpara produccion runtime/write, copia o activacion en este gate, endpoint produccion, nonce produccion, pagina productiva, WooCommerce API,SGC, SMTP real y emails.- Estrategia futura: copiar plugin a produccion en gate controlado, dejarlo inactivo, validar disponibilidad con WP-CLI, mantener feature flag bloqueada, no crear pagina publica y no ejecutar endpoint produccion.
- Rollback: remover plugin si queda inactivo y falla disponibilidad; desactivar por WP-CLI si un gate posterior lo activa; restaurar Nginx/files/DB solo con gate futuro explicito.
- No se hace: no WooCommerce API, no
SGC, no SMTP real, no emails, no SQL, no sync, no scheduler, no cron y no pipelines. - Proximo paso:
PDF-013U-R PRODUCTION PLUGIN AVAILABILITY / NO ACTIVATION.
Business Observer - PDF-013T cross-repo WooCommerce rate limit logging hardening checkpoint¶
Etapa 17.5.203 - Cross-repo WooCommerce rate limit logging hardening checkpoint¶
- Estado:
PDF-013T_CROSS_REPO_WOOCOMMERCE_RATE_LIMIT_LOGGING_HARDENING_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-P Rate Limit and Logging Hardening, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013S. - Gate WooCommerce actual:
PDF-013U-P Rate Limit and Logging Hardening. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
ff79d022fee2ef4450fd2bfafe059a83675163fd. - Commit WooCommerce nuevo:
ff79d02 test: harden pdf-013u-p rate limit and logging. - Staging hardening
PASS; estado final recomendado WooCommerceVERDE. - Rate limit real implementado con transients y validado en staging con
429 RATE_LIMITEDen 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 con
DRY_RUN_READY_BLOCKED,PENDING_SGC_REVIEW,READY_BLOCKED,send_blocked_by_default=true,writes_executed=falseyemails_sent=false. - No-side-effects confirmados: usuarios
2 -> 2y customers0 -> 0. - Produccion read-only
200 OKen home y tienda. - No se hace: no WooCommerce API, no
SGC, no SMTP real, no emails, no SQL, no sync, no scheduler, no cron y no pipelines. - Proximo paso:
PDF-013U-Q PRODUCTION PROMOTION PLAN / NO PROD CHANGE.
Business Observer - PDF-013S cross-repo WooCommerce staging to prod security review checkpoint¶
Etapa 17.5.202 - Cross-repo WooCommerce staging to prod security review checkpoint¶
- Estado:
PDF-013S_CROSS_REPO_WOOCOMMERCE_STAGING_TO_PROD_SECURITY_REVIEW_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-O Staging to Prod Diff and Security Review, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013R. - Gate WooCommerce actual:
PDF-013U-O Staging to Prod Diff and Security Review. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
505e411553284b171ef97c3bf5bdb50fc18c8694. - Commit WooCommerce nuevo:
505e411 docs: add pdf-013u-o staging to prod security review. - Staging hardening
PASS; estado final recomendado WooCommerceAMARILLO. GOsolo para plan documental de promocion;NO-GOpara produccion runtime/write.- Security review: REST route con permission callback, capability
manage_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.
- No se hace: no WooCommerce API, no
SGC, no SMTP real, no emails, no SQL, no sync, no scheduler, no cron y no pipelines. - 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:
PDF-013U-P RATE LIMIT AND LOGGING HARDENING.
Business Observer - PDF-013R cross-repo WooCommerce staging promotion readiness checkpoint¶
Etapa 17.5.201 - Cross-repo WooCommerce staging promotion readiness checkpoint¶
- Estado:
PDF-013R_CROSS_REPO_WOOCOMMERCE_STAGING_PROMOTION_READINESS_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-N Staging Promotion Readiness / No Prod Write, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013Q. - Gate WooCommerce actual:
PDF-013U-N Staging Promotion Readiness / No Prod Write. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
c14e83166acbe4e05477ea5519df77827bd9150e. - Commit WooCommerce nuevo:
c14e831 docs: add pdf-013u-n staging promotion readiness. - Staging hardening
PASS; estado final recomendado WooCommerceAMARILLO. GOpara plan documental de promocion;NO-GOpara produccion runtime/write.- Produccion no modificada; endpoint produccion no ejecutado.
- No se hace: no WooCommerce API, no
SGC, no SMTP real, no emails, no SQL, no sync, no scheduler, no cron y no pipelines. - 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 sin
SGC/WooCommerce API writes ni SMTP real. - Proximo paso:
PDF-013U-O STAGING TO PROD DIFF AND SECURITY REVIEW.
Business Observer - PDF-013Q cross-repo WooCommerce staging hardening checkpoint¶
Etapa 17.5.200 - Cross-repo WooCommerce staging hardening checkpoint¶
- Estado:
PDF-013Q_CROSS_REPO_WOOCOMMERCE_STAGING_HARDENING_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-M Staging Dry-Run Hardening and Negative Cases, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013P. - Gate WooCommerce actual:
PDF-013U-M Staging Dry-Run Hardening and Negative Cases. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
3629e411e2113d4595106c587f38c71aa38ca714. - Commit WooCommerce nuevo:
3629e41 test: harden pdf-013u-m staging dry-run cases. - Casos positivos: persona juridica B2B sintetica y comercio/persona fisica
sintetica, ambos con
HTTP 200,DRY_RUN_READY_BLOCKED,PENDING_SGC_REVIEW,READY_BLOCKED,send_blocked_by_default=true,writes_executed=falseyemails_sent=false. - Casos negativos endurecidos: nonce/capability, validaciones de CUIT, email,
telefono, requerido faltante, honeypot, challenge, payload vacio, JSON
malformado y metodo
GET, con status sanitizados esperados. - No-side-effects confirmados: usuarios staging
2 -> 2, usuarios customer0 -> 0, sin usuario WooCommerce nuevo, sin cliente real, sin WooCommerce API, sinSGC, sin SMTP real ni emails, SMTP blocker activo. - Nonce usado efimeramente; nonce, cookies y auth headers no guardados.
- Produccion read-only
200 OK; staging protegido401 Unauthorized, Basic Auth,noindexyno-store. - No se hace: no WooCommerce API, no
SGC, no SMTP real, no emails, no secretos versionados, no SQL, no sync, no scheduler, no cron y no pipelines. - Proximo paso:
PDF-013U-N STAGING PROMOTION READINESS / NO PROD WRITE.
Business Observer - PDF-013P cross-repo WooCommerce staging dry-run checkpoint¶
Etapa 17.5.199 - Cross-repo WooCommerce staging dry-run checkpoint¶
- Estado:
PDF-013P_CROSS_REPO_WOOCOMMERCE_STAGING_DRY_RUN_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-L Staging Nonce Capture and Dry-Run Request, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013O. - Gate WooCommerce actual:
PDF-013U-L Staging Nonce Capture and Dry-Run Request. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
8b4b2d6b028f511f2fbb9c6c031574200df95777. - Commit WooCommerce nuevo:
8b4b2d6 test: execute pdf-013u-l staging dry-run request. - Nonce staging capturado efimeramente; nonce, cookies y auth headers no guardados.
- Dry-run POST ejecutado solo contra staging y resultado sanitizado
HTTP 200conDRY_RUN_READY_BLOCKED,PENDING_SGC_REVIEW,READY_BLOCKED,send_blocked_by_default=true,writes_executed=falseyemails_sent=false. - Casos negativos documentados: sin nonce
401, nonce invalido403y payload invalido422 VALIDATION_ERROR. - Produccion read-only
200 OK; staging protegido401 Unauthorized, Basic Auth,noindexyno-store. - No se hace: no WooCommerce API, no
SGC, no SMTP real, no emails externos, no secretos versionados, no sync, no scheduler, no cron y no pipelines. - Proximo paso:
PDF-013U-M STAGING DRY-RUN HARDENING AND NEGATIVE CASES.
Business Observer - PDF-013O cross-repo WooCommerce staging private page checkpoint¶
Etapa 17.5.198 - Cross-repo WooCommerce staging private page checkpoint¶
- Estado:
PDF-013O_CROSS_REPO_WOOCOMMERCE_STAGING_PRIVATE_PAGE_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-K Staging Private Page and Nonce Readiness, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013N. - Gate WooCommerce actual:
PDF-013U-K Staging Private Page and Nonce Readiness. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
c9f5390a52644f57d511bb7b751cfbcce333b16c. - Commit WooCommerce nuevo:
c9f5390 ops: prepare pdf-013u-k staging private page. - Pagina privada staging creada con Page ID
32, slugprivate-intake-candidate, statusprivatey shortcode presente[ladirecta_private_intake_form]. - Plugin
private-intake-formactivo en staging. - Staging protegido
401 Unauthorizedy headersnoindex/no-store; produccion read-only200 OKen home y tienda. - No se hace: no usuario staging creado, no endpoint intake, no nonce capture,
no POST, no WooCommerce API, no
SGC, no SMTP real, no emails, no sync, no scheduler, no cron y no pipelines. - Proximo paso:
PDF-013U-L STAGING NONCE CAPTURE AND DRY-RUN REQUEST / NO EXTERNAL SEND.
Business Observer - PDF-013N cross-repo WooCommerce staging plugin activation checkpoint¶
Etapa 17.5.197 - Cross-repo WooCommerce staging plugin activation checkpoint¶
- Estado:
PDF-013N_CROSS_REPO_WOOCOMMERCE_STAGING_PLUGIN_ACTIVATION_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-J Staging Plugin Activation / No Endpoint Post, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013M. - Gate WooCommerce actual:
PDF-013U-J Staging Plugin Activation / No Endpoint Post. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
b745b924437b673cc1c113cbece46e697b2b8638. - Commit WooCommerce nuevo:
b745b92 ops: activate pdf-013u-j plugin in staging. - Plugin
private-intake-formactivo en staging, comoLa Directa Private Intake Form Candidate, version0.2.0-candidate, statusActive. wp plugin is-active private-intake-formdevolvio exit0.siteurl/homestaging sigue sin cambios:http://staging.ladirecta.localhost:8081;blog_public=0.- Endpoint intake no ejecutado, nonce no capturado y sin pagina, formulario ni usuario creado.
- Staging protegido
401 Unauthorizedy headersnoindex/no-store; produccion read-only200 OKen home y tienda. - No se hace: no endpoint intake, no nonce capture, no writes SQL no
autorizados, no restore, no reload, no restart, no WooCommerce API, no
SGC, no SMTP real, no emails, no sync, no scheduler, no cron y no pipelines. - Proximo paso:
PDF-013U-K STAGING PRIVATE PAGE AND NONCE READINESS / NO ENDPOINT POST.
Business Observer - PDF-013M cross-repo WooCommerce staging plugin availability checkpoint¶
Etapa 17.5.196 - Cross-repo WooCommerce staging plugin availability checkpoint¶
- Estado:
PDF-013M_CROSS_REPO_WOOCOMMERCE_STAGING_PLUGIN_AVAILABILITY_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-I Staging Plugin Availability / Installation Readiness, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013L. - Gate WooCommerce actual:
PDF-013U-I Staging Plugin Availability / Installation Readiness. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
5cc0ea22e072cef23ad4f6c9335e99155a3b9fba. - Commit WooCommerce nuevo:
5cc0ea2 ops: make pdf-013u-i staging plugin available. - Plugin
private-intake-formdisponible en staging, detectado por WP-CLI comoLa Directa Private Intake Form Candidate, version0.2.0-candidate, statusInactive. wp plugin is-active private-intake-formdevolvio exit1; plugin activation sigue pendiente.- Endpoint intake no ejecutado, nonce no capturado y sin pagina, formulario ni usuario creado.
- Staging protegido
401 Unauthorizedy headersnoindex/no-store; produccion read-only200 OKen home y tienda. - No se hace: no plugin activation, no endpoint intake, no writes SQL, no
restore, no reload, no restart, no WooCommerce API, no
SGC, no SMTP real, no emails, no sync, no scheduler, no cron y no pipelines. - Nota de seguridad: en gates siguientes evitar comandos que impriman constantes sensibles completas; toda salida potencialmente sensible debe filtrarse o sanitizarse.
- Proximo paso:
PDF-013U-J STAGING PLUGIN ACTIVATION / NO ENDPOINT POST.
Business Observer - PDF-013L cross-repo WooCommerce staging WordPress readiness checkpoint¶
Etapa 17.5.195 - Cross-repo WooCommerce staging WordPress readiness checkpoint¶
- Estado:
PDF-013L_CROSS_REPO_WOOCOMMERCE_STAGING_WORDPRESS_READINESS_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-H Staging WordPress Validation and Plugin Activation Readiness, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013K. - Gate WooCommerce actual:
PDF-013U-H Staging WordPress Validation and Plugin Activation Readiness. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
ef361790dc8620b25b4fca300f97a078fee84497. - Commit WooCommerce nuevo:
ef36179 test: validate pdf-013u-h staging wordpress readiness. - Staging WordPress validado: HTTP staging
401 Unauthorizedsin autenticar, Basic Auth activo, headersnoindex/no-store, WP-CLI funcional, version WordPress7.0, themetwentytwentyfive 1.5,siteurl/homehttp://staging.ladirecta.localhost:8081yblog_public = 0. - Produccion read-only validada:
https://ladirecta.com.ar/ -> 200 OKyhttps://ladirecta.com.ar/tienda/ -> 200 OK. - Redis Object Cache staging no persistente y sin drop-in; SMTP real bloqueado por MU-plugin y sin emails.
- No se hace: no plugin activation, no endpoint intake, no writes SQL, no
restore, no reload, no restart, no WooCommerce API, no
SGC, no SMTP real, no emails, no sync, no scheduler, no cron y no pipelines. - Nota de seguridad: una salida read-only de
wp redis statusmostroWP_CACHE_KEY_SALTen consola local; no fue copiada al repo ni al documento. Proximos gates deben evitar comandos que impriman constantes sensibles o filtrar/sanitizar salida. - Proximo paso:
PDF-013U-I STAGING PLUGIN AVAILABILITY / INSTALLATION READINESS.
Business Observer - PDF-013K cross-repo WooCommerce same VPS staging base checkpoint¶
Etapa 17.5.194 - Cross-repo WooCommerce same VPS staging base checkpoint¶
- Estado:
PDF-013K_CROSS_REPO_WOOCOMMERCE_SAME_VPS_STAGING_BASE_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-G Same VPS Internal Staging Create, sin tocar runtime ni el repo WooCommerce desde OpenClaw. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013J. - Gate WooCommerce actual:
PDF-013U-G Same VPS Internal Staging Create. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
25bed8db9bd7fb8af5cc98301e07f73e92522962. - Commit WooCommerce nuevo:
25bed8d ops: create pdf-013u-g same vps staging base. - Restore point
PDF-013U-E: confirmado. - Staging base creado: directorios
/var/www/ladirecta-staging,/var/www/ladirecta-staging/publicy/var/www/ladirecta-staging/logs, DBladirecta_staging, usuario DBladirecta_staging_user, WordPress copiado conrsync, DB importada desde backupPDF-013U-E, URLhttp://staging.ladirecta.localhost:8081,wp-config.phpstaging ajustado sin secretos y Nginx staging/etc/nginx/sites-available/ladirecta-staging. - Proteccion aplicada: Basic Auth con
htpasswdfuera de webroot,nginx -t OK, reload Nginx posterior al test, HTTP staging sin autenticar401 Unauthorized,noindex/noarchiveyno-store/no-cache. - No se hace: no restore, no plugin activation, no endpoint intake, no
WooCommerce API, no
SGC, no SMTP real, no emails, no sync, no scheduler, no cron y no pipelines. Produccion funcional no fue modificada. - Nota operativa: Redis Object Cache fue desactivado solo en staging para
evitar cache compartida con produccion; no se ejecuto
wp cache flush. - Proximo paso:
PDF-013U-H STAGING WORDPRESS VALIDATION AND PLUGIN ACTIVATION READINESS.
Business Observer - PDF-013J cross-repo WooCommerce staging prep plan checkpoint¶
Etapa 17.5.193 - Cross-repo WooCommerce staging prep plan checkpoint¶
- Estado:
PDF-013J_CROSS_REPO_WOOCOMMERCE_STAGING_PREP_PLAN_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-F Same VPS Internal Staging Prep Plan, sin tocar runtime ni el repo WooCommerce. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013I. - Gate WooCommerce actual:
PDF-013U-F Same VPS Internal Staging Prep Plan. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
3b59a6b36cdd56f9240e293bd6c7544ef01d7e5e. - Commit WooCommerce nuevo:
3b59a6b docs: add pdf-013u-f same vps staging prep plan. - Restore point
PDF-013U-E: prerequisito cumplido. - Plan staging: directorio
/var/www/ladirecta-staging/public, DBladirecta_staging, usuario DBladirecta_staging_usery Nginx server block/etc/nginx/sites-available/ladirecta-staging. - Protecciones requeridas: Basic Auth o allowlist,
noindex/no-store, SMTP bloqueado o sink, datos sinteticos, sin WooCommerce API writes y sinSGCwrites. - No se hace: no staging real, no produccion funcional, no
SQL/write/reload/restart/restore, no plugin activation, no endpoint intake,
no WooCommerce API writes, no
SGCwrites, no SMTP, no emails, no sync, no scheduler, no cron y no pipelines. - Proximo paso:
PDF-013U-G SAME VPS INTERNAL STAGING CREATE / CONTROLLED EXECUTION.
Business Observer - PDF-013I cross-repo WooCommerce restore points checkpoint¶
Etapa 17.5.192 - Cross-repo WooCommerce restore points checkpoint¶
- Estado:
PDF-013I_CROSS_REPO_WOOCOMMERCE_RESTORE_POINTS_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-E Same VPS Restore Points, sin tocar runtime ni el repo WooCommerce. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013H. - Gate WooCommerce actual:
PDF-013U-E Same VPS Restore Points. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
89384e37c8608848a830aec3adc2c6e322957188. - Commit WooCommerce nuevo:
89384e3 ops: add pdf-013u-e same vps restore points. - Backup dir remoto:
/var/backups/ladirecta/pdf-013u-e-20260626-205755. - Evidencia sanitizada: backup DB creado via WP-CLI sin imprimir
credenciales, backup
wp-contentcreado, backup Nginx creado, manifest sanitizado creado e integridad verificada consha256sum,gzip -tytar -tzf. - No se hace: no restore, no staging real, no produccion funcional, no
reload/restart de servicios, no SQL write, no WooCommerce API, no
SGC, no SMTP, no emails, no sync, no scheduler, no cron y no pipelines. - Proximo paso:
PDF-013U-F SAME VPS INTERNAL STAGING PREP PLAN.
Business Observer - PDF-013H cross-repo WooCommerce same VPS restore readiness checkpoint¶
Etapa 17.5.191 - Cross-repo WooCommerce same VPS restore readiness checkpoint¶
- Estado:
PDF-013H_CROSS_REPO_WOOCOMMERCE_SAME_VPS_RESTORE_READINESS_CHECKPOINT. - Alcance: registrar en OpenClaw el gate WooCommerce
PDF-013U-D Same VPS Restore Readiness, sin tocar runtime ni el repo WooCommerce. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013G. - Gate WooCommerce actual:
PDF-013U-D Same VPS Restore Readiness. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
cd6fceca185ff09b54c012441ee14c984a522456. - Commit WooCommerce nuevo:
cd6fcec docs: add pdf-013u-d same vps restore readiness. - Validadores WooCommerce:
PASS. - Restore readiness:
AMARILLO. - Same VPS internal staging:
VIABLE CON BLOQUEANTES. - Evidencia sanitizada: VPS WooCommerce
srv1735349, Ubuntu24.04.4 LTS, serviciosnginx,php8.3-fpm,mariadb,redis-server, disco48Gtotal /43Glibre, RAM3.8Gitotal /3.0Gidisponible, swap0B, puertos publicos22,80,443, MariaDB/Redis en loopback y herramientaswp,mysqldump,mariadb-dump,mysql,docker,rsync,certbot. - No se hace: no backup real autorizado, no restore, no SQL, no staging real,
no WordPress runtime, no plugin activation, no endpoint intake, no
produccion, no WooCommerce API, no
SGC, no SMTP, no emails, no sync, no scheduler, no cron y no pipelines. - Proximo paso:
PDF-013U-E SAME VPS RESTORE POINTS AND ROLLBACK PLAN / BACKUP AUTHORIZED.
Business Observer - PDF-013G cross-repo WooCommerce same VPS controlled staging strategy¶
Etapa 17.5.190 - Cross-repo WooCommerce same VPS controlled staging strategy¶
- Estado:
PDF-013G_CROSS_REPO_WOOCOMMERCE_SAME_VPS_CONTROLLED_STAGING_STRATEGY. - Alcance: registrar en OpenClaw la decision WooCommerce
PDF-013U-C Same VPS Controlled Staging Strategy, sin tocar runtime ni el repo WooCommerce. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013F. - Gate WooCommerce actual:
PDF-013U-C Same VPS Controlled Staging Strategy. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
b2db3cfd5a1384013db6600e28c1eb731e6b1275. - Commit WooCommerce nuevo:
b2db3cf docs: decide pdf-013u same vps controlled staging strategy. - Validadores WooCommerce:
PASS. - Decision: no contratar otro VPS, excluir el VPS OpenClaw, dejar Docker local como alternativa secundaria y usar el mismo VPS WooCommerce actual solo como target condicionado de staging interno privado controlado.
- No se hace: no tocar VPS WooCommerce, no SSH WooCommerce, no SQL, no
WordPress runtime, no plugin activation, no endpoint intake, no produccion,
no pruebas directas en produccion, no WooCommerce API, no
SGC, no SMTP, no emails, no sync, no scheduler, no cron y no pipelines. - Proximo paso:
PDF-013U-D SAME VPS RESTORE READINESS / READ-ONLY.
Business Observer - PDF-013F cross-repo WooCommerce local staging tooling checkpoint¶
Etapa 17.5.189 - Cross-repo WooCommerce local staging tooling checkpoint¶
- Estado:
PDF-013F_CROSS_REPO_WOOCOMMERCE_LOCAL_STAGING_TOOLING_CHECKPOINT. - Alcance: registrar en OpenClaw que WooCommerce La Directa avanzo desde
PDF-013S Private Staging Ready PlanhaciaPDF-013T Private Local Staging Tooling Plan, sin tocar runtime ni el repo WooCommerce. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013E. - Gate WooCommerce previo:
PDF-013S Private Staging Ready Plan. - Gate WooCommerce actual:
PDF-013T Private Local Staging Tooling Plan. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
a9ebd994a44b9bbd530a1fc83984eb31f6e40046. - Commit WooCommerce nuevo:
a9ebd99 docs: add pdf-013t private local staging tooling plan. - Validadores WooCommerce:
PASS. - Tooling creado en WooCommerce: compose privado, env example, plan, runbook y
validador
PDF-013T. - No se hace: no Docker ejecutado, no WordPress runtime levantado, no plugin
activado, no
.envreal niconfig/private-staging.env, no produccion, no deploy funcional, no SQL, no WooCommerce API, noSGC, no SMTP, no emails, no sync, no scheduler, no cron y no pipelines. - Proximo paso: gate operativo local explicito para ejecutar Docker Compose de staging privado, con validaciones y evidencia sanitizada.
Business Observer - PDF-013E cross-repo WooCommerce staging ready plan checkpoint¶
Etapa 17.5.188 - Cross-repo WooCommerce staging ready plan checkpoint¶
- Estado:
PDF-013E_CROSS_REPO_WOOCOMMERCE_STAGING_READY_PLAN_CHECKPOINT. - Alcance: registrar en OpenClaw que WooCommerce La Directa avanzo desde
PDF-013R readiness NO-GOhaciaPDF-013S Private Staging Ready Plan, sin tocar runtime ni el repo WooCommerce. - Gate maestro de origen:
PDF-013C. - Checkpoint anterior OpenClaw:
PDF-013D. - Gate WooCommerce previo:
PDF-013R readiness NO-GO. - Gate WooCommerce actual:
PDF-013S Private Staging Ready Plan. - Rama WooCommerce relacionada:
release/intake-pdf013. - HEAD remoto WooCommerce relacionado:
5eabae0a5ed3e85196ed8cae7522b3da3fb07510. - Commit WooCommerce nuevo:
5eabae0 docs: add pdf-013s private staging ready plan. - Validadores WooCommerce:
PASS. PDF-013SconviertePRIVATE_STAGING_READYen checklist operativa.- No se hace: no runtime privado, no produccion, no staging funcional, no
deploy funcional, no SQL, no Docker, no WooCommerce API, no
SGC, no SMTP, no emails, no sync, no scheduler, no cron y no pipelines. - Proximo paso: preparar gate operativo de staging privado, todavia sin ejecucion.
Business Observer - PDF-013C form plugin intake contract¶
Etapa 17.5.186 - Form plugin intake contract¶
- Estado:
PDF-013C_FORM_PLUGIN_INTAKE_CONTRACT_CANDIDATE. - Alcance: contrato ejecutable para formulario/plugin futuro de La Directa, con schema JSON, ejemplos, validadores, candidates sanitizados y handoff WooCommerce.
- Campos: razon social, fantasia, CUIT, email, WhatsApp, domicilios, rubro, comentario, aceptacion comercial y source channel.
- Idempotencia: shape productiva
REQUEST_INTAKE:<normalized_cuit>:<email_hash>:<date_bucket>y seed sinteticoPDF-013C:REQUEST_INTAKE:TEST001. - Outbox:
BILLING_CUSTOMER_REQUESTafacturacion@ladirecta.com.ar, estadoREADY_BLOCKED,send_blocked_by_default=truey templatebilling_customer_request_v1. - Seguridad: captcha/challenge, honeypot, validacion server-side, logs sanitizados, sin enumeracion, sin password y sin usuario Woo automatico.
- Handoff: futuro repo
C:\APV\vps-woocommerce-ladirecta, sin implementar en este gate. - No se hace: no emails reales, no SMTP para envio, no SQL write prod, no SGC, no WooCommerce API, no datos reales, no endpoint publico, no plugin real, no worker, no runtime automatico, no scheduler, no cron y no pipelines.
- Proximo paso: gate de implementacion candidate en el repo WooCommerce con endpoint interno no publico y outbox bloqueada.
Business Observer - PDF-013B prod request intake synthetic write¶
Etapa 17.5.185 - Prod request intake synthetic write¶
- Estado:
PDF-013B_PROD_REQUEST_INTAKE_SYNTHETIC_WRITE_GO. - Alcance: SQL write controlado en VPS/prod solo sobre los 4 objetos
requests/outbox, usando datos sinteticos con prefijo
PDF-013B:. - Resultado esperado:
1requestPENDING_SGC_REVIEW,1audit,1notificationREADY_BLOCKEDconsend_blocked_by_default=true,1event log y retry idempotente sin duplicados. - Backup: pre-PDF-013B en
/opt/openclawai/backups/PDF-013B/business_observer_four_tables_pre_pdf_013b_20260625T170157Z.dump. - Snapshot proveedor:
PENDING_SNAPSHOT_NOT_PROVIDER_VERIFIABLE, mitigado por backup pre-write y alcance sintetico/acotado. - No se hace: no emails reales, no SMTP para envio, no datos reales, no SGC, no WooCommerce API, no worker, no runtime automatico, no scheduler, no cron y no pipelines.
- Proximo paso: gate de intake real controlado desde formulario/plugin, manteniendo outbox bloqueada y revision manual.
Business Observer - PDF-013A MVP request intake production path¶
Etapa 17.5.184 - MVP request intake production path¶
- Estado:
PDF-013A_MVP_REQUEST_INTAKE_PRODUCTION_PATH_CANDIDATE. - Alcance: definir contrato productivo minimo para solicitud de alta ecommerce,
audit, notification outbox
READY_BLOCKEDy event log, sin SQL write prod. - Camino objetivo:
formulario/plugin futuro -> request prod -> audit prod -> notification outbox prod READY_BLOCKED -> event log prod -> worker manual posterior. - Idempotencia: key candidate
REQUEST_INTAKE:<normalized_cuit>:<email_hash>:<date_bucket>y seed sinteticoPDF-013A:REQUEST_INTAKE:TEST001. - Rate-limit: maximo
1request activa por idempotency key, maximo1outbox activa por request, recipient en allowlist y bloqueo si ya existe request pendiente. - No se hace: no emails reales, no SMTP para envio, no SQL write prod, no SGC, no WooCommerce API, no datos reales, no worker, no runtime, no scheduler, no cron y no pipelines.
- Proximo paso:
PDF-013Bpreflight read-only del endpoint/form/plugin candidate y constraints productivos antes de autorizar cualquier write.
Business Observer - PDF-012P prod outbox guarded single send¶
Etapa 17.5.183 - Prod outbox guarded single send¶
- Estado:
PDF-012P_PROD_OUTBOX_GUARDED_SINGLE_SEND_GO. - Alcance: worker manual controlado en VPS/prod sobre la notification sintetica de PDF-012O, con guard global antes de SMTP y retry.
- Target:
openclaw_business_observer_prod.business_observer, useropenclaw_bo_prod_owner. - Resultado: exactamente
1email real interno afacturacion@ladirecta.com.ar, statusSENT, eventos de aprobacion, intento, exito y retry bloqueado. - Backup: pre-PDF-012P en
/opt/openclawai/backups/PDF-012P/business_observer_four_tables_pre_pdf_012p_20260625T163025Z.dump. - No se hace: no clientes/proveedores/listas, no CC/BCC/adjuntos, no datos reales, no SGC, no WooCommerce API, no runtime automatico, no scheduler, no cron y no pipelines.
- Proximo paso: revisar evidencia sanitizada y decidir el siguiente gate productivo sin activar scheduler.
Business Observer - PDF-012O prod synthetic blocked seed¶
Etapa 17.5.182 - Prod synthetic blocked seed¶
- Estado:
PDF-012O_PROD_SYNTHETIC_BLOCKED_SEED_GO. - Alcance: SQL write controlado en VPS/prod solo sobre los 4 objetos
requests/outbox, usando datos sinteticos con prefijo
PDF-012O:. - Resultado:
1requestPENDING_SGC_REVIEW,1audit,1notificationREADY_BLOCKEDconsend_blocked_by_default=truey1event log. - Idempotencia: segunda corrida no creo duplicados; conteos PDF-012O quedaron
1 / 1 / 1 / 1. - Backup: pre-seed en
/opt/openclawai/backups/PDF-012O/business_observer_four_tables_pre_pdf_012o_20260625T161835Z.dump. - Snapshot proveedor:
PENDING_SNAPSHOT_NOT_PROVIDER_VERIFIABLE, mitigado por backup pre-seed y alcance sintetico/acotado. - No se hizo: no emails reales, no SMTP para envio, no datos reales, no SGC, no WooCommerce API, no worker, no runtime automatico, no scheduler, no cron y no pipelines.
- Proximo paso: gate manual de revision/decision y cleanup candidate antes de cualquier piloto con datos reales.
Business Observer - PDF-012N prod post-DDL readiness¶
Etapa 17.5.181 - Prod post-DDL readiness¶
- Estado:
PROD_POST_DDL_READINESS_GO. - Alcance: verificar que VPS/prod quedo listo despues del DDL PDF-012M: objetos, owners, grants, RLS, constraints, indices, conteos cero, secrets, backup y runtime apagado.
- Target:
openclaw_business_observer_prod.business_observer, useropenclaw_bo_prod_owner. - Backup esperado: schema-only PDF-012M
/opt/openclawai/backups/PDF-012M/business_observer_schema_only_pre_pdf_012m_20260625T154305Z.dump, tamano75883, SHA256 registrado en PDF-012M. - Snapshot proveedor:
PENDING_SNAPSHOT_NOT_PROVIDER_VERIFIABLE. - Resultado:
PROD_POST_DDL_READINESS_GO. - No se hace: no emails reales, no SMTP para envio, no SQL write ni DDL en VPS/prod, no inserts de datos reales, no SGC, no WooCommerce API, no worker, no runtime automatico, no scheduler, no cron y no pipelines.
- Proximo paso: gate separado de seed sintetico productivo bloqueado/manual.
Business Observer - PDF-012M prod DDL promotion¶
Etapa 17.5.180 - Prod DDL promotion requests/outbox¶
- Estado:
PDF-012M_PROD_DDL_PROMOTION_GO. - Alcance: VPS/prod
openclaw_business_observer_prod, schemabusiness_observer, owneropenclaw_bo_prod_owner. - Resultado: creados los cuatro objetos requests/outbox faltantes detectados por PDF-012L, con owner prod, grants prod, constraints, indices y RLS.
- Backup:
pg_dump -Fc -s -n business_observerremoto en/opt/openclawai/backups/PDF-012M/. - Snapshot proveedor: no verificable desde Codex; queda
PENDING_SNAPSHOT_NOT_PROVIDER_VERIFIABLE, mitigado por backup schema-only y rollback candidate. - No se hizo: no emails reales, no SMTP para envio, no inserts de datos reales, no SGC, no WooCommerce API, no worker, no runtime automatico, no scheduler, no cron y no pipelines.
- Proximo paso: publicar documentacion PDF-012M con autorizacion posterior y preparar gate runtime prod sin scheduler.
Business Observer - PDF-012L promotion preflight VPS/prod¶
Etapa 17.5.179 - Promotion preflight VPS/prod¶
- Estado:
OBJECT_DRIFT_DETECTED_NO_GO. - Alcance: lectura local/dev y VPS/prod, verificacion de secrets sin valores, comparacion de objetos requests/outbox, roles, grants, RLS, constraints, indexes y conteos sanitizados.
- Resultado local/dev: los 4 objetos requeridos existen en
gestion_de_negocios_core.business_observercon RLS habilitado. - Resultado VPS/prod: schema
business_observer, owneropenclaw_bo_prod_ownery secrets esperados presentes; objetos requests/outbox ausentes. - Blockers:
OBJECT_DRIFT_DETECTED,PENDING_BACKUP_STRATEGYyPROD_WRITE_NOT_AUTHORIZED. - Proximo paso: gate separado para DDL candidate/promocion con snapshot VPS, backup PostgreSQL y autorizacion explicita de writes productivos.
- No se hizo: no emails reales, no SMTP para envio, no SQL write ni DDL en VPS/prod, no SGC, no WooCommerce API, no datos reales y no runtime/sync/scheduler/cron/pipelines.
Business Observer - PDF-012K worker guarded single send local dev¶
Etapa 17.5.178 - Worker guarded single send local dev¶
- Estado:
PDF-012K_WORKER_GUARDED_SINGLE_SEND_LOCAL_DEV_PASS. - Alcance: PostgreSQL local/dev
gestion_de_negocios_core, schemabusiness_observer, SMTP real interno unico, sin WooCommerce y sin SGC write. - Resultado: worker manual real con guard global integrado envio exactamente
1 email real interno a
facturacion@ladirecta.com.ar. - Evidencia local/dev: notification
PDF-012K:BILLING_CUSTOMER_REQUEST:TEST001, eventosSEND_APPROVED_MANUAL,SEND_ATTEMPTED,SEND_SUCCEEDEDy retryALREADY_SENT_GLOBAL_BLOCKEDantes de SMTP. - Produccion: no se toco VPS/prod con datos y no se activo scheduler, cron, runtime automatico, sync ni pipelines.
- Proximo paso: gate GO/NO-GO separado para promocion productiva controlada del worker guarded.
Business Observer - PDF-012J worker global guard integration¶
Etapa 17.5.177 - Worker global guard integration¶
- Estado:
PDF-012J_WORKER_GLOBAL_GUARD_INTEGRATION_PASS. - Alcance: PostgreSQL local/dev
gestion_de_negocios_core, schemabusiness_observer, sin SMTP real, sin WooCommerce y sin SGC write. - Resultado: guard global integrado antes de fallback y antes de SMTP real en el worker real/manual.
- Evidencia local/dev: casos A/B/C/D con
GLOBAL_GUARD_EVALUATED,ALREADY_SENT_GLOBAL_BLOCKED,FALLBACK_BLOCKED_BEFORE_SMTPySEND_ELIGIBLE_BUT_BLOCKED. - Produccion: sigue bloqueada para envio real hasta nuevo GO.
- Proximo paso: gate separado de revision final del worker con guard global aplicado al flujo real/manual completo.
Business Observer - PDF-012I outbox worker idempotency hardening¶
Etapa 17.5.176 - Outbox worker idempotency hardening¶
- Estado:
PDF-012I_IDEMPOTENCY_HARDENING_DRY_RUN_PASS. - Alcance: PostgreSQL local/dev
gestion_de_negocios_core, schemabusiness_observer, sin SMTP real, sin WooCommerce y sin SGC write. - Resultado: guard global antes de SMTP y antes de fallback. Primary dry-run
y retry dry-run bloqueados como
ALREADY_SENT_GLOBAL_BLOCKED. - Evidencia base:
PDF-012H_NO_GO_CONFIRMEDcon2emails reales internos previos y produccion bloqueada. - Cleanup/reseed: se preservaron eventos historicos y se creo/reuso
PDF-012I:BILLING_CUSTOMER_REQUEST:TEST001enREADY_BLOCKED. - No se hizo: no emails reales nuevos, no conexion SMTP para envio, no secrets impresos, no SGC write, no WooCommerce API, no datos reales, no VPS/prod con datos, no runtime/sync/scheduler/cron/pipelines.
- Proximo paso: integrar el guard global en el worker real antes de cualquier nuevo SMTP real o promocion a produccion.
Business Observer - PDF-012H outbox worker manual controlled send local dev¶
Etapa 17.5.175 - Outbox worker manual controlled send local dev¶
- Estado:
NO-GO_VALIDATION_FAILED. - Alcance: worker manual controlado real local/dev, PostgreSQL
gestion_de_negocios_core, schemabusiness_observer, SMTP real, destinatario interno permitidofacturacion@ladirecta.com.ar. - Resultado: se enviaron
2emails reales internos en lugar de1. Fueron registradas comoSENTlas notificationsPDF-012C:BILLING_CUSTOMER_REQUEST:TEST001(id=1) yPDF-012H:BILLING_CUSTOMER_REQUEST:TEST001(id=7). - Causa: fallback creado durante reintento defectuoso despues de que la
notification original ya estaba
SENT. - Evidencia preservada: validador actualizado para confirmar
PDF-012H_NO_GO_CONFIRMED,global_success_event_count=2,expected_single_send=1yproduction_blocked=true. - Proximo paso:
PDF-012Ipara hardening de idempotencia global, limpieza local/dev autorizada y prueba sin SMTP antes de nuevo envio real. - No se hizo: no clientes, no proveedores, no listas, no CC/BCC/adjuntos, no secrets impresos, no SGC write, no WooCommerce API, no datos reales, no VPS/prod con datos, no runtime/sync/scheduler/cron/pipelines.
Business Observer - PDF-012G outbox worker readiness¶
Etapa 17.5.174 - Outbox worker readiness¶
- Estado: preparado al
2026-06-25comoPDF-012G OUTBOX WORKER READINESS / WORKER MANUAL CONTROLADO / NO SCHEDULER. - Objetivo formal: preparar readiness operativo del worker de outbox para produccion controlada sin activarlo automaticamente.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-012G-OUTBOX-WORKER-READINESS.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-012G/ - Estado previo:
PDF-012Fpublicado, outbox con envio real unico y reintento idempotente bloqueado. - Resultado:
contrato de worker manual/controlado, allowlist interna, rate-limit,
idempotencia, error handling, retry policy y observabilidad minima
documentados; snapshot sanitizado generado en
tmp/pdf-012g/. - Restricciones:
sin email real, sin
--confirm-send, sin SMTP send, sin scheduler, sin cron, sin runtime automatico, sin pipeline, sin WooCommerce API, sinSGCwrite, sin datos reales, sin secrets impresos y sin VPS/prod con datos. - SQL write local/dev: no ejecutado; readiness read-only.
- Proximo paso hacia produccion:
gate separado para aprobar
SEND_APPROVED_MANUALy ejecutar una operacion manual unica del worker real, todavia sin scheduler ni cron.
Business Observer - PDF-012F outbox single send real local dev¶
Etapa 17.5.173 - Outbox single send real local dev¶
- Estado: ejecutado al
2026-06-25comoPDF-012F OUTBOX SINGLE SEND REAL LOCAL DEV / SENT / SINGLE SEND ONLY. - Objetivo formal: enviar exactamente un email real desde la outbox local/dev, usando una notification sintetica elegible y evidencia auditada.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-012F-OUTBOX-SINGLE-SEND-REAL-LOCAL-DEV.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-012F/ - Estado previo:
requiere
PDF-012D:BILLING_CUSTOMER_REQUEST:TEST001enREADY_BLOCKED,send_blocked_by_default=true,PDF-012E SEND_ELIGIBLE_BUT_BLOCKED,PDF-011P SECRET_READYyPDF-011Q SMTP_CONNECTION_READY. - Resultado:
envio real unico a
facturacion@ladirecta.com.ar, outboxSENT, eventosSEND_ATTEMPTEDySEND_SUCCEEDED, y reintento idempotenteALREADY_SENT_BLOCKED. - Restricciones:
sin clientes/proveedores/listas, sin CC/BCC/adjuntos, sin datos reales de
clientes, sin secrets/passwords/connection strings impresos, sin
SGCwrite, sin WooCommerce API, sin VPS/prod con datos y sin runtime/sync/scheduler/cron/pipelines. - Proximo paso hacia produccion: disenar readiness de worker real controlado, con allowlist, idempotencia persistente, rate-limit, observabilidad y ejecucion manual antes de cualquier scheduler.
Business Observer - PDF-012E outbox worker dry-run local dev¶
Etapa 17.5.172 - Outbox worker dry-run local dev¶
- Estado: ejecutado al
2026-06-25comoPDF-012E OUTBOX WORKER DRY-RUN LOCAL DEV / GO LOCAL DEV CONTROLADO. - Objetivo formal:
leer una notification outbox
READY_BLOCKED, evaluar elegibilidad y registrar decision dry-run segura sin enviar email real. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-012E-OUTBOX-WORKER-DRY-RUN-LOCAL-DEV.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-012E/ - Estado previo:
requiere
PDF-012D:BILLING_CUSTOMER_REQUEST:TEST001enREADY_BLOCKEDconsend_blocked_by_default=true. - Resultado:
decision
SEND_ELIGIBLE_BUT_BLOCKEDregistrada enbusiness_observer.ecommerce_notification_event_logconevent_type=SEND_BLOCKEDyevent_payload_sanitized.semantic_event=WORKER_DRY_RUN_EVALUATED. - Restricciones:
sin email real, sin
--confirm-send, sinMAIL FROM/RCPT TO/DATA, sin SMTP de envio, sin WooCommerce API, sinSGCwrite, sin datos reales, sin secrets impresos y sin runtime/sync/scheduler/cron/pipelines. - Proximo paso hacia produccion:
crear
PDF-012Fpara envio real controlado desde outbox con autorizacion explicita, single-send, idempotencia persistente y evidencia sanitizada.
Business Observer - PDF-012B billing notification real single send¶
Etapa 17.5.170 - Billing notification real single send¶
- Estado: ejecutado al
2026-06-24comoPDF-012B BILLING NOTIFICATION REAL SINGLE SEND / SENT_SINGLE_EMAIL / SINGLE SEND ONLY. - Objetivo formal: ejecutar exactamente un envio real SMTP autorizado a facturacion usando el MVP PDF-012A y evidencia sanitizada.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-012B-BILLING-NOTIFICATION-REAL-SINGLE-SEND.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-012B/ - Estado previo:
requiere
PDF-012Apublicado y desplegado,PDF-011P SECRET_READY,PDF-011P SMTP_CONFIG_PRESENTyPDF-011Q SMTP_CONNECTION_READY. - Destinatario permitido:
facturacion@ladirecta.com.ar. - Resultado:
envio real unico con
email_sent=true,single_send=true,recipient_allowed=truey evidencia sanitizada entmp/pdf-012b/. - Restricciones:
sin clientes/proveedores/listas, sin CC/BCC/adjuntos, sin datos reales de
clientes, sin secrets/passwords/connection strings, sin SQL write, sin
SGCwrite, sin WooCommerce API y sin runtime/sync/scheduler/cron/pipelines. - Proximo paso hacia MVP productivo: disenar el gate de alta ecommerce interna con idempotencia, bitacora, templates versionados, rate-limit y aprobacion de destinatarios antes de conectar solicitudes reales.
Business Observer - PDF-012A MVP billing notification¶
Etapa 17.5.169 - MVP billing notification¶
- Estado: documentado al
2026-06-24comoPDF-012A MVP BILLING NOTIFICATION / CANDIDATE PREPARED / BLOQUEADO POR DEFECTO / NO SENT. - Objetivo formal: preparar el primer MVP funcional para convertir una solicitud de alta ecommerce candidate en notificacion interna controlada a facturacion.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-012A-MVP-BILLING-NOTIFICATION.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-012A/ - Estado previo:
requiere
PDF-011P SECRET_READY,PDF-011Q SMTP_CONNECTION_READYyPDF-011T SENT_SINGLE_EMAIL. - Destinatario permitido:
facturacion@ladirecta.com.ar. - Resultado:
payload candidate sanitizado en
tmp/pdf-012a/y script de envio bloqueado por defecto, con habilitacion solo mediante--confirm-sendy autorizacion final separada. - Restricciones:
sin email real en esta fase, sin clientes/proveedores/listas, sin
CC/BCC/adjuntos, sin datos reales, sin secrets/passwords/connection strings,
sin SQL write, sin
SGCwrite, sin WooCommerce API y sin runtime/sync/scheduler/cron/pipelines. - Proximo paso recomendado:
crear
PDF-012Bpara un unico envio real controlado a facturacion, solo con autorizacion explicita y evidencia sanitizada.
Business Observer - PDF-011T SMTP single send real controlled test¶
Etapa 17.5.168 - SMTP single send real controlled test¶
- Estado: ejecutado al
2026-06-24comoPDF-011T REAL CONTROLLED TEST / SENT_SINGLE_EMAIL / SINGLE SEND ONLY. - Objetivo formal: ejecutar un unico envio real SMTP autorizado a una cuenta propia/controlada, con evidencia sanitizada y sin abrir ningun flujo productivo.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011T-SMTP-SINGLE-SEND-REAL-CONTROLLED-TEST.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011T/ - Estado previo:
requiere
PDF-011Spublicado,PDF-011Rbloqueado por defecto,PDF-011Q SMTP_CONNECTION_READYyPDF-011P SECRET_READY. - Destinatario permitido:
operaciones@ladirecta.com.ar. - Resultado:
envio real unico con
email_sent=true,single_send=true,recipient_allowed=truey evidencia sanitizada entmp/pdf-011t/. - Restricciones:
sin clientes/proveedores/listas, sin CC/BCC/adjuntos, sin datos reales de
clientes, sin secrets/passwords/connection strings, sin SQL write, sin
SGCwrite, sin WooCommerce API y sin runtime/sync/scheduler/cron/pipelines. - Proximo paso recomendado: crear un gate separado de notificaciones transaccionales internas para alta ecommerce, con templates, auditoria, idempotencia, rate limit y bloqueo por defecto antes de cualquier envio a destinatarios externos.
Business Observer - PDF-011S SMTP single send final review¶
Etapa 17.5.167 - SMTP single send final review¶
- Estado: documentado al
2026-06-24comoPDF-011S FINAL REVIEW / SIN EMAIL REAL / BLOQUEADO POR DEFECTO. - Objetivo formal:
revisar el gate
PDF-011Rantes de cualquier envio real, confirmando destinatario, asunto, cuerpo, limites, evidencia esperada, bloqueo por defecto y autorizacion requerida. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011S-SMTP-SINGLE-SEND-FINAL-REVIEW.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011S/ - Estado previo:
requiere
PDF-011Rpublicado. - Destinatario permitido:
operaciones@ladirecta.com.ar. - Resultado:
revision final documental y validador local, sin envio real, sin
--confirm-send, conPDF-011Rbloqueado por defecto. - Restricciones:
sin CC/BCC/adjuntos/listas, sin clientes reales, sin proveedores reales, sin
datos reales de solicitudes, sin secrets/passwords/connection strings, sin
MAIL FROM/RCPT TO/DATA, sin SQL write, sinSGCwrite, sin WooCommerce API y sin runtime/sync/scheduler/cron/pipelines. - Proximo paso recomendado: crear un gate posterior separado solo si existe autorizacion manual explicita para ejecutar un unico envio real con evidencia sanitizada.
Business Observer - PDF-011R La Directa SMTP single send controlled test¶
Etapa 17.5.166 - SMTP single send controlled test¶
- Estado: documentado al
2026-06-24comoPDF-011R SINGLE SEND CONTROLLED TEST / BLOQUEADO POR DEFECTO / NO SENT. - Objetivo formal: preparar un gate para un unico envio SMTP real de prueba usando La Directa, sin ejecutar el envio en esta fase.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011R-LADIRECTA-SMTP-SINGLE-SEND-CONTROLLED-TEST.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011R/ - Estado previo:
requiere
PDF-011Q = SMTP_CONNECTION_READY. - Destinatario permitido:
operaciones@ladirecta.com.ar. - Resultado:
payload candidate sanitizado en
tmp/pdf-011r/y script de envio bloqueado por defecto, con habilitacion solo mediante--confirm-sendy autorizacion final separada. - Restricciones:
sin email real en esta fase, sin emails masivos, sin clientes reales, sin
proveedores reales, sin listas, sin CC/BCC, sin adjuntos, sin SQL write, sin
PostgreSQL write,
SGCread-only, sin WooCommerce API, sin secrets impresos, sin VPS/prod con datos y sin runtime, sync, scheduler, cron ni pipelines. - Proximo gate recomendado: revisar payload y pedir autorizacion explicita final antes de ejecutar el single send real.
Business Observer - PDF-011Q La Directa SMTP connection preflight¶
Etapa 17.5.165 - SMTP connection preflight¶
- Estado: documentado al
2026-06-24comoPDF-011Q CONNECTION PREFLIGHT / SIN EMAIL REAL / SIN COMANDOS SMTP DE ENVIO. - Objetivo formal: probar conexion tecnica SMTP Hostinger de La Directa desde local/dev, negociando SSL/TLS o STARTTLS, autenticando y cerrando conexion sin enviar emails reales.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011Q-LADIRECTA-SMTP-CONNECTION-PREFLIGHT.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011Q/ - Estado previo:
requiere
PDF-011P = SECRET_READY. - Ruta secret:
C:\APV\openclawai\.venv-portal\secrets\ladirecta-hostinger-email.env. - Resultado:
output sanitizado en
tmp/pdf-011q/con status tecnicoSMTP_CONNECTION_READY,SMTP_AUTH_FAILED,SMTP_TLS_FAILED,SMTP_CONNECT_FAILED,PDF_011P_NOT_SECRET_READYoMISSING_SMTP_CONFIG. - Restricciones:
sin email real, sin
MAIL FROM, sinRCPT TO, sinDATA, sinsendmail, sinsend_message, sin SQL write, sin PostgreSQL write,SGCread-only, sin WooCommerce API, sin secrets impresos, sin VPS/prod con datos y sin runtime, sync, scheduler, cron ni pipelines. - Proximo gate recomendado: si la conexion queda lista, pedir autorizacion explicita separada para cualquier envio real controlado.
Business Observer - PDF-011P La Directa SMTP secret ready check¶
Etapa 17.5.164 - SMTP secret ready check¶
- Estado: documentado al
2026-06-24comoPDF-011P READY CHECK LOCAL / PENDING_SECRET / PENDING_SMTP_CONFIG. - Objetivo formal: verificar si el secret privado SMTP Hostinger de La Directa ya fue completado localmente, sin imprimir valores, sin conectarse a SMTP y sin enviar emails reales.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011P-LADIRECTA-SMTP-SECRET-READY-CHECK.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011P/ - Ruta secret:
C:\APV\openclawai\.venv-portal\secrets\ladirecta-hostinger-email.env. - Resultado:
secret real ausente, ruta ignorada por Git y output sanitizado en
tmp/pdf-011p/. - SMTP:
PENDING_SMTP_CONFIG; queda pendiente completar el secret con datos reales confirmados desde Hostinger. - Restricciones:
sin email real, sin conexion SMTP real, sin SQL write, sin PostgreSQL write,
sin SGC write, sin WooCommerce API, sin
.env, sin secrets impresos, sin VPS/prod con datos y sin runtime, sync, scheduler, cron ni pipelines. - Proximo gate recomendado:
completar el secret privado local y revalidar
SECRET_READY; despues pedir autorizacion explicita para cualquier prueba SMTP controlada.
Business Observer - PDF-011O La Directa SMTP secret preflight¶
Etapa 17.5.163 - SMTP secret preflight¶
- Estado: documentado al
2026-06-24comoPDF-011O PREFLIGHT LOCAL / PENDING_SECRET / PENDING_SMTP_CONFIG. - Objetivo formal: validar la existencia y forma minima del secret SMTP Hostinger de La Directa sin imprimir valores, sin conectarse a SMTP y sin enviar emails reales.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011O-LADIRECTA-SMTP-SECRET-PREFLIGHT.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011O/ - Ruta secret:
C:\APV\openclawai\.venv-portal\secrets\ladirecta-hostinger-email.env. - Resultado:
secret real ausente, template local ignorado por Git creado sin password real
y output sanitizado en
tmp/pdf-011o/. - SMTP:
PENDING_SMTP_CONFIG; host/port/secure quedan pendientes hasta confirmacion desde Hostinger. - Restricciones:
sin email real, sin conexion SMTP real, sin SQL write, sin PostgreSQL write,
sin SGC write, sin WooCommerce API, sin
.env, sin secrets impresos, sin VPS/prod con datos y sin runtime, sync, scheduler, cron ni pipelines. - Proximo gate recomendado:
cargar valores reales confirmados en el secret privado local y revalidar
SECRET_READYantes de cualquier envio controlado autorizado.
Business Observer - PDF-011N La Directa billing notification secrets dry-run¶
Etapa 17.5.162 - Billing notification secrets dry-run¶
- Estado: documentado al
2026-06-24comoPDF-011N GO DRY-RUN DOCUMENTAL / PENDING_SECRET / PENDING_SMTP_CONFIG. - Objetivo formal: revisar secrets/email de La Directa sin imprimir valores y preparar un email candidate para facturacion por solicitudes de alta ecommerce.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011N-LADIRECTA-BILLING-NOTIFICATION-SECRETS-DRY-RUN.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011N/ - Resultado:
el secret esperado
C:\APV\openclawai.venv-portal\secrets\ladirecta-hostinger-email.envesta ausente, quedaPENDING_SECRET; SMTP quedaPENDING_SMTP_CONFIGporque no hay host/port confirmados; se genera email candidate afacturacion@ladirecta.com.aren modoDRY_RUN_NOT_SENT. - Payload:
datos sinteticos/sanitizados con domicilio fiscal, domicilio pedido/envio,
rubro, comentario y estado
PENDING_SGC_REVIEW. - Restricciones:
sin email real, sin conexion SMTP real, sin SQL write, sin PostgreSQL write,
sin SGC write, sin WooCommerce API, sin
.env, sin secrets impresos, sin VPS/prod con datos y sin runtime, sync, scheduler, cron ni pipelines. - Proximo gate recomendado: cargar secret privado de forma segura y confirmar host/port SMTP Hostinger para un preflight separado sin envio o un envio controlado autorizado.
Business Observer - PDF-011M SGC read-only customer request review¶
Etapa 17.5.161 - SGC read-only customer request review¶
- Estado: documentado al
2026-06-24comoPDF-011M GO DOCUMENTAL / SGC READ-ONLY. - Objetivo formal:
ajustar el modelo de revision de solicitudes ecommerce y dejar explicito que
SGCes autoridad comercial read-only para OpenClaw, WooCommerce, el plugin La Directa y cualquier flujo automatizado ecommerce. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011M-SGC-READ-ONLY-CUSTOMER-REQUEST-REVIEW.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011M/ - Resultado:
contactos nuevos quedan como solicitud de alta/cambio para revision humana;
facturacion revisa; una persona autorizada realiza el alta manual en
SGCsi corresponde; OpenClaw detecta el alta leyendoSGCy recien entonces vinculacodigo_cliente/sgc_customer_idy habilita avance hacia activacion ecommerce. - Estados candidate:
PENDING_SGC_REVIEW,NEEDS_MORE_INFO,APPROVED_FOR_MANUAL_SGC_ENTRY,REJECTED,SGC_MANUALLY_CREATED_PENDING_SYNC,SGC_SYNCEDyACTIVATION_READY. - Restricciones:
sin escritura automatica sobre
SGC, sin SQL write contraSGC, sin API write haciaSGC, sin automatizar modificacion de clientesSGC, sin WooCommerce write de activacion final y sin runtime productivo. - Proximo gate recomendado:
modelar la tarea/email de facturacion y la deteccion read-only posterior
desde
SGC, manteniendo toda modificacion real enSGCfuera del runtime.
Business Observer - PDF-011L Customer request writer local dev¶
Etapa 17.5.160 - Customer request writer local dev¶
- Estado: ejecutado al
2026-06-24comoPDF-011L GO LOCAL DEV / SQL WRITE CONTROLADO. - Objetivo formal: insertar una solicitud sintetica de alta ecommerce en PostgreSQL local/dev y validar auditoria asociada.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011L-CUSTOMER-REQUEST-WRITER-LOCAL-DEV.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011L/ - Resultado:
1request sintetica con seedPDF-011Lenbusiness_observer.ecommerce_customer_requests, estadoPENDING_SGC_REVIEW, emailtest-pdf011l@example.invalid, y1auditoriaREQUEST_CREATED / OKenbusiness_observer.ecommerce_customer_request_audit. - Cleanup:
cleanup candidate disponible con
--confirm; no ejecutado. - Restricciones:
sin emails reales, sin WooCommerce API, sin datos reales, sin
.env, sin secrets impresos, sin VPS/prod con datos, sin runtime, sync, scheduler, cron ni pipelines. - Proximo gate recomendado:
PDF-011Mpara dejar explicito el modeloSGCread-only y la revision humana/manual de solicitudesPENDING_SGC_REVIEW.
Business Observer - PDF-011K Customer activation writer contract¶
Etapa 17.5.159 - Customer activation writer contract¶
- Estado: documentado al
2026-06-24comoPDF-011K GO WRITER CONTRACT LOCAL DEV / SIN SQL WRITE. - Objetivo formal: preparar contrato, payloads candidate, email candidate y cleanup candidate para un writer controlado futuro de solicitudes de alta ecommerce.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011K-CUSTOMER-ACTIVATION-WRITER-CONTRACT.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011K/ - Resultado:
payload candidate para
business_observer.ecommerce_customer_requests, audit candidate parabusiness_observer.ecommerce_customer_request_audit, email candidate afacturacion@ladirecta.com.aren modoDRY_RUN_NOT_SENTy cleanup candidate documentado para un gate futuro. - Casos:
contacto nuevo sin codigo SGC
PENDING_SGC_REVIEW, cliente existente SGCACTIVATION_READY_CANDIDATE, codigo/CUIT invalidoVALIDATION_BLOCKEDy email duplicadoEMAIL_ALREADY_USED_CANDIDATE. - Restricciones:
sin SQL write, sin inserts, sin updates, sin deletes, sin emails reales, sin
WooCommerce API, sin creacion de usuarios, sin
.env, sin secrets impresos, sin datos, sin VPS/prod con datos, sin runtime, sync, scheduler, cron ni pipelines. - Proximo gate recomendado: writer local/dev controlado con autorizacion explicita para SQL write, transaccion auditada, cleanup probado y post-checks read-only.
Business Observer - PDF-011J Customer activation dry-run¶
Etapa 17.5.158 - Customer activation dry-run¶
- Estado: ejecutado al
2026-06-24comoPDF-011J GO DRY-RUN LOCAL DEV / SIN SQL WRITE. - Objetivo formal: simular el flujo de activacion/onboarding ecommerce para clientes existentes SGC y contactos nuevos sin codigo SGC, sin persistir datos, sin WooCommerce y sin emails reales.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011J-CUSTOMER-ACTIVATION-DRY-RUN.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011J/ - Resultado:
transaccion
READ ONLYsobregestion_de_negocios_core, tablas de activacion confirmadas, payloads candidate sanitizados y email candidate afacturacion@ladirecta.com.aren modoDRY_RUN_NOT_SENT. - Casos:
cliente existente SGC
ACTIVATION_READY, contacto nuevo sin codigo SGCPENDING_SGC_REVIEW, codigo/CUIT invalidoVALIDATION_BLOCKEDy email ya usadoEMAIL_ALREADY_USED_CANDIDATE. - Restricciones:
sin SQL write, sin datos, sin emails reales, sin WooCommerce API, sin
creacion de usuarios, sin
.env, sin secrets impresos, sin VPS/prod con datos, sin runtime, sync, scheduler, cron ni pipelines. - Proximo gate recomendado:
PDF-011Kpara validadores runtime locales y eventual writer controlado separado.
Business Observer - PDF-011I Customer activation local dev DDL execution¶
Etapa 17.5.157 - Customer activation local dev DDL execution¶
- Estado: ejecutado al
2026-06-24comoPDF-011I GO LOCAL DEV / SQL WRITE CONTROLADO. - Objetivo formal:
ejecutar en PostgreSQL local/dev el DDL candidate
PDF-011Gpara crear las tablas reales de activacion de clientes ecommerce y solicitudes. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011I-CUSTOMER-ACTIVATION-LOCAL-DEV-DDL-EXECUTION.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011I/ - Resultado:
creadas
business_observer.clientes_ecommerce,business_observer.ecommerce_customer_requests,business_observer.ecommerce_customer_request_auditybusiness_observer.customer_activation_audit; owneropenclaw_bo_admin, RLS habilitado, grants esperados, indices y constraints validados. - Governance post-DDL:
PDF-011I = GO.PDF-011H = preflight historico; su validacion viva falla despues del DDL porque los objetos ya existen. Ese resultado es esperado, no representa drift negativo y no debe usarse como gate post-DDL. La evidencia valida post-DDL esPDF-011I. - Backup:
backup schema-only pre-DDL fuera de Git en
C:\APV\backups\openclawai\PDF-011I\business_observer_schema_pre_pdf011i_20260624-113325.dumpcon28676bytes. - Restricciones:
sin VPS/prod SQL, sin WooCommerce API, sin emails reales, sin
.env, sin secrets impresos, sin datos de negocio, sin runtime, sync, scheduler, cron ni pipelines. - Proximo gate recomendado:
publicar
PDF-011Iy preparar dry-run local de activacion/onboarding sin WooCommerce write ni emails reales.
Business Observer - PDF-011H Customer activation DDL preflight¶
Etapa 17.5.156 - Customer activation DDL preflight¶
- Estado: ejecutado al
2026-06-24comoPDF-011H GO LOCAL DEV PREFLIGHT / SIN SQL WRITE. - Objetivo formal:
validar en PostgreSQL local/dev, sin DDL ni writes, si el DDL candidate
PDF-011Gpuede avanzar a un gate posterior de ejecucion controlada. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011H-CUSTOMER-ACTIVATION-DDL-PREFLIGHT.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011H/ - Resultado:
DB
gestion_de_negocios_core, usuarioopenclaw_bo_admin, schemabusiness_observerowned poropenclaw_bo_admin, permisosCREATEsobre DB/schema y rolesopenclaw_bo_*presentes. Los cuatro objetosPDF-011Gestan ausentes y no hay drift. - Backup:
existe backup schema-only valido de
PDF-011Acon13895bytes; antes de ejecucion DDL futura corresponde reconfirmar si se exige backup nuevo. - Restricciones:
sin SQL write, sin DDL, sin creacion de tablas, sin datos, sin WooCommerce
API, sin emails reales, sin
.env, sin secrets impresos, sin VPS/prod con datos, sin runtime, sync, scheduler, cron ni pipelines. - Proximo gate recomendado: ejecucion DDL local/dev en gate separado, con autorizacion explicita, backup vigente confirmado, transaccion controlada y post-checks.
Business Observer - PDF-011G Customer activation DDL candidate¶
Etapa 17.5.155 - Customer activation DDL candidate¶
- Estado: documentado al
2026-06-24comoPDF-011G CANDIDATE ONLY / SIN SQL WRITE. - Objetivo formal: disenar el DDL candidate para clientes ecommerce derivados desde SGC, solicitudes de alta de contactos nuevos, auditoria de solicitudes, auditoria de activaciones y domicilios fiscal/pedido.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011G-CUSTOMER-ACTIVATION-DDL-CANDIDATE.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011G/ - Resultado:
DDL candidate y rollback candidate para cuatro tablas en
business_observer, con unique por tenant + codigo_cliente, unique por tenant + cuit_normalizado activo, unique email_real activo, checks de estados, normalizacion y metadata sanitizada. - Restricciones:
sin SQL write, sin creacion de tablas, sin PostgreSQL write, sin emails
reales, sin WooCommerce API, sin
.env, sin secrets impresos, sin datos, sin VPS/prod con datos, sin runtime, sync, scheduler, cron ni pipelines. - Proximo gate recomendado: preflight DDL local/dev read-only con backup/snapshot aprobado y revision de owners/grants antes de autorizar cualquier SQL write.
Business Observer - PDF-011F La Directa customer activation request model¶
Etapa 17.5.154 - La Directa customer activation request model¶
- Estado: documentado al
2026-06-24comoPDF-011F CONTRACT READY / SIN SQL WRITE. - Objetivo formal: definir el contrato de onboarding B2B para cliente existente SGC y contacto nuevo sin codigo SGC antes de implementar runtime, SQL writes o WooCommerce.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011F-LADIRECTA-CUSTOMER-ACTIVATION-AND-NEW-CUSTOMER-REQUEST-MODEL.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011F/ - Resultado:
modelo de activacion con
codigo_cliente/CUIT, modelo de solicitud nuevaPENDING_SGC_REVIEW, email candidate afacturacion@ladirecta.com.ar, campos domicilio fiscal/pedido, tablas/capas candidate y auditoria. - Restricciones:
sin SQL write, sin emails reales, sin WooCommerce API, sin creacion de
usuarios, sin
.env, sin secrets impresos, sin datos, sin VPS/prod, sin runtime, sync, scheduler, cron ni pipelines. - Proximo gate recomendado: DDL candidate separado para solicitudes/auditoria y validadores normalizados de CUIT, email, telefono y domicilios.
Business Observer - PDF-011E B2B functional read-only validation¶
Etapa 17.5.153 - B2B functional read-only validation¶
- Estado: ejecutado al
2026-06-24comoPDF-011E GO B2B FUNCTIONAL READ-ONLY VALIDATED / LOCAL DEV. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011E-B2B-FUNCTIONAL-READ-ONLY-VALIDATION.md - Paquete local:
infra/business-observer/production/b2b-pricing/PDF-011E/ - Resultado:
gate funcional read-only sobre tablas B2B reales seeded en local/dev:
seed_mappings=2,seed_prices=6,manual_decision_logs=0,effective_l1=3,effective_l5=3,L1 + 2442B2B_PRICE_OK,L5 + 2442B2B_PRICE_OKy SKU sin seed con0filas efectivas /BLOCKED_PRICE_MISSINGcandidate. - Restricciones:
no se ejecuto SQL write, no se tocaron datos, VPS/prod, WooCommerce API,
.env, secrets, runtime, sync, scheduler, cron ni pipelines. - Proximo gate recomendado: disenar integracion runtime read-only del motor B2B contra PostgreSQL local/dev, sin activar WooCommerce ni produccion.
Business Observer - PDF-011D B2B local dev seed execution¶
Etapa 17.5.152 - B2B local dev seed execution¶
- Estado: ejecutado al
2026-06-23comoPDF-011D GO B2B LOCAL DEV SEED EXECUTED / DATOS SINTETICOS MINIMOS. - Objetivo formal:
insertar el seed minimo autorizado de
PDF-011Cen las tablas B2B reales local/dev, con usuarioopenclaw_bo_adminy sin tocar produccion. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011D-B2B-LOCAL-DEV-SEED-EXECUTION.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-011D/ - Resultado:
2mappings sinteticos y6precios sinteticos insertados;0decision logs manuales; vista efectiva coneffective_l1=3yeffective_l5=3. - Restricciones:
sin VPS/prod, sin WooCommerce API, sin
.env, sin secrets, sin datos personales reales, sin runtime, sync, scheduler, cron ni pipelines. - Proximo gate recomendado: validacion funcional read-only del motor B2B contra las tablas locales reales antes de disenar activacion runtime.
Business Observer - PDF-011C B2B local dev seed data plan¶
Etapa 17.5.152 - B2B local dev seed data plan¶
- Estado: preparado al
2026-06-23comoPDF-011C PLAN READY / SEED CANDIDATE ONLY / SIN SQL WRITE. - Objetivo formal:
preparar el proximo gate de seed B2B minimo y controlado sobre las tablas
reales creadas en
PDF-011B, sin cargar datos todavia. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011C-B2B-LOCAL-DEV-SEED-DATA-PLAN.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-011C/ - Resultado:
documenta seed local/dev con clientes sinteticos
L1yL5, SKUs piloto2442,2443,2444, payload JSON/SQL candidate entmp/pdf-011c/y cleanup porsource_hash LIKE 'pdf011c_seed_%'. - Restricciones:
sin SQL write, sin carga de datos, sin WooCommerce API, sin VPS/prod, sin
.env, sin secrets, sin runtime, sync, scheduler, cron ni pipelines. - Proximo paso:
gate separado
PDF-011Dpara ejecutar inserts controlados solo si se autoriza SQL write local/dev y se confirma rollback/cleanup.
Business Observer - PDF-011B B2B local dev DDL execution¶
Etapa 17.5.151 - B2B local dev DDL execution¶
- Estado: ejecutado al
2026-06-23comoPDF-011B GO B2B LOCAL DEV DDL EXECUTED / OBJETOS B2B CREADOS / SIN DATOS. - Objetivo formal:
ejecutar en local/dev el DDL B2B corregido
PDF-010Pcon backup schema-only valido previo y usuarioopenclaw_bo_admin. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011B-B2B-LOCAL-DEV-DDL-EXECUTION.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-011B/ - Resultado:
se crearon las tablas
b2b_customer_mapping,b2b_product_price,b2b_pricing_decision_logy la vistav_b2b_customer_effective_priceenbusiness_observer. - Validacion:
post-checks read-only confirman
24constraints, indices esperados, RLS activo, owneropenclaw_bo_admin, grants paraopenclaw_bo_admin/writer/readery duplicados0. - Decision: no se cargaron datos B2B, no se toco WooCommerce y no se avanzo a produccion.
- Proximo gate recomendado: preparar carga B2B local/dev controlada con datos minimos o snapshot aprobado; para produccion, exigir autorizacion especifica, backup/snapshot y preflight dedicado.
Business Observer - PDF-011A B2B owner backup permissions local dev¶
Etapa 17.5.150 - B2B owner backup permissions local dev¶
- Estado: ejecutado al
2026-06-23comoPDF-011A GO OWNER BACKUP PERMISSIONS / BACKUP VALID / SIN DDL B2B. - Objetivo formal:
usar el owner/admin real local/dev
postgrespara otorgar permisos minimos de backup sobre objetos existentes debusiness_observeraopenclaw_bo_admin. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-011A-B2B-OWNER-BACKUP-PERMISSIONS-LOCAL-DEV.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-011A/ - Resultado:
los GRANTs minimos sobre schema, tablas y secuencias existentes terminaron
en
GRANT;openclaw_bo_admintieneSELECTsobrebusiness_observer.source_003_sales_items. - Backup:
pg_dump -Fc -s -n business_observergenero backup valido de13895bytes fuera de Git enC:\APV\backups\openclawai\PDF-011A\. - Decision: no se ejecuto DDL B2B, no se crearon objetos B2B y no se tocaron datos.
- Proximo gate recomendado:
reintentar
PDF-010P/ DDL B2B local/dev en gate separado usando el backup schema-only valido como precondicion.
Business Observer - PDF-010Z B2B backup permissions local dev¶
Etapa 17.5.149 - B2B backup permissions local dev¶
- Estado: ejecutado al
2026-06-23comoPDF-010Z NO-GO GRANT/BACKUP FAILED / SIN DDL B2B. - Objetivo formal:
aplicar permisos minimos local/dev para permitir backup schema-only valido
de
business_observerantes de reintentarPDF-010P. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010Z-B2B-BACKUP-PERMISSIONS-LOCAL-DEV.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010Z/ - Resultado:
preflight read-only
GOcomoopenclaw_bo_admin, pero el grant de SELECT sobre tablas existentes fallo conpermission denied for table source_003_sales_itemsporque esa tabla pertenece apostgres. - Backup:
pg_dump -Fc -s -n business_observervolvio a fallar y dejo artefacto de0bytes fuera de Git enC:\APV\backups\openclawai\PDF-010Z\. - Decision: por regla del gate, no se ejecuto DDL B2B, no se crearon objetos B2B y no se tocaron datos.
- Proximo gate recomendado:
usar el owner real
postgresdel target local/dev o normalizar ownership en gate separado, conceder SELECT minimo, repetir backup mayor a0bytes y recien despues reintentarPDF-010P.
Business Observer - PDF-010Y B2B backup permissions plan¶
Etapa 17.5.148 - B2B backup permissions plan¶
- Estado: preparado al
2026-06-23comoPDF-010Y PLAN BACKUP PERMISSIONS / SIN DDL / SIN SQL WRITE / SIN PUSH. - Objetivo formal:
resolver documentalmente el bloqueo de backup local/dev observado en
PDF-010Xantes de reintentar el DDL B2B corregidoPDF-010P. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010Y-B2B-BACKUP-PERMISSIONS-PLAN.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010Y/ - Resultado:
se documentan tres opciones: credencial admin/backup real, grants minimos a
openclaw_bo_adminsobre objetos existentes debusiness_observer, o excepcion local/dev con rollback. La recomendacion unica para local/dev esOpcion Bsi governance autoriza SQL admin minimo en gate separado. - Proximo gate recomendado:
autorizar y ejecutar solo el ajuste de permisos aprobado, repetir
pg_dump -Fc -s -n business_observerhasta backup mayor a0bytes y recien despues abrir un gate separado paraPDF-010P.
Business Observer - PDF-010X B2B local dev DDL execution retry¶
Etapa 17.5.147 - B2B local dev DDL execution retry¶
- Estado: ejecutado al
2026-06-23comoPDF-010X NO-GO BACKUP FAILED / SIN DDL B2B. - Objetivo formal:
ejecutar en local/dev el DDL B2B corregido
PDF-010Pdespues de publicar y desplegarPDF-010W, con backup schema-only valido debusiness_observer. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010X-B2B-LOCAL-DEV-DDL-EXECUTION.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010X/ - Resultado:
safe point
db0698b9dd021261d9aa24329725f2c49a0411cf, Knowledge Portal desplegado y HTTP200, preflight read-onlyGOcomoopenclaw_bo_admin, pero backup schema-onlypg_dump -Fc -s -n business_observerfallo porpermission denied for table source_003_sales_items. - Decision:
por regla del gate, no se ejecuto
PDF-010P, no se crearon tablas/vista B2B, no se aplicaron grants/RLS y no se ejecuto rollback. - Proximo gate recomendado:
corregir permiso o rol de backup sobre objetos existentes de
business_observer, validar backup mayor a0bytes y reintentar DDL en gate separado.
La Directa cross-project boundaries¶
Etapa LD-ECOM-002 - Separacion formal OpenClaw vs La Directa Front¶
- Estado: documentado al
2026-06-23comoBOUNDARY DOCUMENTAL / SIN RUNTIME. - Objetivo formal: dejar reglas permanentes para que OpenClaw y La Directa Front trabajen en paralelo sin mezclar repos, commits, VPS, documentacion ni responsabilidades.
- Documentos oficiales:
docs/tenants/ladirecta/ecommerce/PROJECT-BOUNDARIES.mddocs/tenants/ladirecta/ecommerce/FRONTEND-DATA-CONTRACT.mddocs/tenants/ladirecta/ecommerce/CROSS-PROJECT-HANDOFF-PROTOCOL.mddocs/tenants/ladirecta/ecommerce/DATA-OWNERSHIP-MATRIX.md- Proximo gate recomendado: usar el protocolo de handoff para pedir desde OpenClaw cualquier UI nueva y desde La Directa Front cualquier dato, regla o metrica nueva.
La Directa ecommerce data and observability response¶
Etapa LD-ECOM-001 - Handoff inverso OpenClaw para frontend WooCommerce¶
- Estado: documentado al
2026-06-23comoHANDOFF RESPONSE DOCUMENTAL / SOLO LECTURA / SIN RUNTIME. - Objetivo formal: responder al handoff del frontend La Directa WooCommerce con estado real de productos, clientes, precios, stock, Business Observer, WooCommerce API, observabilidad, Grafana y roadmap de datos.
- Documentos oficiales:
docs/tenants/ladirecta/ecommerce/OPENCLAW-DATA-AND-OBSERVABILITY-RESPONSE.mddocs/tenants/ladirecta/ecommerce/HANDOFF-BACK-TO-WOOCOMMERCE-FRONT.md- Proximo gate recomendado:
cerrar decisiones comerciales de publish/draft, imagenes, categorias
VARIOS,modo_ventay snapshotSOURCE-001; cualquier SQL write, WooCommerce write API, sync, scheduler, cron o pipeline sigue bloqueado hasta gate separado con autorizacion explicita.
Business Observer - PDF-010W B2B schema-only backup local dev plan¶
Etapa 17.5.146 - B2B schema-only backup local dev plan¶
- Estado: documentado al
2026-06-23comoPDF-010W GO SCHEMA-ONLY BACKUP PLAN APPROVED FOR LOCAL DEV / SIN DDL / SIN SQL WRITE. - Objetivo formal:
aprobar una estrategia de backup schema-only local/dev despues del
NO-GOdePDF-010V, sin ejecutar DDL ni SQL write. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010W-B2B-SCHEMA-ONLY-BACKUP-LOCAL-DEV-PLAN.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010W/ - Decision:
local/dev puede usar
pg_dump -Fc -s -n business_observerporque el DDL B2B solo crea objetos nuevos y no modifica datos existentes. - Produccion: VPS/prod requiere snapshot externo o backup full con rol backup/admin aprobado antes de cualquier DDL productivo.
- Proximo gate recomendado:
crear backup schema-only valido fuera de Git, confirmar objetos B2B ausentes
y pedir autorizacion explicita para ejecutar
PDF-010P.
Business Observer - PDF-010V B2B local dev DDL execution¶
Etapa 17.5.145 - B2B local dev DDL execution¶
- Estado: ejecutado al
2026-06-23comoPDF-010V NO-GO BACKUP FAILED / SIN DDL B2B. - Objetivo formal:
ejecutar en local/dev el DDL B2B corregido
PDF-010Pdespues de publicarPDF-010U, con backup acotado valido debusiness_observer. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010V-B2B-LOCAL-DEV-DDL-EXECUTION.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010V/ - Resultado:
safe point
f9c4a4f7cd57050476e8cafd59a00fa936c429a5, preflight read-onlyGOcomoopenclaw_bo_admin, pero backup acotadopg_dump -Fc -n business_observerfallo porpermission denied for table source_003_sales_items. - Decision:
por regla del gate, no se ejecuto
PDF-010P, no se crearon tablas/vista B2B, no se aplicaron grants/RLS y no se ejecuto rollback. - Proximo gate recomendado:
resolver backup sobre todos los objetos existentes de
business_observercon rol backup/admin aprobado o permisos suficientes, validar archivo mayor a0bytes y reintentar DDL en gate separado.
Business Observer - PDF-010U B2B backup strategy DDL retry plan¶
Etapa 17.5.144 - B2B backup strategy and DDL retry plan¶
- Estado: documentado al
2026-06-23comoPDF-010U GO BACKUP STRATEGY APPROVED FOR LOCAL DEV / SIN DDL / SIN SQL WRITE. - Objetivo formal:
definir la estrategia de backup posterior al
NO-GO BACKUP FAILEDdePDF-010Tantes de reintentar el DDL B2B corregidoPDF-010P. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010U-B2B-BACKUP-STRATEGY-DDL-RETRY-PLAN.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010U/ - Decision:
local/dev avanza con backup acotado a
business_observerusandopg_dump -Fc -n business_observer; VPS/prod requiere backup full DB con rol backup/admin aprobado o snapshot externo. - Proximo gate recomendado:
PDF-010Vdebe confirmar safe point nuevo, backup acotado valido fuera de Git, preflight read-only y autorizacion explicita SQL write antes de ejecutarPDF-010P.
Business Observer - PDF-010T B2B controlled DDL execution with admin owner¶
Etapa 17.5.143 - B2B controlled DDL execution with admin owner¶
- Estado: ejecutado al
2026-06-23comoPDF-010T NO-GO BACKUP FAILED / SIN DDL B2B. - Objetivo formal:
ejecutar de forma controlada el DDL B2B corregido
PDF-010Pusando la credencial admin/owner local, despues de safe point, validaciones, preflight read-only y backup nuevo. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010T-B2B-CONTROLLED-DDL-EXECUTION-WITH-ADMIN-OWNER.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010T/ - Resultado:
permisos DDL confirmados como
openclaw_bo_admin, pero el backup real pre-DDL fallo antes de ejecutar SQL DDL porquepg_dump -Fcno pudo bloquearcobranzas.bank_entity:permission denied for schema cobranzas. - Decision:
por regla del gate, no se ejecuto
PDF-010P, no se crearon tablas/vista B2B, no se aplicaron grants/RLS y no se ejecuto rollback. - Proximo gate recomendado:
resolver credencial/permisos de backup completo o aprobar backup acotado a
business_observeren gate separado; solo despues reintentar DDL con backup valido nuevo.
Business Observer - PDF-010S PostgreSQL admin owner enablement evidence¶
Etapa 17.5.142 - PostgreSQL admin owner enablement evidence¶
- Estado: ejecutado al
2026-06-23comoPDF-010S GO ADMIN OWNER ENABLED / READ-ONLY EVIDENCE / SIN DDL B2B. - Objetivo formal: documentar que las credenciales admin/owner PostgreSQL quedaron habilitadas para el proximo gate controlado de DDL B2B.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010S-POSTGRESQL-ADMIN-OWNER-ENABLEMENT-EVIDENCE.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010S/ - Resultado:
local
gestion_de_negocios_corequedo validado comoopenclaw_bo_admin, conLOGIN,CREATEy ownership del schemabusiness_observer; VPSopenclaw_business_observer_prodquedo validado desde contenedor comoopenclaw_bo_prod_owner, conLOGIN,CREATEy ownership del schema. - Control de secretos: secrets locales y remoto existen, estan fuera de Git y no se imprimieron valores ni connection strings.
- Proximo gate recomendado:
preflight read-only final, backup real pre-DDL y ejecucion controlada del DDL
B2B corregido
PDF-010P, solo con autorizacion explicita.
Business Observer - PDF-010R PostgreSQL admin owner credential recovery¶
Etapa 17.5.141 - PostgreSQL admin owner credential recovery¶
- Estado: ejecutado al
2026-06-23comoPDF-010R READ-ONLY PREFLIGHT / NO-GO CREDENTIAL / SIN SQL WRITE / SIN DDL. - Objetivo formal:
localizar y validar sin secretos una credencial PostgreSQL admin/owner real
para
gestion_de_negocios_core.business_observer, o dejar documentado el grant minimo candidate para un gate posterior. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010R-POSTGRESQL-ADMIN-OWNER-CREDENTIAL-RECOVERY.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010R/ - Resultado:
APV_DESTINATION_POSTGRES_*conecta al target comoopenclaw_writer, pero no tieneCREATEsobre DB/schema;APV_LOCAL_POSTGRES_ADMIN_*conecta como admin local pero no apunta agestion_de_negocios_core. - Fuentes:
.envlocal ignorado por Git,.env.example, variables de sesion, documentacion local y VPSopenclaw-vpsfueron revisados sin imprimir valores. No se encontro credencial admin/owner target usable. - Recomendacion:
proximo gate con usuario
postgresreal del target u owner DB/schema aprobado. Grant minimo candidate solo si gobernanza lo aprueba y en gate separado. - Proximo gate recomendado:
cargar credencial admin/owner target, preflight read-only final, backup real
pre-DDL y ejecucion controlada de
PDF-010Psolo con autorizacion explicita.
Business Observer - PDF-010Q B2B controlled DDL retry execution¶
Etapa 17.5.140 - B2B controlled DDL retry execution¶
- Estado: ejecutado al
2026-06-23comoPDF-010Q NO-GO PRE-DDL / SIN BACKUP / SIN SQL WRITE / SIN DDL. - Objetivo formal:
ejecutar de forma controlada el DDL B2B corregido
PDF-010Pdespues de safe point, validaciones previas, preflight read-only final y backup nuevo. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010Q-B2B-CONTROLLED-DDL-RETRY-EXECUTION.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010Q/ - Resultado:
safe point paso, las variables PostgreSQL fueron detectadas sin imprimir
valores y
pg_dump/psqlse encontraron por ruta absoluta local. El gate se detuvo antes de backup y antes de cualquier SQL write porddl_user_not_authorized:openclaw_writerno tiene permiso DDL suficiente sobrebusiness_observer. - Recuperacion segura:
.envlocal ignorado por Git contiene credenciales destino completas, pero no credencial admin/owner valida para el target. El VPSopenclaw-vpsfue revisado sin imprimir valores y solo aporto placeholders/documentacion, no secretos reales para ejecutar el DDL. - Proximo gate recomendado:
reintentar solo con variables
APV_DESTINATION_POSTGRES_*de usuario admin/owner aprobado, herramienta de backup validada, nuevo preflight read-only y backup real pre-DDL.
Business Observer - PDF-010P B2B DDL retry candidate¶
Etapa 17.5.139 - B2B DDL retry candidate¶
- Estado: preparado al
2026-06-23comoPDF-010P LOCAL CANDIDATE / SIN SQL WRITE / SIN DDL / SIN PUSH. - Objetivo formal:
preparar el paquete corregido para reintentar el DDL B2B usando roles reales
openclaw_bo_*y el schemabusiness_observercomo preexistente. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010P-B2B-DDL-RETRY-CANDIDATE.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010P/ - Resultado:
DDL retry candidate, rollback retry candidate, validador y README creados.
Los objetos B2B siguen limitados a las tres tablas y la vista del contrato
PDF-010K; los grants apuntan aopenclaw_bo_admin,openclaw_bo_writeryopenclaw_bo_reader. - Proximo gate recomendado: backup nuevo, preflight read-only actualizado y autorizacion explicita para ejecutar el DDL corregido con usuario admin/owner aprobado.
Business Observer - PDF-010O B2B PostgreSQL permissions DDL retry plan¶
Etapa 17.5.138 - B2B PostgreSQL permissions DDL retry plan¶
- Estado: ejecutado al
2026-06-23comoPDF-010O READ-ONLY PREFLIGHT / PLAN DE REINTENTO / NO-GO PARA REINTENTO INMEDIATO / SIN SQL WRITE - Objetivo formal:
resolver documentalmente el bloqueo de permisos detectado en
PDF-010Ny definir el proximo gate controlado antes de reintentar DDL B2B. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010O-B2B-POSTGRESQL-PERMISSIONS-DDL-RETRY-PLAN.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010O/ - Resultado:
inspeccion read-only confirma que
openclaw_writerno tieneCREATEsobre DB ni schema, no es miembro deopenclaw_bo_*, los roles realesopenclaw_bo_*existen y los rolesbusiness_observer_*usados por el DDL candidate no existen. - Recomendacion:
ajustar el DDL candidate a roles reales
openclaw_bo_*, tratarbusiness_observercomo schema preexistente y ejecutar el futuro DDL con usuario admin/owner aprobado enPDF-010P. - Proximo gate recomendado:
PDF-010Ppara DDL retry candidate, rollback alineado, nuevo backup, preflight read-only y autorizacion explicita antes de ejecutar DDL.
Business Observer - PDF-010N B2B controlled DDL execution¶
Etapa 17.5.137 - B2B controlled DDL execution¶
- Estado: ejecutado al
2026-06-23comoPDF-010N BACKUP REAL PASS / DDL INTENTADO / NO-GO POR PERMISOS / SIN OBJETOS B2B CREADOS - Objetivo formal:
ejecutar de forma controlada el DDL B2B
PDF-010Kdespues de safe point, validaciones previas, preflight read-only y backup real. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010N-B2B-CONTROLLED-DDL-EXECUTION.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010N/ - Resultado:
backup real
pg_dump -Fccreado fuera de Git; el DDL candidate fue intentado una sola vez conON_ERROR_STOP=1y transaccion unica, pero fallo enCREATE SCHEMA IF NOT EXISTS business_observerporpermission denied for database gestion_de_negocios_core. - Resultado operativo:
NO-GO; no se crearonb2b_customer_mapping,b2b_product_price,b2b_pricing_decision_logniv_b2b_customer_effective_price. - Proximo gate recomendado:
preparar
PDF-010Opara confirmar/provisionar permisos y roles: decidir si se usan rolesbusiness_observer_*o los roles realesopenclaw_bo_*, y reintentar solo con nuevo preflight y backup.
Business Observer - PDF-010M B2B PostgreSQL real read-only preflight¶
Etapa 17.5.136 - B2B PostgreSQL real read-only preflight¶
- Estado: ejecutado al
2026-06-23comoPDF-010M PREFLIGHT REAL READ-ONLY / GO OPERATIVO / SIN SQL WRITE / SIN RUNTIME - Objetivo formal:
validar PostgreSQL/OpenClaw real en modo read-only antes de cualquier
ejecucion futura del DDL B2B
PDF-010K. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010M-B2B-POSTGRESQL-REAL-READ-ONLY-PREFLIGHT.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010M/ - Resultado:
checker real read-only ejecutado con Python y
psycopg2; confirma DBgestion_de_negocios_core, usuarioopenclaw_writer, PostgreSQL15.15, schemabusiness_observer, roles canonicosopenclaw_bo_*, objetos B2B ausentes antes del DDL, permisos actuales y extensiones visibles. - Resultado operativo:
GOpara el preflight read-only;ddl_executed=false,sql_write_executed=falseysecrets_printed=false. - Proximo gate recomendado:
abrir gate separado de backup real pre-DDL y autorizacion explicita para
ejecutar
PDF-010K; cualquier DDL, grant o SQL write sigueNO-GO.
Business Observer - PDF-010L B2B DDL execution preflight¶
Etapa 17.5.135 - B2B DDL execution preflight¶
- Estado: preparado al
2026-06-23comoPDF-010L PREFLIGHT READ-ONLY / SIN SQL WRITE / SIN RUNTIME - Objetivo formal: preparar el gate posterior de ejecucion controlada del DDL B2B en PostgreSQL/OpenClaw, sin ejecutar SQL write todavia.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010L-B2B-DDL-EXECUTION-PREFLIGHT.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010L/ - Resultado: checklist de safe point, fuentes DDL/rollback candidate, preflight read-only, backup/restore, rollback plan, execution safety gate y criterios GO/NO-GO.
- Proximo gate recomendado: ejecutar un preflight real read-only autorizado contra PostgreSQL/OpenClaw productivo, confirmar backup disponible y solo despues solicitar gate explicito para DDL.
Business Observer - PDF-010K B2B persistence contract DDL candidate¶
Etapa 17.5.134 - B2B persistence contract DDL candidate¶
- Estado: disenado al
2026-06-23comoPDF-010K DDL CANDIDATE + VALIDACION ESTATICA / SIN SQL EJECUTADO / SIN RUNTIME / SIN WRITES - Objetivo formal: preparar el contrato persistente real para mapping cliente WooCommerce/SGC y precios B2B en PostgreSQL/OpenClaw, todavia sin ejecucion SQL.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010K-B2B-PERSISTENCE-CONTRACT-DDL-CANDIDATE.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010K/ - Resultado: DDL candidate, rollback candidate, validador estatico y documentacion de riesgos/bloqueos.
- Proximo gate recomendado:
preparar
PDF-010Lcomo preflight/ejecucion controlada de DDL solo si se aprueba backup, RLS policies finales, roles existentes y rollback.
Business Observer - PDF-010J B2B customer mapping cart checkout dry-run¶
Etapa 17.5.133 - B2B customer mapping cart checkout dry-run¶
- Estado: implementado al
2026-06-23comoPDF-010J PROTOTIPO TECNICO LOCAL + TESTS / SIN RUNTIME / SIN WRITES - Objetivo formal:
conectar el motor local B2B con un store simulado de mapping
wc_customer_id -> sgc_customer_idy simular catalogo, carrito, checkout y metadata de orden sin tocar runtime ni datos reales. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010J-B2B-CUSTOMER-MAPPING-CART-CHECKOUT-DRY-RUN.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010I/ - Resultado: store local no sensible, pricing de catalogo, recalculo server-side de carrito, revalidacion de checkout, payload candidate de orden y tests.
- Validacion:
24tests pasan conpytest; dry-run local devuelve conteos paraPUBLIC_DEFAULT,B2B_PRICE_OK,CHECKOUT_READY,BLOCKED_CUSTOMER_MAPPING,BLOCKED_CUSTOMER_STATUS,BLOCKED_PRICE_LIST,BLOCKED_PRICE_MISSINGyBLOCKED_ORDER_INCONSISTENCY. - Proximo gate recomendado: disenar contrato persistente real del mapping en PostgreSQL/OpenClaw como DDL candidate revisable, aun sin writes operativos ni runtime WooCommerce.
Business Observer - PDF-010I B2B pricing engine local prototype¶
Etapa 17.5.132 - B2B pricing engine local prototype¶
- Estado: implementado al
2026-06-23comoPDF-010I PROTOTIPO TECNICO LOCAL + TESTS / SIN RUNTIME / SIN WRITES - Objetivo formal:
construir un prototipo tecnico local del motor de precios B2B para La
Directa usando snapshots
SOURCE-001ySOURCE-002, sin tocar runtime, WooCommerce, PostgreSQL ni ejecutar writes. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010I-B2B-PRICING-ENGINE-LOCAL-PROTOTYPE.md - Paquete:
infra/business-observer/production/b2b-pricing/PDF-010I/ - Resultado: motor Python puro, runner de dry-run no sensible y tests unitarios locales.
- Validacion:
9tests pasan conpytest; dry-run local devuelve resumen por estado con visitantes, clientes activos de listas1y5, suspendidos/de baja, SKUs3995/4010, lista invalida y cliente sin mapping. - Proximo gate recomendado:
integrar el motor con un store real de mapping
wc_customer_id -> sgc_customer_idy preparar dry-run de catalogo/carrito/checkout/orden, sin habilitar API WooCommerce, PostgreSQL writes, sync, scheduler, cron ni pipelines.
Business Observer - PDF-010H B2B runtime dry-run design¶
Etapa 17.5.131 - B2B runtime dry-run design¶
- Estado: documentado al
2026-06-23comoPDF-010H DISENO + DRY-RUN / SIN WRITES / SIN RUNTIME - Objetivo formal: disenar y simular la logica runtime B2B para WooCommerce La Directa antes de implementar cualquier cambio operativo.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010H-B2B-RUNTIME-DRY-RUN-DESIGN.md - Resultado:
define matching
wc_customer_id -> sgc_customer_id, flujo de catalogo B2B, recalculo server-side de carrito, validacion final de checkout y metadata de orden por linea. - Matrices creadas: customer matching, catalog price, cart recalculation, checkout/order metadata y blocked cases.
- Proximo gate recomendado: implementar un prototipo tecnico bloqueado por dry-run/tests, sin writes iniciales, para el motor de pricing y los puntos de integracion WooCommerce/headless.
Business Observer - PDF-010G B2B commercial price rules approval¶
Etapa 17.5.130 - B2B commercial pricing approval¶
- Estado: documentado al
2026-06-23comoPDF-010G CONFIRMACION COMERCIAL DOCUMENTAL / REGLAS B2B APROBADAS / SIN RUNTIME / SIN WRITES - Objetivo formal: cerrar la decision comercial explicita sobre listas B2B antes de cualquier implementacion runtime de precios por cliente.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010G-B2B-COMMERCIAL-PRICE-RULES-APPROVAL.md - Resultado:
aprueba
Lista_Precio 1..9 -> PrecioL1..PrecioL9; apruebaPrecioListaFinalcomo fuente delregular_pricepublico/default para visitante no logueado; no apruebaPrecioL1como precio publico/default. - Reglas aprobadas: cliente logueado usa precio segun lista asignada, carrito y checkout recalculan server-side, y la orden guarda lista y precio aplicado por linea.
- Proximo gate recomendado:
disenar e implementar en gate separado el matching
wc_customer_id -> sgc_customer_idy un dry-run de catalogo, carrito y checkout sin writes iniciales.
Business Observer - PDF-010F B2B commercial price rules and server-side pricing design¶
Etapa 17.5.129 - B2B commercial pricing server-side design¶
- Estado: documentado al
2026-06-23comoPDF-010F DISENO DOCUMENTAL / SIN WRITES / PENDING_BUSINESS_CONFIRMATION - Objetivo formal: cerrar la regla comercial candidate de listas B2B y disenar el calculo server-side de precios por cliente logueado antes de cualquier implementacion runtime.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010F-B2B-COMMERCIAL-PRICE-RULES-SERVER-SIDE-PRICING-DESIGN.md - Resultado:
documenta
Lista_Precio 1..9 -> PrecioL1..PrecioL9como candidate soportado tecnicamente pero pendiente de confirmacion comercial; preservaregular_price = PrecioListaFinalpara visitantes y default publico; y define pricing server-side para catalogo, carrito, checkout y orden. - Bloqueos definidos:
BLOCKED_PRICE_LIST,BLOCKED_CUSTOMER_STATUS,BLOCKED_PRICE_MISSINGyBLOCKED_CUSTOMER_MAPPING. - Proximo gate recomendado:
confirmacion comercial explicita de
Lista_Precio 1..9 -> L1..L9y de siL1es o no precio publico/default; luego disenar implementacion de hook/plugin WooCommerce o capa headless con dry-run de carrito/checkout.
Business Observer - PDF-010E B2B customer price dry-run¶
Etapa 17.5.128 - B2B customer price dry-run¶
- Estado: documentado al
2026-06-23comoPDF-010E DRY-RUN B2B / SIN WRITES / SIN SYNC / PENDING_BUSINESS_CONFIRMATION - Objetivo formal: simular el flujo B2B cliente -> lista de precio -> producto -> carrito/ pedido usando evidencia local de SOURCE-001 y SOURCE-002, sin ejecutar writes ni tocar runtime.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010E-B2B-CUSTOMER-PRICE-DRY-RUN.md - Resultado:
arma matriz cliente/lista/SKU/precio con clientes sanitizados, SKUs piloto
de
PDF-009M, casos negativos3995y4010por precio0.000, reglas de visitante, cliente logueado, carrito, checkout y evidencia de orden. - Decision:
Lista_Precio 1..9 -> L1..L9queda soportado tecnicamente por catalogo runtime pero pendiente de confirmacion comercial;L1como default publico siguePENDING_VALIDATEyregular_pricesigue basado enPrecioListaFinal. - Proximo gate recomendado:
confirmacion comercial de
Lista_Precio -> L1..L9, definicion de siL1es precio publico/default, muestra sanitizada activa completa para todas las listas y diseno de recalculo server-side antes de cualquier API WooCommerce, PostgreSQL write, sync, cron, scheduler o pipeline.
Business Observer - PDF-010D SOURCE-001 VCLIENTES read-only snapshot¶
Etapa 17.5.127 - SOURCE-001 VCLIENTES read-only snapshot¶
- Estado: documentado al
2026-06-23comoPDF-010D VALIDACION READ-ONLY / SOURCE_001_RUNTIME_SAMPLE_OK / SIN WRITES / SIN SYNC / LISTA_PRECIO_CATALOG_CLOSED - Objetivo formal:
obtener evidencia runtime read-only desde
ecommerce.dbo.VCLIENTESpara cerrar catalogo real deLista_Precio, estados de clientes y reglas B2B de precio por cliente. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010D-SOURCE-001-VCLIENTES-READ-ONLY-SNAPSHOT.md - Resultado:
confirma safe point
d66c01b, ejecuta soloSELECTread-only contraVCLIENTES, observa11448clientes, estados realesCLIENTE ACTIVO,CLIENTE SUSPENDIDOyCLIENTE DE BAJA, y cierraLista_Preciocomo catalogo real1..9sin vacios ni nulos. - Decision:
el mapping tecnico
Lista_Precio 1..9 -> L1..L9queda soportado por evidencia runtime, pero pendiente de confirmacion comercial para activacion B2B.L1como precio publico/default siguePENDING_VALIDATE. - Proximo gate recomendado:
dry-run B2B sin writes para
wc_customer_id -> sgc_customer_id, simulacion de precios por lista, productos sin precio por lista y matriz de fallback, antes de cualquier API WooCommerce, PostgreSQL write, sync, cron, scheduler o pipeline.
Business Observer - PDF-010C SOURCE-001 price list catalog read-only validation¶
Etapa 17.5.126 - SOURCE-001 price list catalog read-only validation¶
- Estado: documentado al
2026-06-23comoPDF-010C VALIDACION READ-ONLY / SOURCE_001_RUNTIME_SAMPLE_MISSING / SIN WRITES / SIN SYNC / PENDING_VALIDATE - Objetivo formal:
validar el catalogo real de
Lista_PrecioenSOURCE-001 Clientesantes de crear clientes WooCommerce o activar logica de precios por cliente. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010C-SOURCE-001-PRICE-LIST-CATALOG-READ-ONLY-VALIDATION.md - Resultado:
confirma safe point
72a2961, verifica ausencia desnapshots/source-001/y de exports alternativos locales, y deja el catalogo real de listas como no cerrable sin snapshot o autorizacion read-only separada. - Decision pendiente:
Lista_Precio -> PrecioL1..PrecioL9quedaPENDING_VALIDATE;Lista_Precio=1 -> PrecioL1no queda aprobado;regular_pricepublico vigente sigue usandoPrecioListaFinal. - Proximo gate recomendado:
obtener snapshot read-only seguro de SOURCE-001 o autorizar consulta
read-only agregada contra
ecommerce.dbo.VCLIENTESpara cerrar valores unicos, conteos por estado, listas invalidas/vacias y equivalenciaLista_Precio -> L1..L9.
Business Observer - PDF-010B B2B price list authority read-only validation¶
Etapa 17.5.125 - B2B price list authority read-only validation¶
- Estado: documentado al
2026-06-23comoPDF-010B VALIDACION READ-ONLY / SIN WRITES / SIN SYNC / PENDING_VALIDATE - Objetivo formal:
validar autoridad real de precios B2B, campos de listas y lista asignada por
cliente antes de sincronizar
SGC -> PostgreSQL/OpenClaw -> WooCommerce. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010B-B2B-PRICE-LIST-AUTHORITY-READ-ONLY-VALIDATION.md - Resultado:
confirma safe point
24ad2aa, inventariaPrecioListaFinaly el bloqueL1..L9, documenta ejemplo SKU2442, confirma en SOURCE-001Lista_Preciocomo campo fuente de lista asignada y mantieneL1comoPENDING_VALIDATE. - Modelos candidate:
b2b_product_price_listsparasku + price_list_code + price_totalyb2b_customer_price_list_mappingparasgc_customer_id + price_list_code + wc_customer_id, ambos consource_hashyquality_status. - Proximo gate recomendado:
validacion real read-only del catalogo
Lista_Precio, confirmacion humana deL1como precio publico/default si aplica, matchingsgc_customer_id <-> wc_customer_idy dry-run B2B sin writes.
Business Observer - PDF-010A B2B price lists and customer sync contract¶
Etapa 17.5.124 - B2B price lists and customer sync contract¶
- Estado: documentado al
2026-06-23comoPDF-010A DISENO DOCUMENTAL / SIN WRITES OPERATIVOS / PENDING_VALIDATE - Objetivo formal:
definir contrato B2B para listas de precio por cliente y sincronizacion de
clientes
SGC -> PostgreSQL/OpenClaw -> WooCommerce, sin API, PostgreSQL, SQL, sync, cron, push ni deploy. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010A-B2B-PRICE-LISTS-CUSTOMER-SYNC-CONTRACT.md - Resultado:
inventaria precios disponibles en
SOURCE-002, define modelo conceptualsku + price_list_code, define mapping cliente SGC/WooCommerce y fija el comportamiento de visitante, cliente logueado, carrito y checkout. - Decision pendiente:
validar con negocio si
L1es precio publico default; hasta entoncesregular_pricesigue respaldado porPrecioListaFinalsegun evidencia vigente. - Proximo gate recomendado:
validar catalogo real de
Lista_PrecioenSOURCE-001, confirmarL1, definir matchingsgc_customer_id <-> wc_customer_idy preparar dry-run B2B sin writes.
Business Observer - PDF-009M WooCommerce product draft pilot write¶
Etapa 17.5.123 - Product draft pilot write¶
- Estado: ejecutado al
2026-06-22comoPDF-009M WRITE CONTROLADO / PRODUCTOS DRAFT CREADOS / SIN PUBLISH - Objetivo formal:
publicar
PDF-009L, desplegar Knowledge Portal y ejecutar un primer piloto de hasta10productos WooCommerce endraft, usando solo categorias y marcas ya resueltas, sin publish, imagenes, Media Library, categorias nuevas, marcas nuevas, PostgreSQL writes ni automatizaciones. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-009M-WOOCOMMERCE-PRODUCT-DRAFT-PILOT-WRITE.md - Resultado:
PDF-009Lfue pusheado y desplegado; portal local VPS y publico devolvieron HTTP200; WooCommerce confirmo28categorias,Marca / pa_marca(attribute_id=1) y48terminos; se crearon10productosdraftyhidden:2442,2443,2444,2847,2446,2814,2815,2816,3514y0269. - Bloqueo preservado:
14SKUs quedaron bloqueados por reglas, incluyendo3995y4010por precio0.000,VARIOSyNO APLICA.290aptos adicionales no se crearon por limite del piloto. - Seguridad: sin publish, sin categorias nuevas, sin marcas nuevas, sin imagenes, sin Media Library, sin PostgreSQL writes, sin secretos impresos, sin sync masivo y sin scheduler/cron/pipelines.
- Proximo gate recomendado:
revision manual en WooCommerce Admin de los
10drafts y gate separado para imagenes o segundo lote controlado.
Business Observer - PDF-009L WooCommerce categories controlled write¶
Etapa 17.5.122 - Categories controlled write¶
- Estado: ejecutado al
2026-06-22comoPDF-009L WRITE CONTROLADO / CATEGORIAS CREADAS / SIN PRODUCTOS - Objetivo formal:
crear categorias WooCommerce faltantes para el arbol comercial de
SOURCE-002 Productos, usando paresCategory/SubCategoria, sin tocar productos, imagenes, Media Library, atributos, PostgreSQL, VPS, Docker ni automatizaciones. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-009L-WOOCOMMERCE-CATEGORIES-CONTROLLED-WRITE.md - Resultado:
confirma safe point en
e127c0f48c883abb25d08d2bb7c8d1e2a3dc12c9, valida.envignorado por Git y variables WooCommerce presentes sin imprimir valores, verifica PDF-009K publico con HTTP200, observa soloUncategorizedantes del write, detecta21paresCategory/SubCategoria, bloquea6paresVARIOS, crea12padres y15hijas, y valida28categorias posteriores por API. - Bloqueo preservado:
VARIOSquedaBLOCKED / MANUAL_REVIEW;Uncategorizedno se usa como fallback. - Seguridad: sin productos, sin imagenes, sin Media Library, sin atributos, sin PostgreSQL/SQL, sin VPS, sin Docker, sin secretos impresos, sin push/deploy y sin sync/scheduler/cron/pipelines.
- Proximo gate recomendado:
dry-run de payload de producto que use categorias y
Marca / pa_marca, en gate separado.
Business Observer - PDF-009K WooCommerce Marca terms controlled write¶
Etapa 17.5.121 - Marca terms controlled write¶
- Estado: ejecutado al
2026-06-22comoPDF-009K WRITE CONTROLADO / TERMINOS MARCA CREADOS / SIN PRODUCTOS - Objetivo formal:
crear terminos de marca bajo el atributo global WooCommerce
Marca / pa_marca(attribute_id=1) desde el snapshot SOURCE-002 local seguro, sin tocar productos, categorias, imagenes, Media Library, PostgreSQL, VPS, Docker ni automatizaciones. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-009K-WOOCOMMERCE-MARCA-TERMS-CONTROLLED-WRITE.md - Resultado:
confirma safe point en
f67bd60374663e058384e19eb85f7432f97dfcaa, valida.envignorado por Git y variables WooCommerce presentes sin imprimir valores, confirmaMarca / pa_marcaconattribute_id=1, observa0terminos previos, detecta49marcas SOURCE-002, crea48terminos con HTTP201y valida48terminos posteriores. - Bloqueo preservado:
NO APLICAquedaBLOCKED / MANUAL_REVIEW. - Seguridad: sin productos, sin categorias, sin imagenes, sin Media Library, sin PostgreSQL/SQL, sin VPS, sin Docker, sin secretos impresos, sin push/deploy y sin sync/scheduler/cron/pipelines.
- Proximo gate recomendado:
categorias WooCommerce o payload dry-run de producto que use
Marca / pa_marca, siempre en gate separado.
Business Observer - PDF-009J WooCommerce Marca global attribute controlled write¶
Etapa 17.5.120 - Marca global attribute controlled write¶
- Estado: ejecutado al
2026-06-22comoPDF-009J WRITE CONTROLADO MINIMO / ATRIBUTO GLOBAL MARCA CREADO / SIN PRODUCTOS - Objetivo formal:
crear el atributo global filtrable
Marcacon slugpa_marcaen WooCommerce La Directa, solo si no existia, sin tocar productos, categorias, imagenes, Media Library, PostgreSQL, VPS, Docker ni automatizaciones. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-009J-WOOCOMMERCE-MARCA-GLOBAL-ATTRIBUTE-CONTROLLED-WRITE.md - Resultado:
confirma safe point en
aaf5c43a2ef6946bef5bc3d978ca3f276893feb9, valida.envignorado por Git y variables WooCommerce presentes sin imprimir valores, ejecuta GET previo de atributos concount=0, creaMarcapor un unico POST autorizado HTTP201y valida con GET posteriorcount=1. - Atributo creado:
attribute_id=1,name=Marca,slug=pa_marca,type=select,order_by=name,has_archives=true. - Seguridad: sin productos, sin categorias, sin imagenes, sin Media Library, sin PostgreSQL/SQL, sin VPS, sin Docker, sin secretos impresos, sin push/deploy y sin sync/scheduler/cron/pipelines.
- Proximo gate recomendado: decidir terminos de marca y crearlos en gate separado, o continuar con categorias/media segun prioridad comercial.
Business Observer - PDF-009I WooCommerce Marca media library discovery¶
Etapa 17.5.119 - Marca global and media library discovery¶
- Estado: documentado al
2026-06-22comoPDF-009I MARCA GLOBAL + MEDIA LIBRARY DISCOVERY / READ-ONLY GET / SIN WRITES - Objetivo formal:
definir
Marcacomo atributo global filtrable candidate y ejecutar discovery read-only de Media Library sin crear ni modificar nada en WooCommerce. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-009I-WOOCOMMERCE-MARCA-MEDIA-LIBRARY-DISCOVERY.md - Resultado:
confirma safe point en
9aa230a24400a325d63c64419f4c8ceeafb2fb27, ejecuta solo GET read-only de categorias, atributos, productos y media, y observaUncategorizedcomo unica categoria,0atributos globales,0productos y1attachment visible por API. - Decision:
Marcadebe ser atributo global WooCommerce filtrable, visible en card/listado y ficha, con slug sugeridopa_marca; no debe usarsemeta_datapara filtrar marca. La creacion real queda bloqueada hasta gate futuro. - Media governance:
el unico attachment visible queda sin
alt_text, sin SKU en title y unattached reciente. Se confirmaImages jsonboperativo conmedia_id,url,is_featured,sort_order, title/alt actual y esperado, ystatus. No se renombra archivo fisico ni se modifica metadata. - Seguridad:
sin create/update/delete, sin SQL writes, sin modificar WooCommerce ni
La Directa, sin crear atributos, categorias, imagenes ni productos, sin imprimir secretos ni.env, sin push/deploy y sin sync/scheduler/cron/ pipelines. - Proximo gate recomendado:
aprobar y crear
Marca/pa_marcaen write gate separado, luego gate de normalizacion/asociacion de Media Library con revision humana.
Business Observer - PDF-009H frontend facets product display contract¶
Etapa 17.5.118 - Frontend facets product display contract¶
- Estado: documentado al
2026-06-22comoPDF-009H FRONTEND DATA CONTRACT / DISENO DOCUMENTAL / SIN WRITES - Objetivo formal: definir el contrato frontend de filtros y datos visibles por producto antes de cualquier creacion de atributos, categorias, imagenes o productos en WooCommerce.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-009H-FRONTEND-FACETS-PRODUCT-DISPLAY-CONTRACT.md - Resultado:
confirma que
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, no son filtros y no son taxonomias;Imagesse renderiza, no es filtro y queda como coleccion ordenada candidate para PostgreSQL/OpenClaw con tipo recomendadojsonb. - Decision:
no usar
meta_datapara filtros masivos. Todo dato filtrable debe ir a atributo/taxonomia optimizada; todo dato solo display puede ir ameta_datao campo display privado con control de performance.Imagesno usapgvector; queda comoImages jsonbordenado conmedia_id,url,is_featured,sort_order, title/alt actual y esperado, ystatus. Se mapea a WooCommerceimages[]con featured primero (position=0) y galeria ordenada porsort_order. Tabla hija normalizada queda como alternativa futura si performance/volumen/auditoria lo exige. - Media governance:
las imagenes se cargan manualmente desde WooCommerce Admin, no vienen desde
SGC. OpenClaw/Woo discovery read-only puede detectar asociaciones por producto/SKU, generar normalizacion candidate de title/alt y reporte de cleanup para huerfanas, duplicadas o no usadas. No hay borrado automatico. - Performance: WooCommerce queda bajo regla permanente de maxima performance: evitar N+1, no resolver imagenes en tiempo real del front, no ordenar galerias dinamicamente y separar stock sync frecuente de catalog sync controlado para imagenes.
- Seguridad:
sin create/update/delete, sin SQL writes, sin modificar WooCommerce ni
La Directa, sin crear atributos, categorias, imagenes ni productos, sin imprimir secretos ni.env, sin push/deploy y sin sync/scheduler/cron/ pipelines. - Proximo gate recomendado:
aprobar
Marcacomo atributo global WooCommerce filtrable, definir si el frontend consumira templates WooCommerce/PHP o API publica/headless, y abrir discovery read-only de media library/modelo fisico deImagesantes de cualquier write gate.
Business Observer - PDF-009G WooCommerce categories images attributes mapping candidate¶
Etapa 17.5.117 - WooCommerce categories images attributes mapping candidate¶
- Estado: documentado al
2026-06-22comoPDF-009G MAPPING DOCUMENTAL / READ-ONLY DISCOVERY / SIN WRITES - Objetivo formal: definir matriz candidate real o bloqueada para categorias WooCommerce, imagenes y atributo/marca antes de cualquier write futuro.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-009G-WOOCOMMERCE-CATEGORIES-IMAGES-ATTRIBUTES-MAPPING-CANDIDATE.md - Resultado:
confirma safe point en
b86a05e91fd07776bf88568661d8c4b1ce2fa3f7, ejecuta solo GET read-only de categorias, atributos y productos, observa WooCommerce vacio salvoUncategorized, inventaria314productos del snapshot SOURCE-002,21paresCategory/SubCategoria,49marcas,0columnas de imagen y2SKUs sin precio. - Decision:
no hay casos listos para publish/write real. Categorias requieren
NEEDS_CREATE_CATEGORY_GATEo decisionBLOCKED; atributo globalMarcaqueda pendiente si se quiere crear; imagenes bloquean publish hasta fuente o placeholder aprobado. - Seguridad:
sin create/update/delete, sin SQL writes, sin modificar WooCommerce ni
La Directa, sin crear categorias, atributos o imagenes, sin imprimir secretos ni.env, sin push/deploy y sin sync/scheduler/cron/pipelines. - Proximo gate recomendado:
aprobar taxonomia WooCommerce final, resolver
VARIOS, decidirMarcaglobal vs atributo visible y aprobar fuente de imagenes o placeholder antes de cualquier write gate.
Business Observer - PDF-009F WooCommerce final payload dry-run¶
Etapa 17.5.116 - WooCommerce final payload dry-run¶
- Estado: publicado en
origin/mainy desplegado en Knowledge Portal al2026-06-22, comoPDF-009F PAYLOAD FINAL CANDIDATE / DRY-RUN / READ-ONLY GET / SIN WRITES, con HEADc756b3c542b5f5ca57070e6244ed01425593563c, local/origin/VPS alineados, HTTP local VPS200y HTTP publico200 - Objetivo formal:
construir y validar el payload final candidate para
SOURCE-002 Productos -> WooCommerce La Directa, aplicando reglasPDF-009Ey sin ejecutar writes. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-009F-WOOCOMMERCE-FINAL-PAYLOAD-DRY-RUN.md - Resultado:
confirma safe point en
a2ad77ad85049f091ea7cb41d4ea59cf6117b98f, ejecuta solo GET read-only de categorias, atributos y productos por SKU, observaUncategorizedcomo unica categoria real y0atributos, confirma muestra Woo sin productos para los10SKUs previos, y arma payloads candidateCREATE,UPDATE_STOCK,UPDATE_CATALOG,DEACTIVATEyBLOCKED. - Decision:
no hay mapping real aprobado
Category/SubCategoria -> product_cat; por lo tanto, todo publish/write de catalogo queda bloqueado.Uncategorizedno es fallback automatico y no se crean categorias ni atributos en este gate. - Seguridad:
sin create/update/delete, sin SQL writes, sin modificar WooCommerce ni
La Directa, sin imprimir secretos ni.envy sin sync/scheduler/cron/ pipelines durante el gate documental. Publicacion Git y deploy del Knowledge Portal ya completados posteriormente. - Proximo gate recomendado: mapping real de categorias WooCommerce e imagenes, con IDs/slugs aprobados o bloqueos explicitos, antes de cualquier write gate.
Business Observer - PDF-009E WooCommerce product rules pre-write candidate¶
Etapa 17.5.115 - WooCommerce product rules pre-write candidate¶
- Estado: publicado en
origin/mainy desplegado en Knowledge Portal al2026-06-22, comoPDF-009E DISENO DOCUMENTAL / DRY-RUN RULES / SIN API NUEVA / SIN WRITES, con HEAD00dcc8b30998e3a4cf88fe8da983199ed0202b63, local/origin/VPS alineados, HTTP local VPS200y HTTP publico200 - Objetivo formal:
cerrar reglas comerciales y tecnicas candidate previas a cualquier write
futuro sobre WooCommerce
La Directa. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-009E-WOOCOMMERCE-PRODUCT-RULES-PRE-WRITE-CANDIDATE.md - Resultado: define matrices de reglas, payload candidate, casos bloqueados, decisiones comerciales pendientes y prerequisitos finales de write gate.
- Decisiones candidate:
Category/SubCategoria -> product_catcomo arbol padre/hijo con mapping aprobado;Marcacomo atributo visible inicial;ACTIVOelegible pero nopublishautomatico;DE BAJA -> status=draft; sin stock y sin imagen quedandraft; sin precio quedaBLOCKED;PrecioListaFinalqueda comoregular_price;sale_pricequeda protegido por guard comercial; productos solo en WooCommerce quedanBLOCKED / MANUAL_REVIEW. - Seguridad:
sin API nueva, sin writes, sin modificar WooCommerce,
La Directa, PostgreSQL, sync, scheduler, cron ni pipelines durante el gate documental. Publicacion Git y deploy del Knowledge Portal ya completados posteriormente. - Proximo gate recomendado:
PDF-009Fpayload dry-run final con categorias resueltas o bloqueadas y cero writes.
Business Observer - PDF-009D WooCommerce product lifecycle and stock sync policy¶
Etapa 17.5.114 - WooCommerce product lifecycle and stock sync policy¶
- Estado: publicado en
origin/mainy desplegado en Knowledge Portal al2026-06-22, comoPDF-009D DISENO DOCUMENTAL / SIN API NUEVA / SIN WRITES, con HEAD2bc2434143022e55a94e81f835bf926067173e88, HTTP local VPS200y HTTP publico200 - Objetivo formal:
definir la politica futura de ciclo de vida de productos y sincronizacion de
stock entre PostgreSQL/OpenClaw y WooCommerce
La Directa, antes de cualquier write gate. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-009D-WOOCOMMERCE-PRODUCT-LIFECYCLE-STOCK-SYNC-POLICY.md - Resultado:
separa tres flujos:
Stock Syncfrecuente de payload minimo,Product Catalog Synccontrolado yProduct Lifecyclepor estado/existencia de producto. - Decision stock:
el flujo frecuente solo debe actualizar
stock_quantity,stock_statusymanage_stock; no debe tocar descripcion, precio, categoria, marca ni imagenes. - Decision lifecycle:
producto en PostgreSQL/OpenClaw y no en WooCommerce queda
CREATEconceptual; producto en ambos quedaUPDATE_STOCKoUPDATE_CATALOG; productoDE BAJAquedaDEACTIVATE; producto solo en WooCommerce quedaBLOCKED / MANUAL_REVIEW; no hay deletes automaticos. - Performance:
payload minimo para stock, sin payload completo ante cambios de stock,
meta_dataminima y no usada para filtros, busquedas u ordenamiento masivo; Woo native para frontend y PostgreSQL/OpenClaw para datos sensibles, economicos y analiticos. - Seguridad: sin API nueva, sin writes, sin tocar WooCommerce, PostgreSQL, VPS, Docker, sync, scheduler, cron ni pipelines durante el gate documental. Publicacion Git y deploy del Knowledge Portal ya completados posteriormente.
- Proximo gate recomendado:
reglas pre-write para
draftvshidden, categorias, marca, sin stock, sin precio, sin imagen, precio ecommerce/oferta,wc_product_idfuturo y payload dry-run final.
Business Observer - PDF-009C SOURCE-002 WooCommerce comparison dry-run¶
Etapa 17.5.113 - SOURCE-002 WooCommerce comparison dry-run¶
- Estado: publicado en
origin/mainy desplegado en Knowledge Portal al2026-06-22, comoPDF-009C VERDE TECNICO / READ-ONLY / WOOCOMMERCE VACIO ESPERADO / NO WRITES, con HEAD2bc2434143022e55a94e81f835bf926067173e88, HTTP local VPS200y HTTP publico200 - Objetivo formal:
comparar una muestra controlada de
SOURCE-002 Productoscontra WooCommerceLa Directaporsku, sin create/update/delete, sin SQL writes y sin sync. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-009C-SOURCE-002-WOOCOMMERCE-COMPARISON-DRY-RUN.md - Resultado:
credenciales WooCommerce presentes sin imprimir valores;
GET products per_page=5HTTP200, JSON valido y0productos; muestra SOURCE-002 de10SKUs desde snapshot local CSV validado por SHA256; lookups por SKU HTTP200ymatched_count=0para toda la muestra. - Decision:
catalogo WooCommerce vacio confirmado como condicion inicial esperada. SKUs
con stock positivo quedan
CREATEconceptual futuro; SKUs con stock0quedanBLOCKEDhasta cerrar politica comercial. No se detecto problema de API, autenticacion, permisos, visibilidad ni endpoint. - Arquitectura:
WooCommerce native first,meta_dataprivada minima yPostgreSQL onlypara costos, proveedor, descuentos, margenes, listas multiples y datos sensibles. No se requiere plugin ni endpoint custom. - Seguridad:
sin writes, sin modificar WooCommerce ni
La Directa, sin SQL, sin PostgreSQL write, sin secretos impresos y sin sync/scheduler/cron/pipelines durante el gate documental. Publicacion Git y deploy del Knowledge Portal ya completados posteriormente. - Proximo gate recomendado: reglas comerciales pre-write: mapping de categorias, marca como atributo o taxonomia, politica sin stock/sin precio/sin imagen, regla final de precio ecommerce/oferta y payload dry-run final.
Business Observer - PDF-009B WooCommerce read-only preflight¶
Etapa 17.5.112 - WooCommerce credentials/read-only dry-run preflight¶
- Estado: cerrada al
2026-06-22comoPDF-009B VERDE TECNICO / AMARILLO FUNCIONAL ESPERADO / READ-ONLY / NO WRITES - Objetivo formal:
documentar el resultado real del preflight read-only de credenciales y
acceso WooCommerce para
La Directa, usando solo evidencia no sensible ya ejecutada. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-009B-WOOCOMMERCE-READ-ONLY-PREFLIGHT.md - Resultado:
variables WooCommerce requeridas presentes sin valores, GET minimo HTTP
200, JSON valido, autenticacionOK, productsper_page=5HTTP200con0productos como condicion inicial esperada y lookups de SKUs0135y0128HTTP200conmatched_count=0, tambien esperados porque WooCommerceLa Directaesta limpio antes de la primera carga. - Decision:
cierre
VERDE TECNICOpor acceso read-only validado;AMARILLO FUNCIONAL ESPERADOporque el catalogo vacio es intencional y la comparacion contraSOURCE-002queda paraPDF-009C. No se detecto problema de API, autenticacion, permisos, visibilidad ni endpoint. - Seguridad:
sin API nueva durante el cierre documental, sin writes, sin PostgreSQL, sin
SQL, sin secretos impresos, sin
.env, sin modificar WooCommerce niLa Directa, sin push, sin deploy y sin sync/scheduler/cron/pipelines. - Proximo gate recomendado:
PDF-009C SOURCE-002 -> WooCommerce comparison dry-run / NO WRITES.
Business Observer - PDF-009A document drift cleanup¶
Etapa 17.5.111 - PDF-009A-DOC-DRIFT-CLEANUP¶
- Estado:
AMARILLO DOCUMENTALhasta validarmkdocs build --strict - Objetivo formal:
corregir drift documental previo a
PDF-009B, sin operar runtime ni crear gates nuevos. - Frente activo vigente:
SOURCE-002 Productos -> WooCommerce La Directa. - Ultimo gate vigente:
PDF-009A WooCommerce products mapping/API candidate. - Proximo gate obligatorio:
PDF-009B WooCommerce credentials/read-only dry-run preflight. - Aclaracion:
SOURCE-003,PDF-006Cy PostgreSQL staging se preservan como historial valido, pero no son el proximo paso actual. - Seguridad:
sin VPS, Docker, OpenClaw, NPM, Portainer, PostgreSQL, SQL, WooCommerce API,
secretos,
.env, sync, scheduler, cron, pipelines, deploy ni push.
Business Observer - PDF-009A WooCommerce products mapping API candidate¶
Etapa 17.5.110 - WooCommerce products mapping API candidate¶
- Estado: cerrada al
2026-06-21comoPDF-009A VERDE DOCUMENTAL / API CANDIDATE / WOOCOMMERCE NO TOCADO / SYNC NO-GO - Objetivo formal:
preparar el diseno de integracion futura de productos hacia
WooCommerce La DirectausandoSOURCE-002ya cargado en PostgreSQL productivo dedicado, sin ejecutar API real. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-009A-WOOCOMMERCE-PRODUCTS-MAPPING-API-CANDIDATE.md - Paquete candidate:
infra/business-observer/production/woocommerce/products/PDF-009A/ - Resultado:
mapping PostgreSQL -> WooCommerce, reglas funcionales, gaps, estrategia
create/update por SKU, idempotencia,
wc_product_idfuturo, dry-run, logs seguros, rollback logico, rate limits, paginacion y manejo de errores. - Seguridad:
WooCommerce API no tocada; sin secrets; sin SQL write; sin modificar
WooCommerce ni
La Directa; sin sync, scheduler, cron ni pipelines; sin staging, sandbox, CSV/JSONL, dumps, backups ni snapshots versionados. - Proximo gate recomendado:
PDF-009B WooCommerce credentials/read-only dry-run preflight, con API read-only solo si existe autorizacion explicita separada y writes todaviaNO-GO.
Business Observer - SOURCE-002 products controlled reload rehearsal¶
Etapa 17.5.109 - SOURCE-002 products controlled reload rehearsal¶
- Estado: cerrada al
2026-06-21comoPDF-008I-G VERDE / RELOAD REHEARSAL CONTROLADO / WOOCOMMERCE NO TOCADO / SYNC NO-GO - Objetivo formal:
documentar la ejecucion verde del retry de rehearsal
SOURCE-002 Productosposterior aPDF-008I-F, sin habilitar WooCommerce, sync, scheduler, cron ni pipelines. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-008I-G-SOURCE-002-PRODUCTS-CONTROLLED-RELOAD-REHEARSAL.md - Resultado:
preflight
PASS; RAWCOPY 314y upsert314; CORE314; derivedPASScon catalog/inventory/economic314; MARTSDELETE 100eINSERT 0 100; post-checksPASS. - Evidencia:
backup pre-rehearsal valido
20260621T123557ZSHA256acc27db5bbf8f98770b296a87e23e352eeeb300e57989b04b6919a7275ba9a2b, snapshot SHA256c961ffc2b352b6bb3dd0d59bf3d8b7c0f7facff58a9201f7cf45e290141b704f, JSONL SHA25630fb804deba1d6492622f1f64c78f6e2ecbd207fd9a9c3d75bef36b516919531, inventory snapshot date2026-06-21. - Seguridad: WooCommerce API no tocada; sync, scheduler, cron y pipelines no ejecutados; staging no fue target; sandbox no fue usado; sin secretos, dumps, backups, snapshots, JSONL ni CSV versionados durante el cierre documental.
- Proximo gate recomendado:
PDF-009A WooCommerce mapping/API candidate, con API WooCommerce y automatizaciones todavia bloqueadas salvo autorizacion separada.
Business Observer - SOURCE-002 derived snapshot date hotfix¶
Etapa 17.5.108 - SOURCE-002 derived snapshot date hotfix¶
- Estado: cerrada al
2026-06-21comoPDF-008I-F VERDE DOCUMENTAL-TECNICO / HOTFIX INVENTORY SNAPSHOT DATE / SIN EJECUCION - Objetivo formal:
corregir los scripts oficiales
PDF-008Hdespues delPDF-008I-E AMARILLO CONTROLADO / NO-GO, sin ejecutar SQL, carga,COPY, DML, rollback ni writes. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-008I-F-SOURCE-002-DERIVED-SNAPSHOT-DATE-HOTFIX.md - SQL candidates:
infra/business-observer/production/postgres/products/PDF-008H/ - Resultado:
inventory_source_002_daily_snapshotdeja de usar fecha hardcodeada en el script derived y pasa a recibirpdf008h_inventory_snapshot_dateobligatoria; los post-checks validan314filas por fecha explicita y batch, sin fallar por historico diario con mas de una fecha. - Seguridad:
sin SQL ejecutado, sin carga, sin
COPY, sin DML, sin WooCommerce API, sin sync, scheduler, cron, pipelines, write productivo, write staging ni sandbox; sin secretos, dumps, backups, snapshots, JSONL ni CSV en Git. - Proximo gate recomendado:
PDF-008I-G SOURCE-002 products controlled reload rehearsal retry, con autorizacion separada, fecha de snapshot explicita y WooCommerce/sync/ scheduler/cron/pipelines bloqueados.
Business Observer - SOURCE-002 official RAW copy backup param hotfix¶
Etapa 17.5.107 - SOURCE-002 official RAW copy backup param hotfix¶
- Estado: cerrada al
2026-06-21comoPDF-008I-D VERDE DOCUMENTAL-TECNICO / HOTFIX RAW COPY Y BACKUP PARAM / SIN EJECUCION - Objetivo formal:
corregir los scripts oficiales
PDF-008Hdespues delPDF-008I-C AMARILLO CONTROLADO / NO-GO PARA RELOAD, sin ejecutar SQL, carga,COPY, DML, rollback ni writes. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-008I-D-SOURCE-002-OFFICIAL-RAW-COPY-BACKUP-PARAM-HOTFIX.md - SQL candidates:
infra/business-observer/production/postgres/products/PDF-008H/ - Resultado:
\copyRAW usa el path literal controlado/tmp/pdf008f-source002-products.jsonl; el SHA del backup pre-rehearsal se recibe por variable explicita y se valida contra la confirmacion del gate, abortando si falta o no coincide. - Seguridad:
sin SQL ejecutado, sin carga, sin
COPY, sin DML, sin WooCommerce API, sin sync, scheduler, cron, pipelines, write productivo, write staging ni sandbox; sin secretos, dumps, backups, snapshots, JSONL ni CSV en Git. - Proximo gate recomendado:
PDF-008I-E SOURCE-002 products controlled reload rehearsal retry, con autorizacion separada y WooCommerce/sync/scheduler/cron/pipelines bloqueados.
Business Observer - SOURCE-002 official load scripts hotfix¶
Etapa 17.5.106 - SOURCE-002 official load scripts hotfix¶
- Estado: cerrada al
2026-06-21comoPDF-008I-B VERDE DOCUMENTAL-TECNICO / HOTFIX SCRIPTS OFICIALES / SIN EJECUCION - Objetivo formal:
corregir los scripts oficiales
PDF-008Hdespues delPDF-008I AMARILLO CONTROLADO / NO-GO PARA RELOAD, sin ejecutar SQL, carga,COPY, DML, rollback ni writes. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-008I-B-SOURCE-002-OFFICIAL-LOAD-SCRIPTS-HOTFIX.md - SQL candidates:
infra/business-observer/production/postgres/products/PDF-008H/ - Resultado:
guardas incondicionales reemplazadas por confirmaciones explicitas de target
productivo dedicado, rehearsal autorizado, snapshot SHA256, JSONL SHA256,
batch y backup pre-rehearsal; regla precio/costo corregida para tratar
NULL OR 0como sin precio/costo. - Seguridad:
sin SQL ejecutado, sin carga, sin
COPY, sin DML, sin WooCommerce API, sin sync, scheduler, cron, pipelines, write productivo, write staging ni sandbox; sin secretos, dumps, backups, snapshots, JSONL ni CSV en Git. - Proximo gate recomendado:
PDF-008I-C SOURCE-002 products controlled reload rehearsal retry, con autorizacion separada y WooCommerce/sync/scheduler/cron/pipelines bloqueados.
Business Observer - safe batched import runtime standard¶
Etapa 17.5.105 - Safe batched import runtime standard¶
- Estado: cerrada al
2026-06-21comoVERDE DOCUMENTAL / ESTANDAR OBLIGATORIO / SIN EJECUCION - Objetivo formal:
definir el estandar operativo seguro para futuras importaciones por lotes
desde fuentes
SGChacia PostgreSQL, antes de recargas, importadores Python productivos, sync, scheduler, cron o pipelines. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/IMPORT-RUNTIME-STANDARD-SAFE-BATCHED-IMPORTS.md - Resultado:
estandar
extract -> snapshot -> validate -> load, compatible conSQL Server 2012legacy y acceso read-only a vistas, con lotes conservadores, paginacion deterministica, timeouts, reintentos, pausas, snapshots fuera de Git, hashSHA256, conteos,batch_id, logs seguros, idempotencia, rollback batch-scoped y criteriosGO/NO-GO. - Seguridad:
sin SQL ejecutado, sin carga, sin
COPY, sin DML, sin WooCommerce API, sin sync, scheduler, cron, pipelines, write productivo, write staging ni sandbox; sin secretos, dumps, backups, snapshots, JSONL ni CSV. - Proximo gate recomendado:
PDF-008I SOURCE-002 products controlled reload rehearsal, usando este estandar como prerequisito y manteniendo WooCommerce/sync/scheduler/cron/ pipelines bloqueados salvo autorizacion futura explicita.
Business Observer - SOURCE-002 products official load scripts formalization¶
Etapa 17.5.104 - SOURCE-002 products official load scripts formalization¶
- Estado: cerrada al
2026-06-21comoPDF-008H VERDE DOCUMENTAL / SCRIPTS OFICIALES FORMALIZADOS / CANDIDATE / SIN EJECUCION - Objetivo formal:
formalizar en scripts versionados el SQL operativo temporal usado en
PDF-008F, tomando como referencia la ejecucion verde documentada enPDF-008G, sin ejecutar SQL ni cargas nuevas. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-008H-SOURCE-002-PRODUCTS-OFFICIAL-LOAD-SCRIPTS-FORMALIZATION.md - SQL candidates:
infra/business-observer/production/postgres/products/PDF-008H/ - Resultado:
paquete candidate oficial para preflight, RAW, CORE,
catalog/inventory/economic, MART, post-checks y rollback batch-scoped;
PDF-008Dqueda como referencia historica y tecnica, no como camino operativo recomendado para recarga. - Seguridad:
sin SQL ejecutado, sin carga, sin
COPY, sin DML, sin WooCommerce API, sin sync, scheduler, cron, pipelines, write productivo, write staging ni sandbox; sin secretos, dumps, backups, snapshots, JSONL ni CSV en Git. - Proximo gate recomendado:
PDF-008I SOURCE-002 products controlled reload rehearsal, con autorizacion separada, input/hash controlados y WooCommerce/sync/scheduler/cron/pipelines bloqueados salvo decision futura explicita.
Business Observer - SOURCE-002 products production initial load execution¶
Etapa 17.5.103 - SOURCE-002 products production initial controlled load¶
- Estado: cerrada al
2026-06-20comoPDF-008G VERDE / CARGA PRODUCTIVA INICIAL DOCUMENTADA / WOOCOMMERCE NO TOCADO / SYNC NO-GO - Objetivo formal:
documentar la ejecucion real verde de la carga inicial productiva
SOURCE-002 Productos, sin ejecutar operaciones nuevas durante el cierre documental. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-008G-SOURCE-002-PRODUCTS-PRODUCTION-INITIAL-LOAD-EXECUTION.md - Evidencia:
snapshot SHA256
c961ffc2b352b6bb3dd0d59bf3d8b7c0f7facff58a9201f7cf45e290141b704f,314filas,81columnas,314SKUs unicos,0duplicados SKU, JSONL operativo temporal SHA25630fb804deba1d6492622f1f64c78f6e2ecbd207fd9a9c3d75bef36b516919531y batch7dddfc3b-2026-48f0-8002-000000000008. - Resultado:
RAW
314, CORE314, catalog314, inventory current314, inventory daily snapshot314, economic314, mart stock alerts100, stock> 0212, stock= 0100, con precio/costo312, sin precio/costo2, alertas criticas0, post-checksPASS,PUBLICgrants0, objetos fuera de alcance0ySOURCE-003intacto con RAW1886, CORE1886, MART1/25/173/180. - Seguridad:
durante el cierre documental no se ejecuto SQL, carga,
COPY, DML, WooCommerce API, sync, scheduler, cron, pipelines, write productivo, write staging ni sandbox; no se leyeron secretos ni se documentaron connection strings reales; no se versionaron JSONL temporales, snapshots ni CSV. - Warning:
los scripts oficiales load
PDF-008Dsiguen bloqueados por diseno conRAISE EXCEPTION; antes de cualquier proceso repetible se debe formalizar el SQL operativo temporal dePDF-008Fdentro de scripts oficiales versionados. - Proximo gate recomendado:
PDF-008H SOURCE-002 products official load scripts formalization, con WooCommerce, sync, scheduler, cron y pipelines bloqueados salvo autorizacion futura separada.
Business Observer - SOURCE-002 products production DDL execution¶
Etapa 17.5.102 - SOURCE-002 products production DDL execution¶
- Estado: cerrada al
2026-06-20comoPDF-008E VERDE / DDL PRODUCTIVO EJECUTADO / TABLAS VACIAS / NO LOAD - Objetivo formal:
documentar la ejecucion real verde del DDL
SOURCE-002 Productosen PostgreSQL productivo dedicado, sin ejecutar operaciones nuevas durante el cierre documental. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-008E-SOURCE-002-PRODUCTS-PRODUCTION-DDL-EXECUTION.md - Evidencia:
backup pre-DDL fuera de Git con SHA256
b95b724437f210f2ea67cc8e4581ee0481b137c2c044843d187e006eeb165812, tamanio778589bytes ypg_restore --list PASScon92lineas. - Resultado:
preflight DDL
GO, forward DDLCOMMIT, post-checksPASS, siete tablasSOURCE-002creadas y vacias, owneropenclaw_bo_prod_owner, grants esperados para writer/reader/reporting_ro,PUBLICsin grants ySOURCE-003intacto con RAW1886, CORE1886, MART1/25/173/180. - Seguridad:
durante el cierre documental no se ejecuto SQL, carga,
COPY, DML, WooCommerce API, sync, scheduler, cron, pipelines, write productivo, write staging ni sandbox; no se leyeron secretos ni se documentaron connection strings reales. - Proximo gate recomendado:
PDF-008F SOURCE-002 products initial controlled load, con WooCommerce, sync, scheduler, cron y pipelines bloqueados salvo autorizacion futura separada.
Business Observer - SOURCE-002 products DDL/load candidate¶
Etapa 17.5.101 - SOURCE-002 products DDL/load candidate¶
- Estado: preparada al
2026-06-20comoPDF-008D DDL/LOAD CANDIDATE / NO LOAD / NO SQL / WOOCOMMERCE NO TOCADO - Objetivo formal:
preparar el paquete DDL/load candidate controlado de
SOURCE-002 Productosdesde la evidencia runtimePDF-008C, sin ejecutar carga ni tocar PostgreSQL o WooCommerce. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-008D-SOURCE-002-PRODUCTS-DDL-LOAD-CANDIDATE.md - SQL candidates:
infra/business-observer/production/postgres/products/PDF-008D/ - Resultado:
modelo candidate para
raw_source_002_products,core_source_002_products,catalog_source_002_products,inventory_source_002_current,inventory_source_002_daily_snapshot,economic_source_002_productsymart_source_002_stock_alerts, con scripts.candidate.sqlde DDL, load futuro y rollback. - Seguridad:
sin DDL ejecutado, sin carga, sin
COPY, sin DML, sin sync, scheduler, cron, pipelines, sandbox, WooCommerce API, write productivo ni write staging; sin secretos impresos o documentados. - Proximo gate recomendado:
PDF-008Epara ejecutar, si se aprueba explicitamente, solo el DDL productivo con preflight y post-checks; la carga real queda para un gate posterior separado.
Business Observer - SOURCE-002 products runtime preflight snapshot¶
Etapa 17.5.100 - SOURCE-002 products runtime preflight snapshot¶
- Estado: cerrada al
2026-06-20comoPDF-008C VERDE / RUNTIME PREFLIGHT READ-ONLY / SNAPSHOT EVIDENCE / NO LOAD - Objetivo formal:
ejecutar preflight runtime real de
SOURCE-002 Productoscontra SGC con lectura segura de.envautorizada, generar snapshot fuera de Git y documentar evidencia no sensible. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-008C-SOURCE-002-PRODUCTS-RUNTIME-PREFLIGHT-SNAPSHOT.md - Resultado:
314productos,81columnas,314activos,212con stock> 0,100con stock= 0,312con precio/costo,314con proveedor,49marcas unicas y0SKUs duplicados. - Snapshot:
fuera de Git en
snapshots/source-002/, filas314, columnas81, SHA256c961ffc2b352b6bb3dd0d59bf3d8b7c0f7facff58a9201f7cf45e290141b704f. - Seguridad:
sin carga, sin
COPY, sin DML, sin sync, scheduler, cron, pipelines, sandbox, WooCommerce API, write productivo ni write staging; sin secretos impresos o documentados. - Proximo gate recomendado:
PDF-008Dcandidate DDL/load controlado desde snapshot runtime, sin ejecutar carga.
Business Observer - SOURCE-002 products full use-case preflight¶
Etapa 17.5.99 - SOURCE-002 products full use-case preflight¶
- Estado: documentada al
2026-06-20comoPDF-008B DOCUMENTED / READ-ONLY / NO LOAD / SNAPSHOT PENDING_AUTHORIZATION - Objetivo formal:
ampliar
SOURCE-002 Productosmas alla del catalogo WooCommerce y relevar todos los usos previstos antes de cualquier carga final. - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-008B-SOURCE-002-PRODUCTS-FULL-USE-CASE-PREFLIGHT.md - Resultado:
matriz de usos para WooCommerce, stock actual, snapshot diario, faltantes,
capa economica e integracion con ventas
SOURCE-003; diseno por fases para raw/core/catalog/inventory/mart/economic. - Seguridad:
sin carga, sin SQL operativo, sin
COPY, sin DML, sin sync, scheduler, cron, pipelines, sandbox, WooCommerce API ni cambios enLa Directa. - Proximo gate recomendado:
PDF-008Cruntime preflight read-only y snapshot evidence, solo con credenciales seguras disponibles sin imprimir secretos.
Business Observer - SOURCE-002 products WooCommerce-ready candidate¶
Etapa 17.5.98 - SOURCE-002 products WooCommerce-ready candidate¶
- Estado: preparada al
2026-06-20comoPDF-008A PREPARED / SOURCE-002 PRODUCTS CANDIDATE / NO LOAD - Objetivo formal:
preparar el frente
SOURCE-002 Productospara una futura carga controlada hacia PostgreSQL produccion y posterior integracion conWooCommerce La Directa, sin ejecutar SQL ni tocar WooCommerce - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-008A-SOURCE-002-PRODUCTS-WOOCOMMERCE-READY-CANDIDATE.md - SQL candidates:
infra/business-observer/production/postgres/products/PDF-008A/ - Resultado:
autoridad SQL existente, mapping conceptual existente, gaps WooCommerce
documentados y candidate productivo
raw -> core -> catalogpreparado - Seguridad:
sin SQL ejecutado, sin carga, sin
COPY, sin DML, sin sync, scheduler, cron, pipelines, sandbox, secrets, WooCommerce API ni cambios enLa Directa - Proximo gate recomendado:
PDF-008Bpreflight read-only de autoridadSOURCE-002, target productivo, conteos esperados, duplicadossku, columnas reales y snapshot/hash fuera de Git.
Business Observer - SOURCE-003 production initial load execution¶
Etapa 17.5.97 - SOURCE-003 production initial controlled load¶
- Estado: cerrada al
2026-06-20comoPDF-007D VERDE / SOURCE-003 PROD LOADED / SYNC NO-GO - Objetivo formal:
documentar la ejecucion real verde de la carga inicial productiva
controlada
SOURCE-003en PostgreSQL productivo dedicado, sin ejecutar operaciones nuevas durante el cierre documental - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-007D-SOURCE-003-PRODUCTION-INITIAL-LOAD-EXECUTION.md - Target:
openclaw-business-observer-postgres-prod/openclaw_business_observer_prod - Evidencia:
baseline prod fuera de Git con sha256
d66a1c2636ab7f7d03f40f2abb4d6f8d10b63acf218dcd1b8e27c2ff580252a8, snapshotSOURCE-003-SNAPSHOT-001con sha25607092c284b5b636b8a31cd616ef5b4fa5d0ce499b81c767437842b1f7edfcbc3, CSV preparado/tmp/pdf007a-source003-prepared.csvcon sha2567109dc33673441be9989e4da11fc9e62f0e7938a583f0a2881ec1859a0fce18d - Resultado:
batch
8a640ec6-6135-4920-a90f-b07d986e9a23, RAW1886, CORE1886, MART daily/seller/customer/sku1/25/173/180, importe total48087486.8300, CMV total37881269.3025, bad hashes0, emptyline_key0, badline_sequence0,PUBLICgrants0, objetos fuera de alcance0 - Seguridad:
durante el cierre documental no se ejecuto SQL, carga,
COPY, DML, cleanup, sync, scheduler, cron, pipelines, write productivo, write staging ni sandbox; no se crearon backups, dumps ni snapshots - Riesgos vigentes:
line_key_v4AMARILLO ACEPTADO; target legacy stagingLEGACY_EMPTY_TARGET / PENDING_CLEANUP - Proximo frente recomendado:
abrir
SOURCE-002 Productoscon autorizacion separada.
Business Observer - SOURCE-003 production dedicated PostgreSQL¶
Etapa 17.5.96 - SOURCE-003 production dedicated PostgreSQL provisioning¶
- Estado: cerrada al
2026-06-20comoPDF-007B2 VERDE / DEDICATED POSTGRES EMPTY / NO LOAD - Objetivo formal: corregir la arquitectura productiva antes de cargar datos, separando produccion del contenedor staging y dejando target productivo dedicado, vacio, validado y respaldado
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-007B2-SOURCE-003-PRODUCTION-DEDICATED-POSTGRES-PROVISIONING.md - Resultado:
openclaw-business-observer-postgres-prodhealthy, imagenpostgres:16.14-alpine, volumenopenclaw_business_observer_prod_data, redopenclaw-bo-prod-internal,PortBindings {}, DBopenclaw_business_observer_prod, schemabusiness_observer, roles prodNOLOGIN, tablasSOURCE-0037/7, conteos0/0/0/0/0/0/0 - Baseline:
/opt/backups/openclaw/business-observer-prod/postgres/baseline/20260620T192631Z/openclaw-bo-prod-postgres-baseline-20260620T192631Z.dumpcon sha256d66a1c2636ab7f7d03f40f2abb4d6f8d10b63acf218dcd1b8e27c2ff580252a8 - Seguridad:
sin carga, sin
COPY, sin DML de negocio, sin sync, scheduler, cron, pipelines, sandbox, OpenClaw, NPM, DNS ni Portainer - Proximo frente recomendado:
abrir
PDF-007Cpara preflight de carga inicial productiva controlada, con autorizacion separada antes de cualquierCOPYo DML.
Business Observer - SOURCE-003 production controlled preparation¶
Etapa 17.5.95 - SOURCE-003 production controlled preparation¶
- Estado: preparada al
2026-06-20comoPDF-007A PREPARED / PRODUCTION NOT EXECUTED - Objetivo formal:
preparar el gate controlado para llevar
SOURCE-003a produccion en una etapa futura, reutilizando DDL/load candidates validados en staging sin ejecutar DDL, carga,COPY, DML ni automatizaciones - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-007A-SOURCE-003-PRODUCTION-CONTROLLED-PREPARATION.md - SQL candidates:
infra/business-observer/production/postgres/ddl/PDF-007A/yinfra/business-observer/production/postgres/load/PDF-007A/ - Resultado: staging queda verde como referencia; produccion visible queda sin target Business Observer detectado, sin DB/roles productivos detectados y sin backup productivo vigente evidenciado
- Seguridad:
sin DDL, carga,
COPY,INSERT/UPDATE/DELETE/TRUNCATE, sync, scheduler, cron, pipelines, write productivo, sandbox, backups, dumps, snapshots ni secretos - Proximo frente recomendado:
abrir
PDF-007Bpara baseline/target productivo y backup inicial antes de cualquier DDL o carga real.
Business Observer - SOURCE-003 staging initial load execution documented¶
Etapa 17.5.94 - SOURCE-003 staging initial controlled load execution¶
- Estado: cerrada al
2026-06-19comoEJECUCION STAGING DOCUMENTADA / VERDE / PRODUCCION NO-GO - Objetivo formal:
documentar la ejecucion real verde de
PDF-006C SOURCE-003 staging initial controlled load, sin ejecutar operaciones nuevas durante el cierre documental - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-006D-SOURCE-003-STAGING-INITIAL-LOAD-EXECUTION.md - Resultado:
- backup post-DDL validado con SHA256
e7f6afb319b1ef365f45b107226dec3c579922902623c6c5afeba367ab6acc8d - snapshot autorizado
SOURCE-003-SNAPSHOT-001con SHA25607092c284b5b636b8a31cd616ef5b4fa5d0ce499b81c767437842b1f7edfcbc3 - CSV preparado
/tmp/pdf006c-source003-prepared.csvcon SHA2563f16a957a79fc84d4ca37930988287cb81f05166210d057fcf8b45007f184afe - batch
1827f887-9499-4579-b4f3-234d54f41f7f - RAW
1886, CORE1886, MART daily/seller/customer/sku1/25/173/180 - importe total
48087486.8300, CMV total37881269.3025 - bad hashes
0, emptyline_key0, badline_sequence0,PUBLICgrants0, objetos fuera de alcance0 - Seguridad:
sin SQL, carga,
COPY,INSERT/UPDATE/DELETE/TRUNCATE, sync, scheduler, pipelines, produccion, sandbox, snapshot nuevo, backup nuevo, dumps, secretos ni connection strings reales durante este cierre documental - Riesgo vigente:
line_key_v4AMARILLO ACEPTADO - Proximo frente recomendado:
abrir gate separado de preparacion produccion controlada; produccion, sync
diaria, scheduler y pipelines siguen
NO-GO.
Business Observer - PDF-006C raw copy path hotfix¶
Etapa 17.5.93 - SOURCE-003 staging RAW copy path hotfix¶
- Estado: cerrada al
2026-06-19comoHOTFIX CONTROLADO / RAW COPY PATH CORREGIDO / NO LOAD - Objetivo formal:
corregir el script RAW candidate de
PDF-006Cque fallo en el\copypor resolucion de path, sin ejecutar carga real ni SQL operativo - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-006C-SOURCE-003-STAGING-INITIAL-LOAD-EXECUTION-PACKAGE.md - Archivo corregido:
infra/business-observer/staging/postgres/load/PDF-006C/002-source-003-initial-load-raw-execution.candidate.sql - Resultado:
- el
\copyRAW deja de usarFROM :'pdf006c_prepared_csv_path' - el
\copyRAW usa el path controlado dentro del contenedor/tmp/pdf006c-source003-prepared.csv - se preservan guardas de staging, snapshot, SHA256,
1886filas,68columnas,sync_batch_id, tablas vacias e idempotencia - Seguridad:
sin SQL operativo ejecutado, sin carga, sin
COPY, sinINSERT/UPDATE/DELETE/TRUNCATE, sin rollback, sin tocar PostgreSQL staging, produccion, sandbox, sync, scheduler, pipelines, secretos ni CSV en Git - Proximo frente recomendado:
reintentar
PDF-006Cdesde safe point limpio, validando antes que el CSV preparado exista dentro del contenedor con SHA256 autorizado.
Business Observer - SOURCE-003 staging load execution package prepared¶
Etapa 17.5.92 - SOURCE-003 staging initial load execution package¶
- Estado: cerrada al
2026-06-19comoEXECUTION PACKAGE PREPARADO / NO LOAD - Objetivo formal:
preparar y publicar
PDF-006Ccon scripts candidate ejecutables para una futura carga inicial controlada deSOURCE-003en PostgreSQL staging, sin ejecutar carga real ni SQL operativo - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-006C-SOURCE-003-STAGING-INITIAL-LOAD-EXECUTION-PACKAGE.md - SQL candidates:
infra/business-observer/staging/postgres/load/PDF-006C/ - Resultado:
SAFE POINTobservado en56de612f1864ac2c38edc62817bbe5c1eb25721e- snapshot autorizado
SOURCE-003-SNAPSHOT-001preservado con1886filas,68columnas y hash07092c284b5b636b8a31cd616ef5b4fa5d0ce499b81c767437842b1f7edfcbc3 - paquete candidate creado para preflight, RAW, CORE, MART, post-checks y rollback
line_key_v4preservado comoAMARILLO ACEPTADO- Seguridad:
sin SQL operativo ejecutado, sin carga, sin
COPY, sinINSERT/UPDATE/DELETE/TRUNCATE, sin snapshot nuevo, backup nuevo, sync, scheduler, pipelines, produccion, sandbox, secretos ni CSV en Git - Proximo frente recomendado:
abrir un gate separado con autorizacion explicita para ejecutar la carga
inicial controlada
SOURCE-003en staging usandoPDF-006C; cualquier sync diaria, scheduler, pipeline o produccion sigueNO-GO.
Business Observer - SOURCE-003 staging snapshot preflight documented¶
Etapa 17.5.91 - SOURCE-003 staging snapshot preflight¶
- Estado: cerrada al
2026-06-19comoSNAPSHOT + PREFLIGHT OPERATIVO DOCUMENTADO - Objetivo formal:
documentar
PDF-006Bcon evidencia local, VPS, backup post-DDL vigente, staging preflight read-only y validacion del snapshot autorizadoSOURCE-003-SNAPSHOT-001, sin ejecutar carga ni SQL - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-006B-SOURCE-003-STAGING-SNAPSHOT-PREFLIGHT.md - Resultado:
SAFE POINTobservado en64ef07a6c2240c29ef9e8beda09e00220a48694e- staging confirmado documentalmente con
7/7tablas presentes y vacias - backup post-DDL vigente validado fuera de Git
- snapshot congelado local validado con
1886filas,68columnas, sha25607092c284b5b636b8a31cd616ef5b4fa5d0ce499b81c767437842b1f7edfcbc3y mapping68/68 - resultado
GOpara abrir futuro gatePDF-006C - resultado
NO-GOpara cargar datos enPDF-006B - Seguridad:
sin SQL, sin tocar PostgreSQL staging, sin carga, sin
COPY, sinINSERT/UPDATE/DELETE/TRUNCATE, sin snapshot nuevo, backup nuevo, dump, sync, scheduler, pipelines, produccion, sandbox, secretos, CSV ni backups en Git - Proximo frente recomendado:
abrir
PDF-006Csolo con autorizacion explicita para carga inicial controlada deSOURCE-003en staging, con SAFE POINT propio, snapshot confirmado, conteos esperados, rollback y evidencia post-load.
Business Observer - SOURCE-003 staging initial load candidate prepared¶
Etapa 17.5.90 - SOURCE-003 staging initial load candidate¶
- Estado: cerrada al
2026-06-19comoINITIAL LOAD CANDIDATE PREPARADO - Objetivo formal:
preparar documentalmente
PDF-006Ay scripts candidate para una futura carga inicial controlada deSOURCE-003en PostgreSQL staging, sin ejecutar carga real ni SQL operativo - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-006A-SOURCE-003-STAGING-INITIAL-LOAD-CANDIDATE.md - SQL candidates:
infra/business-observer/staging/postgres/load/PDF-006A/ - Resultado:
SAFE POINTobservado enf6cfecc7490936b6a88518e24643df4775ce9f6bPDF-006Ano existia previamente- no habia paquete aprobado para carga inicial
SOURCE-003staging - candidate preparado para estrategia
raw -> core -> mart - scripts de escritura y rollback quedan bloqueados por defecto hasta gate separado
- conteos esperados reales quedan
BLOCKED_UNTIL_SNAPSHOT_AUTHORIZATION - Seguridad:
sin SQL operativo ejecutado, sin carga, sin
COPY, sinINSERT/UPDATE/DELETE/TRUNCATE, sin sync, scheduler, pipelines, produccion, sandbox, secretos, backups, dumps, commit, push ni deploy - Proximo frente recomendado: abrir gate separado con autorizacion explicita para ejecutar preflight operativo y, solo si se aprueba en esa misma tarea, la carga inicial controlada con snapshot, hash, conteos y rollback aceptados.
Business Observer - SOURCE-003 staging target tables DDL execution documented¶
Etapa 17.5.89 - SOURCE-003 staging target tables DDL execution¶
- Estado: cerrada al
2026-06-19comoDDL SOURCE-003 STAGING DOCUMENTADO - Objetivo formal:
documentar y publicar la ejecucion real previa del DDL
PDF-005Bsobre PostgreSQL staging, sin ejecutar SQL nuevo ni tocar runtime - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-005C-SOURCE-003-STAGING-TARGET-TABLES-DDL-EXECUTION.md - Resultado:
SAFE POINTobservado en7a082352b699489c09ee3400c82d11782c07548b- preflight SQL
PDF-005B:PASS / GO - forward DDL
PDF-005B:COMMIT - hotfix del post-check oficial publicado
- post-check oficial corregido:
COMMIT - tablas destino
SOURCE-003creadas:7/7 - row counts:
7/7tablas con0filas - owner
openclaw_bo_staging_owner - grants esperados para writer, reader y reporting;
PUBLICsin grants - Seguridad:
produccion no usada,
openclaw-postgres-sandboxno usado, sin cargaSOURCE-003, sinCOPY, sin sync, scheduler, pipelines, backup nuevo, dumps, secretos ni connection strings reales durante este cierre documental - Proximo frente recomendado:
abrir gate separado para preflight/carga inicial controlada de
SOURCE-003en staging, con autorizacion explicita y evidencia propia; produccion, sync diaria, scheduler y pipelines siguenNO-GO.
Business Observer - SOURCE-003 staging target tables DDL candidate prepared¶
Etapa 17.5.88 - SOURCE-003 staging target tables DDL candidate¶
- Estado: cerrada al
2026-06-19comoDDL CANDIDATE PREPARADO - Objetivo formal:
preparar documentalmente el gate
PDF-005Bpara crear tablas destinoSOURCE-003en PostgreSQL staging, sin ejecutar SQL - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-005B-SOURCE-003-STAGING-TARGET-TABLES-DDL-CANDIDATE.md - SQL candidates:
infra/business-observer/staging/postgres/ddl/PDF-005B/ - Resultado:
SAFE POINTobservado en7c62eda9512d761b6d13be9efff5263f380d39d1PDF-005Bno existia previamente- no habia DDL candidate aprobado para ejecucion en staging
- candidate preparado para
source_003_sales_items,raw_source_003_sales_items,core_source_003_sales_itemsy cuatro MARTSOURCE-003 - roles staging preservados:
openclaw_bo_staging_owner,openclaw_bo_staging_writer,openclaw_bo_staging_reader,openclaw_bo_staging_reporting_ro - backup post-DDL informado fuera de Git referenciado con hash
e7f6afb319b1ef365f45b107226dec3c579922902623c6c5afeba367ab6acc8d - Seguridad:
sin SQL ejecutado, sin carga, sin
COPY, sin sync, sin scheduler, sin pipelines, sin produccion, sin sandbox, sin secretos, sin backups en Git, sin commit, push ni deploy - Proximo frente recomendado:
abrir una tarea separada con autorizacion explicita para ejecutar solo el
DDL
PDF-005Ben staging, luego validar7/7tablas vacias antes de cualquier carga real.
Business Observer - SOURCE-003 staging initial load candidate/preflight prepared¶
Etapa 17.5.87 - SOURCE-003 staging initial load candidate/preflight¶
- Estado: cerrada al
2026-06-19comoCANDIDATE PREFLIGHT PREPARADO - Objetivo formal:
preparar documentalmente el proximo gate para backup post-DDL y carga
inicial controlada futura de
SOURCE-003en PostgreSQL staging - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-005A-SOURCE-003-STAGING-INITIAL-LOAD-CANDIDATE-PREFLIGHT.md - Resultado:
SAFE POINTobservado en9d413098856ae3f6bee438fc1f6f5012cae956ed- target staging esperado documentado sin secretos
- backup post-DDL marcado como requerido y no ejecutado
- validaciones read-only previas, criterios
GO/NO-GO, evidencias y rollback esperado definidos para una tarea futura - Source Authority V2 y mapping activo referenciados como autoridades
- Seguridad:
sin
VPS, Docker, OpenClaw, NPM, Portainer, PostgreSQL staging, produccion, sandbox, SQL, backup real, carga, sync, scheduler, pipelines, push ni deploy - Proximo frente recomendado:
abrir tarea operativa separada para ejecutar backup post-DDL real y
preflight read-only de
SOURCE-003staging solo con autorizacion explicita; carga real, produccion y sync diaria siguenNO-GO.
Business Observer - staging DDL executed¶
Etapa 17.5.86 - Staging DDL execution¶
- Estado: cerrada al
2026-06-19comoDDL STAGING REAL EJECUTADO - Objetivo formal:
ejecutar el DDL base de
Business Observersobre PostgreSQL staging real usando exclusivamente los SQL candidates dePDF-004F - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-004G-DDL-BUSINESS-OBSERVER-STAGING-EXECUTION.md - Resultado:
SAFE POINTreal observado en170d6520dfff967155d7c1879d03e7246ff9bb02- staging
running healthyconHostConfig.PortBindings = {} - backup baseline y restore drill previos aceptados
- DB
openclaw_business_observer_stagingcreada - schema
business_observercreado con owneropenclaw_bo_staging_owner - roles staging
NOLOGINcreados:openclaw_bo_staging_owner,openclaw_bo_staging_writer,openclaw_bo_staging_reader,openclaw_bo_staging_reporting_ro - permisos minimos y default privileges validados
- tablas de negocio creadas:
0 - sandbox
openclaw-postgres-sandboxpreservadorunning healthy - Seguridad:
sin secrets, sin connection strings, sin rollback, sin
SOURCE-003, sin sync/scheduler, sin tocarLa Directa,SGC, push ni deploy - Proximo frente recomendado:
backup post-DDL y candidate/preflight para carga controlada inicial de
SOURCE-003en staging; produccion y sync diaria siguenNO-GO.
Business Observer - staging DDL candidate preflight prepared¶
Etapa 17.5.85 - Staging DDL candidate preflight¶
- Estado: cerrada al
2026-06-19comoCANDIDATE PREFLIGHT PREPARADO - Objetivo formal:
preparar el candidate/preflight final para ejecutar en una etapa futura el
DDL base de
Business Observersobre PostgreSQL staging real - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-004F-DDL-BUSINESS-OBSERVER-STAGING-CANDIDATE-PREFLIGHT.md - Paquete SQL candidate:
infra/business-observer/staging/postgres/ddl/PDF-004F/ - Resultado:
SAFE POINTreal observado end7cdadd552d2709c106b2a7831898dc43751ae89- staging
running healthyconHostConfig.PortBindings = {} - backup baseline
present - restore drill
PASSya documentado - sandbox
openclaw-postgres-sandboxrunning healthy - preflight catalogo con
transaction_read_only=on - DB
openclaw_business_observer_staging, schemabusiness_observery roles staging de negocio siguen ausentes - candidate creado sin passwords, sin roles
LOGIN, sin connection strings y sin tablas - Seguridad:
sin
DDL, sinDML, sin imprimir secretos, sin guardar dumps/backups/env en Git, sin tocar sandbox,La Directa,SGC, push ni deploy - Proximo frente recomendado:
PDF-004Gejecucion DDL real solo con autorizacion explicita separada; produccion y sync diaria siguenNO-GO.
Business Observer - staging Postgres restore drill executed¶
Etapa 17.5.84 - Staging Postgres restore drill¶
- Estado: cerrada al
2026-06-19comoRESTORE DRILL REAL EJECUTADO - Objetivo formal:
ejecutar un restore drill real del backup baseline PostgreSQL staging
Business Observeren un entorno temporal aislado del VPS - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-004E-STAGING-POSTGRES-RESTORE-DRILL.md - Resultado:
SAFE POINTreal observado en8f0313d77d8bb64715d3fc98219edff44a44173c- backup baseline confirmado con tamano
1032 bytesy sha256402dce45fe93936b12f17a54ee437d637b3c573d02a3ff5c506d83e48a3860c4 pg_restore --list:total_lines=15 metadata_lines=15 toc_entries=0- entorno temporal:
openclaw-bo-postgres-restore-drill-20260619T170037Z,openclaw_bo_postgres_restore_drill_20260619T170037Z_data,openclaw-bo-restore-drill-20260619T170037Z-internal - red temporal interna sin puertos host;
HostConfig.PortBindings = {} - restore final
pg_restoreconexit_code=0 toc_entries=0consistente con baseline bootstrap sin objetos de negocio- cleanup completo sin recursos temporales remanentes
- staging principal
running healthy, sin DB/schema/roles de negocio - sandbox
openclaw-postgres-sandboxrunning healthy - Seguridad:
sin
DDL, sinDML, sin imprimir secretos, sin guardar backups en Git, sin tocar sandbox,La Directa,SGC, runtimeO4, push ni deploy - Proximo frente recomendado:
PDF-004F DDL business observer candidate/preflight; ejecucion DDL, produccion y sync diaria siguenNO-GO.
Business Observer - staging Postgres backup baseline executed¶
Etapa 17.5.83 - Staging Postgres backup baseline execution¶
- Estado: cerrada al
2026-06-19comoBASELINE BACKUP EJECUTADO - Objetivo formal:
ejecutar el primer backup baseline logico real del PostgreSQL
staging-vpsdeBusiness Observerantes de cualquierDDLde negocio - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-004D-STAGING-POSTGRES-BACKUP-BASELINE-EXECUTION.md - Resultado:
SAFE POINTreal observado enffc2b86ac75ef7ea2d5830226b3094e85b87794c- backup fuera de Git:
/opt/backups/openclaw/business-observer-staging/postgres/baseline/20260619T170037Z/ - filename:
openclaw-bo-staging-postgres-baseline-20260619T170037Z.dump - formato
pg_dump -Fcsobre DB bootstrappostgres - tamano
1032 bytes - sha256
402dce45fe93936b12f17a54ee437d637b3c573d02a3ff5c506d83e48a3860c4 - permisos restrictivos confirmados:
directorio
700, backup/checksum600 pg_restore --listlegible:total_lines=15 metadata_lines=15 toc_entries=0- staging
running healthyconHostConfig.PortBindings = {} - sandbox
openclaw-postgres-sandboxrunning healthy - DB/schema/roles de negocio siguen ausentes
- Seguridad:
sin
DDL, sinDML, sin imprimir secretos, sin leer secret file, sin guardar backup en Git y sin tocar sandbox,La Directa,SGC, runtimeO4, push ni deploy - Proximo frente recomendado:
PDF-004E restore drill;PDF-004DDL negocio sigueNO-GOhasta restore drill completado y autorizacion explicita.
Business Observer - staging Postgres real target read-only preflight¶
Etapa 17.5.82 - Staging Postgres real target read-only preflight¶
- Estado: cerrada al
2026-06-19comoREAD-ONLY PREFLIGHT COMPLETADO - Objetivo formal:
validar el target PostgreSQL
staging-vpsreal ya provisionado sin tocar datos ni crear objetos de negocio - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-004C-STAGING-POSTGRES-REAL-TARGET-READONLY-PREFLIGHT.md - Resultado:
SAFE POINTreal observado en04feb71ce2d1523e613bbf1ca678493648c95585- target real confirmado:
openclaw-business-observer-postgres-staging - host
srv977009 - contenedor
running healthy - network
openclaw-bo-staging-internalinternal=true - volume
openclaw_bo_postgres_staging_data - host port
5432no publicado;HostConfig.PortBindings = {} - secret file validado solo por
statcon600 root:root - acceso de catalogo validado con
psqlpor socket interno ytransaction_read_only = on - DBs visibles:
postgres,template0,template1 - DB staging/prod de negocio ausentes
- schema
business_observerausente - roles staging de negocio ausentes
- sandbox
openclaw-postgres-sandboxpreservado e intocado - Seguridad:
sin
CREATE DATABASE, sinCREATE ROLE, sinCREATE SCHEMA, sin tablas, sinALTER/GRANT/REVOKE/DROP, sinINSERT/UPDATE/DELETE/COPY/TRUNCATE, sin leer contenido del secret file y sin exponer passwords - Proximo frente recomendado:
PDF-004D backup baseline execution, luegoPDF-004E restore drill;PDF-004DDL negocio sigueNO-GOhasta autorizacion explicita posterior al baseline real.
Business Observer - staging Postgres stack provisioned¶
Etapa 17.5.81 - Staging Postgres stack provisioning¶
- Estado: cerrada al
2026-06-19comoPROVISIONED / HEALTHY - Objetivo formal:
provisionar el stack PostgreSQL
staging-vpsreal deBusiness Observercreando solo infraestructura Docker - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-004B-STAGING-POSTGRES-STACK-PROVISIONING.md - Resultado:
SAFE POINTreal observado en7b07c6e4b7d856224f8ea1bc992c7762fc5d39c2- stack activo en
/opt/stacks/business-observer-staging - contenedor
openclaw-business-observer-postgres-staginghealthy - network
openclaw-bo-staging-internalcreada - volume
openclaw_bo_postgres_staging_datacreado - secret file creado fuera de Git
- host port
5432no publicado - bootstrap catalog
postgres; DB de negocio todavia ausente - sandbox
openclaw-postgres-sandboxpreservado y healthy - Bloqueos preservados:
sin
CREATE DATABASE openclaw_business_observer_staging, sin roles, schema, tablas, grants, sync/scheduler, push ni deploy - Proximo frente recomendado:
abrir una tarea separada solo si se autoriza el
DDLde negocio sobre este target real; produccion y sync diaria siguenNO-GO.
Business Observer - staging Postgres stack preflight plan prepared¶
Etapa 17.5.80 - Staging Postgres stack preflight plan¶
- Estado: cerrada al
2026-06-19comoPREFLIGHT + PLAN OPERATIVO - Objetivo formal:
preparar la implementacion completa de un PostgreSQL
staging-vpsreal paraBusiness Observer, sin crearlo todavia - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-004A-STAGING-POSTGRES-STACK-PREFLIGHT-PLAN.md - Candidates:
infra/business-observer/staging/postgres/docker-compose.business-observer-staging.candidate.ymlinfra/business-observer/staging/postgres/.env.business-observer-staging.example- Resultado:
SAFE POINTreal observado enba941b6562de20e8a65c830aef2c6b2fa8573b73- preflight read-only del VPS ejecutado sin SQL ni cambios runtime
openclaw-postgres-sandboxconfirmado existente y excluido como staging real- no se detectaron colisiones para container, volumen, red ni path propuestos
- ruta candidata:
/opt/stacks/business-observer-staging - network candidata:
openclaw-bo-staging-internal - volume candidato:
openclaw_bo_postgres_staging_data - host port
5432no publicado - Bloqueos preservados:
sin crear contenedor, volumen, red, DB, roles, schemas ni tablas; sin
ejecutar SQL,
docker compose up, sync/scheduler, push ni deploy - Proximo frente recomendado:
PDF-004Bsolo con autorizacion explicita para provisioning del stack y secretos creados fuera de Git;PDF-004DDL sigueNO-GOhasta fingerprint, backup/restore y observabilidad minima.
Business Observer - staging fingerprint read-only evidence blocked¶
Etapa 17.5.79 - Staging fingerprint read-only evidence¶
- Estado: cerrada al
2026-06-19con dictamenBLOCKED - Objetivo formal:
registrar evidencia no sensible del fingerprint y del acceso read-only del
target real de
staging-vpssin tocar runtime - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-003F-B-STAGING-FINGERPRINT-READONLY-EVIDENCE.md - Resultado:
SAFE POINTreal observado en3656f5ae185520bfa5e038467d9e383102fbf940- evidencia publicada con estado:
BLOCKED / READ-ONLY EVIDENCE / NO DDL / NO SECRETS / PDF-004 SIGUE NO-GO - no se encontro en el workspace evidencia verificable de target real
separado de
openclaw-postgres-sandbox - no se encontro en el workspace evidencia verificable de acceso read-only seguro reutilizable
- fingerprint real publicado:
NO DISPONIBLE; solo quedan como identidad logica documental aliasbusiness-observer-staging-db, DBopenclaw_business_observer_stagingy schemabusiness_observer, todosNO VERIFICADOS - estado consolidado:
DB/schema/roles = UNVERIFIED / BLOCKED,backup/restore baseline real = PENDIENTE / BLOCKED,observabilidad minima operativa = BLOCKED - confirmacion de control:
NO POSTGRES TOUCH,NO SQL,NO DATABASE CHANGES - Bloqueos preservados:
sin tocar
VPS,PostgreSQL,Docker,NPM,Portainer, runtimeO4,La Directa,SGC, push ni deploy - Proximo frente recomendado:
no abrir
PDF-003F-CniPDF-004hasta contar con target real verificable y acceso read-only seguro verificable fuera de Git
Business Observer - staging target non-sensitive intake recorded¶
Etapa 17.5.78 - Staging target non-sensitive intake¶
- Estado: cerrada al
2026-06-19 - Objetivo formal:
registrar la recepcion de datos no sensibles del target recomendado para
stagingdeBusiness Observer, sin tocar runtime - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-003F-A-STAGING-TARGET-NON-SENSITIVE-INTAKE.md - Resultado:
SAFE POINTreal observado enfa437a748eb7a1694335d1505f111450575bd133- intake publicado con estado:
NON-SENSITIVE INTAKE / NO RUNTIME CHANGE / NO SECRETS / PDF-004 SIGUE NO-GO - target recomendado reafirmado:
openclaw-postgres-sandboxno esstagingreal - identidad logica no sensible publicada:
alias
business-observer-staging-db, DBopenclaw_business_observer_staging, schemabusiness_observer, responsable operativoAPV / OpenClaw Ops - baseline documental publicada: roles logicos, ventana de cambio, backup previo, restore drill y observabilidad minima
- politica de exclusion publicada:
sin passwords, sin connection strings, sin tokens, sin
LOGINreales sensibles, sin IPs privadas sensibles y sin rutas internas sensibles - dictamen actualizado:
PDF-003F-Bqueda como siguiente gate para fingerprint no sensible y evidencia read-only segura;PDF-004sigueNO-GO - Bloqueos preservados:
sin tocar
VPS,PostgreSQL,Docker,NPM,Portainer, runtimeO4,La Directa,SGC, push ni deploy - Proximo frente recomendado:
publicar
PDF-003F-Bcon fingerprint no sensible del target real y evidencia documental minima de acceso read-only seguro
Business Observer - staging target operational handoff prepared¶
Etapa 17.5.77 - Staging target operational handoff¶
- Estado: cerrada al
2026-06-19 - Objetivo formal:
publicar un handoff operativo para cerrar fuera de Git el target real de
staging-vpsdelBusiness Observer, sin tocar runtime - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-003F-BLOCKER-STAGING-TARGET-OPERATIONAL-HANDOFF.md - Resultado:
SAFE POINTrevalidado enfdae53fcd446cb7ce33ae918aa8d8f213ee680ea- handoff publicado con estado:
HANDOFF / NO RUNTIME CHANGE / PDF-003F SIGUE BLOCKED / PDF-004 SIGUE NO-GO - formulario seguro publicado para completar fuera del repo con datos no sensibles del target real
- politica de exclusion publicada:
sin passwords, sin connection strings, sin tokens, sin
LOGINreales sensibles y sin IPs privadas sensibles - checklist publicado para volver solo con alias, DB, roles logicos, responsable operativo, ventana de cambio, backup location y restore drill target no sensibles
- dictamen actualizado:
PDF-003Fno se reabre hasta cerrar target real, acceso seguro, fingerprint publicable y baseline operativa minima - Bloqueos preservados:
sin tocar
VPS,PostgreSQL,Docker,NPM,Portainer, runtimeO4,La Directa,SGC, push ni deploy - Proximo frente recomendado: recibir los datos no sensibles del target real, publicar fingerprint no sensible y recien despues abrir un nuevo preflight read-only
Business Observer - staging backup restore runbook candidate published¶
Etapa 17.5.76 - Staging backup restore runbook candidate¶
- Estado: cerrada al
2026-06-19 - Objetivo formal:
publicar un runbook candidato de backup/restore para el futuro
staging-vpsdelBusiness Observer, sin ejecutar nada sobre runtime - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-003E-STAGING-BACKUP-RESTORE-RUNBOOK-CANDIDATE.md - Resultado:
SAFE POINTrevalidado enf615b777576b9f9d89254548b28d484fb556feac- runbook publicado con marcadores:
RUNBOOK CANDIDATE / NOT EXECUTED / STAGING-VPS ONLY / NO SECRETS / REQUIRES EXPLICIT AUTHORIZATION - politica candidata publicada:
backup logico
pg_dump custom format, naming sin secretos,SHA256, retencion minima sugerida y evidencia requerida - restore drill candidate publicado:
destino separado, validaciones post-restore, criterio
PASS/FAILy evidencia requerida - comandos candidatos publicados solo como placeholders seguros, sin host
real, sin
LOGINreal, sin password y sin connection string real - observabilidad minima y checklist
pre/post backupypre/post restorepublicados - dictamen actualizado:
PDF-003FyPDF-004siguenNO-GO - Bloqueos preservados:
sin tocar PostgreSQL, sin ejecutar
SQL, sinpg_dump, sinpg_restore, sin tocarVPS,Docker,NPM,Portainer, runtimeO4,La Directa,SGC, push ni deploy - Proximo frente recomendado:
PDF-003F real target read-only preflight, luego evidencia real de backup y restore solo con autorizacion separada
Business Observer - staging target provisioning decision recorded¶
Etapa 17.5.75 - Staging target provisioning decision record¶
- Estado: cerrada al
2026-06-19 - Objetivo formal:
registrar la decision documental para el target real de
staging-vpsdelBusiness Observersin provisionar ni tocar runtime - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-003D-STAGING-TARGET-PROVISIONING-DECISION-RECORD.md - Resultado:
SAFE POINTrevalidado en3a3bd0f674b5cf73b367fea91185f8fcac991827- problema consolidado: hoy no hay staging real; solo sandbox visible
- decision recomendada:
stagingreal separado del sandbox,NO USAR openclaw-postgres-sandbox COMO STAGING REAL,prod-vps futuraseparada - naming aprobado:
openclaw_business_observer_staging,openclaw_business_observer_prod,business_observer - politica de Git publicada:
secretos, endpoint real, host/puerto no publico, credenciales,
passwords, connection strings y roles
LOGINreales quedan fuera de Git - checklist
GO/NO-GOpublicado para reabrirPDF-003 - Bloqueos preservados:
sin provisionar, sin
DDL, sin tocar PostgreSQL,Docker,NPM,Portainer, runtimeO4,La Directa,SGC, push ni deploy - Proximo frente recomendado:
PDF-003E backup/restore runbook candidate, luegoPDF-003F real target read-only preflightyPDF-004 only after GO
Business Observer - staging prerequisites backup restore access defined¶
Etapa 17.5.74 - Staging prerequisites backup restore access¶
- Estado: cerrada al
2026-06-19 - Objetivo formal:
definir documentalmente los prerequisitos operativos obligatorios antes de
crear o usar una DB
stagingreal paraBusiness Observer - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-003C-STAGING-PREREQUISITES-BACKUP-RESTORE-ACCESS.md - Resultado:
SAFE POINTrevalidado enc8120e31915dd1af0ec048d4e6c12684e3a875aePDF-004sigueNO-GOhasta cerrar target real, fingerprint, acceso, backup previo, restore drill y observabilidad minima- informacion obligatoria fuera de Git publicada:
host/servicio, puerto/conectividad, DB, roles
LOGINsi aplican, secretos y responsable operativo - politica de acceso minima publicada:
owner/admin,writer,reader,reporting_ro, sinSUPERUSERpara aplicacion y sinDELETEparawritersalvo decision futura explicita - backup previo obligatorio, restore drill obligatorio, observabilidad
minima, rollback/restore esperado y checklist
GO/NO-GOpublicados - proximos safe points publicados:
PDF-003D,PDF-003E,PDF-003FyPDF-004 only after GO - Bloqueos preservados:
sin
DDL, sinCREATE/ALTER/GRANT/REVOKE/DROP, sin tocar PostgreSQL,Docker,NPM,Portainer, runtimeO4,La Directa,SGC, push ni deploy - Proximo frente recomendado:
cerrar la decision de provisioning real, luego publicar runbook
backup/restore y recien despues reabrir
PDF-003contra el target correcto
Business Observer - staging target definition completed¶
Etapa 17.5.73 - Staging target definition after PDF-003 NO-GO¶
- Estado: cerrada al
2026-06-19 - Objetivo formal:
definir documentalmente el target real de
staging-vpsparaBusiness Observerdespues delNO-GOdePDF-003 - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-003B-STAGING-TARGET-DEFINITION.md - Resultado:
SAFE POINTrevalidado ena2b1aa44bda1075fb536e2b8db60a4ce41f23331- problema consolidado:
solo existe/visible
openclaw-postgres-sandbox; no existe DB staging real ni roles staging reales - decision recomendada:
NO USAR openclaw-postgres-sandbox COMO STAGING REAL - target recomendado:
staging-vpsreal separado del sandbox, con DBopenclaw_business_observer_staging, schemabusiness_observer, roles staging dedicados, backup/restore y acceso propios - prerequisitos publicados:
fingerprint final, politica de acceso/secretos, backup previo, restore
runbook, observabilidad minima y nuevo
PDF-003read-only sobre el target correcto - dictamen:
PDF-004sigueNO-GO - Bloqueos preservados:
sin
DDL, sinCREATE/ALTER/GRANT/REVOKE/DROP, sin tocar PostgreSQL,Docker,NPM,Portainer, runtimeO4,La Directa,SGC, push ni deploy - Proximo frente recomendado:
cerrar el target real de staging y su baseline de backup/restore antes de
cualquier reintento de
PDF-003
Business Observer - staging DDL preflight read-only completed¶
Etapa 17.5.72 - Staging DDL preflight read-only¶
- Estado: cerrada al
2026-06-19 - Objetivo formal:
ejecutar un preflight estrictamente read-only para validar si el
DDLcandidatoPDF-002estaba listo para una futura ejecucion enstaging-vps - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-003-STAGING-DDL-PREFLIGHT-READONLY.md - Resultado:
SAFE POINTrevalidado en7838b1061b4c9f290a501eb6924b94507d2339d2- acceso read-only seguro usado:
ssh openclaw-vps+docker exec openclaw-postgres-sandbox psql -U openclaw_admin -d openclaw_sandbox - fingerprint observable consolidado:
srv977009|openclaw-postgres-sandbox|172.24.0.3:5432|no-host-port-binding|openclaw_sandbox|openclaw_admin|PostgreSQL 16.14 - topologia visible:
solo
openclaw-postgres-sandbox; no se observo un PostgreSQL staging delBusiness Observerya provisionado - DB target:
openclaw_business_observer_staging = NO,openclaw_business_observer_prod = NO - schema target
business_observer: no validable en staging porque la DB target no existe - roles staging target: todos ausentes
- conflictos de naming: ninguno observado
PUBLICvisible en el cluster observado con privilegios por defecto (CONNECT/TEMPORARYsobre DBs visibles yUSAGEen schemapublic)- backup/restore especifico de la futura DB staging: ausente como evidencia cerrada
- dictamen:
PDF-003 PASS AS READ-ONLY PREFLIGHT / PDF-004 NO-GO - Bloqueos preservados:
sin
DDL, sinCREATE/ALTER/GRANT/REVOKE/DROP, sinINSERT/UPDATE/DELETE, sin tocarLa Directa,SGC, runtimeO4,Docker,NPM,Portainer, push ni deploy - Proximo frente recomendado:
no abrir
PDF-004todavia; primero confirmar target staging real, backup/restore y nuevo preflight sobre la DB correcta
Business Observer - staging DDL candidate preparado¶
Etapa 17.5.71 - Staging DB roles schemas DDL candidate¶
- Estado: cerrada al
2026-06-19 - Objetivo formal:
disenar el paquete
DDLcandidato destaging-vpspara DB, roles y schema delBusiness Observer, sin ejecutarSQLni tocarPostgreSQL - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-002-STAGING-DB-ROLES-SCHEMAS-DDL-CANDIDATE.md - SQL candidate:
docs/tenants/alpuntodeventa/business-observer/production/sql/PDF-002-staging-db-roles-schemas-candidate.sql - Resultado:
SAFE POINTrevalidado en45aaa51a2ff85462a485b841863f0e28c2794dff- naming recomendado de DB staging publicado:
openclaw_business_observer_staging - naming recomendado de DB futura prod publicado:
openclaw_business_observer_prod - schema candidato publicado:
business_observer - roles candidatos publicados:
openclaw_bo_staging_owner,openclaw_bo_staging_writer,openclaw_bo_staging_reader,openclaw_bo_staging_reporting_ro - modelo de seguridad publicado:
roles
NOLOGIN, sin passwords en SQL,PUBLICsin privilegios, principio de menor privilegio, ownership solo en owner, sinSUPERUSER,CREATEDB,CREATEROLE - fingerprint esperado para
PDF-003publicado - rollback conceptual, prerequisitos y riesgos publicados
- Bloqueos preservados:
sin tocar
VPS PostgreSQL, sin crear DB/roles/schemas/tablas reales, sin ejecutarSQL, sin secretos/passwords, sin sync/scheduler, sin push ni deploy - Proximo frente recomendado:
abrir una tarea separada para
PDF-003 staging DDL preflighten modo read-only
Business Observer - production data foundation intake opened¶
Etapa 17.5.70 - Foundation design para staging VPS del Business Observer¶
- Estado: abierta al
2026-06-19 - Objetivo formal:
abrir la etapa
Production Data Foundation / staging VPSen modo exclusivamente documental para preparar publicacion segura de datosSGCfuera delocal-dev - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PRODUCTION-DATA-FOUNDATION-INTAKE-001.md - Resultado:
SAFE POINTrevalidado en33d28a11b66ce071a2a60b3f7662e4a358ee29f4SOURCE-003queda formalmente como primer candidato de promocion astaging-vpsSOURCE-001ySOURCE-002quedan incluidas como siguientes pipelines de staging antes de cualquier decision deprod-vps- publicado el criterio de que no existe
produccionvalida sin backups, restore, monitoreo e idempotencia - publicado el modelo objetivo
RAW -> CORE -> MARTparaVPS - publicada la secuencia de fases
1a10parafoundation design -> production decision gate - Bloqueos preservados:
sin tocar
VPS,PostgreSQL,Docker,NPM,Portainer, runtimeO4,La Directa,SGC, secretos, deploy ni push sin crearDB, roles, schemas ni tablas sin ejecutarSQL, sync, scheduler ni cargas - Proximo frente recomendado:
abrir una tarea separada para
staging DB roles/schemas DDL candidate
SOURCE-003 - mart local-dev closure complete¶
Etapa 17.5.69 - Cierre formal del hito SOURCE-003 MART local-dev¶
- Estado: cerrada al
2026-06-19 - Objetivo formal:
cerrar documentalmente
SOURCE-003 MART local-devcon evidencia consolidada y validacion read-only final, sin nuevas escrituras DB - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-BUILD-MART-LOCAL-DEV-CLOSURE-001.md - Resultado:
SAFE POINTrevalidado en36b23814021a02f3a5f3aa06aacf654ca45104c5- evidencia publicada consolidada:
FIRST-PERSISTENCE,POST-WRITE-REVIEW,IDEMPOTENCY-EXECUTION,ROLLBACK-CANDIDATE - fingerprint aprobado y
postgres-sandboxausente - estado final local-dev:
RAW = 1886,CORE = 1886,MART = 1/25/173/180 - batch autorizado presente en las cuatro MART:
1/25/173/180 - filas fuera del batch autorizado:
0/0/0/0 - duplicados por grain:
0/0/0/0 - rollback candidate disponible y no ejecutado
- produccion, sync diaria y scheduler siguen bloqueados
- Bloqueos preservados:
sin
build-mart --execute, sin rollback real, sinINSERT,COPY,UPDATE,DELETE, sin produccion, sin sync diaria, sin tocarLa Directa, runtimeO4,VPS,Docker,NPM,Portainer, push ni deploy - Proximo frente recomendado:
abrir una tarea separada para
Production Data Foundation / staging VPS
SOURCE-003 - mart rollback candidate not executed local-dev¶
Etapa 17.5.68 - Documentacion del rollback candidate de MART ya persistida¶
- Estado: cerrada al
2026-06-19 - Objetivo formal:
documentar y versionar un rollback candidate para
SOURCE-003 MARTlocal-dev, sin ejecutarlo ni modificar la DB - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-BUILD-MART-ROLLBACK-CANDIDATE-001.md - SQL candidate:
docs/tenants/alpuntodeventa/business-observer/design/sql/008_source_003_build_mart_rollback_candidate.sql - Resultado:
SAFE POINTrevalidado end9b302ce7ad71b590a53f9ee8392e117d24dcc17- rollback candidate limitado al batch
1827f887-9499-4579-b4f3-234d54f41f7f - borrado seguro documentado en orden
sku -> customer -> seller -> daily - prechecks documentados para
MART = 1/25/173/180, filas fuera del batch0/0/0/0y duplicados por grain0/0/0/0 - post-checks documentados para
MART = 0/0/0/0,RAW = 1886,CORE = 1886 - SQL marcado como
CANDIDATE / NOT EXECUTED,LOCAL-DEV ONLY,REQUIRES EXPLICIT AUTHORIZATION - Bloqueos preservados:
sin rollback real, sin
build-mart --execute, sinDELETE,TRUNCATE,UPDATE,INSERT,COPY, sin produccion, sin sync diaria, sin tocarLa Directa, runtimeO4,VPS,Docker,NPM,Portainer, push ni deploy - Proximo frente recomendado: no ejecutar el candidate dentro de esta linea de trabajo; si algun dia se aprueba, abrir una tarea separada con autorizacion explicita y evidencia propia
SOURCE-003 - mart real idempotency execution local-dev¶
Etapa 17.5.67 - Ejecucion real unica de idempotencia sobre MART ya persistida¶
- Estado: cerrada al
2026-06-18 - Objetivo formal:
ejecutar una sola vez el doble gate real de
python scripts/source_003_importer.py build-mart --executepara validar idempotencia sobreMARTya persistida - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-BUILD-MART-IDEMPOTENCY-EXECUTION-001.md - Resultado:
SAFE POINTrevalidado en3f491d80f9d633aaf8ed835c54e1a4fcf2d06dabpy_compiledel importerPASSbuild-martdevuelveFAILesperado porque la MART ya existe con1/25/173/180- fingerprint aprobado y
postgres-sandboxausente - preflight
RAW = 1886,CORE = 1886,MART = 1/25/173/180 - duplicados por grain
0/0/0/0 - filas fuera del batch autorizado
0/0/0/0 - comando real ejecutado exactamente una vez con doble gate correcto
- resultado final:
BLOCKED,db_write_attempted=false,transaction_committed=false,data_persisted=false - motivo runtime exacto:
MART daily row_count 1 != 0,seller 25 != 0,customer 173 != 0,sku 180 != 0 - Bloqueos preservados:
sin rollback manual, sin
INSERT,COPY,UPDATE,DELETE, sin produccion, sin sync diaria, sin runner, sin scheduler, sin tocarLa Directa, runtimeO4,VPS,Docker,NPM,Portainer, push ni deploy - Proximo frente recomendado:
no reejecutar el comando; la idempotencia real queda validada porque el
retry autorizado termino
BLOCKEDsin persistir nada
SOURCE-003 - mart idempotency preflight read-only¶
Etapa 17.5.66 - Auditoria read-only previa a futura prueba de idempotencia mart¶
- Estado: cerrada al
2026-06-18 - Objetivo formal:
preparar una futura prueba de idempotencia de
SOURCE-003 build-martsin reejecutarbuild-mart --executeni tocar la DB - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-BUILD-MART-IDEMPOTENCY-PREFLIGHT-001.md - Resultado:
SAFE POINTrevalidado en8fab80e6af932ec3d6f32df3c8f109f251ce1f2dpy_compiledel importerPASSbuild-martdevuelveFAILesperado porque la MART ya existe con1/25/173/180- los comandos
build-mart --executerequeridos en la consigna no se ejecutaron por prohibicion explicita; por revision de codigo siguenBLOCKEDsin doble gate correcto o con token invalido - fingerprint aprobado y
postgres-sandboxausente - DB read-only:
RAW = 1886,CORE = 1886,MART = 1/25/173/180 - duplicados por grain:
0/0/0/0 - filas fuera del batch autorizado:
0/0/0/0 - filas existentes del batch autorizado en
MART:1/25/173/180 - condicion exacta de bloqueo esperada:
MART inicial no esta vacia: daily=1 seller=25 customer=173 sku=180 - Bloqueos preservados:
sin
build-mart --execute, sin doble gate correcto, sin--commit-local-dev-write, sin rollback, sin idempotencia write real, sin produccion, sin sync diaria, sin runner, sinCSV, sin tocarLa Directa, runtimeO4,VPS,Docker,NPM,Portainer, push ni deploy - Proximo frente recomendado:
abrir una tarea separada si se aprueba probar idempotencia real; hoy el
resultado esperado debe ser
BLOCKED/ABORTEDsin persistir nada
SOURCE-003 - mart post-write review read-only¶
Etapa 17.5.65 - Auditoria read-only posterior a primera persistencia mart¶
- Estado: cerrada al
2026-06-18 - Objetivo formal:
auditar en modo read-only el estado real de
SOURCE-003 MARTdespues de la primera persistencia local-dev, sin reintentar el commit - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-BUILD-MART-POST-WRITE-REVIEW-001.md - Resultado:
SAFE POINTrevalidado en10cbf63e165428847ad954a0bd0b7e891924750dpy_compiledel importerPASSbuild-martahora devuelveFAILesperado porque la MART ya no esta en0/0/0/0sino en1/25/173/180build-mart --executeno se ejecuto por prohibicion explicita- fingerprint aprobado y
postgres-sandboxausente - DB read-only:
RAW = 1886,CORE = 1886,MART = 1/25/173/180 - grains, duplicados y filas fuera del batch:
1/25/173/180,0/0/0/0,0/0/0/0 - comparacion MART vs CORE:
units, neto, bruto, CMV y contribution sin diferencias sobre tolerancia
0.0001 - Bloqueos preservados:
sin idempotencia, sin
build-mart --execute, sin rollback, sin produccion, sin sync diaria, sin runner, sinCSV, sin tocarLa Directa, runtimeO4,VPS,Docker,NPM,Portainer, push ni deploy - Proximo frente recomendado: si se decide seguir, abrir una tarea separada para idempotencia read/write o rollback candidato; no reejecutar esta persistencia dentro de esta auditoria
SOURCE-003 - first real mart persistence local-dev¶
Etapa 17.5.64 - Primera persistencia real MART en local-dev¶
- Estado: cerrada al
2026-06-18 - Objetivo formal:
ejecutar por primera vez la persistencia real local-dev de
SOURCE-003 build-martusando el doble gate correcto - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-BUILD-MART-FIRST-PERSISTENCE-001.md - Resultado:
SAFE POINTrevalidado en4ee4cb42ce0ab3b8c8c750ee4b324116153ef8b9py_compiledel importerPASSbuild-martread-onlyPASS- fingerprint aprobado y
postgres-sandboxausente - preflight
PASScon:RAW = 1886,CORE = 1886,MART = 0/0/0/0, estimates1/25/173/180, constraints43/43, indices12/12, duplicados0/0/0/0 - comando real ejecutado una sola vez con doble gate correcto
BEFORE = 1886 / 1886 / 0/0/0/0INSIDE_TX = 1886 / 1886 / 1/25/173/180AFTER_COMMIT = 1886 / 1886 / 1/25/173/180- salida estructurada final:
transaction_committed=true,data_persisted=true,rollback_rehearsal=false - Bloqueos preservados:
sin produccion, sin sync diaria, sin runner, sin scheduler, sin
CSV, sin tocarLa Directa, runtimeO4,VPS,Docker,NPM,Portainer, push ni deploy - Proximo frente recomendado: abrir una tarea separada para verificar idempotencia o eventual rollback candidato; no reejecutar esta persistencia
SOURCE-003 - final go/no-go mart persistence audit¶
Etapa 17.5.63 - Auditoria final previa a primera persistencia mart¶
- Estado: cerrada al
2026-06-18 - Objetivo formal:
emitir dictamen
GO/NO-GOprevio a una primera persistencia reallocal-devdeSOURCE-003 build-mart, sin ejecutar el commit real - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-BUILD-MART-PERSISTENCE-GO-NOGO-001.md - Resultado:
SAFE POINTrevalidado ena274bc02e62d82175a13c55915718dff8d4cbaffpy_compiledel importerPASSbuild-martsigueDRY_RUNbuild-mart --executesigueBLOCKEDWRONG_TOKENsigueBLOCKED- token real sin
--commit-local-dev-writesigueBLOCKED --commit-local-dev-write WRONG_TOKENsigueBLOCKED- DB read-only:
fingerprint aprobado,
postgres-sandboxausente,RAW = 1886,CORE = 1886,MART = 0/0/0/0, estimates1/25/173/180 - constraints
MARTrequeridos43/43 - indices
MARTrequeridos12/12 - sin filas del batch en
MARTy sin duplicados por grain - Bloqueos preservados:
sin persistencia ejecutada, sin produccion, sin sync diaria, sin runner,
sin
CSV, sin--rollback-rehearsal, sin tocarLa Directa, runtimeO4,VPS,Docker,NPM,Portainer, push ni deploy - Proximo frente recomendado: si se decide avanzar, abrir una tarea separada para la primera persistencia real local-dev con doble gate correcto y evidencia dedicada
SOURCE-003 - post-commit-gate rollback rehearsal¶
Etapa 17.5.62 - Validacion post-commit-gate del rehearsal build-mart¶
- Estado: cerrada al
2026-06-18 - Objetivo formal:
ejecutar el rehearsal autorizado de
python scripts/source_003_importer.py build-mart --execute --confirm-local-dev-write SOURCE003_MART_LOCAL_DEV_1886 --rollback-rehearsaldespues de agregar--commit-local-dev-write, sin persistencia final - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-BUILD-MART-POST-COMMIT-GATE-REHEARSAL-001.md - Resultado:
SAFE POINTrevalidado en4032fb837cd75e7602b9ce5bf9b70b459d34964ebuild-martsin flags sigueDRY_RUNbuild-mart --executesin token sigueBLOCKED- token real sin rollback ni commit sigue
BLOCKED --commit-local-dev-write WRONG_TOKENsigueBLOCKED--rollback-rehearsal+--commit-local-dev-writesigueBLOCKED- rehearsal autorizado termina
PASS / ROLLED_BACK BEFORE:RAW = 1886,CORE = 1886,MART = 0/0/0/0INSIDE_TX:daily = 1,seller = 25,customer = 173,sku = 180AFTER_ROLLBACK:RAW = 1886,CORE = 1886,MART = 0/0/0/0- Bloqueos preservados:
sin persistencia ejecutada, sin produccion, sin sync diaria, sin runner,
sin scheduler, sin
CSV, sin tocarLa Directa, runtimeO4,VPS,Docker,NPM,Portainer, push ni deploy - Proximo frente recomendado:
mantener cualquier
COMMITreal como tarea separada, con doble gate y evidencia propia
SOURCE-003 - build-mart commit gate mode¶
Etapa 17.5.61 - Segundo gate explicito para commit local-dev de build-mart¶
- Estado: cerrada al
2026-06-18 - Objetivo formal:
agregar un segundo gate explicito para futura persistencia real de
python scripts/source_003_importer.py build-mart --execute - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-BUILD-MART-COMMIT-GATE-001.md - Resultado:
SAFE POINTrevalidado en72a5f2d9ac44035142f7992e1113c1304b1cbd7f- nuevo flag futuro:
--commit-local-dev-write SOURCE003_MART_LOCAL_DEV_COMMIT_1886 - persistencia futura requiere ambos tokens:
--confirm-local-dev-write SOURCE003_MART_LOCAL_DEV_1886y--commit-local-dev-write SOURCE003_MART_LOCAL_DEV_COMMIT_1886 --rollback-rehearsaly--commit-local-dev-writequedan mutuamente excluyentes- token real sin commit flag y sin rehearsal conserva
BLOCKED - commit flag incorrecto conserva
BLOCKED - estado DB preservado:
RAW = 1886,CORE = 1886,MART = 0/0/0/0 - Bloqueos preservados:
sin persistencia ejecutada, sin produccion, sin sync diaria, sin runner,
sin scheduler, sin tocar
La Directa, runtimeO4, Docker,NPM,Portainer, push ni deploy - Proximo frente recomendado: ejecutar la ruta persistente solo en una tarea separada y con evidencia dedicada
SOURCE-003 - build-mart rollback rehearsal mode¶
Etapa 17.5.60 - Rollback rehearsal obligatorio para build-mart execute¶
- Estado: cerrada al
2026-06-18 - Objetivo formal:
ejecutar el write path real de
python scripts/source_003_importer.py build-mart --executesin persistencia final - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-BUILD-MART-ROLLBACK-REHEARSAL-001.md - Resultado:
SAFE POINTrevalidado enb26b4ca5bb4b91c09a3938dcf1c7324df14793d5- nuevo flag obligatorio:
--rollback-rehearsal - token real sin rehearsal conserva
BLOCKED - token real con rehearsal ejecuta la ruta real y termina
PASS / ROLLED_BACK BEFORE:RAW = 1886,CORE = 1886,MART = 0/0/0/0INSIDE_TX:daily = 1,seller = 25,customer = 173,sku = 180AFTER_ROLLBACK:MART = 0/0/0/0- Bloqueos preservados:
sin modo persistente autorizado, sin produccion, sin sync diaria, sin
runner, sin
CSV, sin tocarLa Directa, runtimeO4, Docker,NPM,Portainer, push ni deploy - Proximo frente recomendado:
si algun dia se habilita persistencia real, abrir un gate nuevo y separado;
este rehearsal no autoriza
COMMIT
SOURCE-003 - build-mart write path implementation¶
Etapa 17.5.59 - Implementacion del write path gateado para build-mart¶
- Estado: cerrada al
2026-06-18 - Objetivo formal:
implementar en Python el write path futuro de
python scripts/source_003_importer.py build-mart --executesin ejecutarlo - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-BUILD-MART-WRITE-PATH-IMPLEMENTATION-001.md - Resultado:
SAFE POINTrevalidado enf967841c4e39a4f12ef410a4768ea1862847bcaabuild-martconservaDRY_RUNbuild-mart --executesin token extra conservaBLOCKED- token futuro requerido:
--confirm-local-dev-write SOURCE003_MART_LOCAL_DEV_1886 - write path transaccional preparado con fingerprint DB obligatorio,
bloqueo
postgres-sandbox, revalidacion intra-transaccion, inserts en ordendaily -> seller -> customer -> skuy rollback total - estado DB preservado sin escritura:
RAW = 1886,CORE = 1886,MART = 0/0/0/0 - Bloqueos preservados:
sin ejecucion con confirmacion valida, sin escrituras DB, sin
CSV, sin runner, sin rollback real, sin tocarLa Directa, WooCommerce, runtimeO4, Docker,NPM,Portainer, push ni deploy - Proximo frente recomendado:
abrir una tarea separada solo si se aprueba ejecutar la escritura real en
local-devusando el token exacto y evidencia propia
SOURCE-003 - build-mart write path gate design¶
Etapa 17.5.58 - Diseno del gate de escritura futura para build-mart¶
- Estado: cerrada al
2026-06-18 - Objetivo formal:
disenar el write path seguro de
SOURCE-003para un futuropython scripts/source_003_importer.py build-mart --executesin implementarlo ni ejecutarlo - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-BUILD-MART-WRITE-PATH-GATE-001.md - SQL candidato:
docs/tenants/alpuntodeventa/business-observer/design/sql/007_source_003_build_mart_write_path_candidate.sql - Resultado:
SAFE POINTrevalidado ene935dbf96e3440cbe0a31734030a54d1871385d2- fingerprint DB obligatorio y bloqueo
postgres-sandboxdocumentados - revalidacion intra-transaccion de
RAW,CORE,MARTy estimates definida - idempotencia por batch/grain definida
- abort si la MART destino no esta vacia para el mismo batch/grain
- orden de inserts fijado en
daily,seller,customer,sku ROLLBACKtotal y evidencia post-write esperada documentados- produccion y sync diaria preservadas como
BLOCKED - Bloqueos preservados:
sin escrituras DB, sin
CSV, sin runner, sin rollback real, sin tocarscripts/source_003_importer.py,La Directa, WooCommerce, runtimeO4, Docker,NPM,Portainer, push ni deploy - Proximo frente recomendado:
si se aprueba avanzar, abrir una tarea separada para implementar el gate en
Python y validar la ruta write real solo en
local-dev
SOURCE-003 - build-mart execute preflight read-only¶
Etapa 17.5.57 - Auditoria read-only previa a build-mart execute¶
- Estado: cerrada al
2026-06-18 - Objetivo formal:
auditar el siguiente paso de
SOURCE-003antes de cualquier escritura MART usando soloSELECT - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-BUILD-MART-EXECUTE-PREFLIGHT-001.md - Resultado:
- repo revalidado en
SAFE POINT build-martconfirmado enDRY_RUNbuild-mart --executeconfirmado enBLOCKED- DB fingerprint aprobado y
postgres-sandboxausente RAW = 1886,CORE = 1886,MART = 0/0/0/0- estimates
daily 1,seller 25,customer 173,sku 180 - constraints, indices y riesgo de duplicados por batch/grain documentados
- Bloqueos preservados:
sin escrituras DB, sin CSV, sin runner, sin rollback, sin tocar
La Directa, WooCommerce, runtimeO4, Docker,NPM,Portainer, push ni deploy - Proximo frente recomendado:
abrir una tarea separada para gate/idempotencia/write-path de
build-mart --execute; no ejecutar mientras sigaBLOCKED
SAFE-POINT-049 - La Directa phase 1 observability closure¶
Etapa 17.5.56 - Cierre documental y certificacion read-only de Fase 1¶
- Estado: cerrada al
2026-06-18 - Objetivo formal:
auditar y documentar el cierre de
La Directa Observability Fase 1sin tocar runtime - Documento oficial:
docs/runbooks/SAFE-POINT-049-ladirecta-phase1-observability-closure.md - Resultado:
Fase 1queda cerrada enOpenClaw- probes publicos revalidados: home
200,tienda200,carrito200,mi-cuenta200,.arredirect-aware301 - alertas criticas
ArRedirectBroken,StoreDown,CartDown,MyAccountDownrevalidadas sinfiring PrometheusyAlertmanagersiguen no publicosGrafanahealthy yLa Directa Web Availabilitydocumentado como provisionado segun evidencia disponibleLa Directa Executive Overview - Phase 1sigue fuera de runtime- no hay metricas comerciales ni
PII - Bloqueos preservados:
sin deploy O4, sin reload de
Prometheus,Grafana,AlertmanagerniBlackbox, sin tocar WooCommerce, DNS, firewall, secretos niSOURCE-003 - Proximo frente recomendado:
handoff
Fase 2al repoC:\APV\vps-woocommerce-ladirectao retomarSOURCE-003 build-mart execute
SAFE-POINT-048C - La Directa web availability dashboard runtime¶
Etapa 17.5.55 - Promotion runtime selectiva del dashboard web availability¶
- Estado: cerrada al
2026-06-18 - Objetivo formal:
promover a O4 solo
La Directa Web Availabilitysin tocar otros dashboards ni reglas - Documento oficial:
docs/runbooks/SAFE-POINT-048C-ladirecta-web-availability-dashboard-runtime.md - Resultado:
- dashboard provisionado agregado en
infra/observability/grafana/dashboards/04-openclaw/ - runtime
/opt/stacks/observabilitysincronizado solo engrafana/dashboards/04-openclaw/o4-ladirecta-web-availability.json Grafanareprovisiona por archivos sin reload ni restart.arqueda operativo conblackbox-http-redirect-awarey301- home,
tienda,carritoymi-cuentaquedan operativos con200 La Directa Executive Overview - Phase 1sigue fuera de runtime- Bloqueos preservados:
sin reload de
Prometheus,Grafana,AlertmanagerniBlackbox, sin tocar WooCommerce, DNS, firewall, secretos niSOURCE-003
SAFE-POINT-048B - La Directa web availability dashboard preflight¶
Etapa 17.5.54 - Preflight con Prometheus del dashboard candidato¶
- Estado: cerrada al
2026-06-17 - Objetivo formal:
validar
La Directa Web Availabilitycontra metricas reales dePrometheusantes de cualquier promotion runtime - Documento oficial:
docs/runbooks/SAFE-POINT-048B-ladirecta-web-availability-dashboard-preflight.md - Resultado:
- endpoints esperados validados con
probe_success, status y duracion real .arconfirmado solo enblackbox-http-redirect-awarepara evaluar el redirect real301Uptime 24hcorregido para evitar doble conteo de.arSSL days remainingcorregido para devolver una sola serie estableAlertas activascorregido para devolver0sin firing alerts- el dashboard quedo validado para promotion selectiva posterior
- Bloqueos preservados:
sin deploy O4, sin reload de
Prometheus,Grafana,AlertmanagerniBlackbox, sin tocar WooCommerce, DNS, firewall, secretos niSOURCE-003
SAFE-POINT-048A - La Directa web availability dashboard candidate¶
Etapa 17.5.53 - Ajuste redirect-aware del dashboard candidato¶
- Estado: cerrada al
2026-06-17 - Objetivo formal:
ajustar solo
La Directa Web Availabilitypara quehttps://ladirecta.ar/use la senalblackbox-http-redirect-awaresin tocar runtime - Documento oficial:
docs/runbooks/SAFE-POINT-048A-ladirecta-web-availability-dashboard-candidate.md - Resultado:
- stats y paneles HTTP/latencia quedan explicitamente separados por endpoint
.arusablackbox-http-redirect-awarecon expectativa301- home,
tienda,carritoymi-cuentausanblackbox-httpcon expectativa200 - el dashboard quedo listo para promotion selectiva posterior
- Bloqueos preservados:
sin deploy O4, sin reload de
Prometheus,Grafana,AlertmanagerniBlackbox, sin tocar WooCommerce, DNS, firewall, secretos niSOURCE-003
SAFE-POINT-047 - La Directa selective phase 1 alerts¶
Etapa 17.5.52 - Promotion selectiva de tres alertas criticas¶
- Estado: cerrado al
2026-06-17 - Objetivo formal:
activar en O4 solo
EcommerceLaDirectaStoreDown,EcommerceLaDirectaCartDownyEcommerceLaDirectaMyAccountDown - Documento oficial:
docs/runbooks/SAFE-POINT-047-ladirecta-selective-phase1-alerts.md - Resultado:
service-alerts.ymlincorpora solo las tres reglas nuevas de paginas criticas- runtime
/opt/stacks/observabilitysincronizado solo en rules Prometheus obs-prometheusrecargado sin restart de otros serviciosPrometheusyAlertmanagersiguen no publicos- Bloqueos preservados:
sin tocar WooCommerce, DNS, Cloudflare, firewall, secretos,
SOURCE-003, dashboards,Grafana,Blackbox,Alertmanager,Thanos,Node Exporter,cAdvisor,NPM, push ni deploy del portal
SAFE-POINT-046 - La Directa Phase 1 promotion audit¶
Etapa 17.5.51 - Auditoria promotion Fase 1¶
- Estado: cerrada al
2026-06-17 - Objetivo formal:
auditar dashboards y alertas candidatas
La Directa Fase 1antes de cualquier promotion runtime - Documento oficial:
docs/runbooks/SAFE-POINT-046-ladirecta-phase1-promotion-audit.md - Resultado:
- promotion recomendada solo para
StoreDown,CartDownyMyAccountDown PrimarySiteDown,SslExpirySoonPhase1yHighLatencyPhase1quedan bloqueadas por duplicadoLa Directa Web Availabilityrequiere ajuste redirect-awareLa Directa Executive Overview - Phase 1no debe promoverse como nuevo dashboard- Bloqueos preservados:
sin deploy O4, sin reload de
Prometheus,Grafana,AlertmanagerniBlackbox, sin tocar WooCommerce, DNS, firewall, secretos niSOURCE-003
SAFE-POINT-045B - La Directa redirect broken alert activa¶
Etapa 17.5.50 - Promotion controlada de una sola alerta redirect-aware¶
- Estado: cerrado al
2026-06-17 - Objetivo formal:
activar en O4 solo
EcommerceLaDirectaArRedirectBrokensobre el job ya validadoblackbox-http-redirect-aware - Documento oficial:
docs/runbooks/SAFE-POINT-045B-ladirecta-redirect-broken-alert.md - Resultado:
service-alerts.ymlincorpora una sola regla nueva de redirect- runtime
/opt/stacks/observabilitysincronizado solo en rules Prometheus obs-prometheusrecargado sin restart de otros serviciosPrometheusyAlertmanagersiguen no publicos- Bloqueos preservados:
sin tocar WooCommerce, DNS, Cloudflare, firewall, secretos,
SOURCE-003,Grafana,Blackbox,Alertmanager,Thanos,Node Exporter,cAdvisor,NPM, push ni deploy del portal
SAFE-POINT-044 - La Directa redirect-aware probe design¶
Etapa 17.5.49 - Diseno redirect-aware para ladirecta.ar¶
- Estado: cerrado al
2026-06-17 - Objetivo formal:
preparar un candidato no desplegado para distinguir el redirect publico
esperado de
ladirecta.arsin tocar runtime - Documento oficial:
docs/runbooks/SAFE-POINT-044-ladirecta-redirect-aware-probe-design.md - Resultado:
- modulo Blackbox candidato versionado fuera del runtime activo
- job y target file candidatos versionados fuera del runtime activo
- alerta candidata
.aralineada con el job dedicado - documentacion y catalogos O4 actualizados
- Bloqueos preservados:
sin deploy O4, sin reload de
Prometheus,Grafana,AlertmanagerniBlackbox, sin tocar WooCommerce, DNS, firewall, secretos niSOURCE-003
SAFE-POINT-043 - La Directa Fase 1 dashboards alerts candidates¶
Etapa 17.5.48 - Candidatos dashboards y alertas Fase 1¶
- Estado: cerrado al
2026-06-17 - Objetivo formal:
preparar candidatos versionados para dashboards y alertas
La Directa Fase 1sin tocar runtime - Documento oficial:
docs/runbooks/SAFE-POINT-043-ladirecta-fase-1-dashboards-alerts-candidates.md - Resultado:
- dashboards candidatos versionados en rutas no provisionadas de
Grafana - alertas candidatas versionadas en ruta no cargada por
Prometheus - catalogos, roadmap y estado documental actualizados
- Bloqueos preservados:
sin deploy O4, sin reload de
Prometheus,GrafananiAlertmanager, sin tocar WooCommerce, DNS, firewall, secretos niSOURCE-003
SAFE-POINT-042 - La Directa Fase 1 runtime targets¶
Etapa 17.5.47 - Deploy runtime targets publicos¶
- Estado: cerrado al
2026-06-17 - Objetivo formal:
activar en O4 los targets publicos de
La Directa Fase 1ya versionados en Git con el minimo impacto operativo - Documento oficial:
docs/runbooks/SAFE-POINT-042-ladirecta-fase-1-runtime-targets.md - Resultado:
- runtime
/opt/stacks/observabilitysincronizado solo enblackbox-http-targets.json obs-prometheusrecargado sin restart del stack completotienda,carritoymi-cuentaya exponenprobe_success=1,probe_http_status_code=200yprobe_duration_secondsPrometheusyAlertmanagersiguen no publicos- Bloqueos preservados:
sin tocar WooCommerce, DNS, firewall, secretos,
SOURCE-003,NPMni dashboards manuales
SAFE-POINT-041 - La Directa Fase 1 public critical pages¶
Etapa 17.5.46 - Fase 1 public critical pages¶
- Estado: implementado en Git al
2026-06-17, pendiente de deploy runtime - Objetivo formal:
ampliar la preparacion de
Fase 1publica paraLa Directacon paginas criticas publicas, catalogo de targets y semaforo operativo - Documento oficial:
docs/runbooks/SAFE-POINT-041-ladirecta-fase-1-public-critical-pages.md - Resultado:
tienda,carritoymi-cuentaconfirmadas porHTTP 200y agregadas a targets Blackbox en Gitfinalizar-compraconfirmada como redirect302acarrito, pero queda candidata hasta contar con validacion de redirect esperado- docs tenant, plan global y catalogos O4 actualizados
- Bloqueos preservados: sin deploy O4, sin tocar WooCommerce, DNS, firewall, secretos, runtime ni repo relacionado
SAFE-POINT - La Directa WooCommerce observability strategy intake¶
Etapa 17.5.45 - Intake integral WooCommerce observability La Directa¶
- Estado: documentado al
2026-06-17 - Objetivo formal: ordenar el requerimiento integral de observabilidad WooCommerce por fases sin tocar runtime ni mezclar responsabilidades
- Documento oficial:
docs/tenants/ladirecta/observability/WOOCOMMERCE-OBSERVABILITY-STRATEGY-INTAKE.md - Resultado: intake integral creado, gaps explicitados, matriz OpenClaw vs La Directa publicada, roadmap tenant creado y catalogos de metricas, dashboards y alertas ampliados sin declarar metricas futuras como existentes
- Fases definidas:
Fase 1:Blackbox, SSL, latencia, status HTTP, redirects, paginas criticas publicas y alertas sinteticas desde OpenClawFase 2: endpoints/exporters seguros en La Directa OpsFase 3: metricas comerciales WooCommerce agregadasFase 4: integracion avanzada con ERP, stock, campañas y reportesIA- Bloqueos preservados:
sin tocar repo La Directa, VPS WooCommerce, VPS OpenClaw, DNS, Cloudflare,
firewall, SSH, WordPress, WooCommerce,
SOURCE-003ni secretos
Etapas cerradas¶
Etapa 0 - Workspace documental¶
- Cerrada
Etapa 0.5 - Publicacion a GitHub privado¶
- Cerrada
- Repo privado
openclawai-vps-labcreado y publicado
Etapa 1 - Auditoria VPS¶
- Cerrada
- Host
srv977009validado - Docker,
ufw,fail2ban,ssh, NPM y Portainer auditados
Etapa 2 - Arquitectura multi-app del VPS¶
- Cerrada
- Aislamiento por stack aprobado
- Publicacion solo por NPM aprobada
Etapa 3 - Arquitectura OpenClaw¶
- Cerrada
- Compose conservador definido y desplegado
Etapa 4 - Seguridad y acceso base¶
- Cerrada parcialmente
- Secretos fuera de Git: si
- TLS por NPM: si
- Flujo autenticado de operador: validado formalmente
Etapa 5 - VPS baseline hardening + preparacion operativa¶
- Cerrada
- Snapshot, updates, reboot, swap y revalidacion completados
Etapa 6 - Revalidacion post-hardening¶
- Cerrada
- Host estable despues del reboot
Etapa 7 - Preparacion deployment Docker¶
- Cerrada
/opt/stacks/openclawpreparado y validado
Etapa 8 - Implementacion OpenClaw¶
- Cerrada
- OpenClaw desplegado y healthy
Etapa 9 - Publicacion operativa¶
- Cerrada
- DNS activo
- Proxy Host activo
- SSL activo
- HTTPS
200 OK - Control UI publica cargando
- Reinicio post-go-live validado
Etapa actual¶
Etapa 10 - Validacion funcional autenticada¶
- Estado: cerrada
- Auth OpenAI del agente
mainvalidada token_missingclasificado como comportamiento esperado sin tokentrustedProxiescorregido con el proxy real de NPM- reconciliacion revalidada al
2026-06-08congateway.trustedProxiesactualizado a172.18.0.6segun la IP real observada de NPM enproxy-network - Restart controlado y persistencia auth validados
Etapa 10.5 - Auditoria final de Portainer¶
- Estado: cerrada
- Backup de metadata Portainer realizado
- Docker,
docker.sock, snapshots y data store revalidados - El endpoint
localsigue funcional por backend - La incidencia
DOWNqueda clasificada como Portainer UI / compatibilidad Portainer2.33.1con Docker29.x - No se aplico mutacion de metadata por falta de una reparacion minima segura y oficial bajo las restricciones aprobadas
Etapa 10.6 - Portainer modernization¶
- Estado: cerrada
- Backup nuevo del volumen real realizado y validado
- Upgrade conservador aplicado a
portainer/portainer-ce:2.39.2 - Mismo volumen, mismos puertos, mismo
docker.sock, misma policy y misma red - Logs confirman migracion de base
2.33.1 -> 2.39.2 - OpenClaw y NPM revalidados sin impacto
Etapa 10.7 - Auditoria y cleanup Docker post-modernizacion¶
- Estado: cerrada
- Inventario Docker revalidado por SSH sobre
openclaw-vps - Portainer activo confirmado en
2.39.2conportainer_data_new - Imagenes legacy eliminadas:
alpine:latestportainer/portainer-ce:latest- Legado conservado con criterio:
- volumen
portainer_data - red
portainer2_default - No se tocaron OpenClaw, NPM, DNS ni firewall
Etapa 10.8 - Certificacion operativa final end-to-end¶
- Estado: cerrada
- Validacion visual final confirmada por Gabi
- OpenClaw UI accesible en
https://openclaw.alpuntodeventa.com.ar/chat?session=main - Pairing aprobado
- Chat funcional confirmado
- OpenClaw CLI auditado con:
- modelo efectivo
openai/gpt-5.5 - provider OpenAI autenticado
- agente default
main health --jsonenok- Smoke tests no destructivos cerrados:
- inferencia directa
OpenClaw_OK - agente
mainOpenClaw_OK - HTTPS publico
HTTP/2 200 - gateway interno valido desde la red Docker
- Check en host a
127.0.0.1:18789clasificado como esperado fuera de alcance por topologia sin puertos publicados al host - Estado operativo final:
- VPS
VERDE - Docker
VERDE - NPM
VERDE - Portainer
VERDE - OpenClaw
VERDE
Etapa 10.9 - Disaster Recovery certification¶
- Estado: cerrada
- Auditoria DR ejecutada en modo de solo lectura sobre produccion
- Inventario completo de reconstruccion desde cero documentado
- Backups restaurables dedicados generados para OpenClaw, NPM y Portainer
- Simulacion controlada no destructiva ejecutada en
/tmp/dr-green-* - Persistencia real de auth OpenAI trazada a archivos concretos en
config/ - Estrategia formal creada en
docs/BACKUP-RESTORE-STRATEGY.md - Runbook actualizado en
docs/DISASTER-RECOVERY-RUNBOOK.md - Certificacion DR emitida:
VERDE
Etapa 11.4 - Ventana controlada de updates 2026-06-08¶
- Estado: cerrada en
VERDE - Docker actualizado a
29.5.2con reemplazo dedocker.iopordocker-cepinneado y recovery manual dedocker.socket/docker.service - Portainer actualizado a
2.39.3preservandoproxy-network,portainer_data_newydocker.sock - OpenClaw actualizado a
2026.6.1conhealth,auth,HTTPS, handshake websocket y flujo autenticado websocket enPASS - NPM actualizado a
2.15.1con admin81,5hosts publicos,5upstreams internos y certificados activos enPASS - baseline operativo permanente apuntando a
docs/governance/operations/CURRENT-BASELINE.md
Cierre final de frentes¶
- Infraestructura: cerrada
- Hardening: cerrado
- DR: cerrado
- Backup/Restore: cerrado
- OpenClaw Platform: cerrada
Etapa 11 - VPS GOVERNANCE PLATFORM v1¶
- Estado: cerrada
docs/governance/queda creada como nueva autoridad documental del VPS- Tabla maestra, catalogos, servicios, runbooks, auditoria baseline y plantillas obligatorias creadas
- Regla permanente activa:
NINGUN SERVICIO NUEVO SE CONSIDERA TERMINADO SI NO ACTUALIZA GOVERNANCE - Estructura preparada para futura copia o sincronizacion en
/opt/governance - Alcance gobernado:
- servicios
- redes
- volumenes
- dominios
- puertos
- backups
- usuarios
- restore
- usos compartidos
- trazabilidad tecnica completa por servicio
- trazabilidad tecnica completa por uso
Etapa 11.1 - Governance v1 technical traceability¶
- Estado: cerrada
SERVICE-TEMPLATE.mdampliada con identidad, ubicacion, Docker, red, proxy, persistencia, backups, usos, dependencias, operacion, seguridad y decisionesUSAGE-TEMPLATE.mdampliada con ejemplo PostgreSQL y campos obligatorios por usoINVENTORY-TEMPLATE.mdampliada para activos con relacion tecnica real- Reglas nuevas creadas:
GOVERNANCE-CONTRACT.mdID-CONVENTIONS.mdSERVICE-REGISTRY-RULES.md- Reglas de cierre reforzadas:
- no se cierra un cambio si falta ficha, red, volumen, dominio, NPM, uso o backup documentado
- Fichas reales reforzadas:
svc-openclawsvc-nginx-proxy-managersvc-portainer
Etapa 11.2 - VPS GOVERNANCE PLATFORM v2¶
- Estado: cerrada en
VERDE - Nueva etapa:
VPS GOVERNANCE PLATFORM v2 - Subetapas:
- Knowledge Graph
- Validation System
- Regression Matrix
- Governance Control Tower
- Entregables creados:
docs/governance/catalog/TESTS.mddocs/governance/TEST-TEMPLATE.mddocs/governance/REGRESSION-MATRIX.mddocs/governance/VALIDATION-STATE.mddocs/governance/GOVERNANCE-CONTROL-TOWER.md- Cobertura estimada post-v2:
- Governance:
95% - Knowledge Graph:
94% - Regression Control:
92% - Control Tower:
97% - Cierre formal:
TEST-WEBSOCKET-001queda acotado formalmente: handshake tecnicoPASSconconnect.challenge; flujo autenticado completo medido aparte y hoyPASS
Etapa 11.3 - VPS OPERATIONS & SECURITY PLATFORM v1¶
- Estado: certificada en
VERDEpara el estado actual de produccion - Nueva etapa:
VPS OPERATIONS & SECURITY PLATFORM v1 - Subetapas:
- Operations
- Security
- Monitoring
- Maintenance
- Updates
- AI Administration
- Entregables creados:
docs/governance/operations/README.mddocs/governance/operations/OPERATIONS-CONTROL-TOWER.mddocs/governance/operations/MAINTENANCE-SCHEDULE.mddocs/governance/operations/UPDATE-POLICY.mddocs/governance/operations/CLEANUP-POLICY.mddocs/governance/operations/PERFORMANCE-BASELINE.mddocs/governance/operations/MONITORING-CATALOG.mddocs/governance/operations/ADMIN-QUESTIONS.mddocs/governance/security/README.mddocs/governance/security/SECURITY-STATE.mddocs/governance/security/SECURITY-CHECKLIST.mddocs/governance/security/VULNERABILITY-RUNBOOK.mddocs/governance/security/PATCHING-RUNBOOK.mddocs/governance/security/SSH-ACCESS-POLICY.mddocs/governance/security/FIREWALL-POLICY.mddocs/governance/security/EXPOSED-SERVICES.mddocs/governance/security/SECURITY-ADMIN-QUESTIONS.md- Estados documentales de la etapa:
- Operations:
VERDE - Security:
VERDE - Monitoring:
VERDE - AI Administration:
VERDE - Cierre documental adicional al
2026-06-03: - queda explicitado que todo update, upgrade, mantenimiento relevante o
cambio operativo debe pasar por
docs/governance/CHANGE-GATES.mdydocs/governance/runbooks/UPDATE-SERVICE.md - el gap de propagacion de
CHANGE-GATES.mden updates deDocker,Portainer,OpenClawyNPMqueda cerrado en la capa documental - queda creado el estandar
docs/governance/change-packets/CHANGE-PACKET-TEMPLATE.mdpara preparar y certificar futuros updates con un packet formal unico - queda creado el primer packet real preliminar
docs/governance/change-packets/CHANGE-PACKET-PORTAINER-UPDATE-001.mdcomo ejemplo inaugural, enBORRADOR,NO APROBADOyNO EJECUTAR TODAVIA - pasada documental final previa a los
4testsUPDATE: placeholders activos consolidados ensvc-openclaw,svc-nginx-proxy-managerysvc-portainer; la exposicion vigente de Portainer queda documentada detras deNPMy sin8000/9443publicados al host, dejando la validacion futurareality vs docscomo control complementario no bloqueante
Etapa 11.3b - Codex Efficiency Operating Gate¶
- Estado: cerrada documentalmente al
2026-06-10 - Objetivo formal: reducir consumo de contexto y prompts redundantes sin perder SAFE POINT, governance, trazabilidad ni validaciones documentales.
- Entregables creados:
docs/governance/ACTIVE-CONTEXT.mddocs/governance/GATE-CODEX-EFFICIENCY.md- Decision documental cerrada:
PROJECT-STATE.mdyROADMAP.mdse leen y actualizan por impacto de estado, decision, roadmap o cierre, no como lectura obligatoria por defecto en tareas chicas. - Restricciones mantenidas:
- sin runtime
- sin queries
- sin tablas
- sin Docker
- sin VPS
Etapa 11.3c - Blueprint Governance Model¶
- Estado: cerrada documentalmente al
2026-06-10 - Objetivo formal: auditar la arquitectura documental actual y formalizar una metodologia liviana de blueprint governance sin romper documentacion existente.
- Entregables creados:
docs/governance/documentation/OPENCLAW-DOCUMENT-ARCHITECTURE-REVIEW.mddocs/governance/documentation/OPENCLAW-BLUEPRINT-GOVERNANCE-MODEL.mddocs/governance/documentation/DOCUMENT-HIERARCHY.mddocs/governance/PROJECT-CONSTITUTION.mddocs/tenants/alpuntodeventa/business-observer/blueprints/README.md- Restricciones mantenidas:
- sin runtime
- sin VPS
- sin Docker
- sin queries
- sin codigo
- sin blueprints funcionales concretos en esa etapa
Etapas siguientes¶
Etapa 9.9 - Future Platform Foundation¶
- Estado: cerrada documentalmente
- Se crea
docs/FUTURE-PLATFORM-ROADMAP.mdcomo vision oficial futura - La arquitectura actual queda congelada como foundation operativa
Multi-Tenant Foundationqueda documentada pero no implementadaBusiness Knowledge Platformqueda roadmapeada pero no implementada- La evolucion futura queda ordenada por capas:
- infraestructura
- multi-tenant
- data foundation
- API platform
- business knowledge platform
- business dashboards
- agents layer
- future orchestrator
- Contratos oficiales futuros congelados:
scopetenant_id- ownership
OpenAPI- auditoria
- aislamiento entre tenants
Etapa 10 - Multi-Tenant Foundation¶
- Estado: cerrada documentalmente al
2026-06-02 - Contrato oficial creado en
docs/architecture/MULTI-TENANT-FOUNDATION.md - Estructura oficial creada:
docs/global/docs/tenants/alpuntodeventa/docs/tenants/ladirecta/- Tenants iniciales documentados:
alpuntodeventaladirecta- Estandar documental creado en
docs/governance/standards/MULTI-TENANT-DOCUMENTATION-STANDARD.md - Diagrama Mermaid multi-tenant publicado en
docs/governance/knowledge/diagrams/09-multi-tenant-foundation.md - Owners humanos formales asignados al
2026-06-03:Gabi / Carlos Canuparaalpuntodeventayladirecta - Restricciones mantenidas:
- sin APIs nuevas
- sin dashboards de negocio nuevos
- sin agentes nuevos
- sin bases nuevas
- sin cambios de infraestructura productiva salvo estructura documental
Etapa 14 - Data Foundation Multi-Tenant¶
- Estado: cerrada documentalmente al
2026-06-02 - Documento rector creado en
docs/architecture/DATA-FOUNDATION.md - Estandar global complementario creado en
docs/governance/standards/DATA-DESIGN-STANDARD.md - Objetivo formal:
definir la base oficial de datos multi-tenant sin implementar todavia
PostgreSQL, APIs, dashboards, alertas ni agentes - Estrategia inicial recomendada:
tablas compartidas con
tenant_idobligatorio - Campos minimos obligatorios definidos:
tenant_idsource_systemcreated_atupdated_atcreated_byupdated_byrecord_statusexternal_idsi aplicasync_batch_idsi aplica- Reglas de diseño reforzadas:
- categorias de identidad, trazabilidad, estado y vigencia, calidad y
preparacion analitica /
IA created_atyupdated_atinternos obligatorios salvo excepcion documentada- separacion entre timestamps internos y timestamps de origen
- uso de
source_row_hash,sync_batch_idylast_seen_atcuando la sync requiera deteccion de cambios, reconciliacion y auditoria - separacion de capas
raw / staging,coreyanalytics JSONpermitido solo para metadata flexible yfeaturesno criticas- Dominios iniciales documentados:
- clientes
- potenciales clientes
- productos
- SKU
- marcas
- categorias
- pedidos
- ventas
- canales
- proveedores
- finanzas
- capital por marca
- alertas
- workflows
- agentes
- integraciones
- Fuentes documentadas con separacion entre:
- realidad actual comprobada
- futuro previsto
- pendiente de validar
- Seguridad futura definida para:
tenant_idobligatorioRow Level Securityfuturo- credenciales por tenant
- no acceso cruzado
- auditoria de lectura y escritura
- minimo privilegio
- Restricciones mantenidas:
- sin bases nuevas
- sin cambios de infraestructura productiva
- sin APIs nuevas
- sin dashboards nuevos
- sin agentes nuevos
Etapa 15 - API Platform¶
- Estado: cerrada documentalmente al
2026-06-02 - Documento rector creado en
docs/architecture/API-PLATFORM.md - Objetivo formal:
definir la
API Platformmulti-tenant oficial sin implementar todaviaPostgREST,Kong,Scalar, endpoints productivos ni publicacion real de datos - Arquitectura inicial recomendada:
PostgreSQL -> PostgREST -> Nginx Proxy Manager -> API - Evolucion futura recomendada:
PostgreSQL -> PostgREST / APIs propias -> API Gateway futuro -> clientes internos y externos - Contrato multi-tenant obligatorio definido para:
scopetenant_id- owner
- consumidor esperado
- tipo
internaoexterna - permisos
- scopes
- fuente de datos
- clasificacion de datos
- auditoria requerida
- rate limit futuro si aplica
OpenAPIobligatorio- Seguridad futura definida para:
Row Level Security- roles de base
JWToAPI keys- claims con
tenant_id - scopes
- lectura vs escritura
- auditoria de requests
- logs sin secretos
- rotacion de credenciales
- minimo privilegio
- Catalogo inicial documentado:
- global:
health,tenants,platform status - tenant:
clientes,productos,marcas,pedidos,ventas,stock,alertas,workflows,agentes - Restricciones mantenidas:
- sin
PostgRESTproductivo - sin bases nuevas
- sin endpoints publicados
- sin instalacion de
Kong - sin instalacion de
Scalar - sin exposicion de datos reales
Etapa 15.2 - PostgreSQL Sandbox Multi-Tenant¶
- Estado:
sandbox validado en VPSal2026-06-02 - Safe point inicial:
git status -sb->## main...origin/maingit rev-parse HEAD->7d52b384638c226b656514a459a36e120da915df- Diagnostico remoto de solo lectura completado en
openclaw-vps - Hallazgos base:
dockerdisponible en VPS- sin
PostgreSQLactivo en contenedores al momento del relevamiento - sin evidencia de
5432publicado en VPS - redes actuales preservadas:
proxy-network,obs-observability-internal,openclaw_openclaw_internal - volumenes actuales preservados sin cambios
- Entregables creados:
infra/data-foundation/postgres-sandbox/docker-compose.ymlinfra/data-foundation/postgres-sandbox/.env.exampleinfra/data-foundation/postgres-sandbox/README.mdinfra/data-foundation/postgres-sandbox/init/docs/governance/operations/POSTGRESQL-SANDBOX-MULTI-TENANT.mddocs/governance/operations/DATA-FOUNDATION-SANDBOX.mddocs/governance/operations/VALIDACION-MULTI-TENANT-SANDBOX.md- Modelo minimo incluido:
tenantsclientesproductosventas- Seguridad inicial incluida:
RLSde lectura por tenant- rol
app_global_reader - rol
app_alpuntodeventa_reader - rol
app_ladirecta_reader - Validacion runtime confirmada:
- contenedor
openclaw-postgres-sandboxhealthy docker inspectconPortBindingsvacio- red efectiva
pg-sandbox-internal - consulta por rol valida separacion entre
alpuntodeventayladirecta - Restricciones mantenidas:
- sin
PostgREST - sin
Scalar - sin APIs publicas
- sin
WooCommercereal - sin
SGC / ERPreal - sin datos sensibles
- sin exposicion publica directa
Etapa 15.3 - PostgREST Sandbox Multi-Tenant¶
- Estado:
sandbox interno implementadoal2026-06-02 - Safe point local inicial:
git status -sb->## main...origin/maingit rev-parse HEAD->7a78ce1a17bdf9277e0c5961a878ad73702e3957- Correccion previa necesaria completada en VPS:
git pullremoto recuperado en/opt/openclawai- causa real del
publickey: faltaba~/.ssh/configpara seleccionar~/.ssh/openclawai_github_deploy - Entregables creados:
infra/data-foundation/postgrest-sandbox/docker-compose.ymlinfra/data-foundation/postgrest-sandbox/.env.exampleinfra/data-foundation/postgrest-sandbox/README.mdinfra/data-foundation/postgrest-sandbox/bootstrap/bootstrap-authenticator.shdocs/governance/operations/POSTGREST-SANDBOX-MULTI-TENANT.md- Diseno aprobado:
- validacion inicial con runtimes fijos por rol
- sin puertos publicados al host
- sin
JWTtodavia - Objetivo tecnico:
- validar
RLSvia REST - validar
OpenAPIinicial dePostgREST - no exponer endpoints a Internet
- Restricciones mantenidas:
- sin
Kong - sin
Scalar - sin datos reales
- sin escritura
- sin publicacion por
NPM
Etapa 15.4 - Tenant Security Sandbox¶
- Estado:
sandbox interno con JWT y scope enforcemental2026-06-02 - Safe point local inicial:
git status -sb->## main...origin/maingit rev-parse HEAD->63638306f7274aad73978eb61abcf27f78d4ed8e- Diagnostico operativo confirmado:
openclaw-postgres-sandboxhealthyopenclaw-postgrest-sandboxactivo en VPS- red
pg-sandbox-internalpresente - Entregables creados o actualizados:
infra/data-foundation/postgrest-sandbox/docker-compose.ymlinfra/data-foundation/postgrest-sandbox/.env.exampleinfra/data-foundation/postgrest-sandbox/README.mdinfra/data-foundation/postgrest-sandbox/bootstrap/reconcile-postgrest-security.sqlinfra/data-foundation/postgrest-sandbox/tools/generate-sandbox-jwt.pydocs/governance/operations/TENANT-SECURITY-SANDBOX.mddocs/governance/operations/POSTGREST-SANDBOX-MULTI-TENANT.md- Diseno aprobado:
- runtime unico
openclaw-postgrest-sandbox JWTcon claimstenant_id,role,scope,aud,iss,exp- secreto
JWTfuera de Git y montado por archivo local scope enforcementpor recurso dentro dedb-pre-requestRLSreforzada con el claimtenant_id- sin puertos publicados al host
- sin uso de
developers.alpuntodeventa.com.artodavia - Restricciones mantenidas:
- sin
Scalar - sin
Kong - sin
API keysproductivas - sin datos reales
- sin publicacion por
NPM - Validacion runtime final en VPS:
PortBindingsdeopenclaw-postgrest-sandbox={}- red efectiva solo
pg-sandbox-internal - token
apv-clientes->/clientes200,/ventas403,/productos403 - token
apv-ventas->/ventas200,/clientes403 - token
ladirecta-productos->/productos200,/ventas403 - token
global-all->/clientes,/productos,/ventas,/tenants200 - token sin
scope->403 - token con
scopedesconocido ->403 - token invalido y expirado ->
401 - token con
issinvalido ->403 - raiz
/->200solo con token valido - logs operativos revisados sin secretos ni tokens
Etapa 15.5 - OpenAPI Refinement Sandbox¶
- Estado:
validada en VPS y cerrada sin exportes insegurosal2026-06-02 - Safe point local inicial:
git status -sb->## main...origin/maingit rev-parse HEAD->0f0dca7e0fa9de68a3a1f167d899a1b1225dbd84- Entregables creados o actualizados:
infra/data-foundation/postgres-sandbox/init/005_openapi_metadata.sqlinfra/data-foundation/postgrest-sandbox/openapi/README.mddocs/governance/operations/OPENAPI-REFINEMENT-SANDBOX.mddocs/architecture/API-PLATFORM.mddocs/architecture/API-DOCUMENTATION-PLATFORM.md- Diseno aprobado:
- refinamiento del contrato runtime de
PostgRESTsin exponerlo - metadata SQL humana para enriquecer descripciones
OpenAPI - mantenimiento de tablas directas del sandbox en lugar de vistas API por ahora
- carpeta de exportes no secretos preparada para
openapi-apv-sandbox.json,openapi-ladirecta-sandbox.json,openapi-global-sandbox.json - Restricciones mantenidas:
- sin
Scalar - sin uso de
developers.alpuntodeventa.com.ar - sin
Kong - sin datos reales
- sin exposicion publica de
PostgREST - Resultado runtime final:
005_openapi_metadata.sqlaplicado en VPSopenclaw-postgres-sandbox->running healthyopenclaw-postgrest-sandbox->runningPortBindings->{}- red efectiva -> solo
pg-sandbox-internal GET /->200con tokensAPV,La DirectayGlobal- sin token ->
401 - token invalido ->
401 - contrato final visible ->
/,/clientes,/productos,/tenants,/ventas - metadata humana reflejada en
info.title,info.description,clientes.description,clientes.customer_name.descriptionytenants.description - no se commitean exportes JSON porque el contrato sigue declarando
host: openclaw-postgrest-sandbox:3000
Etapa 15.1 - O1 Observabilidad fundacional¶
- Estado: cerrada en
VERDE - Implementada como stack privado en Docker al
2026-06-01 - Sin puertos publicos nuevos
- Documento rector: OBSERVABILITY-O1-ARCHITECTURE.md
- Alcance implementado:
PrometheusGrafanaAlertmanagerNode ExportercAdvisorBlackbox Exporter- Entregables:
infra/observability/svc-observability-o4- red
obs-observability-internal - volumenes
obs_prometheus_data,obs_grafana_data,obs_alertmanager_data - dashboards operativos O2:
Executive Overview,Infrastructure Health,Docker Operations,Service Availability,Capacity Planning - backup extendido para O1
- Estado validado:
- targets Prometheus
UP - datasource Grafana
OK - dashboards provisionados
OK - Alertmanager
UP - probe HTTPS de OpenClaw
OK
Etapa 15.2 - O1.2 Proteccion externa de artefactos criticos¶
- Estado: cerrada documentalmente en
VERDE - Sin cambios en VPS, Docker, OpenClaw, NPM ni Portainer
- Se audito y formalizo que O1 queda protegido en tres capas:
- Git para compose, provisioning, dashboards y reglas
- backup local VPS para stack y volumenes
obs_* - copia externa manual validada en
C:\APV\backups\openclaw\ - Estrategia minima recomendada:
- copiar por corrida
observability-stack.tgz,obs-prometheus-volume.tgz,obs-grafana-volume.tgz,obs-alertmanager-volume.tgz,SHA256SUMSymanifest.txt - Objetivos operativos formalizados:
RPO 24hRTO 30-60 min- Gap residual explicitado:
- falta una simulacion dedicada de restore O1 desde la copia externa hacia staging
- Proximos pasos documentados:
- ejecutar restore drill O1 en staging dedicada
- evaluar automatizacion controlada de la copia externa en ventana separada
Etapa 15.3 - O3 Alertas controladas¶
- Estado: cerrada en
VERDE - Implementada al
2026-06-01sin puertos publicos nuevos - Alcance:
- alertas de disco, RAM, CPU y load del host
- alertas de contenedor clave,
cAdvisoryNode Exporter - alertas de OpenClaw HTTPS, NPM local, Portainer local y probes
- alertas de targets Prometheus y crecimiento de TSDB
- Entregables:
infra/observability/prometheus/rules/host-alerts.ymlinfra/observability/prometheus/rules/docker-alerts.ymlinfra/observability/prometheus/rules/service-alerts.ymlinfra/observability/prometheus/rules/prometheus-alerts.ymldocs/governance/operations/O3-ALERTS-CATALOG.md- Estado validado:
promtoolen verdeAlertmanagercon receiverlocal-null- targets
UP 0alertas activas falsas- OpenClaw, NPM y Portainer siguen
VERDE - Restriccion mantenida:
- sin notificaciones externas todavia
Etapa 15.4 - O6 Living Knowledge Platform¶
- Estado: cerrada en
VERDE - Auditoria de realidad ejecutada por SSH y repo sobre evidencia real al
2026-06-01 - Nueva capa creada:
docs/governance/knowledge/ - Entregables:
O6.0-REALITY-AUDIT.md- vista general del VPS
- mapa de servicios y dependencias
- diagramas Mermaid por arquitectura, redes, observabilidad, alertas, exposicion publica y persistencia
- catalogo de componentes
- data catalog tecnico inicial
- data lineage tecnico
- diseno documental del knowledge graph
- runbook
RESTORE-KNOWLEDGE-PLATFORM.md - Correcciones de verdad documental:
svc-openclawdeja de declarar un contenedorclino observado en runtimesvc-nginx-proxy-managerdeja explicitado que el websocket general ya queda certificado enVERDEcatalog/SERVICES.mdreconoce que observabilidad ya esta activa en el VPS- Resultado:
- ahora existe navegacion por niveles desde VPS hasta metrica/alerta
- la documentacion queda mejor alineada con la infraestructura real
Etapa 15.5 - O7 Metadata Platform Foundation¶
- Estado: cerrada en
VERDEcomo base documental - Alcance:
- diagnostico oficial de
OpenMetadata - contraste contra recursos reales del VPS
- decision de integracion sin despliegue
- modelado completo del caso
OpenClaw Infrastructure Knowledge Base - reglas de gobierno para futuros proyectos catalogables
- Evidencia de realidad usada:
ssh openclaw-vpsdocker psdocker volume lsdocker network lsdocs/VPS-INVENTORY.mddocs/governance/operations/O6.0-REALITY-AUDIT.md- documentacion oficial de
OpenMetadata - Decision resultante:
OpenMetadataes compatible por version con Docker actualOpenMetadatano queda aprobado para instalarse ensrv977009por falta de capacidad prudente y porque hoy no existePostgreSQLreal en el VPS- O7 queda aprobado como capa de
foundation only - Entregables:
docs/governance/knowledge/metadata-platform/README.mddocs/governance/knowledge/metadata-platform/O7-METADATA-PLATFORM-FOUNDATION.mddocs/governance/knowledge/metadata-platform/OPENCLAW-INFRASTRUCTURE-KB-MODEL.md
Etapa 15.6 - O8 Knowledge Population basada en evidencia real¶
- Estado: cerrada en
VERDE - Alcance:
- fichas atomicas de observabilidad
- capa Docker navegable por stacks, redes, volumenes y contenedores
- runtime real de OpenClaw consolidado
- integracion OpenAI clasificada con evidencia viva
- diagramas Mermaid ampliados
- runbook de mantenimiento de la Knowledge Platform
- Entregables:
docs/governance/knowledge/observability/docs/governance/knowledge/docker/docs/governance/knowledge/runtime/README.mddocs/governance/knowledge/integrations/openai.mddocs/governance/knowledge/diagrams/07-runtime-openclaw.mddocs/governance/knowledge/diagrams/08-openai-integration.mddocs/governance/runbooks/MAINTAIN-KNOWLEDGE-PLATFORM.md- Resultado:
- observabilidad, Docker, redes, volumenes, runtime y OpenAI pasan de cobertura dispersa a cobertura navegable
OpenAIdeja de estar enROJOporque existe evidencia funcional real- O8.8 agrega fichas propias para
Runtime HostyDNS / TLS - O8 queda completamente
VERDEpara su alcance
Etapa 15.6.8 - O8.8 Cierre de brechas finales de Knowledge Platform¶
- Estado: cerrada en
VERDE - Evidencia real usada:
hostnamectl,uname -a,lscpu,free -h,df -hip -brief addr,ss -tulpn,ufw status numbereddocker ps,docker inspect,docker network ls,docker volume lsgetent ahostsv4curl -Isobreopenclaw.alpuntodeventa.com.arywww.portainer.alpuntodeventa.com.aropenssl x509sobre certificadosnpm-2ynpm-3- lectura real de
proxy_host/*.confyletsencrypt/renewal/*.conf - APIs de
Prometheus, reglas y probesblackbox - Entregables:
docs/governance/knowledge/infrastructure/dns-tls.mddocs/governance/knowledge/infrastructure/runtime-host.md- actualizacion de relaciones, catalogos y auditoria O8.0
- Que cubre O8:
- infraestructura navegable por componente, red, volumen, runtime, dominio, TLS, metricas y alertas
- Que no cubre O8:
- retiro operativo de artefactos legacy
- Proximos candidatos de expansion:
- SMTP externo de alertas como mejora futura opcional no prioritaria
- decision final sobre
portainer_data - decision final sobre
portainer2_default
Etapa 15.7 - O9 Knowledge Portal¶
- Estado: cerrada en
VERDE - Decision tomada:
MkDocs Material - Motivos:
- bajo consumo
- busqueda integrada
- Markdown nativo
- Mermaid simple
- deploy Docker liviano
- actualizacion facil desde Git
- Entregables:
mkdocs.ymldocs/index.mdinfra/knowledge-portal/docs/governance/runbooks/MAINTAIN-KNOWLEDGE-PORTAL.md- Regla de gobierno:
- el repo sigue siendo la fuente de verdad
- el VPS publica solo una copia navegable
- URL publicada:
https://doc.alpuntodeventa.com.ar/- Publicacion recomendada:
- contenedor local en
127.0.0.1:8085 - exposicion solo por
NPM - proteccion con
Access ListoBasic Auth - Resultado esperado:
- portal navegable
- busqueda activa
- Mermaid renderizado
- actualizacion simple via
git pull+docker compose up -d --build
Etapa 15.7.2 - O9.2 Sincronizacion del Knowledge Portal desde Git¶
- Estado:
VERDE VALIDADO 2026-06-10 - Diagnostico consolidado:
- el portal esta publicado en
https://doc.alpuntodeventa.com.ar/ - el runtime vigente del VPS usa
/opt/openclawaicomo checkout Git real origin/mainesta operativo con deploy key read-only- el deploy oficial fast-forwardea, builda y recrea
knowledge-portal - Entregables:
infra/knowledge-portal/deploy-knowledge-portal.shdocs/governance/runbooks/SYNC-KNOWLEDGE-PORTAL-FROM-GIT.md- Flujo objetivo:
- deploy key SSH read-only o token read-only fuera del repo
git pull --ff-only origin mainmkdocs build --strictdocker compose -f infra/knowledge-portal/docker-compose.yml up -d --build --force-recreatecurl -I http://127.0.0.1:8085/- Estado actual:
- cierre documental y operativo en repo:
OK - runtime real activo y validado en
/opt/openclawai - publicacion controlada
2026-06-10 22:27 -0300:VERDE - HEAD publicado:
2e84fb979e80c490cb3c3d9322989d8582b11e73 search_index.jsonpublico y documentos criticos validados sin fallbackPage not found
Etapa 15.7.3 - O9.3 Activar Git real en el VPS para Knowledge Portal¶
- Estado:
VERDE - Diagnostico vivo:
/opt/openclawaiexiste en el VPS- ahora es checkout Git real con
.git knowledge-portalresponde en127.0.0.1:8085https://doc.alpuntodeventa.com.ar/respondeHTTP/1.1 200 OKgit rev-parse HEADyorigin/maincoinciden en2e84fb979e80c490cb3c3d9322989d8582b11e73- Entregables:
infra/knowledge-portal/activate-real-git-checkout.sh/root/activate-real-git-checkout.shstaged en el VPSinfra/knowledge-portal/deploy-knowledge-portal.shdocs/governance/runbooks/SYNC-KNOWLEDGE-PORTAL-FROM-GIT.md- Estado actual:
- deploy key read-only aceptada por GitHub
- bootstrap real ejecutado con reemplazo seguro snapshot -> checkout Git
- deploy corregido para no depender del bit ejecutable ni de
python3-venven el host - build estricto validado dentro del Dockerfile con
mkdocs build --strict - portal publico, search y Mermaid validados luego del deploy
Etapa 15.7.4 - O9.4 Publicacion segura de servicios¶
- Estado:
VERDE - DNS validados desde workstation y VPS:
doc.alpuntodeventa.com.argrafana.alpuntodeventa.com.arprometheus.alpuntodeventa.com.aralerts.alpuntodeventa.com.arthanos.alpuntodeventa.com.arportainer.alpuntodeventa.com.aropenclaw.alpuntodeventa.com.ar- Publicacion aprobada y validada:
https://doc.alpuntodeventa.com.ar/https://grafana.alpuntodeventa.com.ar/loginhttps://portainer.alpuntodeventa.com.ar/https://openclaw.alpuntodeventa.com.ar/- Endurecimiento aplicado:
obs-grafanaunido aproxy-networkGrafanapublicado porNPMconLet's EncryptPortainercorregido a dominio apex y dejado sin8000/9443publicados al host- Servicios sensibles no publicados:
PrometheusAlertmanagerThanos Query- Evidencia formal:
docs/governance/operations/O9.4-SERVICE-ACCESS-PUBLICATION.md
Etapa 15.7.5 - O9.5 Git Sync real VPS ↔ GitHub¶
- Estado:
VERDE - Causa raiz cerrada:
el
git pulldel VPS fallaba por working tree sucio con cambios manuales de O9.4, no por deploy key,originni rama - Validaciones cerradas:
- deploy key vigente
ssh -T git@github.comen modo read-onlyoriginengit@github.com:gcanuti/openclawai-vps-lab.git- checkout real en
main git pull --ff-only origin main- deploy oficial del portal
- Resultado:
- commit del VPS alineado con
origin/mainen2e84fb979e80c490cb3c3d9322989d8582b11e73 Knowledge Portalactualizado desde Git, no porscp- busqueda y Mermaid revalidados
- Revalidacion
2026-06-10: - metodo:
bash /opt/openclawai/infra/knowledge-portal/deploy-knowledge-portal.sh - fast-forward remoto:
e1ec36d5b9c272fe68965d0175524368fe0f4258->2e84fb979e80c490cb3c3d9322989d8582b11e73 - build estricto local y remoto:
PASS http://127.0.0.1:8085/->200https://doc.alpuntodeventa.com.ar/search/search_index.jsoncontieneBusiness Observer,Blueprint,Project Constitution,Document HierarchyySOURCE-003- rutas criticas de tenant, governance, blueprints, snapshot, diccionario y mapping visibles con contenido real
- Evidencia formal:
docs/governance/runbooks/SYNC-KNOWLEDGE-PORTAL-FROM-GIT.md
Etapa 15.7.6 - O9.6 Executive Infrastructure Board¶
- Estado:
VERDE - Dashboard provisionado:
Executive Infrastructure Board- Datasource rector:
Thanos- Cobertura ejecutiva:
- estado VPS, CPU, RAM, disco y Docker
OpenClaw,Knowledge Portal,Grafana,PortainerPrometheus,Thanos,Alertmanager- alertas activas
Targets UP/DOWN- SSL
- servicios publicados
- servicios protegidos internos
- Soporte agregado:
- probes
blackboxpublicas paradoc.alpuntodeventa.com.ar,grafana.alpuntodeventa.com.aryportainer.alpuntodeventa.com.ar - Evidencia formal:
docs/governance/operations/O9.6-EXECUTIVE-INFRASTRUCTURE-BOARD.md
Etapas futuras multi-tenant¶
Etapa 12 - Grafana Multi-Tenant¶
- Estado: pendiente
- Fuente futura principal:
Data Foundation, noPrometheuscomo fuente principal de negocio
Etapa 13 - OpenClaw Multi-Tenant¶
- Estado: pendiente
- Requiere separar workflows, agentes, logs y credenciales por
tenant_id
Etapa 15 - API Platform¶
- Estado: cerrada documentalmente al
2026-06-02 - Documento rector:
docs/architecture/API-PLATFORM.md - La implementacion runtime sigue pendiente
Etapa 16 - API Documentation¶
- Estado:
sandboxpublicado al2026-06-02 - Documento rector:
docs/architecture/API-DOCUMENTATION-PLATFORM.md - Objetivo formal:
documentar, visualizar y probar APIs de forma simple, moderna y segura con
Scalar, sin exponerPostgRESTreal ni publicar endpoints productivos - Herramienta recomendada:
Scalar - Alternativa documentada:
Swagger UI - Arquitectura objetivo documentada:
PostgreSQL -> PostgREST / APIs propias -> OpenAPI -> Scalar -> API Documentation Portal - Estructura futura definida para:
- APIs globales
- APIs por tenant
- Alpuntodeventa APIs
- La Directa APIs
- APIs internas
- APIs externas
- Contrato obligatorio documentado para:
OpenAPI- descripcion simple
tenant_idoscope=global- owner
- metodo
- endpoint
- parametros
- ejemplo de request
- ejemplo de response
- permisos requeridos
- scopes
- sensibilidad del dato
- estado
futuro,sandboxoproductivo - Reglas futuras de prueba documentadas para:
- tokens controlados
- no exponer secretos reales
- datos de prueba
- separacion
sandboxvsproductivo - auditoria futura
- Restricciones mantenidas:
- sin instalacion de
Swagger UI - sin reach directo de
ScalaraPostgREST - sin APIs reales
- sin endpoints productivos expuestos
Etapa 16.1 / Etapa 15.6b - Developer Portal Hardening¶
- Estado: cerrada al
2026-06-03 - Objetivo:
endurecer el
Developer Portalantes de abrir nuevas capas multi-tenant - Validaciones cerradas:
SAFE POINTlocal registrado- stash remoto
pre-scalar-sandbox-2026-06-02revisado y conservado HTTP -> HTTPSconfirmado endevelopers.alpuntodeventa.com.arHTTPS 200confirmadoScalarcargando correctamente/clientespublico devolviendo404OpenAPIpublico sin hosts internos, sinrpc/*, sin tokens ni secretosopenclaw-postgrest-sandboxconPortBindings {}y solo enpg-sandbox-internal- regeneracion segura documentada y reforzada en el script de export
- probe publico agregado para
developers.alpuntodeventa.com.ar - dashboard ejecutivo ampliado con
Developer Portal - build
mkdocs build --strictrequerido como gate de cierre - Decision sobre stash:
- no aplicar
- no eliminar
- conservar como resguardo previo a
Scalar
Etapa 17 - Alertas Multi-Tenant¶
- Estado: pendiente
- Debe consumir datos de negocio auditables por tenant
Etapa 17.5 - OpenClaw Business Observer¶
- Estado: cerrada documentalmente al
2026-06-03 - Documento rector creado:
docs/business/OPENCLAW-BUSINESS-OBSERVER.md - Objetivo formal:
definir la primera capacidad real de negocio de la plataforma como capa de
observacion funcional con core reutilizable y contextos separados, usando a
APVcomo primer caso de uso sobre vendedores, clientes, stock, marcas, rentabilidad y rotacion - Preguntas objetivo definidas para: lectura comercial, lectura ejecutiva, deteccion de desbalances y priorizacion de accion
- Fuentes candidatas documentadas:
SGC / ERP,WooCommerce, archivos importados,OpenClaw,PostgreSQLfuturo y APIs externas futuras - Primer caso de uso funcional agregado:
BUSINESS-OBSERVER-USE-CASE-001CLIENTES EN RIESGO COMERCIALdocumentado endocs/business/use-cases/BUSINESS-OBSERVER-USE-CASE-001-CLIENTES-EN-RIESGO.mdcomo primera bajada comercial concreta paraAPV - Reglas comerciales oficiales del caso de uso agregadas en
docs/business/use-cases/BUSINESS-OBSERVER-USE-CASE-001-RULES.mdcon jerarquia oficial: perder cliente, perder participacion en marcas estrategicas, perder participacion en marcas secundarias y perder volumen - Segundo caso de uso funcional agregado:
BUSINESS-OBSERVER-USE-CASE-002CRECIMIENTO Y COLOCACION ESTRATEGICAdocumentado endocs/business/use-cases/BUSINESS-OBSERVER-USE-CASE-002-CRECIMIENTO-Y-COLOCACION-ESTRATEGICA.mdpara definir la mirada ofensiva del observer sobre siembra comercial, colocacion minima, penetracion, ampliacion progresiva y ranking conceptual de oportunidades paraAPV - Decision comercial oficial agregada:
la importancia relativa de las marcas debe condicionar la lectura del riesgo
bajo el principio
90% del negocioconcentrado aproximadamente en10% de las marcas - Primera referencia fuerte aprobada para riesgo critico:
14 dias sin comprar - Decision de evolucion agregada:
el observer no debe quedar atado solo a
APV;La Directapodra tener su observer propio y el mismo patron debera servir para futuros tenants - Restricciones mantenidas:
- sin runtime
- sin codigo
- sin arquitectura detallada
- sin dashboards implementados
- sin alertas de negocio implementadas
- sin agentes implementados
Etapa 17.5.1 - APV tenant Business Observer docs¶
- Estado: cerrada documentalmente al
2026-06-03 - Estructura creada:
docs/tenants/alpuntodeventa/business-observer/ - Objetivo formal:
separar con claridad que parte del observer pertenece al
Corereutilizable y que parte pertenece a las decisiones comerciales del tenantalpuntodeventa - Entregables creados:
README.mdPROJECT-STATE.mdROADMAP.mdBUSINESS-OBSERVER.mdUSE-CASES.mdRULES.mdGROWTH-PLACEMENT.mdDATA-NEEDS.mdDECISIONS.mdUNSERVED-DEMAND.md- Entregables actualizados:
docs/tenants/alpuntodeventa/README.mddocs/tenants/alpuntodeventa/TENANT.mddocs/PROJECT-STATE.mddocs/ROADMAP.mddocs/business/OPENCLAW-BUSINESS-OBSERVER.mdmkdocs.yml- Restricciones mantenidas:
- sin runtime
- sin
SQL - sin
APIs - sin
IA - sin integracion de datos
- sin cambios de infraestructura
- Evolucion documental al
2026-06-03: UC004 Demanda no atendida y oportunidad economica perdidaqueda creado como cuarto caso de uso oficial del tenantAPVUC005 Calendario operativo e inteligencia temporalqueda creado como quinto caso de uso oficial del tenantAPV, en estado documental y no operativoUC006 Inteligencia de Mercado y Pricingqueda creado como sexto caso de uso oficial del tenantAPV, en estado documental y no operativoUC007 Recomendaciones Comerciales Priorizadasqueda creado como septimo caso de uso oficial del tenantAPV, en estado documental y no operativoUC008 Inteligencia de Surtido y Mixqueda creado como octavo caso de uso oficial del tenantAPV, en estado documental y no operativoUC009 Inteligencia de Proveedores y Abastecimientoqueda creado como noveno caso de uso oficial del tenantAPV, en estado documental y no operativosustitucionqueda explicitada como capacidad relacionada y transversaloportunidad economica perdidaqueda definida como estimacion comercial, no como venta perdida exacta
Etapa 17.5.2 - APV Business Observer governance model¶
- Estado: cerrada documentalmente al
2026-06-04 - Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-GOVERNANCE-MODEL.md - Objetivo formal:
consolidar en una sola autoridad funcional oficial el proposito del observer,
sus principios rectores, definiciones oficiales, conceptos
APV, jerarquia de decisiones, reglas de gobierno, relacion conUC001aUC009, relacion conKPIsy objetivos, fronteraCorevsTenanty criterios para aceptar nuevos casos de uso - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/README.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.mdmkdocs.yml- Restricciones mantenidas:
- sin runtime
- sin
SQL - sin
APIs - sin
IA - sin dashboards
- sin infraestructura
Etapa 17.5.3 - APV Business Observer data foundation audit¶
- Estado: cerrada documentalmente al
2026-06-04 - Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-FOUNDATION-AUDIT-001.md - Objetivo formal:
determinar que datos reales necesita
APVpara queUC001aUC009sean implementables, medibles, auditables y utiles para decision comercial - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/DATA-NEEDS.mddocs/tenants/alpuntodeventa/business-observer/README.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.md- Restricciones mantenidas:
- sin runtime
- sin
SQL - sin
APIs - sin
IA - sin dashboards
- sin infraestructura
Etapa 17.5.4 - APV Business Observer data contract¶
- Estado: cerrada documentalmente al
2026-06-04 - Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.md - Objetivo formal:
transformar la auditoria de datos en un contrato funcional claro para futura
preparacion de dataset tenant, futuro diseno
Postgres, futura sincronizacion, futuras validaciones y trazabilidad porUC - Regla complementaria reforzada al
2026-06-08: el contrato queda explicitamente alineado condocs/governance/standards/DATA-DESIGN-STANDARD.mdpara identidad, trazabilidad, timestamps internos, hashes de cambio, batches de sync y uso prudente deJSON - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/DATA-NEEDS.mddocs/tenants/alpuntodeventa/business-observer/README.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.mdmkdocs.yml- Restricciones mantenidas:
- sin runtime
- sin
SQL - sin
APIs - sin
IA - sin dashboards
- sin infraestructura
Etapa 17.5.5 - APV Inventory Events Layer future¶
- Estado: cerrada documentalmente al
2026-06-05 - Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/sources/INVENTORY-EVENTS-LAYER-FUTURE.md - Objetivo formal:
documentar una capa futura derivada para convertir cambios de stock en
eventos comerciales utiles sin implementar runtime, datos,
SQL,APIs, scripts ni automatizacion - Relacion funcional explicitada con:
SOURCE-002C,SOURCE-002D,UC004,UC005,UC007,UC008yUC009 - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/README.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/DATA-NEEDS.mddocs/PROJECT-STATE.mddocs/ROADMAP.mdmkdocs.yml- Restricciones mantenidas:
- sin runtime
- sin
SQL - sin
APIs - sin
IA - sin scripts
Etapa 17.5.6 - APV SOURCE-003 ventas calculadas¶
- Estado: cerrada documentalmente al
2026-06-05 - Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/sources/SOURCE-003-SGC-VENTAS-COMPROBANTES.md - Objetivo formal:
documentar la fuente calculada de ventas y comprobantes para
APVtomando como autoridad funcional la query compartida porGabi, conTabla 2como salida principal de detalle por item y composicion deBalanceCtaCteFinal - Actualizacion documental al
2026-06-09: la query preservada queda reinterpretada comovNext candidate,Tabla 2pasa a documentarse como salida canonica futura de sync ysource_003_sales_itemsqueda como base conceptual recomendada enPostgreSQL / OpenClaw - Actualizacion documental al
2026-06-10:Tabla 2 vNextqueda validada en ventana controlada con resultadoVERDE;line_key_v1,source_row_hash_v1, checks e indices sugeridos quedan llevados a disenoDDLdocumental desource_003_sales_items, sin crear migraciones ni tablas fisicas - Actualizacion piloto al
2026-06-10: la migracion piloto debusiness_observer.source_003_sales_itemsfue ejecutada y validada enPostgreSQLlocal, basegestion_de_negocios_core, con backup logico previo, insert sintetico borrado, rollback preparado no ejecutado, tabla final vacia y sin produccion final - Intento de carga piloto real al
2026-06-10: se ejecuto la extraccion deSOURCE-003 / Tabla 2 vNextpara2026-06-08y se detuvo antes de insertar porque la salida actual dio1262filas contra1269esperadas, con conciliacion fallida de importe total yCMV; la tabla destino quedo vacia y el intento queda documentado endocs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-SALES-ITEMS-PILOT-LOAD.md - Inventario documental posterior de
SOURCE-003 / Tabla 2 V2: el snapshot2026-06-09confirma68columnas reales, identifica31columnas faltantes o solo consolidadas en el DDL piloto previo, crea diccionario y mapping CSV/PostgreSQL; aprobacion humana posterior deGabiacepta las68columnas reales para persistencia en piloto controlado y habilita la preparacion de carga desdeSOURCE-003-SNAPSHOT-001contraPostgreSQLlocal; no habilita sync diaria, carga masiva ni produccion final; estado vigenteAPPROVED_FOR_CONTROLLED_PILOT - Carga piloto controlada al
2026-06-10:SOURCE-003-SNAPSHOT-001quedo cargado desde el CSV congelado enbusiness_observer.source_003_sales_items,PostgreSQLlocal, con1886filas persistidas,68/68columnas de negocio contempladas,line_key_v4sin duplicados,source_row_hash_v1calculado sobre las68columnas, conciliacion de importe total /CMVen verde y produccion final bloqueada; evidencia endocs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-SALES-ITEMS-PILOT-LOAD-001.md - Piloto controlado de ventana movil/backfill corto al
2026-06-11: ventana2026-06-03a2026-06-09ejecutada contraSGCsolo lectura yPostgreSQLlocal legacygestion_de_negocios_core; snapshot local de9760filas con sha2566ead2bb9c7c1f23d3acb7aa49bdcb7ca66ea2fc663874f03fb0a4039ebf97072, backup acotadobusiness_observerconpg_restore --list PASS,7875inserts,25updates por hash/valores cambiados,1860unchanged conlast_seen_atrefrescado,1fila previa no vista sinmissing_from_source,9761filas finales,0duplicadosline_keyy decisionVERDE; no hubo hard delete, sync diaria, carga masiva ni produccion final; evidencia endocs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-SALES-ITEMS-WINDOW-PILOT-001.md - Decision documental cerrada:
la nueva query completa queda preservada en
docs/tenants/alpuntodeventa/business-observer/source-authority/SOURCE-003-VENTAS-VNEXT-TABLA2-AUTHORITY.sqlsin reemplazar ni borrar la autoridad anterior - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/sources/SOURCE-003-SGC-VENTAS-COMPROBANTES.mddocs/tenants/alpuntodeventa/business-observer/source-authority/SOURCE-AUTHORITY-REGISTRY.mddocs/tenants/alpuntodeventa/business-observer/source-authority/SOURCE-001-CLIENTES-VCLIENTES-AUTHORITY.mddocs/tenants/alpuntodeventa/business-observer/source-authority/SOURCE-002-PRODUCTOS-PRODUCTS-AUTHORITY.sqldocs/tenants/alpuntodeventa/business-observer/source-authority/SOURCE-003-VENTAS-TABLA2-AUTHORITY.sqldocs/tenants/alpuntodeventa/business-observer/source-authority/SOURCE-003-VENTAS-VNEXT-TABLA2-AUTHORITY.sqldocs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-SALES-ITEMS-DDL-DESIGN.mddocs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-SALES-ITEMS-PILOT-MIGRATION.mddocs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-SALES-ITEMS-PILOT-LOAD.mddocs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-SALES-ITEMS-PILOT-LOAD-001.mddocs/tenants/alpuntodeventa/business-observer/design/sql/001_source_003_sales_items_design.sqldocs/tenants/alpuntodeventa/business-observer/design/sql/002_source_003_sales_items_pilot_migration.sqldocs/tenants/alpuntodeventa/business-observer/design/sql/002_source_003_sales_items_pilot_rollback.sqldocs/tenants/alpuntodeventa/business-observer/SOURCE-INVENTORY-CHECKLIST-001.mddocs/tenants/alpuntodeventa/business-observer/DATA-NEEDS.mddocs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mdREADME.mdmkdocs.yml- Restricciones mantenidas:
- sin runtime de aplicacion
- sin
APIs - sin
IA - sin scripts nuevos
- sin sync diaria
- sin carga masiva
- sin produccion final
- sin infraestructura
Etapa 17.5.7 - APV SOURCE-001 clientes authority¶
- Estado: cerrada documentalmente al
2026-06-05 - Documento rector actualizado:
docs/tenants/alpuntodeventa/business-observer/source-authority/SOURCE-001-CLIENTES-VCLIENTES-AUTHORITY.md - Objetivo formal:
preservar como autoridad completa de
SOURCE-001laSELECT_CUSTOMERS_SQLdel script de sincronizacion de clientes aportado porGabi, manteniendo aecommerce.dbo.VCLIENTEScomo fuente autoridad yTelefonocomoWhatsAppdel cliente segunRTRIM([Telefono]) AS whatsapp - Regla documental adicional cerrada:
todos los grupos futuros derivados de
SOURCE-001pertenecen al mismo clienteSGCy deben relacionarse portenant_id + codigo_cliente, concodigo_cliente = NULLIF(LTRIM(RTRIM([Codigo])), '')como forma canonica recomendada en destino - Regla futura de sync adicional cerrada:
la extraccion base de
SOURCE-001no debe agregarWHERE Estado = 'CLIENTE ACTIVO'; la base sincronizada debe conservarCLIENTE ACTIVO,CLIENTE SUSPENDIDOyCLIENTE DE BAJA, preservarEstadocomoestado_raw, aplicar filtros de venta o facturacion solo en capas de consumo y no habilitar hard delete por baja comercial - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/source-authority/SOURCE-001-CLIENTES-VCLIENTES-AUTHORITY.mddocs/tenants/alpuntodeventa/business-observer/source-authority/SOURCE-AUTHORITY-REGISTRY.mddocs/tenants/alpuntodeventa/business-observer/sources/SOURCE-001-SGC-CLIENTES.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.md- Restricciones mantenidas:
- sin runtime
- sin
SQLnuevo - sin
APIs - sin
IA - sin scripts nuevos
- sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.7b - APV SOURCE-001 inventario real de Estado¶
- Estado: cerrada documentalmente al
2026-06-08 - Objetivo formal:
validar con evidencia real y de solo lectura la distribucion de
Estadoenecommerce.dbo.VCLIENTESy su relacion conFecha_Baja, sin registrar datos personales ni exponer credenciales - Evidencia real registrada:
la consulta devolvio solo
CLIENTE ACTIVO,CLIENTE DE BAJAyCLIENTE SUSPENDIDO - Resultado agregado observado:
CLIENTE ACTIVO=5938,CLIENTE DE BAJA=5372,CLIENTE SUSPENDIDO=91 - Resultado de control:
no se observaron valores inesperados ni
NULL/VACIO - Lectura funcional confirmada:
Fecha_Bajaaparece informada en el100%deCLIENTE DE BAJAy nula en el100%deCLIENTE ACTIVOyCLIENTE SUSPENDIDO - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/SOURCE-INVENTORY-RESULTS-001.mddocs/tenants/alpuntodeventa/business-observer/sources/SOURCE-001-SGC-CLIENTES.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.md- Restricciones mantenidas:
- solo lectura
- sin runtime
- sin
SQLde escritura - sin
APIs - sin
IA - sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.7c - APV SOURCE-001 unicidad real de Codigo¶
- Estado: cerrada documentalmente al
2026-06-08 - Objetivo formal:
validar con evidencia real y de solo lectura si
Codigonormalizado puede sostenerse como clave logica fuerte deSOURCE-001junto contenant_id, sin registrar datos personales ni exponer credenciales - Evidencia real registrada:
SELECT 1 AS okejecutado con resultado1 - Resultado agregado observado:
filas_totales=11401,codigos_normalizados_distintos=11401,codigos_nulos_o_vacios=0,exceso_sobre_unicidad=0,codigos_duplicados_distintos=0,filas_involucradas_en_duplicados=0 - Resultado de control:
no fue necesario ejecutar
Query 1Bporque no aparecieron duplicados - Lectura funcional confirmada:
NULLIF(LTRIM(RTRIM([Codigo])), '')sostuvo unicidad perfecta en la corrida real observada y respaldatenant_id + codigo_clientecomo clave logica fuerte paraSOURCE-001 - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/SOURCE-INVENTORY-RESULTS-001.mddocs/tenants/alpuntodeventa/business-observer/sources/SOURCE-001-SGC-CLIENTES.mddocs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.md- Restricciones mantenidas:
- solo lectura
- sin runtime
- sin
SQLde escritura - sin
APIs - sin
IA - sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.7d - APV SOURCE-001 calidad real de WhatsApp¶
- Estado: cerrada documentalmente al
2026-06-08 - Objetivo formal:
validar con evidencia real y de solo lectura la calidad operativa de
Telefonousado comoWhatsAppenecommerce.dbo.VCLIENTES, sin exponer datos personales ni credenciales - Evidencia real registrada:
SELECT 1 AS okejecutado con resultado1 - Resultado agregado observado:
filas_totales=11401,telefono_informado=7107,telefono_vacio=4294,telefonos_repetidos_distintos=350,filas_involucradas=760,max_clientes_distintos_por_telefono=14 - Resultado estructural observado:
7027/7107telefonos informados con largo entre10y13luego de quitar separadores,35casos con caracteres no habituales,64casos menores a10y16mayores a13 - Lectura funcional confirmada:
la fuente sirve como base operativa de
WhatsApp, pero con cobertura incompleta, repetidos reales entre clientes distintos y heterogeneidad de formato que impide cerrar todavia una normalizacion definitiva - Semaforo recomendado:
AMARILLO - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/SOURCE-INVENTORY-RESULTS-001.mddocs/tenants/alpuntodeventa/business-observer/sources/SOURCE-001-SGC-CLIENTES.mddocs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.md- Restricciones mantenidas:
- solo lectura
- sin runtime
- sin
SQLde escritura - sin
APIs - sin
IA - sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.7e - APV SOURCE-001 primer mapeo origen-destino¶
- Estado: cerrada documentalmente al
2026-06-08 - Objetivo formal:
documentar el primer mapeo campo por campo desde
ecommerce.dbo.VCLIENTEShacia bloques logicos futuros del modeloPostgreSQLdelBusiness Observer, sin crear tablas, migraciones ni runtime - Decision documental:
el mapeo aplica
DATA-DESIGN-STANDARDy mantienetenant_id + codigo_clientecomo clave logica fuerte del dominio cliente - Reglas cerradas en el mapping:
estado_rawpreservado,customer_statusycan_sellderivados,WhatsAppguardado comoraw + normalized + quality_status, sin uso como identificador unico, y preservacion de clientes suspendidos o de baja - Regla de sync cerrada en el mapping:
source_row_hash,sync_batch_id,extracted_at,last_seen_at,created_atyupdated_atquedan documentados como capa de auditoria obligatoria del futuro sync - Pendientes preservados:
no cerrar todavia evidencia de vendedor, frecuencia, normalizacion
definitiva de
WhatsAppni estrategia final de tablas fisicas - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/mappings/SOURCE-001-CLIENTES-MAPPING.mddocs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.mddocs/tenants/alpuntodeventa/business-observer/sources/SOURCE-001-SGC-CLIENTES.mddocs/tenants/alpuntodeventa/business-observer/README.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.mdmkdocs.yml- Restricciones mantenidas:
- sin runtime
- sin queries
- sin
SQLfisico - sin tablas
- sin migraciones
- sin
APIs - sin
IA - sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.7f - APV SOURCE-001 vendedor y frecuencia reales¶
- Estado: cerrada documentalmente al
2026-06-08 - Objetivo formal:
validar con evidencia real y de solo lectura la consistencia operativa de
vendedor,
CodFrec,Frecuenciay campos diarios enecommerce.dbo.VCLIENTES, sin exponer datos personales ni credenciales - Evidencia real registrada:
SELECT 1 AS okejecutado con resultado1 - Resultado agregado observado para vendedor:
filas_totales=11404,vendedor_codigo_vacio=0,vendedor_nombre_vacio=0,76codigos distintos,76nombres distintos,0inconsistenciascodigo -> nombrey0inconsistenciasnombre -> codigo - Resultado agregado observado para frecuencia:
filas_totales=11404,cod_frec_vacio=0,frecuencia_vacia=0,4parescod_frec + frecuenciaconsistentes y sin mapeos multiples - Resultado agregado observado para dias:
solo se observaron
S,NyNULL/VACIOenlunesasabado - Lectura funcional confirmada:
SOURCE-001deja respaldados enVERDEel ownership comercial y el calendario base del cliente dentro deVCLIENTES, aunque el diseno fisico sigue abierto porWhatsApp, territorialidad y estrategia final de tablas - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/SOURCE-INVENTORY-RESULTS-001.mddocs/tenants/alpuntodeventa/business-observer/mappings/SOURCE-001-CLIENTES-MAPPING.mddocs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.mddocs/tenants/alpuntodeventa/business-observer/sources/SOURCE-001-SGC-CLIENTES.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.md- Restricciones mantenidas:
- solo lectura
- sin runtime
- sin
SQLde escritura - sin
APIs - sin
IA - sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.7g - APV SOURCE-001 territorialidad real¶
- Estado: cerrada documentalmente al
2026-06-08 - Objetivo formal:
validar con evidencia real y de solo lectura la cobertura y consistencia de
Localidad,ProvinciayZonaenecommerce.dbo.VCLIENTES, sin exponer datos personales ni credenciales - Evidencia real registrada:
SELECT 1 AS okejecutado con resultado1 - Resultado agregado observado para cobertura:
filas_totales=11404,localidad_vacia=0,provincia_vacia=0,zona_vacia=1,24provincias distintas,516localidades distintas y365zonas distintas - Resultado agregado observado para zonas:
NO DEFINIDA=1522,NULL/VACIO=1,9437zonas con prefijoZONAy444valores no prefijados - Resultado agregado observado para consistencia:
289zonas acotadas a1provincia,76zonas multi-provincia y6365clientes involucrados en zonas multi-provincia - Lectura funcional confirmada:
SOURCE-001deja respaldadasLocalidadyProvinciacomo senales territoriales fuertes yZonacomo senal logistica util, pero con semaforo generalAMARILLOpor dispersion textual y necesidad futura de normalizacion territorial - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/SOURCE-INVENTORY-RESULTS-001.mddocs/tenants/alpuntodeventa/business-observer/mappings/SOURCE-001-CLIENTES-MAPPING.mddocs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.mddocs/tenants/alpuntodeventa/business-observer/sources/SOURCE-001-SGC-CLIENTES.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.md- Restricciones mantenidas:
- solo lectura
- sin runtime
- sin
SQLde escritura - sin
APIs - sin
IA - sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.7h - APV SOURCE-001 estrategia territorial canonica¶
- Estado: cerrada documentalmente al
2026-06-08 - Objetivo formal:
definir la arquitectura territorial canonica de
SOURCE-001antes del diseno fisico final, sin runtime, sin queries, sin tablas y sin migraciones - Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/territory/TERRITORY-NORMALIZATION-STRATEGY.md - Decision documental cerrada:
ProvinciayLocalidadquedan tratadas como senales fuertes con preservacionraw + normalized - Decision documental cerrada:
Zonaqueda tratada como agrupacion logistica conzona_raw + zona_type + zona_normalizedy no como geografia pura ni como territorio comercial del vendedor - Regla documental cerrada:
NO DEFINIDAse preserva como valor observado yNULL/VACIOqueda diferenciado - Regla documental cerrada: zonas multi-provincia no se consideran error automatico
- Regla documental cerrada: vendedor asignado queda como owner comercial derivado por cartera real y no como reemplazo del territorio
- Regla futura de diseno cerrada:
customers_addressdebera guardarraw + normalizedy la capa analitica debera consumirnormalizedconservando posibilidad de auditoria sobreraw - Pendientes preservados:
diseno fisico final de tablas, normalizacion definitiva de
WhatsApp, catalogo real de alias territoriales y decision futura de geocodificacion - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/territory/TERRITORY-NORMALIZATION-STRATEGY.mddocs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.mddocs/tenants/alpuntodeventa/business-observer/mappings/SOURCE-001-CLIENTES-MAPPING.mddocs/tenants/alpuntodeventa/business-observer/sources/SOURCE-001-SGC-CLIENTES.mddocs/tenants/alpuntodeventa/business-observer/README.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.mdmkdocs.yml- Restricciones mantenidas:
- sin runtime
- sin queries
- sin
SQL - sin tablas
- sin migraciones
- sin
APIs - sin
IA - sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.7i - APV SOURCE-001 catalogo real de alias territoriales¶
- Estado: cerrada documentalmente al
2026-06-08 - Objetivo formal:
preparar el inventario documental del catalogo real de alias territoriales y
la clasificacion efectiva de
ZonaparaSOURCE-001, sin runtime, sin tablas, sin migraciones y sin modificar datos - Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/territory/TERRITORY-ALIAS-CATALOG-001.md - Decision documental cerrada:
el catalogo preserva evidencia
rawobservada deProvincia,LocalidadyZona, con propuesta de canonicalizacion no destructiva - Decision documental cerrada:
JOSE C. PAZ -> JOSE C PAZ,NO DEFINIDA -> undefinedyNULL/VACIO -> unknownquedan asentados como ejemplos rectores iniciales - Decision documental cerrada:
Zonaqueda inventariada con taxonomia futuralogistic_zone,undefinedyunknown - Decision documental cerrada:
el catalogo futuro debera registrar
confidence_status,approved_by,approved_atysource_evidence - Pendientes preservados: diseno fisico final, carga real del catalogo, revision humana de aliases y geocodificacion futura
- Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/territory/TERRITORY-ALIAS-CATALOG-001.mddocs/tenants/alpuntodeventa/business-observer/territory/TERRITORY-NORMALIZATION-STRATEGY.mddocs/tenants/alpuntodeventa/business-observer/mappings/SOURCE-001-CLIENTES-MAPPING.mddocs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.mddocs/tenants/alpuntodeventa/business-observer/README.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.mdmkdocs.yml- Restricciones mantenidas:
- sin runtime
- sin queries nuevas
- sin
SQL - sin tablas
- sin migraciones
- sin
APIs - sin
IA - sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.7j - APV SOURCE-001 paquete de revision humana territorial¶
- Estado: cerrada documentalmente al
2026-06-08 - Objetivo formal:
preparar un paquete de revision humana para que
Gabivalide o corrija aliases territoriales y clasificacion efectiva deZonaantes del diseno fisico final deSOURCE-001, sin runtime, sin tablas, sin migraciones y sin modificar datos - Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/territory/TERRITORY-HUMAN-REVIEW-001.md - Decision documental cerrada:
la revision humana debe cubrir aliases de
Provincia,LocalidadyZona, mas la confirmacion de casos ambiguos bajologistic_zone,undefinedyunknown - Decision documental cerrada:
NO DEFINIDAse preserva como valor observado y se revisa comoundefined;NULL/VACIOse preserva como ausencia y se revisa comounknown - Decision documental cerrada: zonas multi-provincia no se tratan como error automatico y deben revisarse con criterio de negocio
- Decision documental cerrada:
no se cierra ninguna clasificacion definitiva de
Zonasin aprobacion humana real - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/territory/TERRITORY-HUMAN-REVIEW-001.mddocs/tenants/alpuntodeventa/business-observer/territory/TERRITORY-ALIAS-CATALOG-001.mddocs/tenants/alpuntodeventa/business-observer/territory/TERRITORY-NORMALIZATION-STRATEGY.mddocs/tenants/alpuntodeventa/business-observer/README.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.mdmkdocs.yml- Restricciones mantenidas:
- sin runtime
- sin datos personales
- sin
SQLde escritura - sin tablas
- sin migraciones
- sin
APIs - sin
IA - sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.7k - APV vista analitica futura de territorio comercial del vendedor¶
- Estado: cerrada documentalmente al
2026-06-09 - Objetivo formal: definir conceptualmente la futura capa analitica que debe responder el territorio comercial del vendedor, sin runtime, sin queries, sin tablas, sin vistas fisicas y sin migraciones
- Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/analytics/SELLER-COMMERCIAL-TERRITORY-VIEW.md - Decision documental cerrada:
la vista es derivada de
analyticsy no reemplazaSOURCE-001,SOURCE-002niSOURCE-003 - Decision documental cerrada:
Zonasigue siendo dimension logistica y no puede usarse para inferir vendedor responsable - Decision documental cerrada:
la granularidad recomendada es
tenant_id + periodo + vendedor + cliente + SKU - Decision documental cerrada:
la vista debe soportar dimensiones de vendedor, cliente, estado cliente,
localidad, provincia, zona logistica,
SKU, marca, proveedor, categoria y periodo - Decision documental cerrada: la vista debe contemplar metricas futuras de cartera activa, bajas, territorio perdido, territorio recuperable, ventas, mix, proveedores dominantes y recomposicion de masa comercial
- Pendientes preservados:
SQLreal, creacion fisica, validacion con datos deSOURCE-002ySOURCE-003, performance real y permisos de consumo - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/analytics/SELLER-COMMERCIAL-TERRITORY-VIEW.mddocs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.mddocs/tenants/alpuntodeventa/business-observer/README.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.mdmkdocs.yml- Restricciones mantenidas:
- sin runtime
- sin queries
- sin tablas
- sin vistas fisicas
- sin migraciones
- sin
APIs - sin
IA - sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.7l - APV reconciliacion conceptual de vendedor asignado vs vendedor transaccional¶
- Estado: cerrada documentalmente al
2026-06-09 - Objetivo formal:
definir conceptualmente como reconciliar el vendedor asignado de
SOURCE-001con el vendedor real de la venta enSOURCE-003, sin runtime, sin queries, sin tablas, sin vistas fisicas y sin migraciones - Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/analytics/SELLER-RECONCILIATION-RULES.md - Decision documental cerrada:
SOURCE-001defineseller_assignedcomo cartera formal y ownership comercial esperado del cliente - Decision documental cerrada:
SOURCE-003defineseller_transactionalcomo autoria real de la venta y base obligatoria para atribucion real de facturacion - Decision documental cerrada:
seller_effectivequeda reservado como vendedor usado por una metrica especifica y debe declararse explicitamente segun contexto - Decision documental cerrada: la diferencia entre vendedor asignado y vendedor transaccional debe preservarse como senal analitica y no tratarse como reemplazo automatico
- Decision documental cerrada:
el modelo futuro debe contemplar abandono de cuenta, desarrollo por
terceros, cuenta compartida, reactivacion y
seller_mismatch - Pendientes preservados:
validacion real de coincidencia assigned vs transactional,
SQLreal de reconciliacion, reglas finales para ecommerce o canales compartidos, umbrales de abandono, ventana temporal decuenta trabajada, diseno fisico, performance real y permisos de consumo - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/analytics/SELLER-RECONCILIATION-RULES.mddocs/tenants/alpuntodeventa/business-observer/analytics/SELLER-COMMERCIAL-TERRITORY-VIEW.mddocs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.mddocs/tenants/alpuntodeventa/business-observer/README.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.mdmkdocs.yml- Restricciones mantenidas:
- sin runtime
- sin queries
- sin tablas
- sin vistas fisicas
- sin migraciones
- sin
APIs - sin
IA - sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.7n - APV validacion real exploratoria de seller reconciliation¶
- Estado: cerrada documentalmente al
2026-06-09 - Objetivo formal:
medir con datos reales la relacion entre
seller_assigneddeSOURCE-001yseller_transactionaldeSOURCE-003, sin cerrar todaviaSQL, umbrales ni vistas fisicas - Evidencia real observada:
campos reales respaldados en
SOURCE-003para cliente, vendedor y fecha; filtro validov.Estado <> 'ANULADO'; recorte exploratorio prudente por actividad comercial real usandoTipoComp IN ('FACTURA A','GUIA DE DESPACHO','FACTURA B') - Ventana exploratoria usada:
2026-03-11a2026-06-09(90 dias) con cortes complementarios30 / 60 / 90 dias - Resultado agregado observado:
97885ventas validas exploratorias,97885/97885mapeadas aSOURCE-001,95690coincidencias,2195mismatch (2.24%),1851clientes con ultima venta del vendedor asignado,47clientes con ultima venta de otro vendedor y0ambiguos en la ultima fecha - Resultado agregado adicional:
clientes activos con ventas en
90 dias=1898; sin venta reciente del vendedor asignado =421en30 dias,198en60 diasy28en90 dias - Conclusion recomendada:
AMARILLO, porque la relacion assigned vs transactional es medible con evidencia fuerte pero la taxonomia de canal sigue ambigua entreOTROS,SIN ASIGNARy posibles canales compartidos /ecommerce - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/analytics/SELLER-RECONCILIATION-RULES.mddocs/tenants/alpuntodeventa/business-observer/analytics/CUSTOMER-OWNERSHIP-ANALYTICS.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.md- Restricciones mantenidas:
- solo lectura
- sin runtime
- sin tablas
- sin vistas fisicas
- sin migraciones
- sin datos personales
- sin credenciales
Etapa 17.5.7o - APV taxonomia funcional parcial de canal en SOURCE-003¶
- Estado: cerrada documentalmente al
2026-06-09 - Objetivo formal:
validar y documentar la semantica real del canal transaccional observado en
SOURCE-003, con foco enOTROSySIN ASIGNAR, sin runtime, sin tablas, sin vistas fisicas y sin migraciones - Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/sources/SOURCE-003-CHANNEL-TAXONOMY.md - Evidencia real agregada:
campo de canal real identificado como
LTRIM(RTRIM(v.Canal)), apoyo semantico adicional deLTRIM(RTRIM(v.Ramo)),4valores de canal observados en90 dias(OTROS,NULL/VACIO,TRADIC,KIOSCO) y ausencia de etiquetas textuales directas deecommerce - Decision documental cerrada:
TRADICyKIOSCOquedan utilizables comotraditional_seller - Decision documental cerrada:
NULL/VACIO -> SIN ASIGNARqueda utilizable comounassignedy no debe excluirse del analisis de reconciliacion - Decision documental cerrada:
OTROSqueda utilizable solo con apoyo deRamo, preservando siemprecanal_raw + ramo_raw - Conclusion recomendada:
AMARILLO, porque el canal es utilizable pero no existe evidencia suficiente para cerrarecommerceoshared_channela nivel de canal completo - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/sources/SOURCE-003-CHANNEL-TAXONOMY.mddocs/tenants/alpuntodeventa/business-observer/sources/SOURCE-003-SGC-VENTAS-COMPROBANTES.mddocs/tenants/alpuntodeventa/business-observer/analytics/SELLER-RECONCILIATION-RULES.mddocs/tenants/alpuntodeventa/business-observer/analytics/CUSTOMER-OWNERSHIP-ANALYTICS.mddocs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.mddocs/tenants/alpuntodeventa/business-observer/README.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.mdmkdocs.yml- Restricciones mantenidas:
- solo lectura
- sin runtime
- sin tablas
- sin vistas fisicas
- sin migraciones
- sin datos personales
- sin credenciales
Etapa 17.5.7m - APV customer ownership analytics¶
- Estado: cerrada documentalmente al
2026-06-09 - Objetivo formal: definir conceptualmente como identificar quien trabaja realmente cada cliente, sin runtime, sin queries, sin tablas, sin vistas fisicas y sin migraciones
- Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/analytics/CUSTOMER-OWNERSHIP-ANALYTICS.md - Decision documental cerrada:
ownership_assignedsale deSOURCE-001como cartera formal y responsabilidad esperada - Decision documental cerrada:
ownership_last_salesale deSOURCE-003y no redefine por si solo la cartera asignada - Decision documental cerrada:
ownership_effectivequeda como lectura derivada futura desde ventas reales recientes, con ventana temporal y umbrales aun pendientes - Decision documental cerrada:
ownership_recovery,ownership_growth,ownership_riskyownership_abandonmentquedan fijados como conceptos analiticos futuros para medir reactivacion, desarrollo, riesgo y abandono real de la cuenta - Decision documental cerrada adicional:
la etapa deja preparada la futura alimentacion de
KPIs, alertas, automatizaciones,MLeIAsin habilitar todaviaSQL, materializacion ni runtime - Decision documental cerrada: las ventas deben seguir atribuyendose al vendedor transaccional real y no al vendedor asignado cuando no coinciden
- Pendientes preservados:
validacion real de coincidencia assigned vs transactional, ventana temporal
de
ownership_effective, umbrales de abandono, recuperacion y crecimiento,SQLreal, vista omaterialized view, performance, permisos y canales compartidos - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/analytics/CUSTOMER-OWNERSHIP-ANALYTICS.mddocs/tenants/alpuntodeventa/business-observer/analytics/SELLER-RECONCILIATION-RULES.mddocs/tenants/alpuntodeventa/business-observer/analytics/SELLER-COMMERCIAL-TERRITORY-VIEW.mddocs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.mddocs/tenants/alpuntodeventa/business-observer/README.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.mdmkdocs.yml- Restricciones mantenidas:
- sin runtime
- sin queries
- sin tablas
- sin vistas fisicas
- sin migraciones
- sin
APIs - sin
IA - sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.7p - APV Customer Blueprint¶
- Estado: cerrada documentalmente al
2026-06-10 - Objetivo formal:
crear el primer blueprint funcional concreto del
Business Observer APV, definiendo que es unClienteparaOpenClaw / APVsin runtime, sin queries, sin tablas, sin migraciones, sinSQLejecutable y sin implementacion - Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/blueprints/CUSTOMER-BLUEPRINT.md - Decision documental cerrada:
Clientequeda definido como entidad comercial central y unidad de analisis para venta, recuperacion, territorio, logistica, ownership y oportunidades - Decision documental cerrada:
la clave logica fuerte actual del dominio es
tenant_id + codigo_clientedesdeSOURCE-001 / ecommerce.dbo.VCLIENTES - Decision documental cerrada:
CLIENTE ACTIVO,CLIENTE SUSPENDIDOyCLIENTE DE BAJAdeben preservarse;can_selles derivado y la baja comercial no habilita hard delete - Decision documental cerrada:
WhatsAppyCUITno son claves primarias del dominio cliente;Zonaes logistica y no vendedor responsable - Decision documental cerrada:
seller_assigneddesdeSOURCE-001yseller_transactionaldesde ventas reales deben preservarse separados - Pendientes preservados:
diseno fisico final de
SOURCE-001, normalizacion definitiva deWhatsApp, catalogo territorial real cargado, integracion fisica con ventas y productos, ownership efectivo con umbrales y permisos de consumo - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/blueprints/CUSTOMER-BLUEPRINT.mddocs/tenants/alpuntodeventa/business-observer/blueprints/README.mddocs/tenants/alpuntodeventa/business-observer/README.mddocs/governance/ACTIVE-CONTEXT.mddocs/governance/documentation/DOCUMENT-HIERARCHY.mddocs/governance/documentation/OPENCLAW-BLUEPRINT-GOVERNANCE-MODEL.mddocs/PROJECT-STATE.mddocs/ROADMAP.mdmkdocs.yml- Restricciones mantenidas:
- sin runtime
- sin queries
- sin tablas
- sin migraciones
- sin
SQL - sin codigo
- sin
APIs - sin
IA - sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.7q - APV Blueprint Authoring Standard and Functional Blueprints¶
- Estado: cerrada documentalmente al
2026-06-10 - Objetivo formal:
consolidar la metodologia Blueprint con un estandar de autoria y crear los
blueprints funcionales principales restantes del
Business Observer APV, sin runtime, sin queries, sin tablas, sin migraciones, sinSQLejecutable y sin implementacion - Documento rector creado:
docs/governance/documentation/BLUEPRINT-AUTHORING-STANDARD.md - Blueprints creados:
docs/tenants/alpuntodeventa/business-observer/blueprints/PRODUCT-BLUEPRINT.mddocs/tenants/alpuntodeventa/business-observer/blueprints/SALES-BLUEPRINT.mddocs/tenants/alpuntodeventa/business-observer/blueprints/OWNERSHIP-BLUEPRINT.mddocs/tenants/alpuntodeventa/business-observer/blueprints/TERRITORY-BLUEPRINT.md- Decision documental cerrada:
un blueprint define concepto de negocio, frontera, identidad, reglas,
preguntas y pendientes; no define query, tabla,
DDL, migracion ni implementacion - Decision documental cerrada:
Productoqueda definido como entidad de catalogo comercial anclada atenant_id + sku, no solo comoSKUtecnico delERP - Decision documental cerrada:
Ventaqueda definida como hecho transaccional itemizado desdeSOURCE-003 / Tabla 2 vNext, conline_key_v4en estadoAMARILLO ACEPTADOy atribucion aseller_transactional - Decision documental cerrada:
Ownershipqueda definido como lectura analitica de quien trabaja realmente una cuenta, preservandoseller_assignedyseller_transactionalseparados - Decision documental cerrada:
Territoryqueda definido separando territorio logistico y territorio comercial del vendedor;Zona SGCno define vendedor responsable - Pendientes preservados:
umbrales de ownership, normalizacion territorial final, validacion ampliada
de
line_key_v4, diseno fisico final, permisos de consumo, performance real y cualquier implementacion futura aprobada - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/blueprints/README.mddocs/tenants/alpuntodeventa/business-observer/README.mddocs/governance/ACTIVE-CONTEXT.mddocs/governance/documentation/DOCUMENT-HIERARCHY.mddocs/governance/documentation/OPENCLAW-BLUEPRINT-GOVERNANCE-MODEL.mddocs/PROJECT-STATE.mddocs/ROADMAP.mdmkdocs.yml- Restricciones mantenidas:
- sin runtime
- sin queries
- sin tablas
- sin migraciones
- sin
SQL - sin codigo
- sin
APIs - sin
IA - sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.8 - APV SOURCE-002 maestro de productos authority¶
- Estado: cerrada documentalmente al
2026-06-07 - Documento rector actualizado:
docs/tenants/alpuntodeventa/business-observer/sources/SOURCE-002-SGC-PRODUCTOS.md - Objetivo formal:
reemplazar la autoridad previa de
SOURCE-002por la nueva query completa aportada porGabi, dejando aSOURCE-002cerrada comoMaestro de productosy fuente unica vigente para producto, marca, estado, stock actual, stock en bultos, proveedor, costos, precios,IVA, margenes, descuentos, logistica de bultos/pallets y fechas operativas - Confirmacion humana agregada:
Gabiconfirma que la query nueva es la autoridad vigente deSOURCE-002 - Regla operativa agregada:
SKU NOT IN ('0124', '3857', '3998', '3793')queda documentado como la primera lista conocida de exclusiones operativas y debera ser configurable en futuros scripts porque esos articulos pueden responder a operaciones internas o no tradicionales - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/source-authority/SOURCE-002-PRODUCTOS-PRODUCTS-AUTHORITY.sqldocs/tenants/alpuntodeventa/business-observer/sources/SOURCE-002-SGC-PRODUCTOS.mddocs/tenants/alpuntodeventa/business-observer/source-authority/SOURCE-AUTHORITY-REGISTRY.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/tenants/alpuntodeventa/business-observer/DATA-NEEDS.mddocs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.mddocs/tenants/alpuntodeventa/business-observer/SOURCE-INVENTORY-CHECKLIST-001.mddocs/tenants/alpuntodeventa/business-observer/sources/SOURCE-002-QUERY-RECOVERY-REPORT.mddocs/PROJECT-STATE.mddocs/ROADMAP.md- Restricciones mantenidas:
- sin runtime
- sin
SQLnuevo - sin
APIs - sin
IA - sin scripts nuevos
- sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.9 - APV separacion documental de producto, stock y valores economicos¶
- Estado: cerrada documentalmente al
2026-06-07 - Objetivo formal:
dejar separada, a nivel de contrato y de fuentes futuras, la frontera entre
SOURCE-002maestro de productos,SOURCE-002Dstock intradiario liviano,SOURCE-002Csnapshot diario y la futura trazabilidad de precios, costos, impuestos, margenes y descuentos que pueden cambiar durante el dia - Decision documental:
el maestro no debe absorber toda la historia economica y la capa
intradiaria no debe cargar consultas pesadas al
SGC - Validacion documental agregada:
la capa economica de
SOURCE-002ya queda respaldada con un ejemplo real deL7paraSKU 0135ySKU 0128, confirmando queL1..L9repiten el patronMargenLn,PrecioLn,IVAPrecioLnyPrecioNetoLn - Estrategia recomendada: combinacion de maestro vigente + snapshot diario de cierre + historial por cambio para valores economicos
- Regla estructural ya cerrada:
las listas de precios deben modelarse como filas normalizadas por
SKU+lista_codigo, no como columnas fijas en la tabla destino principal - Justificacion de origen ya cerrada:
SOURCE-002requiere normalizacion porque elERP / SGCexpone datos poco prolijos para analitica y la autoridad ya documentaCAST,ROUND,RTRIM, calculos deIVA, stock en bultos, palletizado, conversion de fechas y exclusiones configurables deSKU - Entregables actualizados:
docs/tenants/alpuntodeventa/business-observer/sources/SOURCE-002-SGC-PRODUCTOS.mddocs/tenants/alpuntodeventa/business-observer/sources/SOURCE-002C-STOCK-DAILY-SNAPSHOT.mddocs/tenants/alpuntodeventa/business-observer/sources/SOURCE-002D-STOCK-CURRENT-10MIN.mddocs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.mddocs/tenants/alpuntodeventa/business-observer/DATA-NEEDS.mddocs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.mddocs/tenants/alpuntodeventa/business-observer/ROADMAP.mddocs/PROJECT-STATE.mddocs/ROADMAP.md- Restricciones mantenidas:
- sin runtime
- sin
SQL - sin
APIs - sin
IA - sin scripts
- sin
Docker - sin
VPS - sin
OpenClaw
Etapa 17.5.10 - APV SOURCE-003 DDL piloto DB dedicada¶
- Estado: ejecutada en verde al
2026-06-11 - Objetivo formal:
preparar y ejecutar un paquete controlado de
DDLpiloto paraopenclaw_business_observer_dev.business_observer.source_003_sales_itemssin tocar datos - Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-DEDICATED-DB-DDL-PILOT-PACKAGE.md - Documento de ejecucion:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-DEDICATED-DB-DDL-PILOT-EXECUTION-001.md - SQL preparado para revision:
docs/tenants/alpuntodeventa/business-observer/design/sql/003_source_003_dedicated_db_ddl_pilot_preflight.sqldocs/tenants/alpuntodeventa/business-observer/design/sql/003_source_003_dedicated_db_ddl_pilot_forward.sqldocs/tenants/alpuntodeventa/business-observer/design/sql/003_source_003_dedicated_db_ddl_pilot_rollback.sqldocs/tenants/alpuntodeventa/business-observer/design/sql/003_source_003_dedicated_db_ddl_pilot_post_checks.sql- Decision:
DDL PILOTO EJECUTADO / VERDE - Evidencia:
preflight, forward y post-checks pasaron; tabla creada con
83columnas,21constraints,8indices secundarios requeridos, grants minimos y default privileges validados; tabla vacia con0filas - Restricciones mantenidas:
- sin
DML - sin carga
- sin sync
- sin
Docker - sin
VPS - sin
OpenClaw - sin
NPM - sin deploy
Etapa 17.5.11 - APV SOURCE-003 gate de carga piloto minima DB dedicada¶
- Estado: preparada para revision al
2026-06-11 - Objetivo formal:
dejar listo el gate documental y tecnico para una futura carga piloto minima
de
SOURCE-003enopenclaw_business_observer_dev.business_observer.source_003_sales_items, sin ejecutar la carga - Documento rector creado:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-DEDICATED-DB-PILOT-LOAD-GATE.md - SQL preparado para revision:
docs/tenants/alpuntodeventa/business-observer/design/sql/004_source_003_dedicated_db_pilot_load_preflight.sqldocs/tenants/alpuntodeventa/business-observer/design/sql/004_source_003_dedicated_db_pilot_load_candidate.sqldocs/tenants/alpuntodeventa/business-observer/design/sql/004_source_003_dedicated_db_pilot_load_post_checks.sqldocs/tenants/alpuntodeventa/business-observer/design/sql/004_source_003_dedicated_db_pilot_load_rollback.sql- Alcance propuesto:
SOURCE-003-SNAPSHOT-001, ventana2026-06-09a2026-06-09, maximo1886filas, CSV preparado de83columnas fuera de Git, tabla dedicada inicialmente vacia,line_key_v4,source_row_hash_v1y rollback porsync_batch_id - Decision:
APTO PARA REVISION / NO EJECUTAR - Evidencia:
verificacion solo lectura confirma DB dedicada, tabla existente, owner
openclaw_bo_admin, roles/grants minimos y tabla vacia con0filas - Restricciones mantenidas:
- sin carga
- sin
INSERT,COPY,MERGEniUPSERT - sin rollback ejecutado
- sin sync
- sin carga masiva
- sin produccion final
- sin cambios en PostgreSQL
- sin cambios en
gestion_de_negocios_core - sin
Docker - sin
VPS - sin
OpenClaw - sin
NPM - sin deploy
Etapa 17.5.12 - APV SOURCE-003 ejecucion carga piloto minima DB dedicada¶
- Estado: preparacion de CSV cerrada en verde; carga no ejecutada al
2026-06-11 - Objetivo formal:
ejecutar la carga piloto minima autorizada de
SOURCE-003enopenclaw_business_observer_dev.business_observer.source_003_sales_items - Documento de ejecucion:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-DEDICATED-DB-PILOT-LOAD-EXECUTION-001.md - Decision:
CSV PREPARADO / CARGA NO EJECUTADA - Evidencia: SAFE POINT inicial paso; el snapshot raw existe y conserva sha256 esperado; el bloqueo original por falta de CSV preparado queda resuelto a nivel de artefacto local fuera de Git, pero la carga sigue no ejecutada
- SQL: no se ejecuto preflight DB, candidate, post-checks ni rollback
- Preparacion posterior:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PILOT-LOAD-PREPARED-CSV-001.mdregistra el CSV preparado exacto fuera de Git para una futura carga autorizada:83columnas,1886filas, ventana2026-06-09, sha2563f16a957a79fc84d4ca37930988287cb81f05166210d057fcf8b45007f184afeysync_batch_idpreparado1827f887-9499-4579-b4f3-234d54f41f7f - Restricciones mantenidas:
- sin carga
- sin
INSERT,COPY,MERGEniUPSERT - sin rollback ejecutado
- sin sync
- sin carga masiva
- sin produccion final
- sin cambios en
gestion_de_negocios_core - sin
Docker - sin
VPS - sin
OpenClaw - sin
NPM - sin push
- sin deploy
Etapa 17.5.13 - APV SOURCE-003 preflight carga piloto minima DB dedicada¶
- Estado: preflight pasado al
2026-06-11; candidate no ejecutado - Objetivo formal: ejecutar solamente el preflight autorizado de artefacto y DB para dejar la futura carga piloto minima lista para autorizacion separada
- Documento de evidencia:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PILOT-LOAD-PREFLIGHT-001.md - Evidencia:
SAFE POINT exacto en
8bcabe7360273f9793f24c03384b532640e723f5; CSV preparado local de83columnas y1886filas validado con sha2563f16a957a79fc84d4ca37930988287cb81f05166210d057fcf8b45007f184afeysync_batch_id1827f887-9499-4579-b4f3-234d54f41f7f; CSV fuera de Git; DB dedicadaopenclaw_business_observer_devvalidada en solo lectura con tabla destino existente, owneropenclaw_bo_admin, grants/roles basicos y0filas - SQL:
docs/tenants/alpuntodeventa/business-observer/design/sql/004_source_003_dedicated_db_pilot_load_preflight.sqlejecutado conON_ERROR_STOP=1; todos los checks pasaron - Restricciones mantenidas:
- sin candidate load
- sin
INSERT,COPY,MERGEniUPSERT - sin rollback ejecutado
- sin sync diaria
- sin carga masiva
- sin produccion final
- sin cambios en
gestion_de_negocios_core - sin
Docker - sin
VPS - sin
OpenClaw - sin
NPM - sin push
- sin deploy
Etapa 17.5.14 - APV SOURCE-003 candidate load piloto DB dedicada¶
- Estado: carga piloto fallida al
2026-06-11 - Objetivo formal:
ejecutar solamente el candidate load piloto autorizado para el batch
1827f887-9499-4579-b4f3-234d54f41f7f - Documento de evidencia:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PILOT-LOAD-EXECUTION-001.md - Evidencia previa:
SAFE POINT exacto en
9d7d622354176daa34ce0762bb97da8eb993695d; CSV preparado local revalidado con83columnas,1886filas, fecha unica2026-06-09, sha2563f16a957a79fc84d4ca37930988287cb81f05166210d057fcf8b45007f184afe; DB dedicada validada con tabla vacia y batch ausente - SQL:
preflight autorizado paso; candidate autorizado fallo en la linea
104con\copy: error de procesamiento al final de la linea; post-checks no ejecutados - Estado final DB:
business_observer.source_003_sales_itemsquedo con0filas y0filas del batch autorizado; rollback no aplico - Restricciones mantenidas:
- sin sync diaria
- sin carga masiva
- sin produccion final
- sin cambios en
gestion_de_negocios_core - sin Docker
- sin VPS
- sin OpenClaw
- sin NPM
- sin push
- sin deploy
Etapa 17.5.15 - APV SOURCE-003 reintento carga piloto DB dedicada¶
- Estado: carga piloto ejecutada y cierre operativo publicado en verde al
2026-06-11 - Objetivo formal:
reintentar solamente la carga piloto minima autorizada para el batch
1827f887-9499-4579-b4f3-234d54f41f7f, luego de corregir el\copy - Documento de evidencia:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PILOT-LOAD-EXECUTION-002.md - Evidencia previa:
SAFE POINT exacto en
e89cbcca366602190cec9ceb385531f7c68d6957; CSV preparado local revalidado con83columnas,1886filas, fecha unica2026-06-09, sha2563f16a957a79fc84d4ca37930988287cb81f05166210d057fcf8b45007f184afe; DB dedicada validada con tabla vacia y batch ausente - SQL:
preflight autorizado paso; candidate autorizado ejecuto
COPY 1886,INSERT 0 1886yCOMMIT; post-checks autorizados pasaron - Estado final DB:
business_observer.source_003_sales_itemsquedo con1886filas finales del batch autorizado, fecha unica2026-06-09, metadata exacta, sin duplicados, sin nulos criticos y conciliacion de importe/CMV en verde; rollback no aplico - Cierre operativo:
hito
SOURCE-003piloto dedicadoVERDE, DDL ejecutadoVERDE, CSV preparadoVERDE, candidate loadVERDE, post-checksVERDE, evidencia publica publicada enhttps://doc.alpuntodeventa.com.ar/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PILOT-LOAD-EXECUTION-002/ - Restricciones mantenidas:
- sin sync diaria
- sin carga masiva
- sin produccion final
- sin cambios en
gestion_de_negocios_core - sin Docker
- sin VPS operativo salvo deploy controlado del Knowledge Portal
- sin OpenClaw
- sin NPM
- solo publicacion documental del Knowledge Portal
Etapa 17.5.16 - APV SOURCE-003 generador Python prepared CSV¶
- Estado: generador creado y validado estructuralmente al
2026-06-11 - Objetivo formal:
automatizar en Python el flujo reproducible
SOURCE-003 raw snapshot -> prepared CSVsin tocarPostgreSQL - Script creado:
scripts/source_003_prepare_csv.py - Documento de evidencia:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PREPARED-CSV-PYTHON-GENERATOR-001.md - Ejecucion:
corrida strict contra
snapshots/source-003/SOURCE-003-TABLA2-V2-2026-06-09_20260610-210406-0300.csv - Output:
snapshots/source-003/prepared/generated/SOURCE-003-PILOT-LOAD-DEDICATED-DB-2026-06-09.generated.csv, fuera de Git - Resultado:
REPRODUCIBLE ESTRUCTURAL / SHA DIFERENTE;1886filas,83columnas, raw sha25607092c284b5b636b8a31cd616ef5b4fa5d0ce499b81c767437842b1f7edfcbc3, output sha2566fb44d9870a567e728df9bbdcc6b83279d84791bd732626c9e19ccf3a28dc903 - Comparacion:
contra CSV validado sha256
3f16a957a79fc84d4ca37930988287cb81f05166210d057fcf8b45007f184afe, con82/83columnas coincidentes celda por celda y diferencia acotada aiden1886filas - Restricciones mantenidas:
- sin
PostgreSQL - sin SQL
- sin
psql - sin carga de datos
- sin sync diaria
- sin carga masiva
- sin produccion final
- sin VPS
- sin Docker
- sin OpenClaw
- sin NPM
- sin push
- sin deploy
Etapa 17.5.17 - APV SOURCE-003 runner Python controlado¶
- Estado: runner creado y validado en modo seguro al
2026-06-11 - Objetivo formal:
preparar la futura orquestacion controlada
preflight -> candidate load -> post-checks -> rollback segurosin tocarPostgreSQLen esta tarea - Script creado:
scripts/source_003_pilot_load_runner.py - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PILOT-LOAD-PYTHON-RUNNER-001.md - Comandos implementados:
plan,validate-files,dry-run,preflight,status,verify-existing-pilot,post-checks,load,rollback,full - Validaciones ejecutables ahora:
--help,plan,validate-filesydry-run - Guardas:
los modos con DB exigen
--execute,--i-understand-this-touches-db, confirmacion exacta de DB, batch y CSV sha256, mas variablesAPV_BO_LOCAL_POSTGRES_* - Restriccion adicional vigente:
load,rollbackyfullquedan bloqueados en esta revision porque la evidencia vigente dice que la tabla dedicada ya contiene1886filas del batch piloto verde y no corresponde reintentar escrituras sin un nuevo gate - Restricciones mantenidas:
- sin
PostgreSQL - sin SQL
- sin
psql - sin carga de datos
- sin rollback ejecutado
- sin sync diaria
- sin carga masiva
- sin produccion final
- sin
VPS - sin
Docker - sin
OpenClaw - sin
NPM - sin push
- sin deploy
Etapa 17.5.18 - APV SOURCE-003 runner DB preflight controlado¶
- Estado: preflight DB del runner ejecutado y bloqueado semanticamente al
2026-06-12 - Objetivo formal:
validar conexion segura, fingerprint real de instancia y ejecucion
exclusivamente del
preflightDB autorizado del runnerSOURCE-003, sin ejecutarload,fullnirollback - Documento de evidencia:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-RUNNER-PREFLIGHT-DB-001.md - SAFE POINT:
rama
main,git status -sben## main...origin/main,git rev-parse HEADygit ls-remote origin mainen3fc7c25c81bba3d4e85e3f6a697ae11371436161 - Revision segura previa:
py_compile,--help,plan --dry-run,validate-files --dry-runydry-runpasaron conpostgresql_touched = false,fingerprint_probe_attempted = falseysql_script_executed = false - Entorno:
psql.exelocal dePostgreSQL 15observado fuera dePATH; para esta corrida se agrego solo alPATHdel proceso;.envno teniaAPV_BO_LOCAL_POSTGRES_USER/PASSWORDniAPV_BO_EXPECTED_POSTGRES_*, por lo que se mapearon temporalmente en memoria desde la credencial admin local y la evidencia fuerte de fingerprint, sin imprimir secretos ni modificar configuracion persistente - Resultado tecnico del runner:
el runner completo el probe real de fingerprint y ejecuto
004_source_003_dedicated_db_pilot_load_preflight.sqlconpostgresql_touch_attempted = true,postgresql_touched = true,fingerprint_probe_completed = true,fingerprint_probe_failed = false,sql_script_executed = trueyreturncode = 0 - Resultado operativo correcto:
la tabla
business_observer.source_003_sales_itemssigue con1886filas del batch1827f887-9499-4579-b4f3-234d54f41f7f; los checks detarget_table_empty_before_pilot_loadysource_003_not_loaded_in_dedicated_dbquedan enfalse, por lo que la decision correcta esPREFLIGHT BLOQUEADO / TABLA NO VACIA ESPERADA POR PILOTO YA CARGADO - Restricciones mantenidas:
- sin
load - sin
full - sin
rollback - sin
COPY - sin
INSERT - sin
MERGE - sin
UPSERT - sin
DELETE - sin
TRUNCATE - sin sync diaria
- sin carga masiva
- sin produccion final
- sin cambios de datos en
PostgreSQL - sin
VPS - sin
Docker - sin
OpenClaw - sin
NPM - sin push
- sin deploy
Etapa 17.5.19 - APV SOURCE-003 semantica status/preflight del runner¶
- Estado: semantica definida y documentada al
2026-06-12 - Objetivo formal:
separar explicitamente
preflight-before-loadde la verificacion read-only de un piloto ya cargado en la DB dedicada - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PILOT-LOAD-PYTHON-RUNNER-001.md - Decision:
preflightqueda como gate estricto de tabla vacia antes de una carga nueva;status/verify-existing-pilotquedan definidos como lectura de salud del piloto ya cargado;post-checksqueda como alias legacy - Alcance funcional de
status: batch exacto1827f887-9499-4579-b4f3-234d54f41f7f,1886filas exactas, fecha unica2026-06-09, metadata exacta,0nulos criticos,0duplicados yline_key/source_row_hashvalidos - Restricciones mantenidas:
- sin tocar
PostgreSQL - sin ejecutar SQL
- sin
psql - sin
load - sin
full - sin
rollback - sin sync diaria
- sin carga masiva
- sin produccion final
- sin
VPS - sin
Docker - sin
OpenClaw - sin
NPM - sin push
- sin deploy
Etapa 17.5.20 - APV SOURCE-003 runner DB status read-only¶
- Estado: status DB read-only del runner ejecutado y validado al
2026-06-15 - Objetivo formal:
validar exclusivamente el modo
status/verify-existing-pilotdel runnerSOURCE-003contra la DB dedicada ya cargada, sin escrituras - Documento de evidencia:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-RUNNER-STATUS-DB-001.md - SAFE POINT:
rama
main,git status -sben## main...origin/main,git rev-parse HEADygit ls-remote origin mainend3112b9218192a2993400517136bc61822854666 - Revision segura previa:
py_compile,--help,plan --dry-run,validate-files --dry-runydry-runpasaron conpostgresql_touched = falseysql_executed = false - Resultado tecnico del runner:
statuscompleto fingerprint real y ejecuto solo004_source_003_dedicated_db_pilot_load_post_checks.sqlconpostgresql_touch_attempted = true,postgresql_touched = true,fingerprint_probe_completed = true,fingerprint_probe_failed = false,sql_script_executed = true,sql_executed = trueyreturncode = 0 - Resultado funcional:
pilot_batch_row_count = 1886, batch1827f887-9499-4579-b4f3-234d54f41f7f, fecha esperada2026-06-09, decisionRUNNER STATUS DB PASS / VERDE - Restricciones mantenidas:
sin
load, sinfull, sinrollback, sin candidate load, sinCOPY, sinINSERT, sinMERGE, sinUPSERT, sinDELETE, sinTRUNCATE, sin sync diaria, sin carga masiva, sin produccion final, sin push y sin deploy
Etapa 17.5.21 - APV Business Observer arquitectura futura de capas¶
- Estado: documentada y no ejecutiva al
2026-06-15 - Objetivo formal:
definir la arquitectura objetivo reutilizable
raw -> prepared CSV -> core -> mart -> Python importer/runner -> OpenClaw executor -> sync futura - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/BUSINESS-OBSERVER-DATA-LAYERS-ARCHITECTURE.md - Decision:
ARQUITECTURA FUTURA DOCUMENTADA / NO EJECUTIVA - Restricciones mantenidas:
sin sync diaria, sin carga masiva, sin produccion final, sin SQL, sin
runner, sin importer formal, sin
OpenClaw executor, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin push y sin deploy
Etapa 17.5.22 - APV SOURCE-003 skeleton Python importer¶
- Estado: skeleton creado y validado sin DB al
2026-06-15 - Objetivo formal:
implementar el primer CLI skeleton del Python importer
SOURCE-003, alineado al contrato publicado y sin ejecutar runtime operativo - Script creado:
scripts/source_003_importer.py - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PYTHON-IMPORTER-SKELETON-001.md - Comandos seguros implementados:
plan,validate-contractydry-run - Comandos futuros declarados pero bloqueados:
inspect-source,generate-prepared,validate-prepared,load-raw,promote-core,build-mart,statusyrollback-batch - Evidencia:
valida contrato importer, generator script, runner script y arquitectura
data layers; todos los payloads preservan
importer_implemented=false,db_touched=false,sql_executed=false,data_written=falseysync_enabled=false - Restricciones mantenidas:
sin
PostgreSQL, sin SQL, sinpsql, sin runner, sin CSV operativo, sin archivos de datos, sin carga, sin sync diaria, sin carga masiva, sin produccion final, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin push y sin deploy
Etapa 17.5.23 - APV SOURCE-003 contrato RAW¶
- Estado: documentado y no implementado al
2026-06-15 - Objetivo formal:
definir el contrato de la capa
rawparaSOURCE-003, sin implementar tablas ni tocar DB - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-RAW-LAYER-CONTRACT.md - Decision:
CONTRATO RAW DOCUMENTADO / NO IMPLEMENTADO - Alcance:
proposito, preservacion del origen, raw snapshot vs prepared CSV vs raw table
futura, columnas minimas, metadata obligatoria, batch, idempotencia,
deduplicacion, validaciones, errores, rollback por batch y relacion
raw -> core - Restricciones mantenidas:
sin tabla raw, sin
DDL, sin SQL, sinPostgreSQL, sin runner, sin generar CSV, sin carga de datos, sin sync diaria, sin carga masiva, sin produccion final, sinOpenClaw executor, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin push y sin deploy
Etapa 17.5.24 - APV SOURCE-003 contrato CORE¶
- Estado: documentado y no implementado al
2026-06-15 - Objetivo formal:
definir el contrato de la capa
coreparaSOURCE-003, sin implementar tablas ni tocar DB - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-CORE-LAYER-CONTRACT.md - Decision:
CONTRATO CORE DOCUMENTADO / NO IMPLEMENTADO - Alcance:
proposito, diferencia entre
raw,prepared CSVycore, criterios de promocionraw -> core, columnas candidatas, claves logicas, normalizacion, tipos, deduplicacion, idempotencia, validaciones, errores, rollback logico por batch y relacioncore -> mart - Restricciones mantenidas:
sin tabla core, sin
DDL, sin SQL, sinPostgreSQL, sin runner, sin generar CSV, sin carga de datos, sin sync diaria, sin carga masiva, sin produccion final, sinOpenClaw executor, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin push y sin deploy
Etapa 17.5.25 - APV SOURCE-003 contrato MART¶
- Estado: documentado y no implementado al
2026-06-15 - Objetivo formal:
definir el contrato de la capa
martparaSOURCE-003, sin implementar tablas ni tocar DB - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-MART-LAYER-CONTRACT.md - Decision:
CONTRATO MART DOCUMENTADO / NO IMPLEMENTADO - Alcance:
proposito, diferencia entre
raw,coreymart, criterios de promocioncore -> mart, marts candidatos iniciales, metricas, dimensiones, granularidad, claves, trazabilidad por batch/hash, validaciones, errores, refresh/rebuild futuro, rollback logico o rebuild por batch y relacion con dashboards, reportes y consultas LLM futuras - Restricciones mantenidas:
sin tabla mart, sin
DDL, sin SQL, sinPostgreSQL, sin runner, sin generar CSV, sin carga de datos, sin sync diaria, sin carga masiva, sin produccion final, sin dashboards productivos, sin consultas LLM operativas, sinOpenClaw executor, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin push y sin deploy
Etapa 17.5.26 - APV SOURCE-003 Data Layers publicado¶
- Estado: documentado, publicado y no implementado en DB al
2026-06-15 - Objetivo formal:
registrar el hito de publicacion documental de las capas
RAW,COREyMARTdeSOURCE-003 - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-DATA-LAYERS-MILESTONE.md - HEAD publicado:
8d08ec8f34dd5347833ff7e1cd632a88c0a04cb0 - Alcance:
separacion
raw / prepared CSV / core / mart, trazabilidad porsync_batch_id,line_keyysource_row_hash, validaciones, idempotencia y relacion futura con dashboards, reportes y consultas LLM - Restricciones mantenidas:
sin sync diaria, sin carga masiva, sin produccion final, sin
OpenClaw executor, sin uso depostgres-sandboxcomo produccion, sin SQL, sinPostgreSQL, sin runner, sin CSV generado, sin carga de datos, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin push y sin deploy - Proximo paso:
plan controlado de
load-rawdocumentado en etapa17.5.27, todavia sin implementacion ni ejecucion contra DB
Etapa 17.5.27 - APV SOURCE-003 plan load-raw importer¶
- Estado: documentado, no implementado y no ejecutable al
2026-06-15 - Objetivo formal:
definir documentalmente el plan controlado para el futuro comando
python scripts/source_003_importer.py load-raw - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-IMPORTER-LOAD-RAW-PLAN.md - Alcance:
precondiciones, guardrails, defaults seguros,
--execute, fingerprint DB, batch explicito, target table gobernada, relacion con tabla piloto, validaciones, transaccion con staging, idempotencia, deduplicacion, rollback por batch, logs, auditoria, outputs, riesgos y criterios de aceptacion - Decision:
LOAD-RAW PLAN DOCUMENTADO / NO IMPLEMENTADO / NO EJECUTABLE - Restricciones mantenidas:
sin implementar
load-raw, sin modificar Python, sin tocarPostgreSQL, sin ejecutar SQL, sin crearDDL, sin crear tablas, sin runner, sin generar CSV, sin carga de datos, sin sync diaria, sin carga masiva, sin produccion, sinOpenClaw executor, sin jobs automaticos, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin push y sin deploy - Proximo paso:
revision tecnica documental del plan
load-rawregistrada en etapa17.5.28, todavia sin implementacion ni ejecucion contra DB
Etapa 17.5.28 - APV SOURCE-003 revision tecnica load-raw¶
- Estado: revision tecnica documental publicada al
2026-06-15 - Objetivo formal:
revisar consistencia del plan
load-rawcontra contratos RAW, CORE, MART, importer, skeleton, comandos seguros y auditoria VPS PostgreSQL - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-LOAD-RAW-TECHNICAL-REVIEW.md - Resultado:
APTO PARA DISENAR DDL RAW / NO APTO PARA IMPLEMENTAR LOAD-RAW TODAVIA - Hallazgos:
el plan respeta RAW, preserva separacion
raw / core / mart, evita usarpostgres-sandboxcomo produccion, mantiene la tabla piloto como antecedente no raw final y deja claros batch, idempotencia, deduplicacion, rollback, logs y auditoria - Bloqueos preservados:
sin implementar
load-raw, sin modificar Python, sinDDL, sin SQL, sinPostgreSQL, sin runner, sin CSV generado, sin carga de datos, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin push y sin deploy - Proximo paso:
revisar el paquete
DDLRAW candidato documentado en etapa17.5.29antes de cualquier ejecucion o implementacion deload-raw
Etapa 17.5.29 - APV SOURCE-003 DDL RAW candidato¶
- Estado: candidato preparado / no ejecutado / no implementado en DB al
2026-06-15 - Objetivo formal:
disenar el paquete
DDLRAW candidato paraSOURCE-003, sin ejecutarlo - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-RAW-DDL-CANDIDATE.md - SQL candidatos:
docs/tenants/alpuntodeventa/business-observer/design/sql/004_source_003_raw_ddl_candidate_preflight.sqldocs/tenants/alpuntodeventa/business-observer/design/sql/004_source_003_raw_ddl_candidate_forward.sqldocs/tenants/alpuntodeventa/business-observer/design/sql/004_source_003_raw_ddl_candidate_rollback.sqldocs/tenants/alpuntodeventa/business-observer/design/sql/004_source_003_raw_ddl_candidate_post_checks.sql - Decisiones:
tabla candidata
business_observer.raw_source_003_sales_items; tablabusiness_observer.source_003_sales_itemsclasificada comoPILOTO, no RAW final; clave tecnicaid; clave logica por batchtenant_id + sync_batch_id + line_key;PUBLICsin privilegios; writer sinDELETE; rollback aborta si hay filas; post-checks exigenrow_count = 0 - Bloqueos preservados:
sin
PostgreSQL, sin SQL ejecutado, sin tabla real creada, sin modificar Python, sin runner, sin CSV generado, sin carga, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin push y sin deploy
Etapa 17.5.30 - APV SOURCE-003 revision tecnica DDL RAW candidato¶
- Estado: revision tecnica documental publicada al
2026-06-15 - Objetivo formal:
revisar tecnicamente el paquete
DDLRAW candidato deSOURCE-003sin ejecutarlo - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-RAW-DDL-CANDIDATE-TECHNICAL-REVIEW.md - Resultado:
APTO PARA EJECUCION LOCAL-DEV / NO APTO PARA PRODUCCION / NO APTO PARA IMPLEMENTAR LOAD-RAW TODAVIA - Hallazgos:
tabla RAW candidata separada de la tabla piloto, metadata RAW obligatoria,
83columnas prepared CSV masloaded_at, clave tecnicaid, clave logica por batch, constraints, indices, owner/grants,PUBLICsin privilegios, writer sinDELETE, preflight, forward, rollback y post-checks consistentes - Bloqueos preservados:
sin SQL ejecutado, sin
psql, sinPostgreSQL, sin tabla real creada, sin modificar Python, sin runner, sin CSV generado, sin carga, sin sync diaria, sin carga masiva, sin produccion, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin push y sin deploy - Proximo paso:
si se aprueba avanzar, abrir gate separado para ejecucion local-dev del DDL
con fingerprint DB, autorizacion explicita y post-checks
row_count = 0
Etapa 17.5.31 - APV SOURCE-003 preflight DDL RAW local-dev¶
- Estado: preflight local-dev ejecutado al
2026-06-15 - Objetivo formal:
ejecutar solo el preflight
DDLRAW candidato contraopenclaw_business_observer_dev.business_observer - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-RAW-DDL-LOCAL-DEV-PREFLIGHT-001.md - SQL ejecutado:
docs/tenants/alpuntodeventa/business-observer/design/sql/004_source_003_raw_ddl_candidate_preflight.sql - Resultado:
PREFLIGHT PASS / DDL RAW FORWARD NO EJECUTADO - Evidencia:
DB correcta, schema existente, owner
openclaw_bo_admin, roles requeridos existentes yNOLOGIN, tabla RAW candidata ausente, tabla piloto detectada solo como piloto yPUBLICsin privilegios de schema - Bloqueos preservados:
sin forward, sin rollback, sin post-checks, sin crear tabla RAW, sin carga,
sin modificar Python, sin sync, sin
postgres-sandbox, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin Portainer, sin push y sin deploy
Etapa 17.5.32 - APV SOURCE-003 forward DDL RAW local-dev¶
- Estado: forward local-dev ejecutado al
2026-06-15 - Objetivo formal:
ejecutar solo el paquete
DDLRAW candidato autorizado contraopenclaw_business_observer_dev.business_observer - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-RAW-DDL-LOCAL-DEV-FORWARD-001.md - SQL ejecutado:
004_source_003_raw_ddl_candidate_preflight.sql,004_source_003_raw_ddl_candidate_forward.sql,004_source_003_raw_ddl_candidate_post_checks.sql - Resultado:
PREFLIGHT PASS,FORWARD OK,POST-CHECKS PASS - Evidencia:
business_observer.raw_source_003_sales_itemscreada vacia conrow_count = 0, owneropenclaw_bo_admin,84columnas,21constraints,9indices, writer sinDELETE, reader read-only yPUBLICsin privilegios; la tabla pilotobusiness_observer.source_003_sales_itemsno fue tocada por escritura - Bloqueos preservados:
sin carga de datos, sin
INSERT, sinCOPY, sinUPDATE, sinDELETE, sin rollback, sin modificar Python, sin runner/importerload-raw, sin CSV, sinpostgres-sandbox, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin Portainer, sin push y sin deploy
Etapa 17.5.33 - APV SOURCE-003 revision tecnica DDL CORE candidato¶
- Estado: revision tecnica documental publicada al
2026-06-15 - Objetivo formal:
revisar tecnicamente el paquete
DDLCORE candidato deSOURCE-003sin ejecutarlo - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-CORE-DDL-CANDIDATE-TECHNICAL-REVIEW.md - Resultado:
APTO PARA PREFLIGHT LOCAL-DEV / NO APTO PARA PRODUCCION / NO APTO PARA SYNC DIARIA / NO APTO PARA PROMOTE-CORE AUN - Hallazgos:
tabla candidata
business_observer.core_source_003_sales_items, RAW sin modificaciones, batch piloto correcto,66columnas,22constraints,10indices, clave tecnicaid, trazabilidad portenant_id,sync_batch_id,line_keyysource_row_hash, owner/grants correctos,PUBLICsin privilegios, writer sinDELETE, rollback que aborta si hay filas y post-checks conrow_count = 0 - Bloqueos preservados:
sin SQL ejecutado, sin
psql, sinPostgreSQL, sin tabla real creada, sin modificar Python, sin runner, sin CSV generado, sin carga, sin tocar RAW/CORE/MART real, sin sync diaria, sin carga masiva, sin produccion, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin Portainer, sin push y sin deploy - Proximo paso:
abrir gate separado para ejecutar solo el preflight local-dev del
DDL COREcandidato si Gabi lo aprueba; forward CORE ypromote-corequedan bloqueados
Etapa 17.5.34 - APV SOURCE-003 DDL CORE forward local-dev¶
- Estado: ejecutado local-dev al
2026-06-15 - Objetivo formal:
ejecutar solo preflight, forward y post-checks del paquete
DDLCORE candidato deSOURCE-003contraopenclaw_business_observer_dev - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-CORE-DDL-LOCAL-DEV-FORWARD-001.md - Resultado:
PREFLIGHT PASS / FORWARD OK / POST-CHECKS PASS - Tabla creada:
business_observer.core_source_003_sales_items, vacia conrow_count = 0, owneropenclaw_bo_admin,66columnas,22constraints,10indices y grants esperados - RAW y piloto:
RAW existente y batch autorizado
1886filas segun preflight; no hubo escrituras contra RAW ni tabla piloto - Bloqueos preservados:
sin carga de datos, sin
INSERT, sinCOPY, sinUPDATE, sinDELETE, sin rollback, sin modificar Python, sinpromote-core, sin runner/importer, sin CSV, sinpostgres-sandbox, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin Portainer, sin push y sin deploy
Etapa 17.5.35 - APV SOURCE-003 importer promote-core safe mode¶
- Estado: implementado safe mode al
2026-06-15 - Objetivo formal:
implementar
python scripts/source_003_importer.py promote-coresolo como dry-run seguro, sin escribir datos - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-IMPORTER-PROMOTE-CORE-SAFE-MODE-001.md - Resultado:
DRY_RUN PASS;promote-core --executedevuelveBLOCKED - Checks validados:
fingerprint DB obligatorio aprobado,
postgres-sandboxprohibido, RAW sourcebusiness_observer.raw_source_003_sales_items, CORE targetbusiness_observer.core_source_003_sales_items, batch1827f887-9499-4579-b4f3-234d54f41f7f,RAW batch rows = 1886,CORE row_count = 0,candidate_rows = 1886,target_columns = 66,duplicates CORE = 0 - Bloqueos preservados:
sin carga en CORE, sin modificar RAW, sin
INSERT, sinCOPY, sinUPDATE, sinDELETE, sin runner, sin CSV, sin sync diaria, sinpostgres-sandbox, sin VPS, sin Docker, sin OpenClaw, sin NPM, sin Portainer, sin push y sin deploy
Etapa 17.5.36 - APV SOURCE-003 promote-core execute gate¶
- Estado: implementado bloqueado al
2026-06-15 - Objetivo formal:
implementar el gate controlado para
python scripts/source_003_importer.py promote-core --executesin escritura real - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PROMOTE-CORE-EXECUTE-GATE-IMPLEMENTATION-001.md - Resultado:
promote-coreconservaDRY_RUN;promote-core --executedevuelveBLOCKEDsi faltan confirmaciones o si la ruta de escritura sigue no implementada - Checks preservados:
DB permitida
openclaw_business_observer_dev, RAW sourcebusiness_observer.raw_source_003_sales_items, CORE targetbusiness_observer.core_source_003_sales_items, batch1827f887-9499-4579-b4f3-234d54f41f7f,RAW batch rows = 1886,CORE row_count = 0,candidate_rows = 1886,target_columns = 66,duplicates_core = 0, fingerprint obligatorio ypostgres-sandboxprohibido - Bloqueos preservados:
db_write=false,data_written=false,sync_enabled=false; sin carga CORE, sin modificar RAW, sin runner, sin CSV, sin rollback real, sin VPS, Docker, OpenClaw, NPM, Portainer, push ni deploy
Etapa 17.5.37 - APV SOURCE-003 promote-core write path preparado¶
- Estado: implementado bloqueado al
2026-06-15 - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PROMOTE-CORE-WRITE-PATH-IMPLEMENTATION-001.md - Resultado:
promote-coreconservaDRY_RUN;promote-core --executesigueBLOCKED;future_write_path.write_path_prepared=trueywrite_path_enabled=false - Controles preparados:
fingerprint obligatorio, bloqueo
postgres-sandbox, bloqueo de batch duplicado CORE, transaccion futura, idempotencia, preservacion desource_row_hashyline_key, post-checkCORE batch rows = 1886, timestamps gobernados y rollback/rebuild documentado - Bloqueos preservados:
sin
INSERT,COPY,UPDATE,DELETE, sin escritura CORE, sin modificar RAW, sin CSV, sin runner, sin rollback real, sin VPS, Docker, OpenClaw, NPM, Portainer, push ni deploy
Etapa 17.5.38 - APV SOURCE-003 promote-core write real implementado¶
- Estado: implementado no ejecutado al
2026-06-15 - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PROMOTE-CORE-WRITE-IMPLEMENTATION-001.md - Resultado:
promote-coreconservaDRY_RUN;promote-core --executesin confirmaciones o con confirmaciones incompletas quedaBLOCKED; no se ejecutaron confirmaciones completas - Controles implementados:
write_path_enabled=truesolo detras de confirmaciones completas, transaccion RAW -> CORE,INSERTcontrolado en CORE, sin modificar RAW, bloqueo por batch duplicado, rollback automatico ante error, fingerprint DB obligatorio,postgres-sandboxprohibido,idCORE deterministico gobernado,raw_loaded_atpreservado y timestamps gobernados - Post-check esperado:
CORE batch rows = 1886,CORE total rows = 1886,duplicates_core = 0,line_keyvacio0,source_row_hashvacio0 - Bloqueos preservados: sin ejecucion de confirmaciones completas, sin escritura CORE real durante esta tarea, sin modificar RAW, sin CSV, sin runner, sin rollback real, sin VPS, Docker, OpenClaw, NPM, Portainer, push ni deploy
Etapa 17.5.39 - APV SOURCE-003 promote-core local-dev ejecutado¶
- Estado: ejecutado y validado al
2026-06-16 - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PROMOTE-CORE-LOCAL-DEV-EXECUTION-001.md - Resultado:
PASS,data_written=true,inserted_rows=1886, CORE total1886, CORE batch1886, RAW batch sigue1886 - Post-checks:
duplicados CORE
0,line_keyvacio0,source_row_hashvacio0,promoted_atnulo0,raw_loaded_atnulo0,sync_enabled=false, produccionfalse - Idempotencia:
reintento con el mismo batch quedo
BLOCKEDpor CORE ya cargada y sin nuevas filas - Bloqueos preservados:
sin modificar RAW, sin MART, sin CSV, sin runner, sin
postgres-sandbox, sin VPS, Docker, OpenClaw, NPM, Portainer, push ni deploy
Etapa 17.5.39.1 - APV SOURCE-003 build-mart plan¶
- Estado: documentado al
2026-06-16 - Objetivo formal:
disenar documentalmente el futuro flujo
python scripts/source_003_importer.py build-mart - Documento oficial:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-IMPORTER-BUILD-MART-PLAN.md - Base:
business_observer.core_source_003_sales_items, batch1827f887-9499-4579-b4f3-234d54f41f7f, CORE local-dev1886filas, review post-ejecucionPASS - Resultado:
BUILD-MART PLAN DOCUMENTADO / NO IMPLEMENTADO / NO EJECUTADO - Conclusion:
APTO PARA DISENAR DDL MART CANDIDATO / NO APTO PARA PRODUCCION / NO APTO PARA SYNC DIARIA - Bloqueos preservados:
sin modificar Python, sin tocar
PostgreSQL, sin ejecutar SQL, sin crear tablas, sin cargar datos, sin tocar RAW/CORE/MART real, sin generar CSV, sin runner, sin VPS, Docker, OpenClaw, NPM, Portainer, push ni deploy
Etapa 18 - Business Knowledge Platform¶
- Estado: pendiente
- Debe catalogar entidades y relaciones sobre la
Data Foundation
Etapa 19 - Business Dashboards¶
- Estado: pendiente
- Debe construir tableros por tenant y lecturas globales autorizadas
Etapa 20 - Agents Layer¶
- Estado: pendiente
- Debe consumir datos gobernados y aislados por tenant
Proximo paso unico recomendado¶
El siguiente avance B2B recomendado es abrir
PDF-013U-W PRODUCTION PRIVATE PAGE AUTHENTICATED RENDER / NO FORM POST
en el repo WooCommerce La Directa, o gate equivalente, para validar render
autenticado de la pagina privada productiva ya creada, manteniendo endpoint
bloqueado, sin ejecutar POST productivo y sin integracion externa.
PDF-013Z production private page access validation,
PDF-013Y production private page create,
PDF-013X production private page plan, PDF-013W production plugin activation, PDF-013V production plugin
availability, PDF-013U production promotion plan,
PDF-013T rate limit logging hardening,
PDF-013S security review,
PDF-013R readiness, PDF-013F,
PDF-013G, PDF-013H, PDF-013I, PDF-013J, PDF-013K, PDF-013L,
PDF-013M, PDF-013N, PDF-013O, PDF-013P y PDF-013Q
quedan preservados como antecedentes. No avanzar con SQL no autorizado,
endpoint intake, WooCommerce API writes, SGC writes, SMTP, emails, sync diaria,
scheduler, cron, pipelines, carga masiva ni produccion final sin gate posterior
separado.
PDF-010I, PDF-009G, SOURCE-003, PDF-006C y PostgreSQL staging quedan
como historial valido o alternativas futuras, no como proximo paso vigente. No
usar openclaw-postgres-sandbox como staging.
La vision futura oficial ya queda congelada en
docs/FUTURE-PLATFORM-ROADMAP.md.
Etapa 17.5.38 - SAFE-POINT-034 La Directa Blackbox Monitoring¶
- Estado: implementado, deployado y validado al
2026-06-15 - Objetivo formal:
agregar monitoreo Blackbox HTTP/SSL centralizado desde OpenClaw para
https://ladirecta.com.ar/yhttps://ladirecta.ar/ - Documento oficial:
docs/runbooks/SAFE-POINT-034-ladirecta-blackbox-monitoring.md - Resultado:
probes publicos en Prometheus con
probe_success = 1, alertas dedicadas y visibilidad enService Availability - Bloqueos preservados: sin tocar VPS WooCommerce, firewall, DNS, base de datos, WordPress, WooCommerce ni instalar exporters en el stack nativo
- Proximo paso: dashboard ejecutivo Ecommerce La Directa y alertas visibles en el flujo operativo
Etapa 17.5.39 - SAFE-POINT-035 Dashboard y alertas visibles La Directa¶
- Estado: implementado, deployado y validado al
2026-06-15 - Objetivo formal: crear visibilidad ejecutiva especifica para el ecommerce La Directa usando los probes y alertas Blackbox ya existentes
- Documento oficial:
docs/runbooks/SAFE-POINT-035-ladirecta-dashboard-alerts.md - Dashboard:
infra/observability/grafana/dashboards/10-executive-board/o97-ecommerce-ladirecta.json - Resultado esperado:
tablero
Ecommerce La Directaen10 - Executive Boardcon estado, latencia, SSL, probe duration, uptime 24h y alertas activas - Bloqueos preservados: sin tocar VPS WooCommerce, firewall, DNS, WordPress, WooCommerce, exporters, Prometheus publico ni Alertmanager publico
Etapa 17.5.40 - SAFE-POINT-036 Monitor domains for Grafana access¶
- Estado: aplicado al
2026-06-15y revalidado al2026-06-16 - Objetivo formal:
publicar
monitor.ladirecta.com.arymonitor.ladirecta.arcomo alias seguros de Grafana en OpenClaw - Documento oficial:
docs/runbooks/SAFE-POINT-036-monitor-domains-grafana-access.md - Resultado:
DNS validado hacia
46.202.151.32, NPM proxy host5.confactualizado, certificado Let's Encryptnpm-7, Force HTTPS y HSTS activos - Revalidacion:
/loginy/api/healthOK paragrafana.alpuntodeventa.com.ar,monitor.ladirecta.com.arymonitor.ladirecta.ar; Prometheus9090y Alertmanager9093siguen no publicos por timeout - URL historica:
https://grafana.alpuntodeventa.com.ar/loginpreservada - Bloqueos preservados: sin tocar VPS WooCommerce, WordPress/WooCommerce, firewall, DNS desde Codex, Prometheus publico, Alertmanager publico ni metricas internas
Etapa 17.5.41 - SAFE-POINT-037 Auditoria entrega alertas La Directa¶
- Estado: documentado al
2026-06-15 - Objetivo formal: confirmar si las alertas de La Directa tienen ruta de notificacion real.
- Documento oficial:
docs/runbooks/SAFE-POINT-037-ladirecta-alert-delivery-audit.md - Resultado:
alertas evaluables y visibles, pero route/receiver versionado
local-nullsin entrega externa. - Proximo paso: definir canal humano aprobado, montar secretos fuera de Git y ejecutar test controlado antes de habilitar notificaciones reales.
- Bloqueos preservados: sin tocar VPS WooCommerce, DNS, firewall, Alertmanager publico ni enviar alertas reales a terceros.
Etapa 17.5.42 - SAFE-POINT-038 Entrega email alertas La Directa¶
- Estado: preparado en Git al
2026-06-15, pendiente de SMTP real y confirmacion humana. - Objetivo formal: configurar entrega externa por email para alertas La Directa usando Alertmanager + SMTP sin secretos en Git.
- Documento oficial:
docs/runbooks/SAFE-POINT-038-ladirecta-alert-email-delivery.md - Resultado:
receiver
ladirecta-emailpreparado paratenant="ladirecta",service="ecommerce-ladirecta"y severidadwarning|critical; fallbacklocal-nullpreservado. - Secreto requerido:
/opt/stacks/observability/secrets/alertmanager_smtp_password. - Proximo paso: cargar credenciales SMTP fuera de Git, confirmar deploy y ejecutar drill controlado.
- Bloqueos preservados: sin tocar VPS WooCommerce, DNS, firewall, Alertmanager publico ni enviar alertas reales a terceros.
Etapa 17.5.43 - SAFE-POINT-039C Diagnostico SMTP Hostinger¶
- Estado: cerrado al
2026-06-16; SMTP validado, Alertmanager deployado y recepcion Gmail confirmada. - Objetivo formal:
validar SMTP Hostinger real para
operaciones@ladirecta.com.ar, desplegar observabilidad O4 y ejecutar un drill controlado de alerta/email La Directa sin exponer secretos. - Documento oficial:
docs/runbooks/SAFE-POINT-039C-smtp-auth-diagnosis.md - Resultado:
SMTP directo desde VPS
PASS sent=1; Alertmanager O4 deployado y healthy; drillSafePoint039CSMTPDrilldisparado y resuelto; metricas internas muestranemailtotal1y fallos email0; correo recibido en Gmail con From visibleoperaciones@ladirecta.com.ary Subject visible[WARNING][La Directa] SAFE-POINT-039C drill controlado SMTP La Directa. - Seguridad:
secreto SMTP fuera de Git, no impreso; Prometheus y Alertmanager siguen sin
PortBindingsy no responden publicamente en9090/9093. - Resultado operativo:
canal de alertas La Directa operativo por
ladirecta-emailparatenant="ladirecta"/service="ecommerce-ladirecta", manteniendo Prometheus y Alertmanager no publicos. - Bloqueos preservados: sin tocar VPS WooCommerce, DNS, Cloudflare, firewall, WordPress, Prometheus/Alertmanager publico ni secretos en Git.
Etapa 17.5.163 - Notification outbox local dev¶
- Estado: implementado y validado local/dev al
2026-06-24. - Objetivo formal: crear una base minima para que futuras solicitudes de alta ecommerce pasen por outbox persistente con idempotencia, auditoria, template versionado y envio bloqueado por defecto.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-012C-MVP-NOTIFICATION-OUTBOX-LOCAL-DEV.md - Resultado:
tablas
business_observer.ecommerce_notification_outboxybusiness_observer.ecommerce_notification_event_logcreadas engestion_de_negocios_corelocal/dev; notification candidate sinteticaPDF-012C:BILLING_CUSTOMER_REQUEST:TEST001enREADY_BLOCKED; eventoNOTIFICATION_CREATED; idempotencia validada sin duplicados. - Proximo paso: gate separado de integracion dry-run entre solicitud ecommerce y outbox, con rate-limit operativo y worker bloqueado antes de cualquier email real.
- Bloqueos preservados: sin emails reales, sin WooCommerce API, sin SGC write, sin datos reales, sin VPS/prod con datos y sin runtime, sync, scheduler, cron ni pipelines.
Etapa 17.5.164 - Request to outbox dry-run local dev¶
- Estado: implementado y validado local/dev al
2026-06-24. - Objetivo formal: conectar una solicitud ecommerce sintetica con la notification outbox y su event log, validando idempotencia, rate-limit local/conceptual y envio bloqueado.
- Documento oficial:
docs/tenants/alpuntodeventa/business-observer/production/PDF-012D-REQUEST-TO-OUTBOX-DRY-RUN-LOCAL-DEV.md - Resultado:
solicitud
PDF-012D:REQUEST:TEST001creada o reutilizada, notificationPDF-012D:BILLING_CUSTOMER_REQUEST:TEST001creada o reutilizada, auditoria/event log creados una sola vez ysend_blocked_by_default=true. - Proximo paso:
gate separado de worker dry-run bloqueado que lea outbox
READY_BLOCKED, calcule elegibilidad/rate-limit y registre decision sin SMTP real. - Bloqueos preservados: sin emails reales, sin SMTP de envio, sin WooCommerce API, sin SGC write, sin datos reales, sin VPS/prod con datos y sin runtime, sync, scheduler, cron ni pipelines.