# STAGE_D_REPORT

## Alcance y estado

Pruebas finales: 374 correctas en 83,27 segundos. Informe completo privado:
[RUTA INTERNA OMITIDA]
SHA-256: b3d0995bc040d38755284720bdd38320b2aa3db4ffec668a238610b75892e142.

Etapa D, 06/11/2026. Integracion tecnica preparada; creacion real y ejecucion
del trabajador bloqueadas. Cero solicitudes GLS durante esta etapa.
No importaciones masivas, POD, impresion, anulacion ni cierre de dia.
El laboratorio validado del puerto 88 conserva sus rutas y contratos.

## Grabar desde el puerto 80

El flujo autenticado pasa por borrador cifrado, revision vigente y confirmacion
explicita. El adaptador reutiliza build_graba, SOAP 1.2, TLS verificado,
timeouts 5/20 segundos, transporte de un intento e IClientesSoapClient.
La identidad se resuelve internamente por transportista, familia, cuenta y
entorno; la referencia debe coincidir con el almacén existente y se verifica
que PRODUCCION no reutiliza TEST. No se utiliza OAuth para iClientes.

La operacion local se prepara en la misma transaccion que el borrador.
Un compare-and-swap reclama un unico intento. Antes del efecto externo se
sincronizan a disco el intento y su marcador de despacho; la respuesta se
cifra antes de interpretarla. Una caida de PostgreSQL despues de la respuesta
se recupera mediante replay local del recibo, sin repetir GrabaServicios.
Sin recibo suficiente, se exige conciliacion manual: nunca se reenvia.

Resultado 0 genera identificadores conservados literalmente, observacion,
partes cifradas, referencia, peso/bultos y acontecimiento local ACK.
Ese ACK no se presenta como evento logistico GLS ni como recogida.
provider_acknowledged_at separa la aceptacion HTTP de provider_recorded_at.
Las etiquetas incluidas en la misma respuesta se indexan como originales
cifrados con hash, sin llamar a EtiquetaEnvioV2 ni imprimir.

Un error durante la escritura HTTP tiene transmission_uncertain=true.
No se presenta como envio confirmado ni como ausencia demostrada de envio;
la cuota se conserva de forma conservadora y el intento queda conciliable.

## Trabajador e importador

KnownShipmentWorker usa exclusivamente GetExpCli por identificadores revisados.
No enumera expediciones ni filtra remotamente por fechas. Por ejecucion procesa
como maximo cinco elementos por defecto, limite absoluto 25. No hay daemon,
timer, cron ni ejecucion al abrir paginas. Dos barreras independientes de
despliegue mantienen cerradas las creaciones y lecturas nuevas.

El lote cifrado dispone de lease, prioridad, pausa solicitada entre elementos,
respuesta cifrada por elemento y checkpoints. Una respuesta preservada se
reprocesa localmente tras reinicio; un despacho sin respuesta queda ambiguo
y no se repite. Los fallos remotos por elemento se informan sin bucles.
Los cortes normales por lote o pausa no agotan el presupuesto de intentos.

Importacion administrativa: pegar texto, analizar, apartar ambiguos, revisar
cuenta, deduplicar contra PostgreSQL, estimar consultas y reserva, confirmar
hasta 25 identificadores y guardar PAUSADO. El periodo mensual opcional es
metadato de procedencia, no una consulta GLS por fechas. El detalle del trabajo
muestra completos, pendientes, fallidos, HTTP y duracion. La cobertura de
cuenta sigue siendo parcial aunque todos los identificadores se recuperen.

## Cuotas

Cada consulta o creacion reserva antes del despacho en los scopes asociados a
la cuenta. Presupuesto ordinario 50% cuando existe cuota oficial; si no hay
cuota conocida se exige limite interno. No se traslada la cuota T&T a iClientes.
Interactivas prioridad 0; historicas 3. La reserva se protege del trabajo de
fondo. El ledger utiliza la reserva como clave unica para evitar doble conteo
durante conciliacion. No se han habilitado scopes GLS ni ejecutado trabajos.

