Una constelación que crece a medida que hablas
El 22 de mayo, la pantalla de inicio de XNeuronal dejó de mostrar un orbe de demostración, idéntico para todo el mundo, y empezó a dibujar la memoria real de la persona que habla: un punto por recuerdo, una forma por categoría, un color por ámbito de la vida, desde el primer recuerdo. El mismo día, las fichas aprendieron a mostrar su formato en vez de sus símbolos, y «¿qué tengo la semana que viene?» pasó de ocho consultas a una sola.
Por la noche, Lucía cuenta su día
Lucía ha cogido una costumbre. Por la noche, con los platos fregados, apoya el teléfono contra la taza, pulsa el botón y cuenta. «He comido con Dani, cambia de trabajo en septiembre. El jueves, ITV a las ocho, tengo que acordarme del permiso de circulación. Y mi madre ha llamado por el cumpleaños de papá, es el 14.» No clasifica, no ordena. Habla con alguien que escucha, que responde y que se acordará.
Hasta el 22 de mayo, mientras hablaba, el centro de la pantalla mostraba un orbe. Un orbe bonito, catorce iteraciones para encontrar su punto de equilibrio, que latía suavemente en reposo y se agitaba un poco al escuchar. Pero era el mismo orbe para Lucía que para alguien que acababa de instalar la aplicación y aún no había dicho nada. No sabía nada de Dani, ni de la ITV, ni del 14. Era una demostración: el aspecto que tiene una aplicación que escucha, en general.
Su memoria, la de verdad, vivía en otra parte. En los ajustes, una página «Constelación» dibujaba cada recuerdo como un punto y cada enlace como un hilo, y se podía arrastrar, pellizcar para ampliar, tocar un punto para abrir su ficha. Fue ahí donde, una semana antes, cada punto había recibido una forma según su categoría. Un mapa cuidado, a tres pantallas de profundidad, que nadie abría por la noche mientras contaba su día.
Sacar el mapa de los ajustes
A mediodía del 22 de mayo, ese mapa subió a la pantalla de inicio. No una copia simplificada: el mismo componente que la página de ajustes, en un cuadrado que ocupa todo el ancho, centrado un poco por encima de la mitad para dejar sitio al hilo de la conversación.
Dos diferencias con la versión de los ajustes. La primera: no responde a ningún gesto. Ni arrastrar, ni pellizcar, ni tocar un punto. En el inicio, la constelación es un fondo, no un mapa que recorrer; el único gesto de esa pantalla sigue siendo el botón para hablar. La segunda: se mueve, y volveremos a ello.
Una decisión acompañaba esa subida: la constelación solo sustituía al orbe a partir de veinte recuerdos activos. El razonamiento parecía sano: tres puntos aislados quedarían pobres para alguien que empieza, mientras que el orbe es bonito desde el primer momento. Para no mostrar el orbe durante los doscientos milisegundos en que la aplicación aún no sabe cuántos recuerdos tiene, se guardaba una marca en el teléfono la primera vez que se cruzaba el umbral, y los arranques siguientes iban directos a la constelación, aunque las eliminaciones volvieran a bajar de veinte.
Ese umbral no pasó de la tarde. Pero antes de contar por qué, hay que contar lo que se ve.
Un mapa que respira
La página de ajustes dibujaba una constelación inmóvil. En el inicio, la inmovilidad habría parecido una planta de interior. Así que el 22 de mayo escribió un modo animado, con cada parámetro elegido para que viva sin distraer.
Cada punto deriva. No un temblor: una curva lenta y abierta, obtenida dándole a cada punto dos frecuencias ligeramente distintas, una horizontal y otra vertical, entre cinco y doce segundos por ciclo. Dos puntos nunca siguen el mismo camino, y ninguno vuelve exactamente a su salida. La amplitud es suficiente para que el ojo perciba el movimiento y no tanta como para que dos recuerdos se solapen.
Cada halo respira, un dieciocho por ciento alrededor de su valor, a un ritmo propio de cada punto, entre dos y cuatro segundos. Los ritmos están dispersos a propósito: si todos los halos respiraran a la vez, la constelación tendría un latido visible, y un latido atrae la mirada.
Y cada recuerdo se enciende, de vez en cuando. Cada diez a veinticinco segundos, según el punto, una bocanada de un cuarto más de opacidad y un ocho por ciento más de tamaño, subida y bajada suaves durante una décima parte del ciclo. Nunca un destello: un pensamiento que se ilumina un instante, no un estroboscopio. Los hilos entre los puntos se redibujaron como dos trazos superpuestos, uno ancho y translúcido detrás, otro fino y nítido delante, para que tengan el grosor de un hilo y no el de un cabello. Y el conjunto inspira y espira un dos y medio por ciento cada tres segundos, como lo hacía el orbe.
Un detalle cuenta más que los demás: todo lo determina el identificador de cada recuerdo, nada se sortea al azar. La trayectoria de Dani, el ritmo de su respiración, el instante en que se enciende, son los mismos de un día para otro. La constelación nunca vuelve a barajar las cartas.
Cuando Lucía pulsa el botón, unas ondas de escucha se añaden alrededor del mapa. Cuando las burbujas de la conversación ocupan la pantalla, la constelación se atenúa a una cuarta parte para que se lean las burbujas. Veinticuatro imágenes por segundo, un ritmo elegido para seguir fluido con unos cientos de puntos redibujados en cada imagen.
Dónde se coloca cada recuerdo, y por qué
La disposición no es decorativa. Dice algo de la memoria.
Dos anillos. Dentro, lo que cuenta ahora: los recuerdos que están en el nivel de trabajo de la memoria, los de importancia alta y los que son encrucijadas, enlazados con muchos otros. Fuera, el resto. Cada punto tiene un ángulo fijo, con un ligero juego para que el anillo no parezca la esfera de un reloj. El radio del conjunto crece con la raíz cuadrada del número de recuerdos: una memoria de cien recuerdos no es diez veces más ancha que una de diez, es más densa.
El tamaño de un punto crece con las veces que se ha hablado de él, con su importancia y con su papel de encrucijada. Un recuerdo repetido, reconocido como el mismo y reforzado en vez de recreado, engorda. Un recuerdo dicho una vez sigue siendo pequeño.
El color del halo dice el ámbito de la vida. Ámbar para la familia, azul para el trabajo, rojo para la salud, verde para los amigos, amarillo para el dinero, naranja para la casa, cian para lo que se aprende, violeta para uno mismo. Gris cuando la aplicación no lo sabe. La forma del núcleo dice la categoría: un círculo lleno para un hecho, un círculo ribeteado de blanco para una persona, un rombo para un evento, un hexágono para una nota, un triángulo para una tarea, un pequeño rombo hueco para un recordatorio, una estrella para un tema. Y los hilos, los que la memoria escribía desde el principio, unen lo que va junto: azul claro para la mayoría, rojo cuando un recuerdo corrige a otro, naranja discontinuo cuando uno sustituye a otro.
Crece mientras hablas
Lo esencial cabe en una línea de código, pero es la línea que cambia lo que Lucía ve.
La constelación del inicio se recarga en dos momentos precisos: en cuanto la respuesta del asistente se coloca en el hilo, antes incluso de que la voz haya terminado de leerla, y de nuevo cuando la voz calla. Es el mismo disparador que ya mueve el contador de recuerdos en la parte superior de la pantalla en el momento de la burbuja, y no seis segundos después. También se recarga al volver a la aplicación, y un recuerdo eliminado desaparece del mapa al instante.
Así que la noche de Lucía cambia de naturaleza. Dice Dani, y aparece un círculo ribeteado de blanco, verde, en el anillo exterior. Dice la ITV del jueves, y se posa un rombo, con un triángulo al lado para el permiso de circulación, y un hilo entre los dos. Dice el 14, y se enciende un rombo ámbar. Mientras cuenta, su memoria se dibuja delante de ella, y a la noche siguiente los puntos de la víspera siguen ahí, en su sitio, con su ritmo.
La pantalla de inicio ya no es la imagen de una aplicación que escucha. Es la imagen de lo que Lucía le ha contado.
La tarde: un cierre inesperado y el fin del umbral
Dos horas y media después de la subida de la constelación, la aplicación se cerraba al arrancar para todos los que la tenían. La causa está en el motor de dibujo, que exige que un componente declare el mismo número de pequeños estados internos en cada renderizado. El cálculo de las animaciones se había colocado después de la línea que dice «si no hay puntos, no dibujes nada». En el primer renderizado, la memoria aún no estaba cargada: salida anticipada, cálculo nunca declarado. En el siguiente, los puntos ya estaban, el cálculo se declaraba y el motor contaba un estado más que antes. Se negó, y la aplicación murió en la pantalla de arranque. La corrección fueron unas líneas movidas de sitio; es el tipo de defecto que no da ningún error al escribirlo e impide que la aplicación se abra.
A las seis de la tarde se retiró el umbral de veinte recuerdos, junto con la marca que lo recordaba y el propio orbe de demostración. Tres razones. La marca, pensada para evitar un parpadeo al arrancar, producía otro: en frío, la aplicación mostraba a veces lo que no tocaba mientras la releía, y si el umbral se había cruzado en otra sesión, la pantalla se quedaba atascada en la demostración mucho después. Además, el orbe estático ya no se dibujaba bien, y la persona que usa la aplicación pidió que se quitara. Por último, la razón que había justificado el umbral se dio la vuelta: tres puntos dispersos en una pantalla tranquila no quedan pobres. Dicen «tu memoria está tomando forma», que es exactamente lo que se quiere decir a alguien que empieza.
Desde entonces, la constelación se muestra desde el primer recuerdo. Antes de él, el espacio queda vacío y tranquilo, y se llena cuando la memoria se llena. El orbe no ha desaparecido de la aplicación: sigue ahí, pequeño, en la parte baja de la pantalla mientras el asistente habla, como objetivo que tocar para interrumpirlo. Pero en el centro del inicio ya no hay nada que sea igual para todo el mundo.
Estrellas alrededor de las palabras
Esa misma tarde se resolvió una molestia más antigua. Cuando el asistente redacta una ficha, escribe con un formato ligero: títulos, negrita, viñetas. Un pequeño lector casero sabía mostrarlo, pero solo en dos sitios, la ficha de tipo nota y el resultado de una búsqueda. En todo lo demás, el detalle de una ficha, las listas de recordatorios, tareas y notas, la bandeja de entrada, la lista de la memoria, el texto se mostraba en bruto. Lucía abría la ficha de Dani y leía asteriscos alrededor de «septiembre».
Se trazaron dos caminos. El cuerpo de la ficha, al abrirla, pasa ahora por el lector: los títulos son títulos, la negrita es negrita. Las líneas de lista, recortadas a dos o tres líneas, no pueden llevar formato; pasan por un limpiador que quita los símbolos y los prefijos de bloque, almohadillas, guiones, números, y conserva las palabras. El mismo limpiador sirve para las etiquetas que lee el lector de pantalla y para el cuadro de confirmación que cita el recuerdo antes de eliminarlo: ya no cita los asteriscos.
De paso, el lector ganó tres estilos en línea: la cursiva, el código en línea sobre una pequeña pastilla gris, útil para un nombre de archivo o un comando, y el subrayado de color, sobre un marcador ámbar suave, como un rotulador fluorescente sobre papel. Sigue limitado a propósito a lo que produce el asistente; no es un lector completo y no pretende serlo.
«¿Qué tengo la semana que viene?»
La jornada había empezado, por la mañana, con una pregunta de Lucía que salió mal: su planning de la semana. La respuesta había tardado más de dos minutos. Los registros mostraban por qué: para una sola pregunta, el asistente había lanzado ocho búsquedas en paralelo por la memoria.
No era un capricho del modelo, era una herramienta mal expuesta. El servicio que consulta la memoria sabía desde hacía tiempo filtrar por ventana de fechas, y la base tenía un índice dedicado, ordenado por vencimiento, que hace esa consulta casi instantánea. Pero esos dos filtros nunca se habían declarado en la descripción de la herramienta que ve el modelo: desde su punto de vista, no existían. Le quedaban dos malas opciones, recuperarlo todo y filtrar por su cuenta, o buscar por sentido, lo que compara la pregunta con quinientos candidatos y no entiende nada de «la semana que viene». Segundo defecto: incluso con una ventana de fechas, los resultados volvían ordenados por última mención. El índice los entregaba en orden cronológico; una ordenación explícita lo pisaba, y el modelo tenía que reordenar los días de cabeza, con riesgo de equivocarse.
La mañana declaró los dos extremos de la ventana en la herramienta, con la consigna de calcularla con precisión: «esta semana» es de hoy al domingo a medianoche; «este fin de semana», de sábado a domingo; «este mes», del primer al último día. Cuando se pide una ventana, los resultados vuelven en orden de fechas. Y el servidor escribe ahora un aviso en sus registros en cuanto un mismo turno dispara más de tres búsquedas, para detectar una regresión antes de que le cueste dos minutos a alguien.
Tres minutos después, una segunda corrección, porque el propio asistente había explicado lo que había hecho: varias consultas sobre la ventana de la semana, una para los eventos, otra para las tareas, una por cada tipo de recordatorio, y luego un resumen reconstruido día a día. También ahí era estructural. La herramienta solo aceptaba una categoría a la vez; hasta la petición más disciplinada tenía que lanzar cuatro consultas para estar completa. Desde entonces, la categoría acepta una lista, y un planning es una sola consulta: eventos, tareas y recordatorios, en orden, de una vez.
La consigna dada al asistente se reescribió en el mismo sentido. La vía preferida para un planning es la visualización directa, en la que el servidor hace la consulta él mismo y muestra la lista del momento, la que, desde ese mismo día, deja una viñeta bajo la respuesta y se abre ficha a ficha. La ventana sigue siendo estricta: nada de desbordarse a los días vecinos, aunque el asistente sepa cosas interesantes de ellos. Si cree que falta contexto, lo propone al final de la respuesta, «¿quieres que te liste también la semana siguiente?», y nunca va por su cuenta.
Lo que queda abierto
La constelación del inicio no se toca. Para abrir la ficha de Dani desde un punto, todavía hay que pasar por la página de ajustes. Es una elección por ahora, no un límite técnico.
Veinticuatro imágenes por segundo con unos cientos de puntos es el techo que se busca. Una memoria de varios miles de recuerdos aún no se ha dibujado en un teléfono modesto. Las amplitudes, las frecuencias, los umbrales que colocan un punto dentro o fuera son ajustes a ojo, no medidas, y se revisarán viendo vivir memorias reales.
El aviso sobre las búsquedas múltiples es una señal en los registros, no una barrera: avisa, no impide nada. Y el lector de formato seguirá siendo pequeño, mientras el asistente solo escriba lo que sabe leer.
Para Lucía, lo que cambió el 22 de mayo se ve sin que haya que explicarlo. Cuenta su día a alguien que escucha, que responde y que se acuerda; y mientras habla, la pantalla ya no le muestra una demostración. Le muestra lo que ha confiado, tomando forma.
