Registro de precisión · para reproducir
A1
Lo que hace falta para repetir las 1 entrada de A1 en el registro: el código, la segunda implementación, el cotejo y los datos de validación agregados, cada uno con su huella md5. Son copias de lectura: las rutas del servidor van sustituidas por marcas, y lo que no se puede publicar se dice abajo, con su porqué.
Código de la medida
10
ficheros
Segunda implementación
2
ficheros
Cotejo
2
ficheros
Datos de validación
7
ficheros
Cómo se rehacee1_base (con reglas_v2) arma la base de contratos → e4_referencias calcula las referencias de surtidor mensuales y provinciales → e3_muestra sortea las 200 licitaciones que se leen → lectura con los dos prompts y combinar.py (discrepancias, juez, combinar) → correr_calculo.sh lanza e2_hechos (primera) y f2_impl2 (segunda) → h4_cotejo saca los 30 del cotejo manual.
Código de la medida
10 ficheros| Fichero | Qué hace | md5 | Líneas |
|---|---|---|---|
| scripts/reglas_v2.py | Reglas que leen cantidad y producto del objeto del contrato (versión 2, la sellada) | 5cc4d9e6480ccc8a |
97 |
| scripts/e1_base.py | Arma la base de contratos de carburantes y electricidad, sin copias y con las reglas v2 aplicadas | a42128991cde92e7 |
57 |
| scripts/e4_referencias.py | Calcula la referencia de surtidor sin IVA por producto y mes y el factor provincial por trimestre | bcfe8c3a81aaaf1f |
43 |
| scripts/comun_a1.py | Funciones comunes: lectura de las referencias, provincias y cociente precio pagado / referencia1 ruta del servidor sustituida | 3bd05c4812d6f4f0 |
43 |
| scripts/e3_muestra.py | Sortea con semilla fija y por estratos las 160 + 40 licitaciones cuyos pliegos se leen | 45ccd3010b6a52f8 |
44 |
| lectura/PROMPT_LECTOR_A1_v1.md | Instrucciones selladas del lector: qué datos literales extraer de cada lote del pliego | 95abc5a7f1fa47da |
63 |
| lectura/PROMPT_JUEZ_A1_v1.md | Instrucciones selladas del juez que decide entre dos lecturas que no coinciden | 8de41d39021f7613 |
24 |
| lectura/combinar.py | Filtra citas inexistentes, separa concordancias y discrepancias y combina la lectura final1 ruta del servidor sustituida | 2bae410ed88244bc |
147 |
| scripts/e2_hechos.py | Primera implementación: cociente por contrato, unidades órgano × producto, pruebas con Holm y validaciones | 6a3b5dbdbbc8852e |
178 |
| scripts/correr_calculo.sh | Lanzador del cálculo sellado: primera y segunda implementación, sin red4 rutas del servidor sustituidas | 0f6f4abffa1c148a |
7 |
Segunda implementación
2 ficheros| Fichero | Qué hace | md5 | Líneas |
|---|---|---|---|
| scripts/f2_impl2.py | Segunda implementación con pyarrow y Python, sin DuckDB, que reescribe el cálculo aparte | 37b7ae12a17e05db |
92 |
| salidas/34_impl2.json | Comparación de las dos implementaciones: 0 de 26.577 contratos y 0 de 186 unidades distintos | 0e664036f3e02423 |
17 |
Cotejo
2 ficheros| Fichero | Qué hace | md5 | Líneas |
|---|---|---|---|
| scripts/h4_cotejo.py | Ordena con clave fija y saca los 30 contratos del cotejo manual (15 leídos y 15 por regla) | 43a7a1daba3b08e4 |
26 |
| salidas/35_cotejo_manual.csv | Resultado del cotejo manual sin identificadores: 28 de 30 correctos, con la nota de cada fallo | 02c08a64b33742b8 |
31 |
Datos de validación
7 ficheros| Fichero | Qué hace | md5 | Líneas |
|---|---|---|---|
| salidas/32_validaciones.json | Validaciones selladas: mediana del mercado, controles, estabilidad, cárteles, fiscalización y cobertura | b0796372934bfd5a |
67 |
| salidas/30_razones_producto.csv | Distribución del cociente por producto y vía (n, mediana, percentiles y % dentro de ±15 %) | d6525418be71691c |
31 |
| salidas/33_mensual.csv | Mediana y cuartiles del cociente por mes y producto | 9a932bbba13d8854 |
140 |
| salidas/15_ref_mensual.csv | Referencia nacional de surtidor sin IVA por mes y producto (Boletín Petrolero) | 7606d3bff805c6db |
193 |
| salidas/15_factor_trimestral.csv | Factor provincial por trimestre y producto (geoportal de carburantes) | e2909c23dec017b7 |
1.537 |
| salidas/03_wob_es_semanal.csv | Serie semanal del Boletín Petrolero para España, base de la referencia nacional | eaa47e31cfeb1eea |
1.089 |
| salidas/20_lectura_metricas.json | Métricas de la lectura: acuerdo entre lectores, citas inexistentes y decisiones del juez | 99de3e98e0f73501 |
24 |
Pre-registros
sellados antes de medir| Texto | Huella del sello (md5) | Sellado |
|---|---|---|
| DEFINICIONES_PREVIAS.mdtal cual: su md5 es el del sello | 2456b5678d629bbd |
22/10/2026, 16:26:01 CEST |
Lo que no se publica
y por qué- Base fila a fila, muestras, lectura final por contrato y muestra del cotejo con fragmentos de pliego (priv/): carpeta privada: filas de contratos con su id y textos de documentos
- Semilla secreta de los identificadores opacos de caso (priv/semilla_secreta.txt) y el guion que la usa (lectura/preparar.py): es un secreto HMAC; el guion solo prepara los recortes de texto y no calcula cifras de la entrada
- Textos de pliegos, lotes enviados a los lectores y al juez y sus respuestas (lectura/textos, lectura/lotes*.json, lectura/lecturas, lectura/juez*): textos de documentos de terceros y respuestas de los modelos por documento
- Hechos por órgano con su clave (salidas/31_hechos_organo.csv): el informe lo marca como interno y la clave lleva el NIF de cada órgano, incluidos los de sociedades (letra A)
- Etiquetas copiadas de otras piezas (et/lotes_cartel_v2.csv, et/banco_entidades.parquet): fila a fila por lote de cártel y por entidad-año; se publican en su pieza de origen, no aquí
- Descargas de referencias y licencias (ref/: geoportal diario, hoja del Boletín Petrolero, páginas de avisos legales): descargas de páginas y ficheros de terceros; lo que se usa sale agregado en salidas/15_* y 03_wob
- banco_e2.py (banco sintético con órganos plantados y caso de cero válidos para probar las dos implementaciones): lleva números con forma de DNI o NIE
- publicable_organo_anio.csv (contratos válidos y extremos por órgano, año y producto, con el hecho de 2022-2025): nombra empresas (forma jurídica)