Saltar a contenido

SOURCE-003 Mart DDL Local Dev Forward 001

Fecha local: 2026-06-16 16:40:14 -03:00

Estado: FORWARD PASS / MART DDL LOCAL-DEV CREADO VACIO

portal_visible = yes

Scope: tenant

tenant_id: alpuntodeventa

Owner: Gabi / Carlos Canu

Fuente de verdad: docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-MART-DDL-LOCAL-DEV-FORWARD-001.md

1. Objetivo

Ejecutar el paquete DDL MART candidato de SOURCE-003 contra PostgreSQL local-dev para crear vacias las cuatro tablas MART candidatas.

Destino autorizado:

text database: openclaw_business_observer_dev schema: business_observer

Esta tarea no cargo datos, no ejecuto INSERT, COPY, UPDATE, DELETE, build-mart, runner, generacion de CSV, VPS, Docker, OpenClaw, NPM, Portainer, push ni deploy. No se ejecuto rollback.

2. Safe point

Control Resultado
rama main
git status --short inicial sin salida
git rev-parse HEAD inicial bbf8c5b0a36812723742be657f503faa643099de
git rev-parse origin/main inicial bbf8c5b0a36812723742be657f503faa643099de
ultimo commit observado bbf8c5b docs: record source 003 mart ddl local dev preflight
decision SAFE POINT PASS

3. SQL autorizado ejecutado

Se ejecutaron unicamente estos SQL, en este orden:

text docs/tenants/alpuntodeventa/business-observer/design/sql/006_source_003_mart_ddl_candidate_preflight.sql docs/tenants/alpuntodeventa/business-observer/design/sql/006_source_003_mart_ddl_candidate_forward.sql docs/tenants/alpuntodeventa/business-observer/design/sql/006_source_003_mart_ddl_candidate_post_checks.sql

Comando operativo sin secretos:

powershell C:\Program Files\PostgreSQL\15\bin\psql.exe -X -w -v ON_ERROR_STOP=1 -P pager=off -h <APV_LOCAL_POSTGRES_ADMIN_HOST> -p <APV_LOCAL_POSTGRES_ADMIN_PORT> -U <APV_LOCAL_POSTGRES_ADMIN_USER> -d openclaw_business_observer_dev -f <SQL_AUTORIZADO>

Notas de ejecucion:

Control Resultado
binario psql C:\Program Files\PostgreSQL\15\bin\psql.exe
ON_ERROR_STOP SI
DB indicada en comando openclaw_business_observer_dev
credenciales variables locales no versionadas; secretos no impresos
rollback ejecutado NO
build-mart ejecutado NO
runner ejecutado NO
CSV generado NO
postgres-sandbox usado NO

4. Resultado del preflight

Check Observado Esperado Resultado
current_database openclaw_business_observer_dev openclaw_business_observer_dev PASS
schema_business_observer_exists true true PASS
schema_business_observer_owner openclaw_bo_admin openclaw_bo_admin PASS
required_roles_exist 3 3 PASS
required_roles_nologin/openclaw_bo_admin false false PASS
required_roles_nologin/openclaw_bo_reader false false PASS
required_roles_nologin/openclaw_bo_writer false false PASS
core_source_table_exists true true PASS
core_total_rows_preserved 1886 1886 PASS
core_authorized_batch_row_count 1886 1886 PASS
core_authorized_batch_critical_fields 0 0 PASS
core_authorized_batch_duplicates 0 0 PASS
mart_candidate_tables_absent_before_forward 0 0 PASS
public_schema_privileges_absent 0 0 PASS
preflight_read_only_no_core_or_mart_modification SELECT-only checks; no INSERT/UPDATE/DELETE/COPY/DDL against CORE or MART CORE not modified and MART not created by preflight PASS

Resultado general:

text PREFLIGHT PASS

5. Resultado del forward

El forward ejecuto correctamente dentro de transaccion y finalizo con COMMIT.

Tablas creadas vacias:

