Saltar a contenido

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_RUN por 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_customer y business_observer.mart_source_003_sales_by_sku;
  • valida batch autorizado 1827f887-9499-4579-b4f3-234d54f41f7f;
  • valida CORE batch rows = 1886;
  • valida row_count = 0 en cada MART;
  • estima filas candidatas por agregado desde CORE;
  • conserva db_write=false, data_written=false y sync_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 = 1886
  • core_batch_rows = 1886
  • source_query_versions = 1
  • business_date_min = 2026-06-09
  • business_date_max = 2026-06-09
  • MART sales_daily row_count real = 0, estimate = 1
  • MART sales_by_seller row_count real = 0, estimate = 25
  • MART sales_by_customer row_count real = 0, estimate = 173
  • MART sales_by_sku row_count real = 0, estimate = 180
  • filas excluidas por claves vacias: seller 0, customer 0, sku 0
  • db_touched=true
  • sql_executed=true
  • db_write=false
  • sql_write=false
  • data_written=false
  • sync_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=false
  • db_write=false
  • sql_executed=false
  • sql_write=false
  • data_written=false
  • sync_enabled=false

6. Restricciones preservadas

No se ejecuto:

  • INSERT
  • COPY
  • UPDATE
  • DELETE
  • carga MART
  • modificacion de RAW
  • modificacion de CORE
  • runner
  • CSV
  • rollback
  • VPS
  • Docker
  • OpenClaw
  • NPM
  • Portainer
  • 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.