Saltar a contenido

SOURCE-003 Credentials Preflight

Fecha: 2026-06-11

Estado: VERDE HISTORICO / DB DEDICADA LOCAL CREADA

portal_visible = no

Scope: tenant

tenant_id: alpuntodeventa

Owner: Gabi / Carlos Canu

Fuente de verdad: docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-CREDENTIALS-PREFLIGHT.md

1. Objetivo

Validar el gate minimo de credenciales locales no versionadas para el destino PostgreSQL y para el origen SGC MSSQL de SOURCE-003 / Tabla 2 V2, sin cargar datos, sin ejecutar sync, sin migraciones y sin consultar datos de negocio.

2. Safe point

Control Resultado
git status -sb PASS
git rev-parse HEAD 2a2d36b16ac316b5b64e5b0fce24bc789920a74a

3. Destino detectado

Control Resultado
destino esperado vigente PASS
clase de destino local
alias postgres:postgres-alpuntodeventa-dev-env
host localhost
puerto 5432
database gestion_de_negocios_core
user openclaw_writer
password expuesto NO
sslmode prefer

Evidencia segura:

  • el alias canonico existe en system_connections local y apunta a gestion_de_negocios_core
  • el VPS no contiene un .env operativo con APV_DESTINATION_POSTGRES_*
  • el PostgreSQL observado en VPS corresponde al sandbox interno openclaw_sandbox, sin puerto 5432 publicado hacia la PC

4. .env local

Control Resultado
.env local existe PASS
.env ignorado por Git PASS
variables APV_DESTINATION_POSTGRES_* completas PASS
secretos versionados NO
connection string documentada NO

5. Writer minimo

Control Resultado
rol openclaw_writer existia antes FAIL
rol openclaw_writer creado PASS
password generado sin imprimir PASS
CONNECT sobre DB destino PASS
USAGE sobre schema business_observer PASS
SELECT sobre source_003_sales_items PASS
INSERT sobre source_003_sales_items PASS
UPDATE sobre source_003_sales_items PASS
DELETE sobre source_003_sales_items FAIL

6. Validacion PostgreSQL

Control Resultado
cliente de validacion Python/Postgres disponible PASS
SELECT 1 PASS
base gestion_de_negocios_core PASS
schema business_observer PASS
tabla business_observer.source_003_sales_items PASS
conteo actual tabla destino 1886

No se consultaron filas ni datos de negocio.

7. Estado final

Decision final historica PostgreSQL: VERDE.

El gate de credenciales destino queda cerrado para conectividad minima y metadatos. No se ejecuto sync, no se cargaron datos, no se hicieron migraciones y no se documento ningun secreto.

8. Revalidacion SGC MSSQL

Fecha/hora: 2026-06-11 06:51:31 -0300

Modo: VALIDATE + SECURITY

Alcance: reejecucion minima solo para SGC MSSQL.

Alias validado: mssql:mssql-sgc-ecommerce

Safe point de la corrida:

Control Resultado
git status -sb ## main...origin/main
git rev-parse HEAD 50450aa7ea3f7a77e5acecd2f2b567a7bf20e46c

Controles de seguridad:

Control Resultado
.env local existe PASS
.env ignorado por Git PASS
.env versionado por Git NO
variables APV_SOURCE_002_MSSQL_* requeridas completas PASS
secretos expuestos NO
connection string expuesta NO

Validacion SGC:

Control Resultado
cliente de validacion Python/ODBC disponible PASS
driver ODBC declarado disponible PASS
sentencia ejecutada SELECT 1 AS ok
SGC SELECT 1 PASS
tipo de error none
tablas consultadas NO
vistas consultadas NO
datos de negocio consultados NO
SOURCE-003 ejecutado NO
sync ejecutada NO
migraciones ejecutadas NO
carga de datos ejecutada NO
PostgreSQL consultado en esta revalidacion NO
VPS, Docker, OpenClaw, NPM tocados NO

Decision final SGC: VERDE.

9. Revalidacion backup PostgreSQL acotado

Fecha/hora: 2026-06-11 08:49:53 -0300

Modo: VALIDATE + SECURITY

Safe point de la corrida:

Control Resultado
git status -sb ## main...origin/main
git rev-parse HEAD 6fb96b1216da70a656fa98f907a3d0e0c5b69937

Estrategia elegida: Opcion C, backup logico acotado al schema business_observer.

