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.
| Resolucion | CSS actual | CSS anterior simulado |
| 1024 x 768 | Correcto | Correcto |
| 1280 x 800 | Correcto | Correcto |
| 1440 x 900 | Correcto | Correcto |
| 1920 x 1080 | Correcto | Correcto |
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.
| JSON documental | Indice, Markdown completo, bundle deduplicado, MIME y hash |
| Fragmentos | Documento grande UTF-8 reconstruido exactamente por offsets y hashes |
| Publicacion | Desactivacion, integridad, metodos, traversal y consultas invalidas |
| Borradores | Cifrado, guardado parcial, clave de creacion, CAS y propietario/admin |
| Validacion | CP, reembolso/portes y campos adicionales no habilitados rechazados |
| Intento unico | Simulacion concurrente produce una sola operacion y etiqueta |
| Preflight | Cuota local desactivada: cero intentos, vuelta a revision manual |
| Aislamiento | Cuenta local sin UID, IDs SIM y namespace distinto; sin api_requests |
| Conciliacion | Fallo de commit posterior a respuesta; replay local sin segundo sender |
| Fallos | Timeout y SOAP 500 simulados no provocan reenvio |
| Permisos | Lectura, operador, admin, usuario inactivo y audiencias separadas |
| Login | Acceso correcto/incorrecto, CSRF y cookies HttpOnly/SameSite |
| UI operativa | Guardado, revision, confirmacion simulada, resultado, ficha y JPG |
| Creacion real | POST autenticado con CSRF valido devuelve 423 |
| Busqueda | Periodos, combinaciones, cuenta, destinatario, referencias e IDs |
| Paginacion | 29 expediciones sinteticas, paginas estables y sin solapamiento |
| Patrones | Porcentaje/guion bajo literales; sin ampliar por comodines del usuario |
| Importador | Duplicados y otra agencia, ambiguos, revision firmada y trabajo pausado |
| Administracion | Acceso admin/CSRF, edicion de politica, excepcion y preparacion POD |
| Limites | Formulario 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
| Migraciones | Fresh schema, repeticion idempotente, fallo SQL con rollback |
| Actualizacion | 13 a 16 con filas previas sinteticas conservadas |
| Concurrencia | Cuatro migradores serializados; 12 ingestas concurrentes sin duplicados |
| Integridad | Cuenta y transportista; referencias cruzadas rechazadas |
| Identidad | Ceros iniciales, aislamiento entre cuentas, conflictos sin fusion automatica |
| Historico | Eventos revisados, observaciones antiguas sin degradar proyeccion actual |
| Privacidad | Observaciones/documentos cifrados, ficheros 0400, directorios privados |
| Documentos | Hash, original inmutable, deduplicacion y validacion de cuenta previa |
| Creacion | Un solo sender ante concurrencia, idempotencia y bloqueo por defecto |
| Conciliacion | Respuesta guardada antes de fallo de commit; replay local tras reinicio |
| Ambiguedad | Timeout/HTTP 500/respuesta invalida no provocan una segunda alta |
| Evidencia | Fallback cifrado en BD si no se puede crear el fichero de respuesta |
| Cuotas | 50 %, reserva de prioridad, cap oficial, excepciones con permiso y caducidad |
| Reservas | Concurrencia, varios limites atomicos, refund solo si no se envio |
| Ledger | Reserva unica, api_requests idempotente y agregacion diaria sin doble incremento |
| Ventanas | Periodo movil, horario, cooldown 429 y reinicio con reserva persistente |
| Excepciones horarias | Cada llamada fuera de horario consume su coste excepcional acotado |
| Trabajos | Pausa, reanudacion, lease, checkpoints, fallo parcial y reintentos acotados |
| Escrituras | No se permiten trabajos de creacion en la cola de lecturas |
| Acceso | Administracion 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
- Servicio 85 activo, sin autenticacion ni Set-Cookie; default deshabilitado.
- Sandbox: lectura privada denegada, escritura denegada, connect denegado.
- Panel existente 88: health/ready 200; acceso anonimo al control 303 a login.
- Activacion temporal tecnica: indice/manifiesto 200; 26 representaciones
completas verificadas contra SHA-256; HEAD no entrega body; POST devuelve 405.
- Traversal y directory listing: 404.
- Desactivacion inmediata: 503 en nuevas solicitudes, incluso con If-None-Match
e If-Modified-Since. Respuestas no-store, CSP sin scripts y noindex.
- Sesion humana del panel 88 y publicacion externa HTTPS pendientes de Juan.
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.