# IMPLEMENTATION_LOG

## Correccion prioritaria del menu 88 - 06/11/2026

Alcance exclusivo: presentacion y seleccion de la navegacion administrativa.
Se conservan las seis categorias, los 28 enlaces del administrador, las rutas,
el filtrado por rol y la autorizacion de operaciones. Sin cambios de negocio.

El HTML anterior agrupaba enlaces directamente dentro de details. El grid de
nav ordenaba categorias, pero no los enlaces interiores. El servidor ya servia
una regla reciente display:block en el CSS general sin versionar; no se obtuvo
el cache del navegador afectado y no se atribuye su incidente a cache como
hecho probado. Se verifico localmente que un CSS anterior dejaba esos enlaces
en linea. La seleccion tambien era exacta y no cubria paginas hijas.

Correccion: listas semanticas ul/li dentro de details/summary nativos; estilos
especificos reutilizables en admin-navigation.css con version basada en SHA-256.
Una fila por enlace, sangria uniforme, ajuste de textos, foco visible, separacion
entre grupos y scroll vertical propio. La coincidencia de ruta mas especifica
marca un solo enlace y abre su categoria al cargar la pagina. No se anade JS.

Validacion: 389 pruebas correctas, incluidas las 15 nuevas del menu. Chromium
comprobo las seis categorias y 28 enlaces en cuatro resoluciones, con el CSS
actual y con una version anterior simulada. Capturas con contenido sintetico.
Siete GET autenticados sobre el servicio desplegado: 200 y seleccion correcta.
La sesion tecnica fue temporal, solo en memoria, sin persistir su token.

Despliegue de cinco archivos con backup y rollback preparado; reinicio breve
solo de transport-hub.service. El primer preflight auxiliar se detuvo antes
de modificar archivos por usar el usuario root para PostgreSQL; se corrigio
para consultar con el usuario de servicio habitual. Health/ready 200; servicios
80, 85 y 88 activos. Sin migraciones, impresiones ni conexiones GLS.
Contadores sin cambios: iClientes PRODUCCION 13, TEST 6, REST registrado 5;
historico TEST/laboratorio 11 y total 24. Bloqueos operativos conservados.

## Prueba real limitada de lectura - 06/11/2026

Backup reciente restaurado y verificado, comprobacion de cuenta 2004/35,
identidad de PRODUCCION separada de TEST, ausencia previa de los tres casos y
presupuesto suficiente. Control de un solo uso validado con cinco tests mock.
Un trabajo acotado, tres GetExpCli, tres HTTP 200 de 432 bytes con Error de
negocio y cero nodos exp. Duraciones: 207, 126 y 129 ms. Sin reintentos.

La evidencia original quedo cifrada antes de normalizar. No hubo datos que
persistir como expediciones; se conservaron errores, auditoria y tres cargos
de cuota. Permisos temporales restaurados. GET autenticado Buscar 80: cero
filas, coherente con PG. Verificacion en proceso nuevo e integridad correctas.

Incidencia posterior del canal QMP; acceso recuperado por SSH con identidad
existente y host key verificada por lectura RO. No cambios de claves en VM,
reinicios, proxy ni configuracion de red. No nuevas llamadas GLS por este motivo.
Se publican resultados negativos; no se modifica la integracion para falsearlos.

## Registro anterior

## Etapa D - 06/11/2026

1. Inventario fresco: 54 tablas, 17 migraciones y 21 peticiones externas.
2. Contraste local de manual y ejemplo oficial GetExpCli, sin conexiones GLS.
3. Adaptador sobre serializador, proveedor de identidad y transporte validados.
4. Correccion de clasificacion de escritura HTTP parcial como resultado incierto.
5. Centros remitentes cifrados, asociaciones y snapshot por borrador.
6. Trabajador GetExpCli acotado, recibos/checkpoints y replay local.
7. Cuotas por cuenta, prioridad, reserva y estimacion del importador.
8. Navegacion seis areas, permisos por operacion y rutas antiguas conservadas.
9. Migracion incremental 018 probada con cuatro migradores simultaneos.
10. Backup PostgreSQL restaurado: 54 tablas y 111 indices coinciden en filas/hash.
11. Pruebas completas sobre base temporal, sin credenciales reales ni red externa.
12. Despliegue controlado con bloqueos de creacion/lectura y sin iniciar workers.

