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.