SOURCE-003 Importer Build Mart Safe Mode 001¶
Fecha local: 2026-06-17
Estado: BUILD-MART SAFE MODE IMPLEMENTADO / DRY_RUN PASS / EXECUTE BLOCKED
portal_visible = yes
Scope: tenant
tenant_id: alpuntodeventa
Owner: Gabi / Carlos Canu
1. Objetivo¶
Implementar en scripts/source_003_importer.py el comando:
powershell
python scripts/source_003_importer.py build-mart
El alcance de esta tarea queda limitado a SAFE MODE con consultas
SELECT read-only. No se autorizan escrituras sobre RAW, CORE ni MART.
2. Safe Point¶
| Control | Valor |
|---|---|
| workspace | C:\APV\openclawai |
| rama | main |
| HEAD / origin | 383db206f2e51511bed704f0218302ee7b0c6634 |
| ultimo commit inicial | docs: review source 003 mart local dev forward |
| estado inicial | main limpio |
3. Archivos modificados¶
| Archivo | Impacto |
|---|---|
scripts/source_003_importer.py |
Agrega build-mart a SAFE_COMMANDS, implementa inspeccion DB read-only sobre CORE y las cuatro MART, estima filas candidatas y bloquea --execute. |
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PYTHON-IMPORTER-SKELETON-001.md |
Publica el nuevo comando seguro y sus validaciones. |
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-IMPORTER-BUILD-MART-SAFE-MODE-001.md |
Deja trazabilidad formal de esta implementacion. |
docs/tenants/alpuntodeventa/business-observer/README.md |
Resume que build-mart ya existe en safe mode. |
docs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.md |
Actualiza el estado tenant con el nuevo DRY_RUN. |
docs/tenants/alpuntodeventa/business-observer/ROADMAP.md |
Agrega la etapa de implementacion safe mode. |
docs/PROJECT-STATE.md |
Actualiza el estado global certificado. |
docs/governance/ACTIVE-CONTEXT.md |
Cambia el proximo paso recomendado. |
README.md |
Resume el nuevo estado operativo del importer. |
mkdocs.yml |
Publica la nueva ficha en la navegacion. |
4. Comportamiento implementado¶
build-mart ahora:
- corre en
DRY_RUNpor defecto; - exige fingerprint DB aprobado;
- bloquea
postgres-sandbox; - valida CORE source
business_observer.core_source_003_sales_items; - valida las cuatro MART target:
business_observer.mart_source_003_sales_daily,business_observer.mart_source_003_sales_by_seller,business_observer.mart_source_003_sales_by_customerybusiness_observer.mart_source_003_sales_by_sku; - valida batch autorizado
1827f887-9499-4579-b4f3-234d54f41f7f; - valida
CORE batch rows = 1886; - valida
row_count = 0en cada MART; - estima filas candidatas por agregado desde CORE;
- conserva
db_write=false,data_written=falseysync_enabled=false.
build-mart --execute queda BLOCKED en esta tarea y no toca la DB.
5. Evidencia runtime¶
Resultado observado en:
powershell
python scripts/source_003_importer.py build-mart
Resumen:
result = DRY_RUN- fingerprint aprobado:
::1/128:5432|openclaw_business_observer_dev|postgres|PostgreSQL 15.15, compiled by Visual C++ build 1944, 64-bit - DB:
openclaw_business_observer_dev - CORE source:
business_observer.core_source_003_sales_items core_total_rows = 1886core_batch_rows = 1886source_query_versions = 1business_date_min = 2026-06-09business_date_max = 2026-06-09- MART
sales_dailyrow_count real =0, estimate =1 - MART
sales_by_sellerrow_count real =0, estimate =25 - MART
sales_by_customerrow_count real =0, estimate =173 - MART
sales_by_skurow_count real =0, estimate =180 - filas excluidas por claves vacias:
seller
0, customer0, sku0 db_touched=truesql_executed=truedb_write=falsesql_write=falsedata_written=falsesync_enabled=false
Resultado observado en:
powershell
python scripts/source_003_importer.py build-mart --execute
Resumen:
result = BLOCKED- motivo:
build-mart --execute bloqueado: esta tarea solo autoriza SAFE MODE sin escrituras db_touched=falsedb_write=falsesql_executed=falsesql_write=falsedata_written=falsesync_enabled=false
6. Restricciones preservadas¶
No se ejecuto:
INSERTCOPYUPDATEDELETE- carga MART
- modificacion de
RAW - modificacion de
CORE - runner
- CSV
- rollback
VPSDockerOpenClawNPMPortainer- push
- deploy
7. Validaciones ejecutadas¶
| Comando | Resultado |
|---|---|
python -m py_compile scripts/source_003_importer.py |
PASS |
python scripts/source_003_importer.py --help |
PASS; build-mart aparece como safe command |
python scripts/source_003_importer.py build-mart |
PASS; payload DRY_RUN |
python scripts/source_003_importer.py build-mart --execute |
PASS; payload BLOCKED |
git diff --check |
PASS; solo warnings de LF -> CRLF sin errores de formato |
.venv-portal\Scripts\mkdocs.exe build --strict |
PASS |
8. Conclusion¶
SOURCE-003 build-mart queda implementado en SAFE MODE con evidencia
runtime real, trazabilidad documental y bloqueo explicito de escritura.
Sigue vigente:
- no apto para produccion;
- no apto para sync diaria;
- no apto para carga MART real;
- apto para abrir tarea separada de gate/write path solo si se aprueba otro SAFE POINT.