SOURCE-003 Promote Core Execute Gate Implementation 001¶
Fecha local: 2026-06-15
Estado: PROMOTE-CORE EXECUTE GATE IMPLEMENTADO / BLOCKED / SIN CARGA 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-IMPLEMENTATION-001.md
1. Objetivo¶
Implementar en el importer el gate controlado para:
powershell
python scripts/source_003_importer.py promote-core --execute
No implementa escritura real. No carga datos en CORE, no modifica RAW, no genera CSV, no ejecuta runner y no habilita sync.
2. Safe point¶
| Control | Resultado |
|---|---|
| workspace | C:\APV\openclawai |
| rama | main |
git status --short --branch inicial |
## main...origin/main |
git rev-parse HEAD inicial |
6945c158b565b4091f2a1cc4bf6b4c4805226ed9 |
| ultimo commit inicial | docs: define source 003 promote core execution gate |
| decision | SAFE POINT PASS |
3. Archivos modificados¶
| Archivo | Impacto |
|---|---|
scripts/source_003_importer.py |
Agrega flags y validacion de confirmaciones para promote-core --execute; el resultado sigue siempre BLOCKED y sin escritura. |
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PYTHON-IMPORTER-SKELETON-001.md |
Actualiza el contrato operativo observado del skeleton. |
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PROMOTE-CORE-EXECUTE-GATE-IMPLEMENTATION-001.md |
Registra la evidencia de implementacion. |
mkdocs.yml |
Publica la evidencia nueva en el portal documental. |
README.md, docs/PROJECT-STATE.md, docs/ROADMAP.md, docs/governance/ACTIVE-CONTEXT.md, docs/tenants/alpuntodeventa/business-observer/README.md, docs/tenants/alpuntodeventa/business-observer/PROJECT-STATE.md, docs/tenants/alpuntodeventa/business-observer/ROADMAP.md |
Actualizan el estado resumido del frente. |
4. Gate implementado¶
promote-core sin --execute conserva comportamiento DRY_RUN.
promote-core --execute valida confirmaciones explicitas y devuelve
BLOCKED si falta alguna, si hay mismatch o aunque todas coincidan, porque la
ruta de escritura CORE no esta implementada en esta etapa.
Confirmaciones requeridas:
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"
5. Controles preservados¶
El gate conserva como evidencia obligatoria:
- DB permitida:
openclaw_business_observer_dev; - RAW source:
business_observer.raw_source_003_sales_items; - CORE target:
business_observer.core_source_003_sales_items; - batch permitido:
1827f887-9499-4579-b4f3-234d54f41f7f; RAW batch rows = 1886;CORE row_count = 0;candidate_rows = 1886;target_columns = 66;duplicates_core = 0;- fingerprint DB obligatorio;
postgres-sandboxprohibido;db_write=false;data_written=false;sync_enabled=false.
6. Resultado esperado¶
promote-core:
json
{
"command": "promote-core",
"result": "DRY_RUN",
"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
}
promote-core --execute sin confirmaciones:
json
{
"command": "promote-core",
"result": "BLOCKED",
"db_touched": false,
"db_write": false,
"sql_executed": false,
"sql_write": false,
"data_written": false,
"sync_enabled": false
}
7. Bloqueos preservados¶
Siguen bloqueados:
- escritura real en CORE;
- modificacion de RAW;
INSERT,COPY,UPDATE,DELETEenpromote-core;- CSV nuevo;
- runner;
- rollback real;
VPS, Docker, OpenClaw, NPM, Portainer;- push y deploy;
- produccion final;
- sync diaria.
8. Validaciones ejecutadas¶
Validaciones de esta etapa:
text
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 -> DRY_RUN
python scripts/source_003_importer.py promote-core --execute -> BLOCKED
python scripts/source_003_importer.py promote-core --execute --confirm-local-dev -> BLOCKED
git diff --check -> PASS
.venv-portal\Scripts\mkdocs.exe build --strict -> PASS
Resultado promote-core observado:
result = DRY_RUN;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 promote-core --execute observado:
result = BLOCKED;- confirmaciones faltantes listadas en
confirmation_gate; db_touched=false;db_write=false;sql_executed=false;sql_write=false;data_written=false;sync_enabled=false.
No se ejecutaron confirmaciones completas.
9. Decision¶
text
PROMOTE-CORE EXECUTE GATE IMPLEMENTADO / BLOCKED / SIN CARGA CORE
El importer queda preparado para exigir confirmaciones explicitas en el modo
promote-core --execute, pero no contiene ruta de escritura CORE. La carga
real, rollback real, runner, produccion y sync diaria siguen bloqueados.