## Administracion y datos

Seis areas, permisos por operacion y rutas anteriores conservadas. Lectores
no pueden modificar configuracion ni ejecutar pruebas. Operadores mantienen
las operaciones manuales ya permitidas; configuracion, cuotas, usuarios,
centros e importador requieren administrador. Usuarios inactivos y cambios
de rol se comprueban contra PostgreSQL, no solo contra la cookie.

Migracion aditiva 018_carrier_execution: dos tablas de remitentes/asociaciones,
version de centro en borrador, marca temporal ACK, pausa y numero de ejecuciones,
recibos y metadatos por elemento. Sin cambios destructivos ni repositorio paralelo.
Backup previo validado mediante restauracion, hashes de filas e indices.
Rollback: recuperar codigo anterior y mantener esquema aditivo; no restaurar
una base activa ni borrar columnas automaticamente.

## Pendientes antes de la prueba real

1. Revision humana de datos, remitente, cuenta y confirmacion.
2. Nueva autorizacion expresa para una llamada y presupuesto concreto.
3. Activacion controlada de las barreras de despliegue, configuracion de cuenta
   y scope. No existe un boton web que elimine estos bloqueos.
4. Ajustar de forma expresa y limitada los permisos del servicio 80 sobre el
   almacen iClientes y su salida de red; hoy siguen restringidos a la LAN.
5. Mantener intento unico, sin consultas auxiliares ni reintentos.

No se afirma validacion productiva del nuevo adaptador: la aceptacion en esta
etapa se basa en mocks y PostgreSQL temporal. La enumeracion por fechas y
Cerrar dia siguen pendientes de contrato oficial suficiente.

Las incidencias con soluciones ambiguas se conservan sin declarar resueltas
todas ellas. Fechas no reconocidas permanecen en evidencia cifrada/evento raw;
no se inventan fechas de recogida, grabacion ni entrega.

Ver TEST_RESULTS, DATABASE_CHANGELOG, ADMIN88_NAVIGATION,
GLS_SENDER_INTEGRATION e HISTORICAL_IMPORT_STATUS para evidencias concretas.

## Verificacion del despliegue

Aplicada exclusivamente 018_carrier_execution; 56 tablas, 115 indices y
18 migraciones. Todas las filas preexistentes conservadas, contrastadas por
clave primaria y hash de sus columnas anteriores. Servicios 80, 85, 88 y
PostgreSQL activos. Ready 80/88 HTTP 200, login 80 HTTP 200 con HttpOnly;
las rutas privadas sin sesion responden 303 hacia /login.

93 rutas administrativas: las 90 anteriores permanecen y se anaden tres
endpoints (centros GET/POST y detalle GET de trabajo). Renderizadas las seis
areas. Verificacion adicional de interfaz: tres pruebas correctas en 4,72 s.
No se dispone de captura real de navegador; verificacion HTML/ASGI realizada.

Centro habitual creado desde los campos sender del preset local cifrado
anteriormente confirmado por el usuario; identidad de empresa, localidad, CP
y pais comprobados. Asociado a las dos cuentas iClientes. No se copiaron
campos recipient, telefonos ni datos de compras. El snapshot sigue cifrado.

El comando del trabajador ejecutado en modo bloqueado devuelve calls=0.
Tres flags globales false; cuentas iClientes inactivas para el nuevo flujo,
outbound/create false. No trabajos creados ni expediciones de demostracion
introducidas en el repositorio activo. Contadores sin cambios: 10 PRODUCCION,
6 iClientes TEST, 5 REST; TEST/laboratorio 11 y total21.

Backup privado restaurado y verificado:
[RUTA INTERNA OMITIDA]
SHA-256 del dump:
cdb5721962479e29631bc4e77cde643eb7389c4623df05dfe10732dc8169a693.
Rollback de codigo preparado en:
[RUTA INTERNA OMITIDA]
No se han cambiado units, proxy, puertos, credenciales ni configuracion Zebra.
