SOURCE-003 Build Mart First Persistence 001¶
Fecha local: 2026-06-18
Estado: PASS / FIRST REAL LOCAL-DEV PERSISTENCE COMMITTED / NO REHEARSAL
Scope: tenant
tenant_id: alpuntodeventa
Owner: Gabi / Carlos Canu
1. Autorizacion explicita recibida¶
Autorizacion explicita del usuario recibida en esta tarea:
text
Autorizo la primera persistencia real MART local-dev de SOURCE-003.
Alcance autorizado:
- ejecutar una sola vez la primera persistencia real local-dev de
SOURCE-003 MART - usar exclusivamente el doble gate correcto
- dejar evidencia documental del preflight, del comando ejecutado y del
resultado del
COMMIT
Fuera de alcance y preservado:
- produccion
- sync diaria
- runner y scheduler
CSVLa Directa- runtime
O4 VPS,Docker,NPM,Portainer- rollback manual
- segunda persistencia
- prueba de idempotencia
- push o deploy
2. Safe point¶
| Control | Valor |
|---|---|
| workspace | C:\APV\openclawai |
| rama | main |
git status -sb inicial |
## main...origin/main |
git rev-parse HEAD inicial |
4ee4cb42ce0ab3b8c8c750ee4b324116153ef8b9 |
HEAD / origin esperado |
4ee4cb42ce0ab3b8c8c750ee4b324116153ef8b9 |
| ultimo commit observado | docs: prepare source 003 mart persistence go nogo |
| decision | SAFE POINT PASS |
3. Fingerprint DB confirmado¶
Fingerprint aprobado observado antes y despues del COMMIT:
text
::1/128:5432|openclaw_business_observer_dev|postgres|PostgreSQL 15.15, compiled by Visual C++ build 1944, 64-bit
Controles:
- DB objetivo confirmada:
openclaw_business_observer_dev - schema confirmado:
business_observer postgres-sandbox: no observado- fingerprint exacto coincide con el importer
Nota operativa:
- dos nombres de constraints largos de
MARTaparecen truncados por el limite nativo de identificadores de PostgreSQL, pero el total real de constraints en las cuatro tablasMARTsigue siendo43/43
4. Preflight obligatorio¶
4.1 Comandos ejecutados¶
| Comando | Resultado |
|---|---|
git status -sb |
PASS |
git rev-parse HEAD |
PASS |
python -m py_compile scripts/source_003_importer.py |
PASS |
python scripts/source_003_importer.py build-mart |
PASS; payload DRY_RUN |
4.2 Controles DB read-only¶
| Control | Observado | Resultado |
|---|---|---|
| fingerprint DB | aprobado | PASS |
postgres-sandbox |
ausente | PASS |
RAW total rows |
1886 |
PASS |
RAW batch rows |
1886 |
PASS |
CORE total rows |
1886 |
PASS |
CORE batch rows |
1886 |
PASS |
MART daily/seller/customer/sku |
0/0/0/0 |
PASS |
estimates daily/seller/customer/sku |
1/25/173/180 |
PASS |
missing keys seller/customer/sku |
0/0/0 |
PASS |
constraints MART |
43/43 |
PASS |
indices MART requeridos |
12/12 |
PASS |
duplicados por grain daily/seller/customer/sku |
0/0/0/0 |
PASS |
filas preexistentes del batch en MART |
0/0/0/0 |
PASS |
4.3 Decision del preflight¶
text
PREFLIGHT PASS
RAW = 1886
CORE = 1886
MART = 0 / 0 / 0 / 0
ESTIMATES = 1 / 25 / 173 / 180
No hubo ningun bloqueo que impidiera ejecutar la primera persistencia real.
5. Comando ejecutado¶
Se ejecuto una sola vez el comando autorizado:
powershell
python scripts/source_003_importer.py build-mart --execute --confirm-local-dev-write SOURCE003_MART_LOCAL_DEV_1886 --commit-local-dev-write SOURCE003_MART_LOCAL_DEV_COMMIT_1886
Restriccion respetada:
- no se ejecuto una segunda persistencia
6. Resultado del commit real¶
Exit code:
text
0
Resultado estructurado principal:
result = PASSexecution_status = COMMITTEDtransaction_committed = truedata_persisted = truerollback_rehearsal = falserollback_executed = falsesync_enabled = falseproduction = false
Gate observado:
--confirm-local-dev-write SOURCE003_MART_LOCAL_DEV_1886:PASS--commit-local-dev-write SOURCE003_MART_LOCAL_DEV_COMMIT_1886:PASS
7. Rowcounts before / inside_tx / after¶
| Fase | RAW | CORE | MART daily | MART seller | MART customer | MART sku |
|---|---|---|---|---|---|---|
BEFORE |
1886 |
1886 |
0 |
0 |
0 |
0 |
INSIDE_TX |
1886 |
1886 |
1 |
25 |
173 |
180 |
AFTER_COMMIT |
1886 |
1886 |
1 |
25 |
173 |
180 |
Inserciones observadas dentro de la transaccion:
daily_inserted_rows = 1seller_inserted_rows = 25customer_inserted_rows = 173sku_inserted_rows = 180
8. Post-write obligatorio¶
| Control | Observado | Resultado |
|---|---|---|
| exit code | 0 |
PASS |
transaction_committed |
true |
PASS |
data_persisted |
true |
PASS |
rollback_rehearsal |
false |
PASS |
daily |
1 |
PASS |
seller |
25 |
PASS |
customer |
173 |
PASS |
sku |
180 |
PASS |
RAW sigue |
1886 |
PASS |
CORE sigue |
1886 |
PASS |
duplicados batch/grain en MART |
0/0/0/0 |
PASS |
filas fuera del batch autorizado en MART |
0/0/0/0 |
PASS |
9. Riesgos restantes¶
- la idempotencia real del mismo batch sigue sin probarse y queda fuera de esta tarea
- cualquier futura reejecucion del mismo batch debe seguir
BLOCKEDhasta una tarea separada y explicitamente autorizada - produccion sigue bloqueada
- sync diaria sigue bloqueada
territory_key,CMV, costos ycontribution_amountmantienen las advertencias semanticas previas del dominio
10. Rollback plan¶
Estado:
text
CANDIDATE / NOT EXECUTED
Si alguna vez se autoriza un rollback puntual, el alcance permitido debe ser
exclusivamente borrar el batch autorizado
1827f887-9499-4579-b4f3-234d54f41f7f en estas cuatro tablas:
business_observer.mart_source_003_sales_dailybusiness_observer.mart_source_003_sales_by_sellerbusiness_observer.mart_source_003_sales_by_customerbusiness_observer.mart_source_003_sales_by_sku
Guardrails obligatorios para cualquier rollback futuro:
- solo
local-dev - solo fingerprint aprobado
- solo el batch autorizado
- sin tocar
RAW - sin tocar
CORE - sin truncates
- sin borrado fuera de las cuatro tablas
MART - con evidencia previa y posterior propia
11. Estado preservado fuera de alcance¶
Sigue bloqueado:
- produccion
- sync diaria
- runner
- scheduler
CSVLa Directa- runtime
O4 VPSDockerNPMPortainer- push
- deploy
12. Conclusion¶
text
SOURCE-003 FIRST REAL MART PERSISTENCE LOCAL-DEV PASS
COMMAND EXECUTED ONCE
COMMIT REAL = daily 1 / seller 25 / customer 173 / sku 180
AFTER = MART 1 / 25 / 173 / 180
RAW = 1886
CORE = 1886
transaction_committed = true
data_persisted = true
rollback_rehearsal = false