Primera pasada: 364 correctas y dos fallos del nuevo mapeo de creacion,
identificados y corregidos antes del despliegue. Segunda: 366 correctas.
La bateria final ampliada queda registrada en TEST_RESULTS.
Revision final: 374 correctas en 83,27 segundos. Selector global restringido
para lectura y Retry-After conservado/aplicado en consultas iClientes.

## Registro historico anterior

## Etapa C - implementacion y despliegue

1. Inventario fresco de codigo, 53 tablas, 16 migraciones y contadores.
2. JSON 85 implementado sobre copias sanitizadas fijadas por hash. Indice,
   lectura completa, bundle y fragmentos UTF-8 con offset/hash propios.
3. Primera ronda: 341 pruebas correctas. Backup previo restaurado y validado.
4. Se activo primero JSON 85 sin cambiar interruptor, politica ni proxy.
   Cliente HTTPS ordinario: 200; PROJECT_STATUS inicial 6074 bytes JSON,
   contenido Markdown 5522 bytes con hash correcto; bundle de tres informes
   65466 bytes; indice 3944 bytes (release B existente en ese momento).
5. Se implementaron borradores, auth de 80 y flujo local simulado usando el
   contrato, coordinador, diario, repositorio y cuotas existentes.
6. Se implementaron busqueda local combinable, paginacion y ficha documental.
7. Se prepararon importador de texto revisado, trabajos pausados y cuotas en
   88, sin worker. Inventario: 90 rutas, 36 plantillas y menu principal intacto.
8. Segunda ronda: 345 correctas. Se ampliaron casos de SOAP Fault, timeout,
   commit fallido y conciliacion sin segundo sender. Revision final ampliada:
   349 correctas en 58,29 segundos, datos sinteticos y llamadas/UID GLS
   prohibidos en tests C; cuota desactivada antes de claim no bloquea borrador.
9. El primer script auxiliar de despliegue se detuvo por sintaxis antes de
   ejecutar cambios. Se corrigio y compilo antes de su ejecucion efectiva.
10. Se detuvo brevemente solo 88, se instalaron 38 ficheros y se aplico 017.
    Todas las filas anteriores quedaron preservadas, verificadas por PK/hash.
11. Servicio local 80 habilitado e iniciado; health/ready 200. 85/88 y PostgreSQL
    activos. Privadas sin sesion: 303 a login. No se crearon usuarios de prueba
    ni se falsifico una sesion de administrador en la aplicacion activa.
12. Informes completos y representacion documental de administracion preparados
    para release revisado C, manteniendo los formatos y el interruptor.

No se realizaron altas, consultas, OAuth, cancelaciones, etiquetas, POD ni
ninguna otra peticion a GLS. No hubo impresiones ni cambios del proxy.
La navegacion principal del 88 se conserva byte a byte; solo hay accesos
secundarios a las herramientas nuevas desde la pantalla Plataforma.

## Registro historico: etapa B

## Etapa B - trabajo ejecutado

1. Se consultaron DNS publicos, certificado/SNI, HTTP/HTTPS, dos User-Agent,
   IPv4/IPv6 y todos los documentos publicados. Cero llamadas GLS.
2. Se capturo el codigo, esquema y contadores en modo lectura. Se revisaron
   las 39 tablas y las 13 migraciones antes de introducir cambios.
3. Se implementaron modelos y repositorio neutrales respecto al proveedor.
   Las claves privadas siguen en el mecanismo anterior: solo se referencia
   el secreto desde carrier_accounts.
4. Se implementaron observaciones cifradas, eventos versionados, documentos
   privados y busqueda local acotada, sin invocar conectores.
5. Se implemento el coordinador de un solo intento y el diario duradero.
   Recibos cifrados independientes de la transaccion de negocio, fallback
   cifrado en PostgreSQL y replay exclusivamente local.
