TRANSPORT HUBRevision documental

TEST_RESULTS

Regresion del menu lateral 88 - 06/11/2026

389 tests correctos en 86,12 segundos, incluidos los 374 anteriores y 15 nuevos de navegacion. Base PostgreSQL temporal eliminada al terminar, datos sinteticos, TCP y DNS externos bloqueados por los fixtures existentes. No se utilizaron credenciales ni expediciones GLS reales como datos de prueba. SHA-256 del transcript privado: b407bf0ddebbb5d36e87b7a5aa6a6a91f1095b25c609f6ae909b49342bc08d60.

Cobertura nueva: seis categorias y permisos de enlaces intactos para admin, operator y viewer; seleccion unica por ruta mas especifica; rutas hijas; prefijos similares no coincidentes; apertura de categoria activa; estructura ul/li/a; asset CSS versionado por hash; reglas verticales y ajuste de textos.

Navegador

Chromium con las plantillas/CSS reales y contenido sintetico. Todas las peticiones se interceptaron localmente; no accedio a servicios externos.

ResolucionCSS actualCSS anterior simulado
1024 x 768CorrectoCorrecto
1280 x 800CorrectoCorrecto
1440 x 900CorrectoCorrecto
1920 x 1080CorrectoCorrecto

Ocho escenarios: seis categorias, 28 enlaces, filas independientes sin solapamiento ni overflow horizontal, ajuste de textos largos, expansion y contraccion con raton/Enter, unico aria-current y scroll propio sin mover la pagina. Cinco rutas adicionales comprobaron seleccion de paginas hijas. Las capturas se inspeccionaron visualmente; no son sesiones de usuario reales.

Servicio desplegado

Siete GET autenticados: Inicio, Explorer, Importador, Usuarios, Diagnostico, Knowledge Base y Docs Oficiales; todos HTTP 200, seis grupos y 28 enlaces, un enlace activo y su grupo abierto. Token tecnico temporal no persistido. Health, ready, login y CSS nuevo: HTTP 200. Hash del CSS servido igual al desplegado. Comparacion estructural de GROUPS y mutation_roles sin cambios; web.py solo incorpora la ruta actual al contexto de navegacion.

Sin migraciones ni cambios de cuentas, permisos, cuotas o bloqueos operativos. Cero llamadas GLS, cero impresiones. iClientes PRODUCCION 13 y el historico TEST/laboratorio 11 permanecen sin cambios; total api_requests 24.

Prueba real GetExpCli - 06/11/2026

Tres llamadas reales autorizadas, tres HTTP 200 con Error "No se encuentra la expedicion". Prueba de importacion funcional NO SUPERADA, no fallo de transporte. Cero expediciones, eventos, bultos y documentos. No se inventan estados.

Cinco pruebas nuevas del control de un solo uso: correctas, exclusivamente con mocks y UID ficticio. La bateria previa de etapa D mantiene 374 pruebas correctas; no se repitio contra credenciales reales. Las respuestas reales se analizaron como evidencia operacional, no como fixtures de los tests.

Tres GET autenticados del buscador: HTTP 200 y cero resultados. Sin duplicados, claves foraneas invalidas ni elementos huerfanos. En proceso nuevo se recuperan ledger, reservas y errores persistidos. Persistencia de expedicion real: NO VALIDADA, ya que GLS no devolvio ninguna. Presupuesto agotado: no mas GLS.

Registro anterior de pruebas

Etapa D - pruebas sin conexion GLS

Resultado final: 374 passed in 83.27s. SHA-256 del informe completo: b3d0995bc040d38755284720bdd38320b2aa3db4ffec668a238610b75892e142. Actualizacion 17 a 18 correcta, cuatro migradores, filas existentes preservadas. Tres comprobaciones ASGI adicionales tras el ultimo enlace de interfaz: 3 passed in 4.72s; SHA-256 b3519d39d30eb6a2cdf4a22aedbf203eb4bbdd50710f2870398f6fa1d42c3de0. Servicios activos, ready 80/88 HTTP 200, rutas anonimas privadas 303 /login, seis grupos renderizados y worker bloqueado calls=0. Sin captura de navegador.

Bateria completa en PostgreSQL temporal y upgrade 17 a 18 con cuatro migradores. Las conexiones TCP/DNS externas estan prohibidas por los fixtures. Identidades, partes, SOAP, etiquetas y fallos son sinteticos; ningun UID real en los tests.

