SOURCE-003 Mart DDL Local Dev Preflight 001¶
Fecha local: 2026-06-16 16:31:31 -03:00
Estado: PREFLIGHT PASS / DDL MART FORWARD NO EJECUTADO
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-PREFLIGHT-001.md
1. Objetivo¶
Ejecutar solamente el preflight DDL MART candidato de SOURCE-003 contra
PostgreSQL local-dev para validar condiciones previas de catalogo y CORE
antes de cualquier ejecucion futura y separada del forward.
Destino autorizado:
text
database: openclaw_business_observer_dev
schema: business_observer
Esta tarea no ejecuto forward, rollback, post-checks, CREATE TABLE,
INSERT, UPDATE, DELETE, COPY, carga de datos, sync, runner, VPS,
Docker, OpenClaw, NPM, Portainer, push ni deploy.
2. Safe point¶
| Control | Resultado |
|---|---|
| rama | main |
git status --short |
sin salida |
git rev-parse HEAD |
838ee39130a56c3ddc6ef1e23780b5f3fc4c2da0 |
git rev-parse origin/main |
838ee39130a56c3ddc6ef1e23780b5f3fc4c2da0 |
| ultimo commit observado | 838ee39 docs: update safe point 039b smtp validation |
| decision | SAFE POINT PASS |
3. SQL autorizado ejecutado¶
Se ejecuto unicamente:
text
docs/tenants/alpuntodeventa/business-observer/design/sql/006_source_003_mart_ddl_candidate_preflight.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 docs/tenants/alpuntodeventa/business-observer/design/sql/006_source_003_mart_ddl_candidate_preflight.sql
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 |
| primer intento sin variables explicitas | TIMEOUT, sin salida de checks, sin evidencia de modificacion |
postgres-sandbox |
NO USADO |
| forward ejecutado | NO |
| rollback ejecutado | NO |
| post-checks ejecutados | NO |
| DDL ejecutado | NO |
| DML ejecutado | NO |
| carga de datos | NO |
| runner | 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. Evidencia de alcance¶
| Restriccion | Resultado |
|---|---|
| DB correcta | PASS |
schema business_observer existe |
PASS |
| roles requeridos existen | PASS |
roles requeridos son NOLOGIN |
PASS |
CORE source table business_observer.core_source_003_sales_items existe |
PASS |
| batch piloto autorizado en CORE | 1886 filas |
| CORE total preservado | 1886 filas |
| campos criticos del batch piloto CORE | 0 filas malas |
duplicados por tenant_id, sync_batch_id, line_key en batch piloto CORE |
0 |
MART business_observer.mart_source_003_sales_daily |
NO EXISTE |
MART business_observer.mart_source_003_sales_by_seller |
NO EXISTE |
MART business_observer.mart_source_003_sales_by_customer |
NO EXISTE |
MART business_observer.mart_source_003_sales_by_sku |
NO EXISTE |
| RAW tocado por DDL/DML | NO |
| CORE tocado por DDL/DML | NO |
| MART real tocado por DDL/DML | NO |
postgres-sandbox usado |
NO |
| secretos impresos | NO |
| cambios en PostgreSQL | NO |
La afirmacion de que RAW, CORE y MART real no se tocaron se basa en el
alcance del SQL ejecutado: el preflight contiene solamente consultas SELECT
de catalogo y conteos sobre
business_observer.core_source_003_sales_items. No se ejecuto ningun SQL
adicional contra la DB luego del preflight aprobado.
6. Bloqueos preservados¶
Siguen bloqueados:
- ejecucion de
006_source_003_mart_ddl_candidate_forward.sql - ejecucion de
006_source_003_mart_ddl_candidate_rollback.sql - ejecucion de
006_source_003_mart_ddl_candidate_post_checks.sql - creacion de las tablas MART candidatas
- ejecucion de
build-mart - modificaciones del importer Python
- sync diaria, carga masiva y produccion final
VPS,Docker,OpenClaw,NPM,Portainer- push y deploy
7. Validaciones del repo¶
| Validacion | Resultado |
|---|---|
git diff --check |
PASS |
.venv-portal\Scripts\mkdocs.exe build --strict |
PASS |
8. Decision¶
text
PREFLIGHT PASS / DDL MART FORWARD NO EJECUTADO
El entorno local-dev cumple las condiciones previas verificadas por el
preflight MART candidato. Esto no crea tablas MART, no construye agregados y
no autoriza build-mart. Cualquier forward futuro requiere una tarea separada
con SAFE POINT nuevo, autorizacion explicita y alcance propio.