Justificacion:

  • el piloto de ventana movil/backfill corto declarado solo modifica business_observer.source_003_sales_items
  • el schema business_observer contiene 1 objeto visible para el rol local del destino
  • el backup completo de gestion_de_negocios_core falla por schemas ajenos al piloto, empezando por cobranzas
  • ampliar openclaw_writer para leer todos los schemas de la base seria un aumento innecesario de superficie
  • crear openclaw_backup no fue necesario para este gate porque el backup verificable requerido por el piloto queda cubierto con el schema afectado

Credenciales y permisos:

Control Resultado
usuario usado openclaw_writer
usuario openclaw_backup creado NO
credential maintenance local postgres validada NO, no habia password disponible en la sesion
password expuesto NO
connection string expuesta NO
permisos concedidos en esta corrida NINGUNO
openclaw_writer ampliado NO
CONNECT base destino PASS
USAGE schema business_observer PASS
SELECT tabla source_003_sales_items PASS
INSERT tabla source_003_sales_items permiso existente
UPDATE tabla source_003_sales_items permiso existente
DELETE tabla source_003_sales_items NO CONCEDIDO

Backup generado:

Control Resultado
herramienta pg_dump 15.15
formato custom
scope --schema=business_observer
base gestion_de_negocios_core
archivo dump C:\APV\backups_postgres\openclawai\source_003_sales_items_window_pilot_001_schema_gate\20260611-084953-gestion_de_negocios_core-business_observer-pre-window-pilot-001.dump
archivo hash C:\APV\backups_postgres\openclawai\source_003_sales_items_window_pilot_001_schema_gate\20260611-084953-gestion_de_negocios_core-business_observer-pre-window-pilot-001.dump.sha256
archivo TOC C:\APV\backups_postgres\openclawai\source_003_sales_items_window_pilot_001_schema_gate\20260611-084953-gestion_de_negocios_core-business_observer-pre-window-pilot-001.dump.toc.txt
bytes 382481
sha256 90eb1d45c93911b01a85b5545f7ac5529b297750693631fe4b243463cab047cb
pg_restore --list PASS
TOC lines 35

Controles de alcance:

Control Resultado
datos de negocio modificados NO
sync ejecutada NO
carga de datos ejecutada NO
migraciones ejecutadas NO
VPS, Docker, OpenClaw, NPM tocados NO
secretos documentados NO
secretos versionados NO

Decision final backup: VERDE.

Proximo paso recomendado: reintentar solo el gate/piloto controlado de ventana movil con backup acotado business_observer como evidencia previa; no avanzar a sync diaria, carga masiva, migracion adicional ni produccion final sin aprobacion explicita.

10. Tarea 4 - Alineacion segura

Fecha/hora: 2026-06-11 11:29:51 -03:00

Modo: VALIDATE + SECURITY

Safe point de la corrida:

Control Resultado
git status -sb ## main...origin/main
git rev-parse HEAD e2e2e8a907200ff277b9e84c6cd147f70b832c6f

Alcance:

  • comparar presencia de variables APV entre .env local no versionado y .env operativo del VPS
  • proponer sincronizacion segura sin copiar secretos
  • validar solo PASS / FAIL con secretos existentes
  • no imprimir valores, connection strings, respuestas HTTP ni errores de drivers

Controles de seguridad:

Control Resultado
.env local existe PASS
/opt/stacks/openclaw/.env en VPS existe PASS
/srv/openclaw/.env en VPS existe FAIL
variables APV esperadas presentes en .env local PASS
variables APV esperadas presentes en /opt/stacks/openclaw/.env FAIL
secretos impresos NO
connection strings impresas NO
contenido de .env local impreso NO
contenido de .env VPS impreso NO
copia automatica de secretos ejecutada NO
.env VPS modificado NO
.env local modificado NO

Validacion minima con secretos existentes:

Servicio Validacion Resultado
PostgreSQL destino local SELECT 1 PASS
WooCommerce API lectura autenticada minima PASS
SGC MSSQL SELECT 1 AS ok FAIL
VPS OpenClaw APV env presencia de variables APV FAIL

Interpretacion:

  • PostgreSQL destino local y WooCommerce API funcionan en el entorno local con secretos ya existentes, pero sus variables APV no estan cargadas en el .env operativo del VPS.
  • SGC MSSQL conserva variables locales completas, pero en esta corrida no paso la validacion minima; no queda recomendado copiar ni activar esas variables hasta revalidar PASS.
  • el .env operativo observado del VPS es /opt/stacks/openclaw/.env; el path historico sugerido /srv/openclaw/.env no existe.

Propuesta de sincronizacion segura:

