{"id":"STAGE_D_REPORT","title":"Informe de etapa D","version":"nav88-20261106-v1","date":"2026-11-06T13:00:28.142339+01:00","classification":"PUBLIC_REVIEW","sha256":"3a870bd526670355054ee2ba505efaa9e0ef567f3bac815bfb539126d7074eee","read_url":"/api/review/STAGE_D_REPORT","total_bytes":7356,"fragment_count":1,"document_sha256":"3a870bd526670355054ee2ba505efaa9e0ef567f3bac815bfb539126d7074eee","fragmented":false,"content_markdown":"# STAGE_D_REPORT\n\n## Alcance y estado\n\nPruebas finales: 374 correctas en 83,27 segundos. Informe completo privado:\n[RUTA INTERNA OMITIDA]\nSHA-256: b3d0995bc040d38755284720bdd38320b2aa3db4ffec668a238610b75892e142.\n\nEtapa D, 06/11/2026. Integracion tecnica preparada; creacion real y ejecucion\ndel trabajador bloqueadas. Cero solicitudes GLS durante esta etapa.\nNo importaciones masivas, POD, impresion, anulacion ni cierre de dia.\nEl laboratorio validado del puerto 88 conserva sus rutas y contratos.\n\n## Grabar desde el puerto 80\n\nEl flujo autenticado pasa por borrador cifrado, revision vigente y confirmacion\nexplicita. El adaptador reutiliza build_graba, SOAP 1.2, TLS verificado,\ntimeouts 5/20 segundos, transporte de un intento e IClientesSoapClient.\nLa identidad se resuelve internamente por transportista, familia, cuenta y\nentorno; la referencia debe coincidir con el almacén existente y se verifica\nque PRODUCCION no reutiliza TEST. No se utiliza OAuth para iClientes.\n\nLa operacion local se prepara en la misma transaccion que el borrador.\nUn compare-and-swap reclama un unico intento. Antes del efecto externo se\nsincronizan a disco el intento y su marcador de despacho; la respuesta se\ncifra antes de interpretarla. Una caida de PostgreSQL despues de la respuesta\nse recupera mediante replay local del recibo, sin repetir GrabaServicios.\nSin recibo suficiente, se exige conciliacion manual: nunca se reenvia.\n\nResultado 0 genera identificadores conservados literalmente, observacion,\npartes cifradas, referencia, peso/bultos y acontecimiento local ACK.\nEse ACK no se presenta como evento logistico GLS ni como recogida.\nprovider_acknowledged_at separa la aceptacion HTTP de provider_recorded_at.\nLas etiquetas incluidas en la misma respuesta se indexan como originales\ncifrados con hash, sin llamar a EtiquetaEnvioV2 ni imprimir.\n\nUn error durante la escritura HTTP tiene transmission_uncertain=true.\nNo se presenta como envio confirmado ni como ausencia demostrada de envio;\nla cuota se conserva de forma conservadora y el intento queda conciliable.\n\n## Trabajador e importador\n\nKnownShipmentWorker usa exclusivamente GetExpCli por identificadores revisados.\nNo enumera expediciones ni filtra remotamente por fechas. Por ejecucion procesa\ncomo maximo cinco elementos por defecto, limite absoluto 25. No hay daemon,\ntimer, cron ni ejecucion al abrir paginas. Dos barreras independientes de\ndespliegue mantienen cerradas las creaciones y lecturas nuevas.\n\nEl lote cifrado dispone de lease, prioridad, pausa solicitada entre elementos,\nrespuesta cifrada por elemento y checkpoints. Una respuesta preservada se\nreprocesa localmente tras reinicio; un despacho sin respuesta queda ambiguo\ny no se repite. Los fallos remotos por elemento se informan sin bucles.\nLos cortes normales por lote o pausa no agotan el presupuesto de intentos.\n\nImportacion administrativa: pegar texto, analizar, apartar ambiguos, revisar\ncuenta, deduplicar contra PostgreSQL, estimar consultas y reserva, confirmar\nhasta 25 identificadores y guardar PAUSADO. El periodo mensual opcional es\nmetadato de procedencia, no una consulta GLS por fechas. El detalle del trabajo\nmuestra completos, pendientes, fallidos, HTTP y duracion. La cobertura de\ncuenta sigue siendo parcial aunque todos los identificadores se recuperen.\n\n## Cuotas\n\nCada consulta o creacion reserva antes del despacho en los scopes asociados a\nla cuenta. Presupuesto ordinario 50% cuando existe cuota oficial; si no hay\ncuota conocida se exige limite interno. No se traslada la cuota T&T a iClientes.\nInteractivas prioridad 0; historicas 3. La reserva se protege del trabajo de\nfondo. El ledger utiliza la reserva como clave unica para evitar doble conteo\ndurante conciliacion. No se han habilitado scopes GLS ni ejecutado trabajos.\n\n## Administracion y datos\n\nSeis areas, permisos por operacion y rutas anteriores conservadas. Lectores\nno pueden modificar configuracion ni ejecutar pruebas. Operadores mantienen\nlas operaciones manuales ya permitidas; configuracion, cuotas, usuarios,\ncentros e importador requieren administrador. Usuarios inactivos y cambios\nde rol se comprueban contra PostgreSQL, no solo contra la cookie.\n\nMigracion aditiva 018_carrier_execution: dos tablas de remitentes/asociaciones,\nversion de centro en borrador, marca temporal ACK, pausa y numero de ejecuciones,\nrecibos y metadatos por elemento. Sin cambios destructivos ni repositorio paralelo.\nBackup previo validado mediante restauracion, hashes de filas e indices.\nRollback: recuperar codigo anterior y mantener esquema aditivo; no restaurar\nuna base activa ni borrar columnas automaticamente.\n\n## Pendientes antes de la prueba real\n\n1. Revision humana de datos, remitente, cuenta y confirmacion.\n2. Nueva autorizacion expresa para una llamada y presupuesto concreto.\n3. Activacion controlada de las barreras de despliegue, configuracion de cuenta\n   y scope. No existe un boton web que elimine estos bloqueos.\n4. Ajustar de forma expresa y limitada los permisos del servicio 80 sobre el\n   almacen iClientes y su salida de red; hoy siguen restringidos a la LAN.\n5. Mantener intento unico, sin consultas auxiliares ni reintentos.\n\nNo se afirma validacion productiva del nuevo adaptador: la aceptacion en esta\netapa se basa en mocks y PostgreSQL temporal. La enumeracion por fechas y\nCerrar dia siguen pendientes de contrato oficial suficiente.\n\nLas incidencias con soluciones ambiguas se conservan sin declarar resueltas\ntodas ellas. Fechas no reconocidas permanecen en evidencia cifrada/evento raw;\nno se inventan fechas de recogida, grabacion ni entrega.\n\nVer TEST_RESULTS, DATABASE_CHANGELOG, ADMIN88_NAVIGATION,\nGLS_SENDER_INTEGRATION e HISTORICAL_IMPORT_STATUS para evidencias concretas.\n\n## Verificacion del despliegue\n\nAplicada exclusivamente 018_carrier_execution; 56 tablas, 115 indices y\n18 migraciones. Todas las filas preexistentes conservadas, contrastadas por\nclave primaria y hash de sus columnas anteriores. Servicios 80, 85, 88 y\nPostgreSQL activos. Ready 80/88 HTTP 200, login 80 HTTP 200 con HttpOnly;\nlas rutas privadas sin sesion responden 303 hacia /login.\n\n93 rutas administrativas: las 90 anteriores permanecen y se anaden tres\nendpoints (centros GET/POST y detalle GET de trabajo). Renderizadas las seis\nareas. Verificacion adicional de interfaz: tres pruebas correctas en 4,72 s.\nNo se dispone de captura real de navegador; verificacion HTML/ASGI realizada.\n\nCentro habitual creado desde los campos sender del preset local cifrado\nanteriormente confirmado por el usuario; identidad de empresa, localidad, CP\ny pais comprobados. Asociado a las dos cuentas iClientes. No se copiaron\ncampos recipient, telefonos ni datos de compras. El snapshot sigue cifrado.\n\nEl comando del trabajador ejecutado en modo bloqueado devuelve calls=0.\nTres flags globales false; cuentas iClientes inactivas para el nuevo flujo,\noutbound/create false. No trabajos creados ni expediciones de demostracion\nintroducidas en el repositorio activo. Contadores sin cambios: 10 PRODUCCION,\n6 iClientes TEST, 5 REST; TEST/laboratorio 11 y total21.\n\nBackup privado restaurado y verificado:\n[RUTA INTERNA OMITIDA]\nSHA-256 del dump:\ncdb5721962479e29631bc4e77cde643eb7389c4623df05dfe10732dc8169a693.\nRollback de codigo preparado en:\n[RUTA INTERNA OMITIDA]\nNo se han cambiado units, proxy, puertos, credenciales ni configuracion Zebra.\n"}