Ley · Un detector sin test de rechazo no es un detector
Antes de confiar en cualquier chequeo (validador, contador, alarma, QA), hacelo fallar a propósito y mirá que lo diga. Un detector que sólo viste pasar puede estar aceptando todo — y no lo sabrías.
Los casos reales que fundaron la ley
- Dos sesiones distintas usaron el mismo regex "detector de texto roto" y disparó sobre texto sano — nadie lo había corrido contra un control antes de reportar hallazgos.
- Un filtro "título de ≤2 palabras = vago" marcaba como defecto exactamente lo que el estándar pedía (títulos concretos de 2 palabras) — tercer falso positivo del mismo tipo en 2 días.
- La vuelta de tuerca: 17/17 controles sintéticos pasaban verdes y el detector estaba roto en TODAS las formas reales. El control del detector sale de datos reales, no de casos inventados para pasar. Cada falso positivo encontrado se vuelve control permanente.
La forma práctica
Todo instrumento se entrega con --test: construye un caso sano y uno roto, y demuestra que los distingue (acepta el sano Y rechaza el roto). Los instrumentos de este mismo wiki lo llevan — el generador del sitio prueba que un link roto se detecta y uno sano resuelve, y el snapshot de datos prueba que un instrumento muerto se muestra como error y no como cero.
El pariente: el cero estructural
Un contador puede reportar 0 no porque nadie hizo la acción sino porque la acción es imposible (no existe el botón). El test de rechazo de un contador incluye verificar que existe al menos una superficie capaz de dispararlo — la grieta G6 de El registro de grietas es el caso completo.
