system-one-bench v0.5.0
system-one-bench: el árbol bronquial como árbol de decisión
Neumología y neumología intervencionista · triaje de mensajes y lectura de papers · 26–27 sep 2026

system-one-bench

Jev (TypeSafe) frente a cinco familias de modelos abiertos que prometen lo mismo: decisiones tipadas con probabilidades, sin generar texto. Mismos casos, mismo ground truth y mismo scorer para todos.

Aviso sobre el ground truthLos casos son inventados y el ground truth lo redactaron modelos de lenguaje, revisados por personas en distinto grado según el set. Tiene ruido medido y los sets son pequeños: lee las cifras como comparación entre modelos en este banco, no como un estándar clínico. Detalle por set.
Versión v0.5.0 Jev jev-1.13 (sin cambios a 27-sep) 152 casos · 192 textos con traducciones 18 configuraciones comparadas GT v3
Qué se concluye

El circuito recomendado

La mejor configuración medida no es un modelo, sino dos pasadas: una decisión y una auditoría de esa decisión por Jev, más una alerta para que una persona revise los intentos de manipulación.

MensajePaciente, médico, aseguradora… o un atacante.
1ª pasadaJev, o Decider-4B en local (misma calidad final, gratis y ~0.2 s).
Revisor JevAudita cada respuesta; si la marca como incorrecta, la sustituye (regla audit).
RoutingDepartamento, urgencia, clínico, hostil, hoy.
Alerta humanaSi el revisor ve manipulación ≥ 0.5. No cambia el routing.

Coste aproximado: $0.00005 la 1ª pasada de Jev y $0.00007 la revisión, por mensaje.

Jev sigue siendo el mejor decisor incumbente

Como decisor de una sola pasada no lo supera ningún modelo abierto, salvo en una pregunta: AnyJev-8B acierta mejor qué papers merecen lectura completa (9 casos frente a 0, p < 0.01), algo que la revisión de Jev también corrige. OpenRouter y la API directa de TypeSafe sirven el mismo modelo.

Triaje 88.6/90.0 · papers 67.5 · adv3 17/20 dept.

La 2ª pasada es lo que más mejora confirmado

Revisar con Jev mejora en todos los sets, y se confirmó en casos nuevos. La calidad la pone el revisor: Decider-4B + revisor Jev iguala a Jev + revisor Jev.

Jev→Jev: triaje 91.4/93.6 · papers 73.8 · adv3 18/20.

Ningún revisor abierto da la talla descartado

El mejor, Decider-35B NVFP4, recupera solo el 34–45 % de la ganancia de Jev, por debajo del 50 % fijado de antemano. Decider revisándose a sí mismo no aporta.

Hoy no hay circuito 100 % local que cumpla.

Decider-4B empata en triaje, pierde en adversarial matiz

Acierta los mismos departamentos que Jev en triaje. En mensajes manipulados se queda atrás: 12 frente a 17 de 20 en adv3 (p = 0.06).

Decider-35B: mejor para ordenar papers (ρ 0.90). AnyJev-32B: mejor abierto en adv3, pero lento.

La alerta de manipulación funciona; las reglas fijas no validada

El revisor Jev marca 25 de 30 mensajes manipulados con 1 falso positivo de 30. Las reglas regex no detectaron ningún ataque nuevo y habrían mandado una fiebre tras la EBUS a administración.

adv3 + adv4 + adv5, casos redactados después de escribir el prompt.

GLiNER, Laya y Julia: fuera descartado

En triaje ES o en adversarial quedan en o por debajo de responder siempre la opción más frecuente. Julia es extremadamente sensible a la redacción de las preguntas.

Sin fine-tuning, no sirven para este dominio.

Explorar

Marcador por set

Cada barra es una configuración; el bigote es el intervalo de confianza del 95 % y la línea vertical marca lo que sacaría quien respondiese siempre la opción más frecuente. Las barras rayadas son configuraciones con revisor (dos pasadas).

Métrica
Experimento

¿Quién sirve como revisor?

Cada fila une la 1ª pasada (círculo hueco) con el resultado tras la revisión (círculo lleno). El trazo vertical en las filas de Decider-4B marca el listón pre-registrado: recuperar la mitad de lo que gana Decider-4B con Jev como revisor.

1ª pasada Tras el revisor Listón: 50 % de la ganancia con revisor Jev

Resultado: solo Jev como revisor supera el listón. Decider-35B NVFP4 mejora sin empeorar nada, pero se queda en el 34–45 % de la ganancia. AnyJev-32B mejora en adversarial y empeora en triaje; AnyJev-8B y Decider-4B apenas aportan.

