SOURCE-003 Pilot Load Execution 001¶
Fecha local: 2026-06-11 20:53:23 -03:00
Estado: CARGA PILOTO FALLIDA / ROJO
portal_visible = yes
Scope: tenant
tenant_id: alpuntodeventa
Owner: Gabi / Carlos Canu
Fuente de verdad:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PILOT-LOAD-EXECUTION-001.md
1. Objetivo¶
Ejecutar un candidate load piloto minimo y autorizado de SOURCE-003 sobre la
DB local dedicada.
Destino autorizado:
text
openclaw_business_observer_dev.business_observer.source_003_sales_items
Batch autorizado:
text
1827f887-9499-4579-b4f3-234d54f41f7f
CSV autorizado:
text
C:\APV\openclawai\snapshots\source-003\prepared\SOURCE-003-PILOT-LOAD-DEDICATED-DB-2026-06-09.csv
2. Safe point¶
| Control | Resultado |
|---|---|
| rama | main |
git status -sb |
## main...origin/main |
git rev-parse HEAD |
9d7d622354176daa34ce0762bb97da8eb993695d |
git ls-remote origin main |
9d7d622354176daa34ce0762bb97da8eb993695d refs/heads/main |
| ultimo commit esperado | docs: record source 003 pilot load preflight |
| decision | SAFE POINT PASS |
3. CSV preparado¶
| Control | Observado | Esperado | Resultado |
|---|---|---|---|
| archivo existe | SI |
SI |
PASS |
| sha256 | 3f16a957a79fc84d4ca37930988287cb81f05166210d057fcf8b45007f184afe |
3f16a957a79fc84d4ca37930988287cb81f05166210d057fcf8b45007f184afe |
PASS |
| filas de datos | 1886 |
1886 |
PASS |
| columnas | 83 |
83 |
PASS |
| fecha unica | 2026-06-09 |
2026-06-09 |
PASS |
sync_batch_id unico |
1827f887-9499-4579-b4f3-234d54f41f7f |
1827f887-9499-4579-b4f3-234d54f41f7f |
PASS |
record_status unico |
active |
active |
PASS |
duplicados (tenant_id, line_key) |
0 |
0 |
PASS |
source_row_hash vacios |
0 |
0 |
PASS |
line_key vacios |
0 |
0 |
PASS |
| CSV versionado en Git | NO |
NO |
PASS |
extracted_at y last_seen_at observados en el CSV:
2026-06-10T21:04:06-03:00.
4. Preflight DB antes de carga¶
La conexion se hizo contra openclaw_business_observer_dev usando variables
locales no versionadas, sin imprimir passwords, connection strings ni valores
sensibles completos. Los roles openclaw_bo_admin, openclaw_bo_writer y
openclaw_bo_reader fueron observados como NOLOGIN; para ejecutar psql se
uso el login administrativo local de PostgreSQL apuntado explicitamente a la
DB dedicada.
| Control | Observado | Esperado | Resultado |
|---|---|---|---|
current_database() |
openclaw_business_observer_dev |
openclaw_business_observer_dev |
PASS |
| tabla destino existe | true |
true |
PASS |
| tabla vacia antes de carga | 0 filas |
0 filas |
PASS |
| batch autorizado ausente | 0 filas |
0 filas |
PASS |
| owner tabla | openclaw_bo_admin |
openclaw_bo_admin |
PASS |
| grants writer | SELECT, INSERT, UPDATE; sin DELETE |
SELECT, INSERT, UPDATE; sin DELETE |
PASS |
| grants reader | SELECT only |
SELECT only |
PASS |
5. Preflight SQL autorizado¶
SQL ejecutado:
text
docs/tenants/alpuntodeventa/business-observer/design/sql/004_source_003_dedicated_db_pilot_load_preflight.sql
Ejecucion:
text
psql -X -v ON_ERROR_STOP=1 -f 004_source_003_dedicated_db_pilot_load_preflight.sql
Resultado: PASS.
El SQL confirmo:
current_database = openclaw_business_observer_dev- tabla
business_observer.source_003_sales_itemsexistente - owner
openclaw_bo_admin 83columnas- tabla vacia
- unique key y primary key requeridas
- grants basicos
- roles
NOLOGIN SOURCE-003no cargado en la DB dedicada
6. Candidate load autorizado¶
SQL ejecutado:
text
docs/tenants/alpuntodeventa/business-observer/design/sql/004_source_003_dedicated_db_pilot_load_candidate.sql
Variables autorizadas usadas:
| Variable | Valor |
|---|---|
SOURCE_003_PILOT_LOAD_APPROVED |
true |
SOURCE_003_PILOT_LOAD_CSV |
C:/APV/openclawai/snapshots/source-003/prepared/SOURCE-003-PILOT-LOAD-DEDICATED-DB-2026-06-09.csv |
SOURCE_003_SYNC_BATCH_ID |
1827f887-9499-4579-b4f3-234d54f41f7f |
SOURCE_003_EXTRACTED_AT |
2026-06-10T21:04:06-03:00 |
Resultado: FAIL.
Punto de falla:
text
psql:docs/tenants/alpuntodeventa/business-observer/design/sql/004_source_003_dedicated_db_pilot_load_candidate.sql:104: error: \copy: error de procesamiento al final de la linea
El fallo ocurrio antes de copiar datos desde el CSV y antes de COMMIT. Por
regla de seguridad, no se modifico el SQL autorizado y no se reintento con una
variante manual.
7. Post-checks¶
No ejecutados.
Motivo: el candidate load fallo y la regla operativa autorizada indica detener y reportar.
8. Rollback¶
Resultado: NO APLICA.
Motivo: la carga no quedo confirmada y la tabla se revalido con 0 filas
finales. No habia batch cargado que limpiar.
Check final:
| Control | Resultado |
|---|---|
| filas finales tabla destino | 0 |
| filas finales del batch autorizado | 0 |
9. Restricciones mantenidas¶
- no se ejecuto sync diaria
- no se ejecuto carga masiva
- no se toco produccion final
- no se cargaron fechas fuera de
2026-06-09 - no se cargaron filas
- no se tocaron otros schemas
- no se toco
gestion_de_negocios_core - no se toco
VPS - no se toco
Docker - no se toco
OpenClaw - no se toco
NPM - no hubo push
- no hubo deploy
- no se imprimieron passwords ni connection strings completas
10. Decision¶
CARGA PILOTO FALLIDA / ROJO
La causa operacional observada esta en la ejecucion del SQL candidate
autorizado, especificamente en el metacomando \copy iniciado en la linea
104. La tabla destino quedo vacia y el batch autorizado no fue cargado.
Proximo paso recomendado:
- revisar humanamente el SQL
004_source_003_dedicated_db_pilot_load_candidate.sql; - corregir el formato de
\copyen un commit documental/SQL separado; - reabrir una autorizacion explicita nueva para repetir la carga piloto.
11. Correccion posterior del candidate¶
En una tarea posterior, sin ejecutar SQL ni tocar PostgreSQL, se corrigio el
formato del metacomando \copy en:
text
docs/tenants/alpuntodeventa/business-observer/design/sql/004_source_003_dedicated_db_pilot_load_candidate.sql
Alcance de la correccion:
\copyqueda completo en una sola linea fisica, requerido porpsql;- se mantienen las mismas
83columnas destino; - se mantiene el CSV preparado autorizado;
- se agrega guarda del path CSV recibido por variable
psql; - no se ejecuta candidate load, preflight, post-check, rollback ni SQL.
La correccion no cambia el resultado de esta ejecucion:
text
CARGA PILOTO FALLIDA / ROJO