Validación y auditoría

La validación de camara-senadores-mex es una lectura read-only de senado.db. No corrige datos ni reescribe tablas; produce un reporte de consistencia que separa fallas estructurales de advertencias aceptadas por límites históricos de la fuente.

Modo de lectura

El validador debe abrir SQLite con URI read-only:

file:senado.db?mode=ro

El validador usa sqlite3.connect(uri, uri=True) y define row_factory = sqlite3.Row para inspección por nombre de columna. El uso de mode=ro es parte del contrato: una auditoría no debe modificar el snapshot ni debe describirse como una conexión que reactive PRAGMAs de escritura o concurrencia.

Estados

EstadoSignificadoAcción esperada
PASSLa condición cumple el contrato.Aceptar.
WARNAnomalía conocida o históricamente tolerada.Documentar y monitorear.
FAILRuptura del contrato estructural.Corregir extracción, persistencia o fuente de datos.

Los warnings aceptados no bloquean publicación documental si están explicados como límites de fuente o cobertura.

Snapshot auditado

Métricas de referencia del snapshot documentado:

MétricaValor
Votaciones4,993
Votos nominales senatoriales454,094
Perfiles persistidos700
IDs senatoriales distintos en votos737
IDs con votos pero sin perfil37
Votos ligados a IDs sin perfil29,879
Votaciones sin votos7
Votos vacíos14
Partidos vacíos88

Las 7 votaciones sin votos son: 408, 621, 801, 848, 3697, 3698, 3848.

Distribución por legislatura

LegislaturaVotos nominales
6061,924
6165,869
6282,856
6373,790
6464,099
6576,953
6628,603

Lectura de anomalías

  • IDs sin perfil: warning aceptado si los votos conservan senador_id institucional y el perfil no está disponible o no es parseable.
  • Votaciones sin votos: warning aceptado para los IDs listados; no deben inflarse con filas sintéticas.
  • Votos o partidos vacíos: warning aceptado en conteos bajos; se preservan como evidencia de extracción.

P0 históricos cerrados

Dos riesgos históricos no deben tratarse como P0 activos:

  • Parser HTML basado en counts del sidebar: obsoleto y resuelto por la arquitectura AJAX vigente.
  • AJAX que no suma counts agregados: fuera de contrato/obsoleto como P0 activo; el contrato actual audita votos nominales persistidos y métricas derivadas.