6. Se reutilizo synchronizations para trabajos administrativos de lectura,
   sin activar scheduler/worker ni importar datos reales.
7. Se implemento el nucleo de reservas de cuota, no una promesa de cuota
   ilimitada. Se conserva el ledger anterior y su agregacion diaria.
8. Primera ronda: 311 correctas, dos fallos. Se corrigio el control de cuenta
   al deduplicar documentos y el empaquetado de la herramienta documental.
9. Rondas posteriores: 318 correctas; ronda final ampliada: 319 correctas
   en 36,59 segundos, incluyendo coste de excepciones fuera de horario. Se
   comprobo ademas upgrade 13 a 16, conservacion de datos sinteticos y
   serializacion con cuatro migradores concurrentes.
10. Se genero backup fresco y se restauro realmente antes de migrar.
11. Se detuvo brevemente solo 88, se verificaron hashes para no pisar cambios,
   se instalaron 23 ficheros y se aplicaron 014-016. Se compararon todas las
   columnas anteriores antes de arrancar el servicio.
12. health/ready HTTP 200. PostgreSQL, 88 y 85 activos. Se verificaron rutas
   privadas sin sesion: redireccion a login, no acceso anonimo.
13. Se prepararon los informes sanitizados y un release documental aprobado
   expresamente. El cambio de politica respeta el interruptor del operador
   bajo bloqueo compartido con el control administrativo.

No se han creado/modificado/anulado expediciones. No hay impresiones,
descargas de etiquetas/POD, importaciones masivas, cierre, cambios de UID
o solicitudes OAuth. Contadores originales conservados.

## Registro historico: etapa A

## 06/11/2026 - preparacion A

1. Leida la orden operativa y fijado el primer hito independiente del resto.
2. Capturado inventario de codigo, tests y contadores antes de editar.
3. Backup PostgreSQL en formato custom con snapshot consistente.
4. Restauracion real en base temporal: 39 tablas y 59 indices, filas/huellas identicas.
5. Eliminada exclusivamente la base temporal de verificacion.
6. Backup privado de aplicacion/configuracion y activos locales; permisos restrictivos.
7. Implementado servicio documental minimo, sin dependencias de la aplicacion ni PostgreSQL.
8. Implementado control exclusivo de administradores en el puerto 88 con CSRF y registro.
9. Preparada lista explicita de informes completos con sanitizacion, revision e integridad.

La primera preparacion del backup encontro un problema de permisos en el
directorio temporal y se corrigio antes de cualquier despliegue. No se
modifico la base operativa ni se utilizo un backup sin verificar.

No se han ejecutado operaciones GLS, impresiones ni migraciones de negocio.

## Despliegue y aceptacion tecnica

- Instalado servicio con usuario dedicado sin login; estado inicial deshabilitado.
- Autoensayo dentro de systemd: rutas privadas inaccesibles, publicacion de solo
  lectura, connect bloqueado y contenido verificado. Todos los controles correctos.
- El primer arranque recibio SIGSYS al comprobar connect; se configuro EPERM
  sin retirar el filtro. El servicio arranco despues correctamente.
- La proteccion de hashes detuvo la sustitucion de una unidad distinta de la
  linea base; se reconocio exclusivamente el hash del primer intento propio.
  No se aceptaron cambios arbitrarios ni se sobrescribieron ediciones ajenas.
- Servicio 88 reiniciado controladamente; health/ready 200, sin nueva migracion.
- Activacion temporal mediante el mismo componente de control: indice y manifiesto
  200, 26 representaciones con hash correcto, HEAD sin body, POST 405, traversal y
  directory listing 404. Desactivacion: nuevas solicitudes y condicionales 503.
- Acciones de aceptacion registradas como proceso de despliegue, no como usuario
  humano. Canal devuelto a deshabilitado. Verificacion humana del 88 pendiente.

La preparacion v2 incorpora esta evidencia sin modificar los informes originales
ni exponer el dump/configuracion privados. El responsable publica el HTTPS externo.
