{
  "_comentario": [
    "Ediciones de la capa Silver. Conviven fechadas: la anterior NO se",
    "sobrescribe, porque miden corpus distintos y la comparación entre",
    "ambas es en sí misma un resultado.",
    "«vigente» es la edición más reciente publicada.",
    "«en_uso_por_la_interfaz» dice qué edición consulta cada pestaña de",
    "estadisticas.html. Es un mapa y no un solo valor porque la página",
    "lee las dos: las pestañas heredadas siguen sobre la edición de",
    "agosto y las cuatro nuevas sobre el corte vigente. Mezclar dos",
    "ediciones sin decirlo sería exactamente la contradicción que este",
    "archivo existe para impedir."
  ],
  "version": 2,
  "actualizado": "2026-09-23",
  "vigente": "2026-08-30",
  "en_uso_por_la_interfaz": {
    "tab-documental": "2026-08-24",
    "tab-rivas": "2026-08-24",
    "tab-independiente": "2026-08-24",
    "tab-votaciones": "2026-08-24",
    "tab-trazabilidad": "2026-08-30",
    "tab-quorum": "2026-08-30",
    "tab-procedencia": "2026-08-30",
    "tab-fair": "2026-08-30",
    "tab-busqueda": "2026-08-30"
  },
  "ediciones": {
    "2026-08-24": {
      "base": "data/jem-silver/",
      "origen": "Pipeline anterior del repositorio jem-observatorio.",
      "tablas": {
        "causa": {
          "archivo": "causa.parquet",
          "filas": 1669
        },
        "document": {
          "archivo": "document.parquet",
          "filas": 3964
        },
        "link": {
          "archivo": "link.parquet",
          "filas": 1039
        },
        "party": {
          "archivo": "party.parquet",
          "filas": 6347
        },
        "party_conflict": {
          "archivo": "party_conflict.parquet",
          "filas": 554
        }
      },
      "limitaciones": [
        "No incluye la colección «orden del día» (358 archivos).",
        "Sin anclaje por página: la evidencia no es citable a página.",
        "hf_oid es un OID de blob de Git (SHA-1), no el SHA-256 del contenido."
      ],
      "nota": "Es la edición que lee hoy assets/js/duckdb-stats.js."
    },
    "2026-08-30": {
      "base": "data/jem-silver/2026-08-30/",
      "origen": "Repositorio jem-full, corte corte-2026-08-30.",
      "manifest_sha256": "5ec45cc3fd023ebedf7f464e7060a1d70b03aef0057c48dcb6086556cbc71626",
      "generado": "2026-09-23",
      "generador": "exportar_parquet/1.1",
      "tablas": {
        "documento": {
          "archivo": "documento.parquet",
          "filas": 4627,
          "columnas": [
            "blob_id",
            "sha256",
            "extension",
            "size_bytes",
            "mime_type",
            "ruta",
            "coleccion",
            "anio",
            "motor",
            "motor_version",
            "paginas",
            "tiene_paginas",
            "ruta_hf",
            "url_publica",
            "accesible"
          ],
          "bytes": 514564,
          "sha256": "e6e2cb90b26b09a6dc7bb7811c7ed237c3d72a5b526417c438575218240481bf",
          "descripcion": "Un documento por contenido único (SHA-256), con su colección, su motor de extracción y la ruta pública donde puede abrirse, si la hay."
        },
        "fragmento": {
          "archivo": "fragmento.parquet",
          "filas": 18141,
          "columnas": [
            "fragmento_id",
            "blob_id",
            "sha256",
            "tipo_ancla",
            "pagina",
            "char_inicio",
            "char_fin",
            "anclado",
            "caracteres",
            "confianza",
            "motor",
            "texto"
          ],
          "bytes": 10596023,
          "sha256": "4ebdf16b1766f224bd717a2061ac538629796d49340aea758b5c8f81d19aa743",
          "descripcion": "Unidad citable. tipo_ancla=PAGINA en PDF; DOCUMENTO donde el formato no tiene páginas (Word, JSON). La página no falta: no existe."
        },
        "procedencia": {
          "archivo": "procedencia.parquet",
          "filas": 4893,
          "columnas": [
            "blob_id",
            "fuente",
            "url",
            "url_pagina",
            "persistencia",
            "nombre_origen",
            "recuperado",
            "nivel",
            "metodo",
            "sha_coincide",
            "confianza"
          ],
          "bytes": 130234,
          "sha256": "87eac16f14e07d8dacc960e2f757737f073abf6f3ec78536b47a878b79c41eff",
          "descripcion": "De dónde vino cada documento y si su URL vuelve a resolver."
        },
        "documento_logico": {
          "archivo": "documento_logico.parquet",
          "filas": 4593,
          "columnas": [
            "document_id",
            "tipo",
            "numero",
            "anio",
            "fecha",
            "titulo",
            "confianza",
            "revision"
          ],
          "bytes": 118394,
          "sha256": "c19275d57aedb2a224c2265d9edd9f1a5a51fe41757e4caa00e91b140214e2ba",
          "descripcion": "El documento como pieza jurídica, por encima del archivo físico."
        },
        "causa": {
          "archivo": "causa.parquet",
          "filas": 2908,
          "columnas": [
            "causa_id",
            "numero",
            "anio",
            "clave",
            "caratula",
            "descripcion",
            "estado",
            "presentada",
            "origen"
          ],
          "bytes": 31591,
          "sha256": "cf66ff4300ed43e31957027fe614a9954fc9384f8497cd65ee8981969f48f4ba",
          "descripcion": "Causa o expediente reconstruido a partir de las referencias del texto."
        },
        "vinculo": {
          "archivo": "vinculo.parquet",
          "filas": 11145,
          "columnas": [
            "causa_id",
            "document_id",
            "tipo",
            "confianza",
            "metodo"
          ],
          "bytes": 43234,
          "sha256": "d8a85d6dc481264ddeb9abf712b41bed1e2ec16ec46265dc1fa8444d4d5fec9a",
          "descripcion": "Vínculo causa-documento. Su precisión NO ha sido medida (Fase 7)."
        },
        "resolucion": {
          "archivo": "resolucion.parquet",
          "filas": 1816,
          "columnas": [
            "resolucion_id",
            "document_id",
            "tipo",
            "numero",
            "anio",
            "fecha",
            "objeto",
            "resultado",
            "verbo",
            "estado_votos",
            "sentido",
            "quorum",
            "n_votos",
            "mayoria",
            "disidentes",
            "quorum_observado"
          ],
          "bytes": 24531,
          "sha256": "e40c1e4bba66e86c8241bd6b7420db8231ea01e7464f61f6acd752dddb20ebab",
          "descripcion": "Resolución con su estado de quórum y el sentido de la decisión."
        },
        "voto": {
          "archivo": "voto.parquet",
          "filas": 9956,
          "columnas": [
            "voto_id",
            "resolucion_id",
            "entidad_id",
            "nombre_crudo",
            "sentido",
            "determination",
            "confianza",
            "orden",
            "disidencia",
            "pagina",
            "evidencia"
          ],
          "bytes": 100397,
          "sha256": "40ee71d83861683a3a9689474f5c94e69690e9961affbe78298767570f0b8dbe",
          "descripcion": "Voto individual. SIN VALIDACIÓN HUMANA: no publicable como resultado."
        },
        "entidad": {
          "archivo": "entidad.parquet",
          "filas": 118,
          "columnas": [
            "entidad_id",
            "nombre",
            "clave",
            "tipo",
            "revision",
            "origen",
            "primer_voto",
            "ultimo_voto",
            "resoluciones"
          ],
          "bytes": 6481,
          "sha256": "4111f3bd6306a4d26871aadef3679575dc15a3585f0cc151856f537659682620",
          "descripcion": "Integrante del órgano. Ojo: el OCR fragmenta nombres en varias entidades."
        },
        "alias": {
          "archivo": "alias.parquet",
          "filas": 309,
          "columnas": [
            "alias_id",
            "entidad_id",
            "nombre_original",
            "nombre_normalizado",
            "blob_id"
          ],
          "bytes": 8003,
          "sha256": "d196031013c3d94f650329674f712c750d26bf8cd7a5e2b20159ffd80f4daf0e",
          "descripcion": "Cada forma en que un nombre aparece en el texto."
        },
        "relacion": {
          "archivo": "relacion.parquet",
          "filas": 2296,
          "columnas": [
            "relacion_id",
            "desde",
            "hacia",
            "tipo",
            "metodo",
            "score",
            "determination",
            "dias",
            "evidencia"
          ],
          "bytes": 38931,
          "sha256": "e985a9fa7b37267cc82c58915ce8b8997c9a2e7afc04ee48eb09fb91d6c6d9c1",
          "descripcion": "Relación entre documentos, sobre todo dictamen-resolución."
        },
        "campo": {
          "archivo": "campo.parquet",
          "filas": 25293,
          "columnas": [
            "campo_id",
            "blob_id",
            "document_id",
            "causa_id",
            "campo",
            "valor",
            "pagina",
            "confianza",
            "revision"
          ],
          "bytes": 198078,
          "sha256": "dff5bc7ca8c8fd7de777c107d5293a71b2b558e15315447b2c40d245d1eb65a6",
          "descripcion": "Dato extraído con su evidencia. review_status='AUTO' en el 100 %: nadie lo revisó."
        },
        "evento": {
          "archivo": "evento.parquet",
          "filas": 10662,
          "columnas": [
            "evento_id",
            "causa_id",
            "document_id",
            "fecha",
            "tipo",
            "descripcion",
            "confianza"
          ],
          "bytes": 77052,
          "sha256": "073e180c3726fec55a14d73fd32d92f7b927a30131e99750e431f81a782cd84f",
          "descripcion": "Línea de tiempo de cada causa."
        }
      },
      "limitaciones": [
        "SIN VALIDACIÓN HUMANA: cero campos revisados por una persona. Ninguna cifra sobre votos es publicable como resultado.",
        "La precisión de los vínculos causa-documento no ha sido medida.",
        "El CER del OCR no ha sido medido.",
        "«fragmento» mezcla dos unidades de cita: página en PDF y documento completo donde el formato no pagina. Ver tipo_ancla."
      ],
      "indice": {
        "tipo": "BM25 (Okapi), bolsa de palabras",
        "generado": "2026-09-22",
        "generador": "construir_indice_bm25/1.0",
        "num_docs": 18141,
        "longitud_media": 461.8347,
        "k1": 1.2,
        "b": 0.75,
        "umbral_df": 0.6,
        "terminos_omitidos": 18,
        "tablas": {
          "indice_termino": {
            "archivo": "indice_termino.parquet",
            "filas": 100643,
            "bytes": 837523,
            "sha256": "c3f1df424329deb9e2b3fc55c3cfff44aea356dc0992f8fae9df8cd0b5c4f197",
            "descripcion": "Vocabulario indexado con su frecuencia documental."
          },
          "indice_posting": {
            "archivo": "indice_posting.parquet",
            "filas": 2781227,
            "bytes": 6372527,
            "sha256": "001a38d849dd294efe0653bfa869b568e3e0b1a88ea9693745f5ddcb7b538608",
            "descripcion": "Postings ordenados por termid. Excluye 18 términos presentes en más del 60% de los fragmentos."
          },
          "indice_fragmento": {
            "archivo": "indice_fragmento.parquet",
            "filas": 18141,
            "bytes": 108914,
            "sha256": "7667baf24408012a6cc8a6764488ebb27bfec2b4ffc191eab1ebd9bb66343b87",
            "descripcion": "Longitud de cada fragmento, que BM25 usa para normalizar."
          },
          "indice_forma": {
            "archivo": "indice_forma.parquet",
            "filas": 116418,
            "bytes": 1151277,
            "sha256": "2017efff30a951fc4539aa0ce13d026876443ca0fc6c8dd53de21a1a6960f006",
            "descripcion": "Forma escrita -> término, con su familia morfológica para expandir."
          }
        },
        "limitaciones": [
          "Bolsa de palabras: no resuelve frases exactas ni proximidad.",
          "Una forma que no aparece en el corpus no encuentra nada, aunque su familia morfológica sí esté indexada: el stemmer no viaja al navegador.",
          "El índice ignora las tildes porque el OCR no las reproduce con fiabilidad; la morfología se recupera expandiendo por familia.",
          "Relevancia no evaluada: no hay juicios de pertinencia sobre este corpus."
        ]
      }
    }
  }
}