Cobertura nueva: adaptador de creacion, separacion TEST/PRODUCCION, referencia segura de credencial, respuesta SOAP, unicidad del intento, IDs/eventos, etiqueta de la misma respuesta, fallo del commit y replay sin nueva llamada, centros cifrados, habitual, revisiones y snapshots inmutables; worker pausado, reserva, consumo, reanudacion, fallo remoto, respuesta vacia, identidad distinta, reinicio tras fallo local y pausa durante una lectura. Regresiones anteriores incluidas, mas navegacion/permisos/CSRF y escritura HTTP parcialmente transmitida.

Segunda pasada completa: 366 correctas en 50,63 segundos. Se anade una bateria final ampliada, cuyo resultado y SHA-256 se registraran a continuacion. No se afirma una nueva validacion contra GLS ni impresion fisica en esta etapa.

Registro historico de pruebas

Etapa C - resultado final

349 pruebas correctas en 58,29 segundos. Incluye las 319 previas de etapa B. Reporte privado stage-c-test-results.txt. SHA-256: f81e6fd94dc48e0a6a6aadd90a56ab58b6d2487af544a76fb99fe16fc1b30e7f.

Base PostgreSQL temporal nueva; sin restaurar datos reales como fixtures. Upgrade 16 a 17: cuatro migradores concurrentes, una aplicacion de 017, filas sinteticas anteriores conservadas. La base temporal se elimina.

AreaPrueba
JSON documentalIndice, Markdown completo, bundle deduplicado, MIME y hash
FragmentosDocumento grande UTF-8 reconstruido exactamente por offsets y hashes
PublicacionDesactivacion, integridad, metodos, traversal y consultas invalidas
BorradoresCifrado, guardado parcial, clave de creacion, CAS y propietario/admin
ValidacionCP, reembolso/portes y campos adicionales no habilitados rechazados
Intento unicoSimulacion concurrente produce una sola operacion y etiqueta
PreflightCuota local desactivada: cero intentos, vuelta a revision manual
AislamientoCuenta local sin UID, IDs SIM y namespace distinto; sin api_requests
ConciliacionFallo de commit posterior a respuesta; replay local sin segundo sender
FallosTimeout y SOAP 500 simulados no provocan reenvio
PermisosLectura, operador, admin, usuario inactivo y audiencias separadas
LoginAcceso correcto/incorrecto, CSRF y cookies HttpOnly/SameSite
UI operativaGuardado, revision, confirmacion simulada, resultado, ficha y JPG
Creacion realPOST autenticado con CSRF valido devuelve 423
BusquedaPeriodos, combinaciones, cuenta, destinatario, referencias e IDs
Paginacion29 expediciones sinteticas, paginas estables y sin solapamiento
PatronesPorcentaje/guion bajo literales; sin ampliar por comodines del usuario
ImportadorDuplicados y otra agencia, ambiguos, revision firmada y trabajo pausado
AdministracionAcceso admin/CSRF, edicion de politica, excepcion y preparacion POD
LimitesFormulario operativo demasiado grande rechazado con 413

Guard general: TCP y DNS Python prohibidos. Guard adicional en tests C: IClientesSecretStore.get_uid e IClientesSoapTransport.post_once producen AssertionError si se invocan. Se usa clave criptografica generada solo para tests, usuarios falsos y PostgreSQL por socket Unix.

Comprobaciones en servicio activo

80 health: 200 JSON; ready: 200 JSON. Login: 200 HTML, cookie HttpOnly. 80 drafts/shipments sin sesion: 303 a /login. 88 herramientas nuevas sin sesion: 303 a /login. 88 health/ready: 200. JSON 85: 200. 54 tablas, 111 indices, 17 migraciones. Nuevas tablas de negocio sin datos de prueba insertados en activo. Ledger GLS intacto: 21 filas totales.

No se ha realizado una prueba visual con un navegador automatizado: el runtime de navegador no estaba disponible en el entorno de ejecucion. Las pantallas y formularios se verificaron por ASGI/HTML con datos sinteticos; queda revision visual humana en navegador de escritorio/movil. El fichero JS de autocompletado legacy no se ha modificado; la cifra anterior corresponde a la suite pytest, no a una ejecucion adicional del runner JS.

Registro historico: etapa B

Etapa B - resultado final

319 pruebas correctas en 36,59 segundos. Incluye las 293 regresiones previas. Se ejecutaron en la VM, contra PostgreSQL temporal separado y datos sinteticos. La base temporal se elimino al terminar. No se restauro informacion de expediciones reales como fixture y no hubo llamadas a GLS.

Transcript privado: stage-b-test-results.txt en el directorio de build. SHA-256: a0ca7c743addddd07ab5f9661dec65730aefdb69d4b59e7777bf957c8a71d882.

Cobertura nueva