Variable faltante en destino Entorno origen Entorno destino Servicio afectado Riesgo Accion recomendada
APV_DESTINATION_POSTGRES_TAG local .env VPS /opt/stacks/openclaw/.env PostgreSQL destino APV bajo: alias no secreto puede quedar desalineado normalizar manualmente solo despues de aprobar el destino VPS
APV_DESTINATION_POSTGRES_HOST local .env VPS /opt/stacks/openclaw/.env PostgreSQL destino APV medio: host equivocado puede apuntar a entorno incorrecto definir destino remoto antes de cargar; no copiar automaticamente
APV_DESTINATION_POSTGRES_PORT local .env VPS /opt/stacks/openclaw/.env PostgreSQL destino APV bajo: puerto incorrecto bloquea conectividad normalizar manualmente si se aprueba el mismo destino
APV_DESTINATION_POSTGRES_DATABASE local .env VPS /opt/stacks/openclaw/.env PostgreSQL destino APV alto: base incorrecta puede mezclar datos aprobar base destino antes de cualquier carga
APV_DESTINATION_POSTGRES_USER local .env VPS /opt/stacks/openclaw/.env PostgreSQL destino APV medio: usuario incorrecto rompe minimo privilegio crear o confirmar rol remoto antes de copiar
APV_DESTINATION_POSTGRES_PASSWORD local .env VPS /opt/stacks/openclaw/.env PostgreSQL destino APV alto: secreto real pedir aprobacion explicita y cargar manualmente sin imprimir
APV_DESTINATION_POSTGRES_SSLMODE local .env VPS /opt/stacks/openclaw/.env PostgreSQL destino APV medio: modo TLS incorrecto puede fallar o debilitar transporte definir politica TLS remota antes de normalizar
APV_SOURCE_002B_WOO_TAG local .env VPS /opt/stacks/openclaw/.env WooCommerce imagenes bajo: alias no secreto puede quedar inconsistente normalizar manualmente si se aprueba integrar SOURCE-002B en VPS
APV_SOURCE_002B_WOO_BASE_URL local .env VPS /opt/stacks/openclaw/.env WooCommerce imagenes medio: URL equivocada puede consultar otro sitio validar destino funcional antes de cargar
APV_SOURCE_002B_WOO_CONSUMER_KEY local .env VPS /opt/stacks/openclaw/.env WooCommerce imagenes alto: credencial API pedir aprobacion explicita y cargar manualmente sin imprimir
APV_SOURCE_002B_WOO_CONSUMER_SECRET local .env VPS /opt/stacks/openclaw/.env WooCommerce imagenes alto: secreto API pedir aprobacion explicita y cargar manualmente sin imprimir
APV_SOURCE_002B_WOO_VERSION local .env VPS /opt/stacks/openclaw/.env WooCommerce imagenes bajo: version incorrecta rompe endpoint normalizar manualmente si se aprueba SOURCE-002B
APV_SOURCE_002B_WOO_TIMEOUT_SECONDS local .env VPS /opt/stacks/openclaw/.env WooCommerce imagenes bajo: timeout incorrecto degrada validaciones normalizar manualmente sin credenciales si se aprueba
APV_SOURCE_002_MSSQL_TAG local .env VPS /opt/stacks/openclaw/.env SGC MSSQL medio: alias equivocado puede mezclar fuentes no copiar hasta revalidar SGC SELECT 1 en PASS
APV_SOURCE_002_MSSQL_HOST local .env VPS /opt/stacks/openclaw/.env SGC MSSQL alto: host productivo mal cargado puede exponer acceso equivocado no copiar hasta revalidar conectividad y alcance
APV_SOURCE_002_MSSQL_PORT local .env VPS /opt/stacks/openclaw/.env SGC MSSQL medio: puerto equivocado bloquea o redirige conexion no copiar hasta revalidar PASS
APV_SOURCE_002_MSSQL_DATABASE local .env VPS /opt/stacks/openclaw/.env SGC MSSQL alto: base equivocada afecta fuente de verdad no copiar hasta confirmar base y PASS
APV_SOURCE_002_MSSQL_USER local .env VPS /opt/stacks/openclaw/.env SGC MSSQL medio: usuario equivocado rompe permisos esperados no copiar hasta confirmar minimo privilegio
APV_SOURCE_002_MSSQL_PASSWORD local .env VPS /opt/stacks/openclaw/.env SGC MSSQL alto: secreto real pedir aprobacion explicita; revalidar PASS antes de carga
APV_SOURCE_002_MSSQL_DRIVER local .env VPS /opt/stacks/openclaw/.env SGC MSSQL medio: driver no disponible en VPS rompe runtime verificar driver remoto antes de normalizar
APV_SOURCE_002_MSSQL_TRUST_SERVER_CERTIFICATE local .env VPS /opt/stacks/openclaw/.env SGC MSSQL medio: parametro TLS puede debilitar transporte revisar politica TLS antes de cargar
APV_SOURCE_002_MSSQL_TIMEOUT_SECONDS local .env VPS /opt/stacks/openclaw/.env SGC MSSQL bajo: timeout incorrecto genera falsos fallos no copiar hasta revalidar conectividad

