Datos y cobertura

Cómo se arma un informe reproducible: mismos datos, mismo resultado

Dos corridas sobre el mismo corte deberían coincidir byte a byte. Cuando no coinciden, la causa suele estar en el orden, el formato o el reloj, y no en la fuente.

Por Marco Ferreiro ·

Dos pilas idénticas de hojas en blanco alineadas sobre un escritorio de madera clara junto a una ventana, con una carpeta de cartón cerrada al costado.

Un informe de multas no es una foto: es el resultado de aplicar reglas a un conjunto de respuestas. Cuando dos corridas parten de las mismas respuestas y producen archivos distintos, la diferencia no la introdujo el organismo. La introdujimos nosotros.

Un informe reproducible es el que cierra esa brecha. La promesa tiene un alcance chico y por eso se puede cumplir: no dice que la deuda de mañana vaya a ser la de hoy, ni que un portal publique siempre lo mismo. Dice que, fijado el corte, el armado no agrega variación propia.

La distinción aparece apenas alguien compara dos informes de la misma patente con días de diferencia y quiere saber qué cambió.

El corte es la mitad del informe

Un corte declara qué se consultó, con qué catálogo de fuentes, hasta qué momento y qué contestó cada fuente. Sin esas cuatro piezas, “los mismos datos” es una frase sin referente: cada lector la completa con lo que supone.

La cuarta es la que más se olvida. Una fuente que no respondió no equivale a una fuente sin deuda, y esa diferencia va en la fila, no en una aclaración al pie; el tema tiene nota propia.

El catálogo también lleva versión: una URL puede seguir igual mientras la jurisdicción incorporó otra base, y un informe viejo sólo se interpreta con la cobertura vigente en su fecha.

Dónde se cuela el azar

Fijado el corte, el resto del trabajo es nuestro. Ahí entran variaciones que no vienen de ninguna fuente:

Ninguna de las cuatro cambia los datos; todas cambian el archivo. Por eso probamos el armado con entradas congeladas: misma entrada, misma salida, o hay un defecto que corregir.

Forma canónica antes de la huella

Comparar dos informes por su huella criptográfica sólo sirve si antes se fijó cómo se escriben. La especificación de JSON define un objeto como una colección de pares sin orden, y advierte que las bibliotecas difieren en si exponen ese orden a quien las usa. Dos documentos equivalentes como datos pueden entonces diferir como texto y, por lo tanto, como huella.

Una operación criptográfica repetible necesita una forma invariante, y hay dos caminos: conservar los bytes exactos que se archivaron, o canonicalizar. Un esquema de canonicalización determinista ordena las claves y fija cómo se escriben los valores, para que datos iguales produzcan siempre los mismos bytes. Recién sobre una de esas dos formas tiene sentido publicar una huella.

Conviene separar qué prueba cada cosa. Una huella detecta que dos corridas escribieron cosas distintas; no dice que la consulta haya sido completa ni que la fuente estuviera al día. Es un detector de diferencias, no un certificado de calidad.

Qué identifica una fila y qué la ordena

Una fila no se identifica por su posición. El modelo único de acta enumera la información uniforme que debe contener —lugar, fecha y hora, circunstancias, disposición legal presuntamente infringida y funcionario actuante, entre otros datos— y en esa enumeración no hay un identificador único. Por eso la clave con la que reencontramos un acta en la corrida siguiente es compuesta: declaramos qué campos la forman y cómo se normaliza cada uno.

El orden, en cambio, es una decisión declarada y con desempate. Ordenar por fecha alcanza hasta que dos actas comparten fecha; desde ahí hace falta un segundo criterio estable, y un tercero si el segundo también empata.

Las fechas se escriben en el formato de fecha y hora para Internet, donde toda hora expresada declara su desplazamiento respecto de UTC. Una marca sin ese desplazamiento obliga a adivinar en qué zona se produjo el corte, y esa adivinanza no es reproducible.

Cuando dos corridas no coinciden

La diferencia se lee en orden. Si el corte es distinto, el informe cambió porque cambió su insumo: eso es una reejecución, y qué parte se puede reproducir meses después depende de lo que se haya archivado. Si el corte es el mismo y el contenido difiere, el defecto está en el armado. Si el corte es el mismo y sólo difieren los bytes, falta canonicalizar.

Ese triage evita dos errores caros: tratar un cambio legítimo de la fuente como falla propia, y tratar una falla propia como “así lo devolvió el portal”. Cuando cambia el método, el cambio se versiona y se explica, en lugar de reescribir en silencio el informe anterior.

Antes de entregar un informe, verificá que traiga corte, catálogo con versión, estado por fuente, fechas con huso y huella de la forma canónica. Si falta alguna de esas piezas, todavía es una foto: sirve para mirar, no para volver a producirla.

Metodología

Alcance
Cómo se construye un informe de infracciones para que dos corridas sobre el mismo corte devuelvan el mismo resultado. No cubre la exactitud de lo que publica cada fuente ni el valor probatorio del documento.
Unidad de análisis
Una corrida del informe: un conjunto de consultas, un catálogo de fuentes y un corte temporal identificados juntos.
Cobertura
Aplica al armado propio y a los formatos de intercambio y de fecha citados. No describe garantías de disponibilidad ni de actualización de los portales oficiales.

Limitaciones

Fuentes

Preguntas frecuentes

¿Un informe reproducible garantiza que la deuda no cambie?

No. Garantiza que, con el mismo corte, el armado devuelve el mismo resultado. Lo que publique cada organismo puede cambiar entre una consulta y otra, y esa variación pertenece a la fuente, no al informe.

¿Por qué dos informes con los mismos datos pueden tener huellas distintas?

Porque la huella se calcula sobre bytes. Dos archivos equivalentes como datos pueden escribirse distinto —otro orden de claves, otro formato de número— y arrojar huellas diferentes. Por eso se serializa en forma canónica antes de comparar.

¿Qué reviso si repito el informe y aparece una multa que antes no estaba?

Compará primero los cortes. Si el catálogo, el alcance o el momento son distintos, es una corrida nueva sobre otro insumo. Si el corte es idéntico y el contenido cambió, el problema está en el armado y hay que reproducirlo con entradas congeladas.

Notas relacionadas