AreaComprobacion
MigracionesFresh schema, repeticion idempotente, fallo SQL con rollback
Actualizacion13 a 16 con filas previas sinteticas conservadas
ConcurrenciaCuatro migradores serializados; 12 ingestas concurrentes sin duplicados
IntegridadCuenta y transportista; referencias cruzadas rechazadas
IdentidadCeros iniciales, aislamiento entre cuentas, conflictos sin fusion automatica
HistoricoEventos revisados, observaciones antiguas sin degradar proyeccion actual
PrivacidadObservaciones/documentos cifrados, ficheros 0400, directorios privados
DocumentosHash, original inmutable, deduplicacion y validacion de cuenta previa
CreacionUn solo sender ante concurrencia, idempotencia y bloqueo por defecto
ConciliacionRespuesta guardada antes de fallo de commit; replay local tras reinicio
AmbiguedadTimeout/HTTP 500/respuesta invalida no provocan una segunda alta
EvidenciaFallback cifrado en BD si no se puede crear el fichero de respuesta
Cuotas50 %, reserva de prioridad, cap oficial, excepciones con permiso y caducidad
ReservasConcurrencia, varios limites atomicos, refund solo si no se envio
LedgerReserva unica, api_requests idempotente y agregacion diaria sin doble incremento
VentanasPeriodo movil, horario, cooldown 429 y reinicio con reserva persistente
Excepciones horariasCada llamada fuera de horario consume su coste excepcional acotado
TrabajosPausa, reanudacion, lease, checkpoints, fallo parcial y reintentos acotados
EscriturasNo se permiten trabajos de creacion en la cola de lecturas
AccesoAdministracion requiere login; ruta nueva sin POST de mutacion

El guard de tests impide conexiones Python TCP y DNS. PostgreSQL utiliza socket Unix y una DSN con prefijo de base de pruebas validado. No se prueban credenciales reales ni la autenticacion de GLS en este encargo.

Verificaciones de despliegue

Backup restaurado: 39 tablas, 59 indices y hashes de filas iguales. Tras migrar: 53 tablas, 106 indices, 16 versiones; health/ready 200. Todas las columnas preexistentes preservadas, salvo cambios de metadatos previstos en tres tablas. Directorios de evidencia y activos: 0700.

Ruta /admin/platform sin sesion: 303 a /login; /login: 200. Knowledge Base sin sesion: 303 a /login. El canal 85 mantiene acceso anonimo solo a copias PUBLIC_REVIEW. Ver AUDIT85_DIAGNOSTIC para pruebas externas.

Riesgo residual y limites de prueba

No se simulo un corte electrico real ni disco fisicamente averiado. Se simularon fallos de commit, transporte y escritura; la durabilidad usa fsync y reemplazos/enlaces atomicos, pero depende del almacenamiento local. No hay alta de produccion ni validacion de un sender real conectado a etapa B. Eso requiere etapa C y nueva autorizacion antes de enviar. Los clientes legacy no quedan automaticamente migrados al nuevo gestor.

Registro historico: etapa A

Las pruebas unitarias se ejecutan en una copia privada, con conexiones TCP y DNS bloqueadas por conftest y DSN que no puede alcanzar la base operativa. Se conservan todos los tests anteriores.

Nuevas pruebas: desactivacion por defecto e inmediata, GET/HEAD, denegacion de escritura, path traversal, archivos no permitidos, symlinks, manipulacion de contenido, permisos inseguros, HTML activo, referencias externas, campos secretos estructurados, inventario exacto de secretos y codificaciones, aislamiento de imports, administradores/CSRF y fallo del registro de activacion.

Primera regresion completa: 284 tests correctos. La ampliacion de casos detecto un defecto en el orden de verificacion de metadatos PNG; corregido antes del despliegue. El resultado definitivo se incorpora al finalizar.

Las comprobaciones reales de despliegue se registran separadamente de los tests unitarios; un test ASGI no se presenta como una sesion humana real.

Regresion definitiva antes de despliegue: 292 tests correctos en 2,87 s. No se utilizo el UID real como fixture ni se permitio trafico TCP/DNS. No hubo conexion a la base operativa durante los tests.

Repeticion final antes del despliegue: 292 correctos en 2,91 s. Se anade ademas comprobacion de renderizado del formulario real para la entrega final.

Aceptacion real del servicio

No hubo llamadas GLS ni impresiones durante ninguna comprobacion.

Resultado final

293 tests correctos en 2,88 s, incluyendo la plantilla administrativa real y todos los tests anteriores. Log privado identificado por SHA-256: e30aa1bc9572f03582a5c4df507cac0b9bfc3727481092731b3340e3843b829e.