Experimento

Alerta de manipulación

Cada cuadro es un mensaje de adversarial-3, 4 y 5 (30 manipulados y 30 honestos, redactados después de fijar el prompt). La alerta salta si el revisor responde manipulation ≥ 0.5. Criterio fijado antes de adv5: al menos 7 de 10 detectados y como mucho 1 falso positivo.

Manipulado, alertado Manipulado, se escapa Honesto, sin alerta Honesto, alerta (falso positivo)
Reglas fijas por regex (descartadas). Escritas para atrapar tres timos concretos (pago, datos de terceros, marketing). En 20 casos nuevos detectaron 0 de 10 ataques y saltaron en 3 de 10 honestos, uno de ellos un paciente con 39 °C tras la EBUS que decía "pagué por transferencia".

Aunque la alerta salte, el revisor a veces mantiene el departamento equivocado (dos phishing de adv5 acabaron en broncoscopia). Por eso la alerta va a una persona en vez de cambiar el routing automáticamente.

Qué se hizo y cómo

Las pruebas, en orden

Diez bloques de trabajo entre el 26 y el 27 de septiembre, en el orden en que se hicieron. Cada uno deja su código en el harness jevbench, sus resultados en results/ y su detalle en docs/.

  1. Reconstruir la batería en un harness único 26-sep

    Qué
    Traer los casos, el ground truth y los resultados de las pruebas previas (20–25 sep, hechas por otro agente con scripts sueltos) a un solo banco de pruebas.
    Cómo
    Las preguntas se definen una única vez, en el formato de TypeSafe, y cada modelo tiene un adaptador que traduce ese formato. Antes de medir nada nuevo, el scorer volvió a puntuar los resultados antiguos y debía reproducir los informes: lo hizo, y de paso encontró dos cifras mal calculadas en esos informes y una respuesta del GT imposible de acertar. Esa comprobación quedó como test automático.
    docs/plan.md · tests/
  2. Fijar la referencia: Jev y sus proveedores 26–27 sep

    Qué
    Medir Jev de nuevo guardando las probabilidades completas y la versión exacta del modelo, y comprobar si da igual usarlo por OpenRouter o por la API de TypeSafe.
    Cómo
    La batería completa se lanzó por los dos proveedores y se compararon las respuestas una a una (406 de 409 iguales; las tres distintas, en la frontera de redondeo). Un comando de control consulta periódicamente qué versión sirve cada alias, incluido jev-preview.
    docs/versiones_jev.md
  3. Modelos abiertos, sin ajustar, en dos DGX Spark 26–27 sep

    Qué
    Pasar cada modelo abierto por la misma batería, exactamente con las mismas preguntas y sin ejemplos ni ajuste (zero-shot).
    Cómo
    En GPU GB10 (bf16), con un entorno por framework. Se probaron variantes cuando la forma de preguntar podía perjudicar a un modelo (GLiNER con y sin descripciones de opciones; Laya con router y con su checkpoint ajustado). Decider-35B se sirvió además cuantizado a 4 bits (NVFP4) con vLLM. Cada resultado registra modelo, versión, precisión numérica, máquina y latencia.
    docs/modelos.md · docs/dgx-spark.md
  4. Métricas que no engañen 26-sep

    Qué
    Complementar el porcentaje de acierto con medidas que digan si una diferencia es real.
    Cómo
    Cada tabla lleva la línea base de responder siempre lo más frecuente, el intervalo de confianza del 95 % por bootstrap, el test de McNemar exacto para comparar dos modelos sobre los mismos casos y el Brier de las probabilidades. En papers, además, la correlación de Spearman de la relevancia y una cascada de lectura (leer / resumen / saltar) con umbral por leave-one-out.
    jevbench/metrics.py
  5. Sets nuevos, equilibrados y a ciego 26–27 sep

    Qué
    Los sets adversariales heredados eran 17 de 20 "admin": no distinguían modelos. Se crearon triaje ampliado y adversarial 3, 4 y 5.
    Cómo
    Cada set se redactó con el GT fijado antes de ejecutar ningún modelo, con mitad de casos manipulados y mitad honestos, y los departamentos repartidos. Queda en borrador hasta que se valida su GT (por el usuario en tres sets, por Claude por delegación en adv5), y el harness se niega a usarlo antes.
    docs/validacion_gt*.md
  6. Segunda anotación y GT v3 27-sep

    Qué
    Medir cuánto ruido tiene el propio ground truth.
    Cómo
    Un formulario a ciegas con los campos en disputa (sin mostrar el GT ni las respuestas de los modelos). Se calculó el acuerdo (kappa) separando las respuestas humanas de las completadas por otro modelo, se volvieron a puntuar los modelos con el GT alternativo para ver si cambiaba el orden (no cambió), y se adjudicaron 9 correcciones. Las versiones anteriores del GT se conservan.
    docs/segunda_anotacion/ · data/GT_CHANGELOG.md
  7. Revisor-auditor: una segunda pasada de Jev 26-sep

    Qué
    Comprobar si una segunda llamada que audite la primera mejora todas las respuestas, no solo el departamento.
    Cómo
    El revisor recibe el texto y las respuestas de la 1ª pasada. Para cada pregunta vuelve a responderla, dice si la primera es correcta y valora si hay manipulación. Se fijaron de antemano tres formas de combinar ambas pasadas y un control (dos llamadas sin revisión, promediadas) para separar la mejora real del simple ruido entre llamadas. Después se repitió sin cambios en casos nuevos.
    docs/experimentos/cascada_jev.md
  8. ¿Sirve otro modelo como revisor? 27-sep

    Qué
    Buscar un circuito más barato o 100 % local.
    Cómo
    Mismo prompt y mismas reglas, con Decider-4B como 1ª pasada y cinco revisores: Jev, el propio Decider-4B, Decider-35B NVFP4, AnyJev-32B y AnyJev-8B. El listón, escrito antes: recuperar la mitad de lo que gana Decider-4B con Jev como revisor sin empeorar ninguna fase. Esta prueba la ejecutó otro agente a partir de un plan escrito.
    docs/plan_revisor_local.md
  9. Reglas fijas contra timos 27-sep

    Qué
    Probar si tres expresiones regulares (pagos, datos de terceros, marketing) cubren los timos que se escapaban.
    Cómo
    Se escribieron viendo tres casos concretos, así que su acierto ahí era circular. Se congelaron con un hash y se evaluaron en 20 casos nuevos con honestos "trampa" que mencionan pagos o enlaces. No detectaron ningún ataque y saltaron en tres honestos: descartadas.
    docs/experimentos/reglas_duras.md
  10. Validar la alerta de manipulación 27-sep

    Qué
    Confirmar con casos nuevos que la alerta del revisor, observada a posteriori, funciona.
    Cómo
    Hipótesis y criterio (al menos 7 de 10 detectados y como mucho 1 falso positivo) escritos y commiteados antes de redactar adversarial-5, que usa familias de manipulación no vistas antes. Resultado: 9 de 10 y 1 falso positivo.
    docs/experimentos/alerta_manipulacion.md
