SOURCE-003 Build Mart Execute Preflight 001¶
Fecha local: 2026-06-18
Estado: PASS / READ-ONLY PREFLIGHT / EXECUTE SIGUE BLOCKED
portal_visible = yes
Scope: tenant
tenant_id: alpuntodeventa
Owner: Gabi / Carlos Canu
1. Objetivo¶
Retomar SOURCE-003 y dejar auditado el siguiente paso previo a
python scripts/source_003_importer.py build-mart --execute sin habilitar
escrituras.
Alcance de esta tarea:
- validar el estado
SAFE POINTdel repo - ejecutar validaciones del importer en modo permitido
- auditar
PostgreSQLlocal-dev solo conSELECT - confirmar filas
RAW,COREyMART - confirmar estimates actuales de
build-mart - detectar constraints, indices y riesgos de duplicados por batch/grain antes de una escritura futura
Fuera de alcance:
INSERT,COPY,UPDATE,DELETEbuild-mart --executereal con escritura- modificar
RAW,COREoMART - generar
CSV - tocar
La Directa, VPS WooCommerce, runtimeO4, Docker,NPM,Portainer, push o deploy
2. Safe point¶
| Control | Valor |
|---|---|
| workspace | C:\APV\openclawai |
| rama | main |
git status -sb inicial |
## main...origin/main |
git rev-parse HEAD inicial |
8275d4fcd59befc97c253bb53d7877773e927596 |
HEAD / origin esperado |
8275d4fcd59befc97c253bb53d7877773e927596 |
| ultimo commit observado | 8275d4f observability: close ladirecta phase 1 observability |
| decision | SAFE POINT PASS |
3. Validaciones del importer¶
| Comando | Resultado |
|---|---|
python -m py_compile scripts/source_003_importer.py |
PASS |
python scripts/source_003_importer.py --help |
PASS |
python scripts/source_003_importer.py build-mart |
PASS; payload DRY_RUN |
python scripts/source_003_importer.py build-mart --execute |
PASS; payload BLOCKED |
Resumen runtime observado:
build-martdevuelveDRY_RUNbuild-mart --executedevuelveBLOCKEDdb_touched=truesolo enDRY_RUNdb_write=falsesql_write=falsedata_written=falsesync_enabled=false
4. Fingerprint DB y entorno auditado¶
Destino auditado con SELECT:
text
database: openclaw_business_observer_dev
schema: business_observer
Fingerprint confirmado:
text
::1/128:5432|openclaw_business_observer_dev|postgres|PostgreSQL 15.15, compiled by Visual C++ build 1944, 64-bit
Controles:
| Control | Observado | Resultado |
|---|---|---|
| DB autorizada | openclaw_business_observer_dev |
PASS |
| fingerprint aprobado | coincide exacto con el importer | PASS |
postgres-sandbox |
no observado | PASS |
| login impreso | NO |
PASS |
| passwords/tokens impresos | NO |
PASS |
5. Estado runtime read-only¶
| Tabla | Row count | Esperado | Resultado |
|---|---|---|---|
business_observer.raw_source_003_sales_items |
1886 |
1886 |
PASS |
business_observer.core_source_003_sales_items |
1886 |
1886 |
PASS |
business_observer.mart_source_003_sales_daily |
0 |
0 |
PASS |
business_observer.mart_source_003_sales_by_seller |
0 |
0 |
PASS |
business_observer.mart_source_003_sales_by_customer |
0 |
0 |
PASS |
business_observer.mart_source_003_sales_by_sku |
0 |
0 |
PASS |
Batch auditado:
text
1827f887-9499-4579-b4f3-234d54f41f7f
Controles adicionales:
CORE batches = 1CORE batch rows = 1886source_query_versions = 1business_date_min = 2026-06-09business_date_max = 2026-06-09
6. Estimates actuales de build-mart¶
| MART target | Estimate actual | Esperado | Resultado |
|---|---|---|---|
mart_source_003_sales_daily |
1 |
1 |
PASS |
mart_source_003_sales_by_seller |
25 |
25 |
PASS |
mart_source_003_sales_by_customer |
173 |
173 |
PASS |
mart_source_003_sales_by_sku |
180 |
180 |
PASS |
Claves faltantes excluidas por el safe mode:
| Control | Observado | Resultado |
|---|---|---|
seller_missing |
0 |
PASS |
customer_missing |
0 |
PASS |
sku_missing |
0 |
PASS |
7. Constraints e indices MART relevantes¶
Constraints relevantes observados:
mart_source_003_sales_dailyPRIMARY KEY (id)UNIQUE (tenant_id, sync_batch_id, source_query_version, business_date)CHECK tenant_id = 'alpuntodeventa'CHECK source_id = 'SOURCE-003'CHECK btrim(source_query_version) <> ''CHECK period_start <= period_end AND business_date BETWEEN period_start AND period_endmart_source_003_sales_by_sellerPRIMARY KEY (id)UNIQUE (tenant_id, sync_batch_id, source_query_version, period_key, seller_code)CHECK btrim(seller_code) <> ''CHECK quality_status IN ('candidate','approved','blocked')mart_source_003_sales_by_customerPRIMARY KEY (id)UNIQUE (tenant_id, sync_batch_id, source_query_version, period_key, customer_code)CHECK btrim(customer_code) <> ''CHECK quality_status IN ('candidate','approved','blocked')mart_source_003_sales_by_skuPRIMARY KEY (id)UNIQUE (tenant_id, sync_batch_id, source_query_version, period_key, sku)CHECK btrim(sku) <> ''CHECK quality_status IN ('candidate','approved','blocked')
Indices relevantes observados:
mart_source_003_sales_dailymart_source_003_sales_daily_ukmart_source_003_sales_daily_batch_idxmart_source_003_sales_daily_build_idxmart_source_003_sales_daily_period_idxmart_source_003_sales_by_sellermart_source_003_sales_by_seller_ukmart_source_003_sales_by_seller_batch_idxmart_source_003_sales_by_seller_period_idxmart_source_003_sales_by_seller_code_idxmart_source_003_sales_by_customermart_source_003_sales_by_customer_ukmart_source_003_sales_by_customer_batch_idxmart_source_003_sales_by_customer_period_idxmart_source_003_sales_by_customer_code_idxmart_source_003_sales_by_skumart_source_003_sales_by_sku_ukmart_source_003_sales_by_sku_batch_idxmart_source_003_sales_by_sku_period_idxmart_source_003_sales_by_sku_code_idx
8. Riesgo de duplicados antes de escritura¶
Chequeos read-only ejecutados sobre el batch autorizado:
| Control | Observado | Resultado |
|---|---|---|
duplicate_daily_output_keys |
0 |
PASS |
duplicate_seller_output_keys |
0 |
PASS |
duplicate_customer_output_keys |
0 |
PASS |
duplicate_sku_output_keys |
0 |
PASS |
| filas existentes en MART para el mismo batch | 0 en las cuatro tablas |
PASS |
Lectura operativa:
- no hay conflicto actual por filas preexistentes del mismo batch en
MART - no hay duplicados de salida contra el grain unico definido por las
UNIQUEconstraints actuales - la idempotencia real de
build-mart --executesigue sin implementarse en esta tarea porque el comando permaneceBLOCKED
9. Riesgos vigentes para execute real¶
build-mart --executesigue bloqueado por safe mode; no existe ruta de escritura habilitada en esta tarea- la futura ejecucion debe preservar el fingerprint aprobado y volver a
validar ausencia de
postgres-sandbox - la futura ejecucion debe abortar si alguna
MARTdeja de estar en0filas para el batch/grain autorizado - la futura ejecucion debe mantener idempotencia explicita por batch y respetar
las
UNIQUEactuales territory_keyno debe interpretarse como vendedor responsableCMV, costos ycontribution_amountsiguen con advertencia semantica para consumo productivo
10. Restricciones preservadas¶
No se ejecuto:
INSERTCOPYUPDATEDELETEbuild-mart --executereal- cambios en
RAW,COREoMART CSVrollbackLa Directa- VPS WooCommerce
- runtime
O4 - Docker
NPMPortainer- push
- deploy
11. Conclusion¶
text
SOURCE-003 BUILD-MART EXECUTE PREFLIGHT READ-ONLY PASS
RAW = 1886
CORE = 1886
MART = 0 / 0 / 0 / 0
ESTIMATES = daily 1 / seller 25 / customer 173 / sku 180
BUILD-MART DEFAULT = DRY_RUN
BUILD-MART --EXECUTE = BLOCKED
El sistema queda listo para una tarea separada de implementacion/control de
escritura de build-mart --execute, pero esta evidencia no autoriza ejecutar
escrituras ni modificar la DB.