Si un sitio te dice que un paso de cordillera está abierto y no lo está, perdés el día de viaje o algo peor. Por eso la regla central de nuestro tablero de pasos entre Argentina y Chile es una: ante la duda, el paso figura "Sin confirmar", nunca "Abierto". Este artículo cuenta cómo leemos las fuentes oficiales, cómo guardamos la hora de cada dato y qué hacemos cuando dos organismos dicen cosas distintas.

Qué fuentes leemos

Del lado argentino, el Ministerio de Seguridad de la Nación publica en argentina.gob.ar tres cosas que usamos:

  1. Un listado JSON (/seguridad/pasosinternacionales/listado) con 155 pasos, 75 de ellos con Chile. Trae el estado (estado_prioridad), el horario de Seguridad, el horario de Cancillería y un campo fecha_hora_consulta.
  2. La ficha HTML de cada paso, con el bloque "Información provista por": qué organismo informa el estado (en la mayoría, Gendarmería Nacional) y cuándo lo actualizó por última vez, más la hora y el aviso de Vialidad Nacional.
  3. Un detalle JSON por paso (detalle_consolidado) con demoras, horario de atención y el parte de Vialidad del tramo que llega al límite.

El clima es el de Locationforecast 2.0 de MET Norway, en el punto y a la altura del paso. El parte de Vialidad de Chile (MOP) no lo leemos: no declara licencia de reutilización, así que el colector queda apagado (COLLECT_CL_MOP = "false") hasta tener permiso.

Cada cuánto

Un Cron Trigger de Cloudflare Workers corre cada 15 minutos (*/15 * * * *) y en cada corrida:

  • se lee el listado completo;
  • se leen fichas y detalles por tandas, primero las de los pasos con página propia y después las demás, la menos reciente primero;
  • se piden como mucho 5 pronósticos, y solo los que ya vencieron según el Expires de MET Norway, con If-Modified-Since.

Cada corrida hace como mucho 36 pedidos (FETCH_BUDGET), porque el plan gratuito de Workers corta en 50 subpedidos. Una ficha que falla pasa al final de la cola y no frena a las demás.

Tres horas distintas para un mismo dato

El error más fácil es mostrar una sola hora. Guardamos varias, todas en ISO 8601 UTC:

  • consulted_at: el fecha_hora_consulta del listado. Es la hora en que el sitio oficial consultó su propia base, no la hora en que cambió el estado.
  • fetched_at: cuándo leímos nosotros el listado.
  • state_provider_at: cuándo el organismo cargó el estado, según la ficha. Esta es la que acredita el dato.
  • changed_at: la primera lectura en la que vimos el estado actual.

Cada actualización del organismo queda en ar_provider_updates y cada cambio de estado u horario en ar_changes. Con eso armamos el historial de cada paso, que guardamos desde el 23 de octubre de 2026. La hora de un cambio es la de la lectura en que apareció, con un margen de unos 15 minutos. Si pasó más de una hora sin lecturas, ese tramo figura "sin dato" en vez de rellenarse con el último estado.

Las horas de la fuente vienen en hora argentina sin zona ("25/10/2026 16:08:44"). Argentina usa UTC-3 todo el año, así que la conversión es fija. Chile continental cambia de horario, así que la diferencia entre los dos países se calcula para cada fecha. Una hora del organismo que queda más de 15 minutos en el futuro no se toma.

Cuándo un "Abierto" pasa a "Sin confirmar"

La función que decide el estado parte del dato oficial y solo puede bajarlo. Un "Abierto" pasa a "Sin confirmar" si:

  • no tuvimos una lectura del listado en las últimas 2 horas;
  • el organismo no lo actualizó en más de 24 horas, o la ficha no trae hora;
  • Cancillería lo publica como cerrado;
  • Vialidad Nacional informa corte total en el tramo que llega al límite;
  • el horario oficial lo da cerrado en esta época del año, o ya terminó o todavía no empezó el horario de hoy.

Un "Cerrado" viejo, en cambio, queda como "Cerrado" con el aviso de desde cuándo no hay cambios. La razón está en los datos: el 23 de octubre, 40 de los 75 pasos con Chile tenían la última actualización de hace más de 24 horas, varios desde julio. Muchos cierran por temporada y nadie vuelve a tocar el dato. Un cerrado desactualizado no manda a nadie a la montaña; un abierto desactualizado sí.

La versión simplificada de la regla, sin los detalles de horarios:

const HORA = 3600e3; function estadoVisible(dato, ahora = Date.now()) { // dato: { estado, leidoEn, organismoEn, cancilleriaCerrado, rutaCortada } if (dato.estado !== 'ABIERTO') { return dato.estado === 'CERRADO' ? 'Cerrado' : 'Sin confirmar'; } const dudas = [ !dato.leidoEn || ahora - dato.leidoEn >= 2 * HORA, // lectura vieja !dato.organismoEn || ahora - dato.organismoEn >= 24 * HORA, // organismo sin actualizar dato.cancilleriaCerrado, // otra fuente oficial lo da cerrado dato.rutaCortada, // Vialidad: corte total al límite ]; return dudas.some(Boolean) ? 'Sin confirmar' : 'Abierto'; } 

Junto a un "Sin confirmar" mostramos siempre el último dato oficial, con sus palabras y su fecha, para comprobarlo en la fuente.

Cuando dos organismos no coinciden

No elegimos por nadie. Si Cancillería dice "Cerrado por temporada invernal" o "Habilitado solo para transporte de cargas", la nota va al lado, textual, y un "Abierto" de Gendarmería con Cancillería en contra queda "Sin confirmar".

La única excepción salió de un caso real. El 27 de octubre de 2026, en Pino Hachado, Gendarmería no actualizaba el estado desde el 5 de octubre, pero esa mañana Vialidad Nacional había informado habilitada la RN 242. El sitio oficial lo mostraba abierto y nuestra regla lo bajaba a "Sin confirmar". Desde entonces, si el organismo no actualizó un "Abierto" pero Vialidad informó habilitado el tramo que llega al límite en las últimas 24 horas, el paso sigue "Abierto", con la fecha vieja del organismo a la vista.

Para eso no sirve el campo estado_vialidad del listado: el 27 de octubre decía "HABILITADA" en todos los pasos menos uno, el túnel de Cristo Redentor, en corte total por nevadas. Usamos el parte del detalle, leído en las últimas 2 horas y solo si el tramo es el que llega al límite.

El resultado, un viernes de octubre

El 30 de octubre a las 21:00 (hora de Argentina), el tablero mostraba 34 pasos para cruzar en vehículo: 1 abierto, 14 cerrados y 19 sin confirmar. Diecinueve "Sin confirmar" parece mucho, pero es lo que dicen las fuentes cuando se leen con fecha, y preferimos ese número a un tablero verde que nadie puede respaldar.

Las reglas completas y la tabla de fuentes con sus licencias están en la metodología de PasosHoy.

Fuente de los datos de los pasos: Ministerio de Seguridad de la Nación, con información de Gendarmería Nacional, Vialidad Nacional y otros organismos (argentina.gob.ar). Los contenidos de argentina.gob.ar tienen licencia Creative Commons Atribución 4.0 Internacional (CC BY 4.0). Pronóstico: MET Norway (CC BY 4.0).