Interpretación

Cómo leer estos números

Los sets son pequeños (14 a 32 casos), así que muchas diferencias que parecen claras son ruido. Estas son las herramientas que usa el scorer para no engañarse.

La línea de la mayoría

Es lo que sacaría un "modelo" que responde siempre la opción más frecuente del set. Un modelo por debajo de esa línea no aporta nada, aunque su porcentaje parezca alto.

En adversarial 1 + 2, responder siempre admin saca 17 de 20: por eso esos sets no sirven para comparar y se crearon adv3–adv5, equilibrados.

El intervalo de confianza

El bigote de cada barra es el IC del 95 % por bootstrap sobre los casos. Si dos bigotes se solapan mucho, no se puede afirmar que uno sea mejor.

Con 20 casos, un caso son 5 puntos de departamento. Una diferencia de 1–2 puntos en el total no significa nada.

¿Es significativa la diferencia?

El test de McNemar compara dos modelos sobre los mismos casos, contando solo en los que discrepan: b = casos que solo acierta A, c = casos que solo acierta B.

Ejemplo precargado: Jev frente a Decider-4B en el departamento de adv3.

Calibración (Brier)

Estos modelos venden probabilidades, no solo respuestas. El Brier mide cuánto se alejan esas probabilidades de lo que ocurrió en las preguntas sí/no: 0 es perfecto y 0.25 es lo que da responder siempre 0.5.

Jev con revisor está en ~0.05; Julia llega a 0.50, peor que no saber nada.

El ground truth también tiene ruido

Una segunda anotación humana coincidió con el GT solo en el 58 % de las urgencias y el 65 % de "¿hay que actuar hoy?" en casos límite. El GT v3 incorpora 9 correcciones; con él, el orden entre modelos no cambia.

Pre-registro