Tabla Estado
business_observer.mart_source_003_sales_daily creada
business_observer.mart_source_003_sales_by_seller creada
business_observer.mart_source_003_sales_by_customer creada
business_observer.mart_source_003_sales_by_sku creada

Resultado general:

text FORWARD OK

6. Resultado de post-checks

Check Observado Esperado Resultado
current_database openclaw_business_observer_dev openclaw_business_observer_dev PASS
schema_exists true true PASS
schema_owner openclaw_bo_admin openclaw_bo_admin PASS
mart_candidate_tables_created 4 4 PASS
mart_candidate_table_owners openclaw_bo_admin en las 4 tablas openclaw_bo_admin PASS
mart_source_003_sales_daily_row_count_zero 0 0 PASS
mart_source_003_sales_by_seller_row_count_zero 0 0 PASS
mart_source_003_sales_by_customer_row_count_zero 0 0 PASS
mart_source_003_sales_by_sku_row_count_zero 0 0 PASS
mart_candidate_required_constraints 43 43 PASS
mart_candidate_required_indexes 12 12 PASS
writer_table_privileges_no_delete SELECT/INSERT/UPDATE=true, DELETE=false en las 4 tablas writer sin DELETE PASS
reader_table_privileges_read_only SELECT=true, INSERT/UPDATE/DELETE=false en las 4 tablas reader read-only PASS
public_schema_privileges 0 0 PASS
public_table_privileges 0 0 PASS
core_source_table_still_exists true true PASS
core_authorized_batch_row_count_preserved 1886 1886 PASS

Resultado general:

text POST-CHECKS PASS

7. Row count final

Objeto Row count
business_observer.mart_source_003_sales_daily 0
business_observer.mart_source_003_sales_by_seller 0
business_observer.mart_source_003_sales_by_customer 0
business_observer.mart_source_003_sales_by_sku 0
RAW final: business_observer.raw_source_003_sales_items 1886
CORE: business_observer.core_source_003_sales_items 1886
tabla piloto: business_observer.source_003_sales_items 1886

8. Evidencia de alcance

Restriccion Resultado
DB correcta PASS
las 4 tablas MART candidatas existen PASS
las 4 tablas MART candidatas estan vacias PASS
owner openclaw_bo_admin PASS
constraints requeridas 43/43
indexes requeridos 12/12
writer grants SELECT, INSERT, UPDATE; sin DELETE
reader grants SELECT; sin INSERT, UPDATE, DELETE
PUBLIC sobre schema/tablas 0 privilegios
RAW final business_observer.raw_source_003_sales_items preservada 1886 filas
CORE business_observer.core_source_003_sales_items preservada 1886 filas
tabla piloto business_observer.source_003_sales_items preservada 1886 filas
RAW/CORE/tabla piloto modificadas por esta tarea NO
datos cargados en MART NO
rollback ejecutado NO
secretos impresos NO

La afirmacion de que RAW final, CORE y tabla piloto no fueron modificadas se basa en el alcance del SQL ejecutado: preflight/post-checks son consultas SELECT; el forward contiene DDL y grants sobre schema e indices/tablas MART candidatas. No se ejecuto DML ni carga de datos.

9. Bloqueos preservados

Siguen bloqueados:

  • ejecucion de build-mart
  • modificaciones Python
  • sync diaria, carga masiva y produccion final
  • uso de las MART para dashboards, reportes o LLM productivo
  • VPS, Docker, OpenClaw, NPM, Portainer
  • push y deploy

10. Validaciones del repo

Validacion Resultado
git diff --check PASS
.venv-portal\Scripts\mkdocs.exe build --strict PASS

11. Decision

text FORWARD PASS / MART DDL LOCAL-DEV CREADO VACIO

Las cuatro tablas MART candidatas de SOURCE-003 existen en local-dev, permanecen vacias y quedan listas para una etapa futura separada de implementacion/ejecucion build-mart, con autorizacion y gates propios.