Decision de cierre de la tarea 4:

  • sincronizacion real: NO EJECUTADA
  • secretos copiados: NO
  • normalizacion no secreta aplicada: NO, porque el destino VPS no debe modificarse todavia y .env.example ya contiene placeholders versionables
  • aprobacion pendiente: carga manual segura de secretos en VPS, si y solo si Gabi aprueba explicitamente el entorno destino y el set de variables
  • estado: AMARILLO, con PostgreSQL y WooCommerce listos para propuesta de carga segura, y SGC MSSQL pendiente de revalidacion PASS

11. Revalidacion MSSQL SGC Server 2012

Fecha/hora: 2026-06-11 12:16:48 -03:00

Modo: VALIDATE + SECURITY

Safe point de la corrida:

Control Resultado
git status -sb ## main...origin/main; docs de preflight y active context ya modificados
git rev-parse HEAD e2e2e8a907200ff277b9e84c6cd147f70b832c6f

Alcance ejecutado:

  • validar .env local no versionado sin imprimir secretos
  • diagnosticar DNS, TCP y drivers ODBC SQL Server instalados
  • ejecutar exclusivamente SELECT 1 AS ok
  • no consultar tablas, vistas ni datos de negocio
  • no ejecutar SOURCE-003
  • no tocar PostgreSQL
  • no cargar datos ni ejecutar sync

Verificacion segura de .env:

Control Resultado
.env local existe PASS
.env ignorado por Git PASS
.env versionado por Git NO
variables APV_SOURCE_002_MSSQL_* requeridas presentes PASS
host coincide con valor esperado no secreto PASS
puerto coincide con valor esperado no secreto PASS
database coincide con valor esperado no secreto PASS
user coincide con valor esperado no secreto PASS
password existe PASS
password impreso NO
connection string impresa NO

Diagnostico de red:

Control Resultado
DNS hdd0856f4wd.sn.mynetname.net PASS
TCP puerto 45456 PASS
clasificacion network_ok

Diagnostico de driver:

Driver Instalado Probado
ODBC Driver 18 for SQL Server SI NO, no requerido tras primer PASS
ODBC Driver 17 for SQL Server SI SI
SQL Server SI NO, no requerido tras primer PASS

Prueba de conexion MSSQL:

Control Resultado
alias mssql:mssql-sgc-ecommerce
sentencia ejecutada SELECT 1 AS ok
resultado PASS
driver usado ODBC Driver 17 for SQL Server
TrustServerCertificate usado yes
timeout usado 15 segundos
datos de negocio consultados NO
secretos expuestos NO

Configuracion local:

Control Resultado
.env actualizado NO, ya estaba alineado con la combinacion operativa
.env.example actualizado NO, ya conserva placeholders y driver recomendado
driver efectivo ODBC Driver 17 for SQL Server
trust certificate efectivo true / yes
timeout efectivo 15 segundos

Causa raiz operativa:

  • el fallo previo de SGC MSSQL no fue reproducible con el .env local actual y la red disponible en esta sesion
  • DNS y TCP estan sanos
  • la combinacion operativa confirmada para SQL Server 2012 es ODBC Driver 17 for SQL Server con TrustServerCertificate activado
  • no se requirio consultar objetos de negocio ni modificar secretos para dejar mssql:mssql-sgc-ecommerce en VERDE

Decision de cierre:

  • estado: VERDE
  • proximo paso: mantener este preflight como gate minimo antes de cualquier piloto futuro; cualquier extraccion, carga, sync o consulta de negocio sigue requiriendo aprobacion explicita separada

12. Preflight admin PostgreSQL local dedicado

Fecha: 2026-06-11

Modo: BUILD + SECURITY + VALIDATE

Objetivo: validar una credencial admin local para crear una base dedicada de Business Observer, separada de gestion_de_negocios_core.

Safe point:

Control Resultado
git status -sb ## main...origin/main
git rev-parse HEAD e698599ed4f09b07990ab1cdcfd196dddbeb7314

Variables requeridas:

  • APV_LOCAL_POSTGRES_ADMIN_HOST
  • APV_LOCAL_POSTGRES_ADMIN_PORT
  • APV_LOCAL_POSTGRES_ADMIN_DATABASE
  • APV_LOCAL_POSTGRES_ADMIN_USER
  • APV_LOCAL_POSTGRES_ADMIN_PASSWORD
  • APV_LOCAL_POSTGRES_ADMIN_SSLMODE