Los umbrales, reglas de fusión y criterios de éxito se escribieron y commitearon antes de ejecutar cada experimento. Por eso los resultados negativos (reglas regex, revisores abiertos) cuentan tanto como los positivos.

Método

Sets, preguntas y modelos

Cada caso es un texto (mensaje o abstract) y cinco preguntas tipadas: elegir entre opciones (choice), un nivel ordinal (score) o una probabilidad de sí (noul).

SetCasosQué mideGT
Triaje ES / EN14 × 2Departamento, urgencia, clínico, hostil, hoyLyra + adjudicación
Triaje ampliado ES / EN26 × 2Lo mismo, con más urgencias y hostilesValidado por el usuario
Papers32Relevancia, dominio, diseño, profundidad de lectura, cambio de prácticaLyra, P04 corregido
Adversarial 1 y 210 + 10Routing bajo manipulación (desequilibrado: 17/20 son admin)Lyra
Adversarial 32010 manipulados + 10 honestos, 5 por departamentoValidado por el usuario
Adversarial 420Timos de pago, datos y marketing + honestos "trampa"Validado por el usuario
Adversarial 520Familias de manipulación nuevas + honestos que suenan a manipulaciónValidado por Claude (delegado)

Modelos

ModeloQué esProbadoCómo se ejecutóReferencias
Jev · TypeSafeModelo "System One" cerrado: decisiones tipadas con probabilidades, sin generar texto. Es el incumbente.jev-1.13API por OpenRouter y por TypeSafe (~0.6 s/caso)OpenRouterDocs TypeSafe
Decider · MapikaReproducción abierta del concepto: LLM Qwen3.5 base con una cabeza que puntúa las opciones en una sola pasada.0.8B · 2B · 4B · 35B-A3B (bf16 y NVFP4)decider-ai en GB10 bf16; el NVFP4 con vLLMGitHub0.8B2B4B35B-A3B35B NVFP4
AnyJev · Nokia Applied ResearchFramework que convierte cualquier LLM abierto en decisor leyendo sus logits. Nivel L0: sin etiquetas, con marginalización de permutaciones de las opciones.Qwen3 1.7B · 8B · 32Banyjev[hf] en GB10 bf16GitHubQwen3-1.7BQwen3-8BQwen3-32B
GLiNER2.5-Decide · fastinoClasificador encoder (DeBERTa) que elige entre etiquetas; no recibe la pregunta como texto, así que se empaqueta en las etiquetas.Decide 0.5B · Decide-1B · multi 0.3Bgliner2 en GB10, con y sin descripcionesGitHubDecideDecide-1Bmulti-Decide
Laya · ConvAI InnovationsModelo de decisión no autoregresivo sobre ModernBERT (inglés) y mmBERT (multilingüe), entrenado para dar probabilidades calibradas.router · typed-decisionslaya en GB10 (~30 ms/caso)Hugging Face
Julia-1 · SupersonicLabsModelo de decisión pequeño (144M) sobre mmBERT-small, con el mismo formato de preguntas que Jev.Julia-1CPU localHugging Face

Hardware: dos NVIDIA DGX Spark (GPU GB10, 128 GB de memoria unificada, CUDA 13). El NVFP4 se sirvió con vLLM 0.29. Latencias medianas por caso: Decider-4B 0.2 s, Decider-35B NVFP4 0.19 s, Jev 0.6 s por API, AnyJev-32B 2.5 s.

Sobre el ground truth

SetsQuién redactó el GTQuién lo validó
Triaje ES/EN, papers, adversarial 1–2Un agente LLM (Lyra), 20–23 sep 2026Sin revisión sistemática; 11 cambios de campo posteriores (2 en P04 y 9 de la adjudicación de la 2ª anotación)
Triaje ampliado, adversarial 3–4ClaudeEl responsable del proyecto, antes de ejecutar ningún modelo
Adversarial 5ClaudeClaude, por delegación (sin revisión humana)
  • Los mensajes son inventados (no hay datos de pacientes); los papers son publicaciones reales de PubMed.
  • Ruido medido: una segunda anotación humana coincidió con el GT en el 58 % de las urgencias y el 65 % de "¿hay que responder hoy?" en casos límite.
  • Un solo dominio clínico y sets de 10–32 casos. No es una herramienta clínica.
Qué no se ha probado

Fine-tuning o calibración con etiquetas (AnyJev L1/L2, Laya ajustado): no hay suficientes casos para entrenar sin contaminar la evaluación. Tampoco otros dominios clínicos distintos de la neumología intervencionista.