Batería del engine — resultados y hallazgos
Fecha: 2026-09-22. Proyecto: nef-silo (~/nef/nef-silo).
Batería: tests/bateria.py (uso en tests/README.md).
Corrida de referencia: data/bateria/scorecard-20260922T184103Z.md (n=12, 7 días).
Métrica clave: lograr datos relevantes. Hoy, sin profundidad: 20% (grafo, IDF) / 8.9% (perfil curado). Con texto completo: 90% / 70% en la muestra. El cuello no es el ranking (top-20 = 100%) sino la señal: falta el texto.
Resultados
| probe | valor | veredicto |
|---|---|---|
| t0 contenido RSS | cobertura 65% · 5,626 ch | ok |
| t1 trafilatura | éxito 83.3% · 4,180 ch · 1.4 s | ok |
| t2 paywall local | 128 docs · 8,079 ch · 123 vistos | ok |
| t3 lift profundidad | titular 50% → texto 90% · perfil 0% → 70% | ok |
| perspectivas | items calificados 2.9% · cred 9 · bucket mayor 74.4% | bajo |
| relevancia | grafo 20% · perfil 8.9% · top20 100% | crítico |
| sabores | flash 57 fuentes · coverage 55 | ok |
| unfetch | solape 100% · solo surtido 0 (en la ventana del engine) | ok |
Hallazgos
- La profundidad es el multiplicador. t3: extraer texto sube el match del grafo +40 pt y el del perfil +70 pt. T0 (contenido en el feed) cubre 65% de las entradas sin pedir nada; T1 (trafilatura en el server) 83% de éxito; T2 ya existe local. El “archivo total” por tiers queda justificado por datos.
- El ranking ya sirve; la señal no. Precisión top-20 = 100% con términos específicos (IDF 0.5%). Sin texto, solo 1 de cada 5 items toca el grafo.
- Perspectivas no medibles aún. El índice cubre medios independientes MX/EEUU (26) + 65 canales de YouTube; faltan los grandes que dominan el volumen (NYT, WaPo, Al Jazeera, TechCrunch, ITHome, 36kr, HN, Techmeme…). Por eso solo 2.9% de items tienen rating. Acción F1: extender el índice y verificar MBFC.
- “Un fetch” es viable hoy. En la ventana de vida del engine, el solape con
surtido/reporte/feed-todo.jsones 100% (0 items solo-surtido). El 51% inicial era artefacto de comparar contra historia previa al engine. - Sabores viables. 57 fuentes caen en
flash(X/TG + RSS ≥25/día) y 55 encoverage; el scheduler multi-cadencia tiene masa crítica. - Bugs encontrados y corregidos:
duplicadosinflado: toda URL ya conocida re-vista se registraba como duplicado (3,243 de 4,416). Fix encapturar: seturls_db+ contadorrepetidos(visible enestado.json)._estado_fuentehardcodeaba columnas y descartaba las nuevas (mejora 7).- Batería: IDF sin filtrar (umbral 2%→0.5%),
vistos.jsoncon forma{"urls":[...]}, unfetch sin ventana temporal, tasa de t2 mal calculada.
Decisiones que habilita
- F1 empieza por lo barato y de mayor palanca: T0 (guardar
content:encoded/summaryal insertar) + importar ratings al registro. - F2.5 archivo total por tiers con presupuesto: T0 universal, T1 server, T2/T3 local-only (privacidad de prensa intacta).
- KPI de balance de perspectivas queda condicionado a extender el índice de ratings (no se puede medir lo que no está calificado).
Pendientes
- Extender
indice-credibilidad.jsoncon los ~25 medios de mayor volumen sin rating (verificar MBFC/NewsGuard; regla: nunca dar un rating por bueno). - Correr la batería desde el Linode (T0/T1 con la red del server) y con n≥25.
- Afinar IDF con más corpus (hoy descarta genéricos como open/agent/world/data).
- Guardar un mini gold set de 50 items para medir precisión de relevancia con criterio humano, no solo match de términos.