La una de la madrugada es una hora peligrosa para las tareas “simples”.

En el checklist de la corporación había una línea que llevaba días esperando: conectar Sentry a olaveruiz.cl para enterarme de los errores de producción antes que los usuarios. Tarea de wizard: pegas un snippet en el config de Astro, pones el DSN, listo. Quince minutos, pensé.

El primer choque fue con mis propias reglas. Pegué el snippet con el DSN a la vista y el sistema me frenó en seco: en esta corporación los secretos no tocan el repositorio, jamás. Todo por variables de entorno. Reconfiguramos el snippet para leer del .env… y ahí cometí el clásico de las 1 AM: pegué las credenciales directamente en el archivo de configuración —el que sí se commitea— en vez del .env. Dos veces. Las dos veces el proceso me detuvo antes de que el token quedara versionado. Esa es la gracia de codificar las reglas en el flujo y no en la memoria: a esa hora mi memoria ya no estaba de turno.

El segundo choque fue un laberinto de nombres. El wizard de Sentry habla de SENTRY_DSN. La integración de Vercel con Sentry —que había instalado minutos antes desde el marketplace— provisiona las mismas credenciales pero con otro prefijo: OBSERVABILITY_SENTRY_*, siete variables. Y mi token de autenticación resultó ser del formato antiguo, que no lleva la organización embebida, así que los source maps no subían: “No org provided”. Detalle a detalle, variable a variable, hasta que el build por fin dijo la frase mágica: Successfully uploaded source maps to Sentry. Victoria. Dos horas para una tarea de quince minutos, pero victoria.

Entonces cerré la sesión con el ritual de siempre: higiene de git antes de dormir. Y git me dijo algo que no esperaba: mi rama principal estaba siete commits atrás.

Entre esos siete commits había uno mergeado esa misma madrugada, desde otro frente de trabajo de la corporación: el Sprint 3 de NIDO, mi producto de Life Coach AI. Título del commit: “Sentry SDK + filtro PII”.

Mis agentes ya habían integrado Sentry. Esa misma noche. En el mismo sitio.

Y aquí viene la parte que duele y enseña a la vez: su versión era mejor que la mía. La mía usaba el formato del wizard, que el propio SDK marca como deprecado. La de ellos usaba el formato moderno, con archivos de configuración separados para cliente y servidor. La mía mandaba los errores tal cual. La de ellos pasaba cada evento por un filtro de privacidad con trece tests, diseñado para que ni una palabra de las conversaciones de la usuaria piloto de NIDO llegue jamás a un dashboard de terceros. La mía subía source maps siempre; la de ellos, solo cuando corresponde.

Tuve dos horas de trabajo duplicado sobre la mesa y una decisión que tomar. El orgullo del fundador dice “mi versión también funciona, y la sufrí”. La ingeniería dice otra cosa. Descarté mi versión casi completa, me quedé con la de los agentes, y aporté lo único que a ellos les faltaba y que yo sí había descubierto en mi travesía nocturna: el puente entre los dos mundos de nombres, para que el código acepte tanto las variables clásicas de Sentry como las que provisiona Vercel. Un pull request quirúrgico en lugar de uno redundante.

Para que esto sea honesto hasta el final: en la maniobra de reconciliación, un git reset --hard mío arrastró cambios que tenía sin commitear, incluyendo reglas de confidencialidad del .gitignore. Se restauraron completos y verificados, pero el susto fue real y quedó documentado en el archivo de lecciones de la corporación, junto con la lección principal de la noche.

¿Y cuál es esa lección? Que en una corporación donde los agentes también hacen merge mientras tú duermes, el cuello de botella ya no es producir — es coordinar. El riesgo nuevo no es que la máquina se detenga; es que dos frentes avancen en paralelo sobre el mismo terreno sin mirarse. La solución es vieja y aburrida, como casi todas las buenas: git pull antes de integrar nada, y leer el log de commits como quien lee el acta de la reunión a la que no fue.

Hoy olaveruiz.cl queda con monitoreo de errores real en producción, con un filtro de privacidad que yo solo no habría escrito esta semana, y con una regla nueva grabada en LEARNINGS.md. La tarea de quince minutos tomó una noche. Pero la corporación amaneció sabiendo algo que ayer no sabía — y yo también.