BlogAgentes de IA

Nada estaba roto

Un agente cambió cuatro archivos en producción por una falla que estaba en el índice de Shopify

Nicolás Biondi

Pared abierta en el centro con dos haces de cables luminosos, uno cian y otro ámbar, brillando con distinta intensidad.

Buscar el nombre completo de una marca que tenemos en vitrina devolvía "sin resultados". Las cámaras estaban ahí, en la vitrina y en el catálogo, pero el buscador de la tienda opinaba distinto. Recargué la misma URL y aparecieron productos, la recargué de nuevo y el conteo volvió a cambiar, sin que nadie tocara una línea de código.

La misma URL devolvía un número distinto cada vez

Lo vi desde el celular, probando la tienda como la ve alguien que entra a mirar cámaras. Una marca con decenas de productos publicados salía vacía, y quien busca por marca ya sabe lo que quiere: está a un clic de comprar o de irse a otra tienda.

Me equivoqué de sospechoso al toque. Apunté al tema, el código que arma la página de resultados, porque encima tenemos una capa propia que detecta búsquedas pobres y las amplía con términos parecidos. El culpable parecía de la casa.

El parámetro que faltaba

El agente revisó esa capa y encontró una llamada a la API de búsqueda de Shopify sin el parámetro de prefijo, el que avisa que la última palabra está incompleta. La teoría era razonable y encajaba con el síntoma. Editó cuatro archivos del tema, los subió a la versión en vivo y probó otra vez. La consulta devolvió productos. Si en ese momento me hubiera ido a atender el mostrador, habría jurado que estaba arreglado.

Meme Surprised Pikachu: Probé una vez tras el deploy y volvió a fallar Probé una vez tras el deploy y volvió a fallar

La búsqueda ya era intermitente antes del cambio. En un sistema así, una sola prueba después de un deploy no distingue "lo arreglé" de "volvió a cambiar solo". El agente corrió entonces la misma URL cinco veces seguidas, sin tocar nada entre corrida y corrida. El conteo siguió moviéndose, así que el deploy no había estabilizado nada.

Dos índices de Shopify en desacuerdo en el mismo segundo

Shopify responde por dos caminos: el índice predictivo, que alimenta las sugerencias mientras escribes, y la página de resultados completa. El agente consultó los dos en el mismo instante, con la misma palabra. Las sugerencias devolvieron 10 productos y la página de búsqueda devolvió 0.

El tema es uno solo para los dos caminos, y ningún parámetro mal puesto en nuestro código hace que dos índices de la plataforma se contradigan en el mismo segundo. Habíamos actuado como el electricista que abre la pared con mucho cuidado porque las luces titilan, cuando la baja de tensión es de toda la calle.

Sí

No

No

Sí

Búsqueda válida da 0

Misma URL, 5 corridas

¿El conteo cambia?

Comparar sugerencias y página

Revisar código del tema

¿Coinciden los índices?

Esperar al índice

La regla nueva: medir cinco veces y comparar los dos índices antes de tocar el tema.

Revertir a los 18 minutos

El agente revirtió sus cuatro archivos 18 minutos después de desplegarlos. Los checksums, la huella de cada archivo, confirmaron que el tema en vivo volvió a coincidir con el repositorio. En producción no quedó ningún arreglo equivocado a medio camino.

Horas después, sin un solo cambio de código, la misma consulta de marca devolvió 82 resultados. El índice se recuperó solo y nadie nos avisó.

No podemos mirar ese índice desde afuera ni saber cuánto dura una racha así. Nos queda medirlo y dejarlo documentado mientras se acomoda: no es elegante, pero no cuesta nada.

El documento del sistema de búsqueda ahora abre con una regla: si una búsqueda válida devuelve 0, medimos cinco veces y comparamos los dos índices antes de tocar una línea de código. Revertir pasó a ser tan normal como desplegar. Y cuando el buscador me dice que una marca no existe, le creo menos que a la vitrina.

postmortem search data-quality metrics rollback