Saltar a contenido

SOURCE-003 Promote Core Execute Gate Technical Review

Fecha local: 2026-06-15

Estado: TECHNICAL REVIEW PASS / EXECUTE GATE BLOCKED / SIN ESCRITURA CORE

portal_visible = yes

Scope: tenant

tenant_id: alpuntodeventa

Owner: Gabi / Carlos Canu

Fuente de verdad: docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PROMOTE-CORE-EXECUTE-GATE-TECHNICAL-REVIEW.md

1. Objetivo

Revisar tecnicamente el gate implementado para:

powershell python scripts/source_003_importer.py promote-core --execute

Esta revision no implementa escritura real, no ejecuta carga, no escribe en CORE, no modifica RAW, no ejecuta confirmaciones completas, no genera CSV, no ejecuta runner, no ejecuta rollback real y no toca VPS, Docker, OpenClaw, NPM, Portainer, push ni deploy.

2. Safe point

Control Resultado
workspace C:\APV\openclawai
rama main
git status --short --branch inicial ## main...origin/main
git rev-parse HEAD inicial dc606e262eccc389f30a3d11c719f28348f787eb
git rev-parse origin/main inicial dc606e262eccc389f30a3d11c719f28348f787eb
ultimo commit inicial dc606e2 tools: implement source 003 promote core execute gate
decision SAFE POINT PASS

3. Archivos revisados

Archivo Impacto de la revision
scripts/source_003_importer.py Verifica constantes, parser, gate de confirmaciones, ruta promote-core, consultas read-only y ausencia de escritura CORE activa.
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PROMOTE-CORE-EXECUTE-GATE-IMPLEMENTATION-001.md Contrasta evidencia de implementacion del gate --execute.
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PROMOTE-CORE-LOCAL-DEV-EXECUTION-GATE.md Contrasta condiciones documentales para una futura ruta write local-dev.
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PROMOTE-CORE-SAFE-MODE-TECHNICAL-REVIEW.md Contrasta safe mode previo y precondiciones RAW/CORE.

4. Hallazgos

Check Observado Esperado Resultado
promote-core DRY_RUN DRY_RUN PASS
promote-core --execute BLOCKED BLOCKED PASS
confirmaciones incompletas BLOCKED con flags faltantes explicitos BLOCKED PASS
ruta activa INSERT/COPY/UPDATE/DELETE en promote-core no existe no existe PASS
RAW source business_observer.raw_source_003_sales_items RAW correcta PASS
CORE target business_observer.core_source_003_sales_items CORE correcta PASS
RAW batch rows 1886 1886 PASS
CORE row_count 0 0 PASS
candidate_rows 1886 1886 PASS
target_columns 66 66 PASS
duplicates_core 0 0 PASS
fingerprint DB requerido y aprobado en dry-run obligatorio PASS
postgres-sandbox no observado; bloqueado por marcador si aparece prohibido PASS
db_write false false PASS
data_written false false PASS
sync_enabled false false PASS

Fingerprint DB observado en promote-core dry-run:

text ::1/128:5432|openclaw_business_observer_dev|postgres|PostgreSQL 15.15, compiled by Visual C++ build 1944, 64-bit

5. Evidencia tecnica

promote-core --execute entra primero en promote_core_safe_mode() y valida validate_promote_core_execute_confirmations(args). La funcion siempre retorna BLOCKED para --execute: si faltan confirmaciones, lista cada flag; si todas coincidieran, agrega igualmente promote-core --execute bloqueado: escritura CORE no implementada.

La rama --execute no llama a inspect_promote_core_db_read_only(), no llama a run_psql_scalar(), no llama a run_psql_script() y no construye sentencia SQL de escritura CORE. Su salida mantiene:

json { "db_touched": false, "db_write": false, "sql_executed": false, "sql_write": false, "data_written": false, "sync_enabled": false }

promote-core sin --execute ejecuta validate-prepared y consultas SELECT read-only para fingerprint, tablas, conteos, columnas y duplicados. La ruta observada queda como DRY_RUN, con DB tocada solo por lectura:

json { "result": "DRY_RUN", "db_touched": true, "db_write": false, "sql_executed": true, "sql_write": false, "data_written": false, "sync_enabled": false }

La unica ruta activa con INSERT observada en el archivo corresponde a load-raw, no a promote-core. No hay ruta activa de INSERT, COPY, UPDATE ni DELETE para promover RAW a CORE.

6. Confirmaciones requeridas por el gate

El parser y el validador exigen para promote-core --execute:

powershell --confirm-local-dev --confirm-promote-core-local-dev --confirm-target-database openclaw_business_observer_dev --confirm-source-table business_observer.raw_source_003_sales_items --confirm-target-table business_observer.core_source_003_sales_items --confirm-batch 1827f887-9499-4579-b4f3-234d54f41f7f --confirm-raw-row-count 1886 --confirm-core-empty --confirm-core-initial-row-count 0 --confirm-candidate-rows 1886 --confirm-target-columns 66 --confirm-duplicates-core 0 --confirm-db-fingerprint "::1/128:5432|openclaw_business_observer_dev|postgres|PostgreSQL 15.15, compiled by Visual C++ build 1944, 64-bit"

No se ejecutaron confirmaciones completas en esta revision.

7. Validaciones ejecutadas

Validacion Resultado
python -m py_compile scripts/source_003_importer.py PASS
python scripts/source_003_importer.py --help PASS
python scripts/source_003_importer.py promote-core PASS, DRY_RUN
python scripts/source_003_importer.py promote-core --execute PASS, BLOCKED; el proceso devuelve codigo no cero esperado para bloqueo
python scripts/source_003_importer.py promote-core --execute --confirm-local-dev PASS, BLOCKED; confirma bloqueo por confirmaciones incompletas

Resultado clave de promote-core:

  • raw_batch_rows = 1886;
  • core_row_count = 0;
  • candidate_rows = 1886;
  • target_columns = 66;
  • duplicates_core = 0;
  • db_write = false;
  • data_written = false;
  • sync_enabled = false.

Resultado clave de promote-core --execute:

  • result = BLOCKED;
  • db_touched = false;
  • db_write = false;
  • sql_executed = false;
  • sql_write = false;
  • data_written = false;
  • sync_enabled = false;
  • confirmation_gate.status = BLOCKED;
  • errores claros del tipo falta confirmacion explicita: --confirm-....

8. Riesgos y limites

  • promote-core --execute no implementa escritura CORE; solo disena y bloquea el gate de autorizacion.
  • Una futura ruta write local-dev requiere tarea separada para transformacion RAW -> CORE, idempotencia, transaccion, post-checks, rollback/rebuild y evidencia operativa.
  • La revision valida ausencia de escritura en promote-core; no revisa ni habilita la ruta write existente de load-raw.
  • Produccion sigue sin gate operativo, backup/restore, observabilidad, estrategia de rollback, controles de drift ni aprobacion de sync diaria.

9. Decision

text APTO PARA DISEÑAR RUTA WRITE PROMOTE-CORE LOCAL-DEV NO APTO PARA PRODUCCIÓN NO APTO PARA SYNC DIARIA

El gate promote-core --execute queda tecnicamente validado como bloqueo local-dev previo a una futura ruta write separada. No habilita carga CORE, modificacion RAW, produccion, sync diaria, runner, rollback real, deploy ni automatizacion operativa.