🛡️ La prueba real
Antes de creer en cualquier número, hay que confiar en la vara. Esta ruta muestra cómo midió tres veces — 7 sesiones locales, luego una muestra igualada y después 4.892 pasos del dataset abierto — y descubrió que una muestra pequeña engaña en ambas direcciones. Y qué soluciones aplicar para medir, inyectar y reproducir sin equivocarte.
Mapa de la ruta
Contenido detallado
🪤 La trampa de la muestra
Cómo las muestras pequeñas engañan en ambas direcciones: el recorrido de las tres pruebas hasta llegar a un número defendible.
El recorrido de la medición en tres rondas: 7 sesiones locales → muestra igualada (~950 pasos) → 4.892 pasos del dataset abierto de HF.
Cada ronda corrige un sesgo de la anterior; ver la secuencia enseña a no confiar en la primera medición.
Medir tres veces; cada muestra más grande; de lo emocionante (engañoso) a lo defendible (sólido).
7 sesiones / ~950 pasos de Fable local dieron 99% de "piensa antes de actuar" contra 54% de Opus — un delta de +45pp.
La cifra entusiasma, pero proviene de apenas 7 sesiones: es el tipo de resultado que parece una prueba y no es más que ruido.
99% vs. 54% (+45pp); muestra de 7 sesiones; emocionante ≠ confiable.
Al igualar el tamaño (~950 pasos de cada uno), Opus salta a 94% en un recorte de solo 4 sesiones.
Limitar el tamaño ayuda a comparar, PERO 4 sesiones siguen siendo pocas: el número varía según el recorte.
Muestra igualada; recorte de 4 sesiones; inestable; el mismo tamaño no basta sin volumen.
4.892 pasos / 30 sesiones del dataset abierto Glint-Research/Fable-5-traces: Fable 85% vs. Opus 54% (+31pp).
La muestra grande de ambos lados es lo que hace que el número sea defendible: la vara que conviene llevar adelante.
85% vs 54% (+31pp); 4.892 pasos / 30 sesiones; dataset abierto; defendible.
La muestra pequeña INFLÓ el «pensar antes de actuar» (99→85) Y OCULTÓ la «prueba después de editar» (en el conjunto local daba 0%; el valor real es 41%).
Es el punto central del recorrido: una muestra pequeña no se equivoca solo hacia arriba — se equivoca en ambos sentidos.
Inflar (99→85) y ocultar (0→41%); el sesgo tiene dos direcciones; presencia, no contenido.
Nunca concluyas a partir de una muestra pequeña; equilibra los tamaños antes de comparar; confirma con una muestra grande antes de creerlo.
Es el destilado práctico de la trampa — la disciplina que separa un número de una opinión.
No concluir demasiado pronto; equilibrar tamaños; confirmar con una muestra grande; mantener el escepticismo hasta alcanzar el volumen necesario.
🛠️ Las soluciones aplicables
El playbook corregido y cómo medir, inyectar y reproducir correctamente: honestidad por encima del hype.
Solo dos reglas se transfieren con respaldo: pensar antes de actuar (85 vs 54) y cerrar el ciclo con una prueba después de editar (41 vs 2).
El foco vale más que el volumen: un playbook de dos reglas con respaldo supera a uno de diez sin pruebas.
Pensar antes (85 vs 54); probar después (41 vs 2); solo lo que realmente se transfiere.
Un hook SessionStart lee uno .md por separado (editable sin modificar el settings), es fail-open y se MEZCLA en el array de hooks — no lo sobrescribe.
{
"hooks": {
"SessionStart": [
{ "hooks": [
{ "type": "command",
"command": "cat ~/.claude/fable-playbook.md 2>/dev/null || true" }
] }
]
}
}
Separar la regla en un .md te permite iterar el playbook sin tocar settings, y el || true garantiza que la sesión nunca se interrumpa.
SessionStart; .md editable; fail-open; combinar el array (no sobrescribirlo).
Equilibra la muestra (limita por número de pasos, p. ej.: ~950) y avisa cuando los tamaños difieran demasiado entre los modelos.
Es exactamente lo que evita el +45pp falso: sin balanceo, el modelo con más datos parece «mejor».
Limita por pasos; alerta de divergencia; compara solo tamaños similares.
Descargar el dump CRU de Glint-Research/Fable-5-traces (son .jsonl de Claude Code, no un chat aplanado) vía API de HF — sin la lib datasets — y ejecutar en el fable_lib.
BASE=https://huggingface.co/datasets/Glint-Research/Fable-5-traces/resolve/main
curl -sL "$BASE/<arquivo>.jsonl" -o sessao.jsonl
python -m fable_lib.measure sessao.jsonl
Es cómo obtener una referencia amplia incluso sin datos propios — y conservar el formato de eventos que necesita el medidor.
Volcado EN BRUTO; .jsonl de eventos; API de HF; sin datasets; ejecutarlo en fable_lib.
Los comandos que reproducen la medición (extract_corpus.py, compare_models.py, el medidor de HF) y guardar una línea de base CON FECHA en un lugar duradero; no en /tmp.
Sin una línea base duradera y fechada, no tienes con qué comparar después — y pierdes la prueba de que algo cambió.
extract_corpus / compare_models; medidor de HF; baseline fechado; lugar duradero (no /tmp).
Presencia ≠ contenido (el razonamiento está cifrado en los logs); los pesos del modelo no se transfieren; el playbook debe iterarse con datos nuevos.
Conocer los límites es lo que mantiene el método honesto: copias el ritmo, no el cerebro del modelo.
Razonamiento cifrado; los pesos no se transfieren; itera con datos nuevos; la honestidad está por encima del hype.
🧰 Ejemplos de utilidad
Dónde resulta realmente útil: elegir un modelo, diagnosticar el tuyo, incorporar al equipo, demostrar un cambio y desmontar el hype.
Sonnet piensa solo 10% y usa pocas herramientas (ideal para tareas rápidas, mecánicas y baratas); Opus y Fable para el trabajo que exige planificar y cerrar el ciclo.
La vara se convierte en criterio de enrutamiento: eliges el modelo según la naturaleza de la tarea, con los números a la mano.
Sonnet 10% / pocas herramientas; Opus y Fable para planificar y cerrar el ciclo; modelo según la tarea.
Mide tus propios logs y fíjate dónde fallas. Ej.: si tu Opus prueba después de editar solo 2%, la mayor ventaja está en cerrar el ciclo, no en «pensar más».
Transforma consejos genéricos en un diagnóstico personal: corriges la falla que muestran TUS datos.
Medir los propios logs; encontrar la falla real; palanca = donde el número es más bajo.
Inyectar el buen ritmo por defecto (hook SessionStart o CLAUDE.md) para que todo dev empiece la sesión con pensar antes + probar después.
Estandariza el buen comportamiento sin depender de que cada persona lo recuerde — el playbook se convierte en cultura, no en folclore.
Default mediante hook/CLAUDE.md; pensar antes + probar después; no depender de la memoria individual.
Baseline fechado ANTES, aplica el playbook, mide DESPUÉS con una muestra suficiente: transforma "creo que mejoró" en un número.
Es la diferencia entre impresión y evidencia. Cuidado con la dilución: aísla las sesiones nuevas para que el efecto no desaparezca en el promedio.
Antes/después; baseline fechado; muestra suficiente; aislar sesiones nuevas (antidilución).
El mismo método mide Codex y modelos de código abierto: basta con tener los registros en formato de eventos. El campo model es la clave.
La vara no es específica de un proveedor: donde haya eventos con model, mides.
Codex y código abierto; formato de eventos; campo model como clave; método agnóstico.
Usa la regla para exigir un número de muestra grande antes de creer cualquier «el modelo X es mejor que Y».
Así fue exactamente como derribamos el "+45pp": exigir una muestra es lo que separa el marketing de la medición.
Exigir una muestra grande; escepticismo ante las afirmaciones; así fue como cayó el +45pp.