Resultado:

Control Resultado
.env local existe PASS
.env ignorado por Git PASS
.env versionado por Git NO
variables admin presentes PASS
psql disponible PASS
admin SELECT 1 FAIL
clasificacion segura del fallo authentication
admin puede crear DB/roles NO VALIDADO
secretos expuestos NO
connection string expuesta NO
decision STOP

Controles de alcance:

Control Resultado
database openclaw_business_observer_dev creada NO
schema business_observer creado en DB dedicada NO
roles openclaw_bo_admin/writer/reader creados NO
grants o default privileges aplicados NO
.env local actualizado con APV_BO_LOCAL_POSTGRES_* NO
.env.example actualizado con placeholders SI
gestion_de_negocios_core modificada NO
datos migrados NO
SOURCE-003 ejecutado NO
VPS, Docker, OpenClaw, NPM tocados NO

Decision de cierre:

  • estado: BLOQUEADO
  • causa: autenticacion fallida de la credencial admin local declarada en .env
  • proximo paso: corregir o rotar APV_LOCAL_POSTGRES_ADMIN_* localmente sin imprimir secretos y reejecutar solo el gate admin antes de crear base o roles

13. Reejecucion preflight admin PostgreSQL local dedicado

Fecha: 2026-06-11

Modo: VALIDATE + SECURITY

Objetivo: reejecutar exclusivamente el gate admin local PostgreSQL para validar la credencial APV_LOCAL_POSTGRES_ADMIN_* sin imprimir secretos y sin crear objetos.

Safe point:

Control Resultado
git status -sb ## main...origin/main
git rev-parse HEAD 6607cc69f33d558cb2e5e7fab37eeea69a9f246f

Resultado:

Control Resultado
.env local existe PASS
variables APV_LOCAL_POSTGRES_ADMIN_* requeridas presentes PASS
cliente psql local disponible PASS
admin SELECT 1 PASS
admin CREATEDB PASS
admin CREATEROLE PASS
secretos expuestos NO
connection string expuesta NO
bases creadas NO
roles creados NO
grants o default privileges aplicados NO
gestion_de_negocios_core modificada NO
SOURCE-003 ejecutado NO
VPS, Docker, OpenClaw, NPM tocados NO

Decision de cierre:

  • estado: GATE PASS
  • alcance habilitado: preparar la creacion de openclaw_business_observer_dev en una tarea posterior separada
  • alcance no habilitado: crear la base, crear roles, ejecutar cargas, sync diaria, carga masiva, migraciones productivas o produccion final

14. Creacion de DB dedicada Business Observer

Fecha: 2026-06-11

Modo: BUILD + SECURITY + VALIDATE

Objetivo: crear el entorno local dedicado minimo de Business Observer APV despues del gate admin local en PASS.

Safe point inicial:

Control Resultado
git status -sb ## main...origin/main [ahead 1]
git rev-parse HEAD 5490ac4d8f61fd62420c2f3facb06e6454a89bca

Decision de seguridad:

  • los roles objetivo se crearon como NOLOGIN
  • no se generaron passwords nuevos
  • no se imprimieron secretos
  • no se imprimieron connection strings
  • .env local no fue modificado

Estado previo:

Control Resultado
database openclaw_business_observer_dev NO EXISTIA
rol openclaw_bo_admin NO EXISTIA
rol openclaw_bo_writer NO EXISTIA
rol openclaw_bo_reader NO EXISTIA

Resultado:

Control Resultado
database openclaw_business_observer_dev CREADA
schema business_observer CREADO
owner database/schema openclaw_bo_admin
rol openclaw_bo_admin CREADO / NOLOGIN
rol openclaw_bo_writer CREADO / NOLOGIN
rol openclaw_bo_reader CREADO / NOLOGIN
writer permisos CONNECT, USAGE, SELECT, INSERT, UPDATE; sin DELETE
reader permisos CONNECT, USAGE, SELECT; sin escritura
default privileges futuros CONFIGURADOS
tablas en schema dedicado 0
SOURCE-003 cargado NO
gestion_de_negocios_core modificada NO DDL/DML EJECUTADO
VPS, Docker, OpenClaw, NPM tocados NO

Decision de cierre:

  • estado: VERDE
  • evidencia completa: docs/tenants/alpuntodeventa/business-observer/design/POSTGRES-LOCAL-DEV-ENVIRONMENT.md
  • alcance no habilitado: SOURCE-003, sync diaria, carga masiva, migraciones productivas, produccion final, VPS, Docker, OpenClaw, NPM