Inicio / Verificar lo que devuelve
Un verde no prueba nada hasta que no ha sido probado el mismo
Un control que nunca ha sido puesto en jaque por un caso que debe encontrar no ha probado nada: probar exige que un comando concreto se haya ejecutado y que su salida haya sido leída, y un detector roto da cero problemas, lo que se lee exactamente como un éxito.
Un script de verificación que informa cero problemas puede significar dos cosas opuestas: el sistema controlado está realmente limpio, o el control mismo ha dejado de funcionar. Nada en un resultado verde permite decidir entre las dos posibilidades mientras ese control no haya fallado al menos una vez frente a un caso que debe encontrar obligatoriamente.
La trampa del cero
Dos casos medidos hacen esta trampa concreta. Un patrón de escape roto produjo un día cero violaciones señaladas allí donde deberían haber aparecido miles. Otro patrón roto, a la inversa, señaló violaciones que no existían, y un orden de operaciones invertido produjo falsas alertas de manera continua en un caso real: la figura que acompaña esta lección cuantifica estos dos fallos. Ambos venían de la misma causa profunda, una verificación que nunca había sido probada sobre sí misma. El código de salida de una tarea programada plantea la misma trampa: un script puede anunciar un éxito mientras su trabajo falla.
El testigo positivo, demostrado por la ejecución
El remedio es una regla: un control debe buscar, en el mismo pase, al menos una cosa que debe encontrar, un caso conocido como malo: es el testigo positivo. La demostración se hace en pocas líneas. Un script que busca la palabra prohibida secreto en un archivo, con una expresión regular que olvidó la insensibilidad a mayúsculas, se ejecuta sobre un archivo que contiene dos veces esa palabra escrita con mayúscula inicial.
node verif.js fixture.txt
violations trouvees : 0
Cero. El archivo controlado contiene sin embargo dos ocurrencias de la palabra prohibida. Nada en este resultado distingue un archivo realmente limpio de un control roto, mientras nadie haya verificado que ese control sabe detectar un caso conocido. Añadir la insensibilidad a mayúsculas, exactamente el testigo que este control debe ahora encontrar, cambia el veredicto.
node verif2.js fixture.txt
violations trouvees : 2
Un cero puede venir de una búsqueda que no buscó nada
El registro de cambios de Claude Code de octubre de 2026 corrige dos casos en que Grep y Glob anunciaban «ningún resultado» aunque el programa de búsqueda había fallado o el destino no era legible: ahora devuelven un error, o reintentan una vez y luego lo señalan. Lo inverso también existía, la herramienta PowerShell tomando por error la salida vacía de una búsqueda pasada a Select-Object. Un lanzador de pruebas puede igualmente mostrar «pruebas 0, fallos 0»: cita la línea del contador, con un número distinto de cero, antes de leer el verde.
El detector también puede apuntar a otro sitio. El nombre de una clase CSS permanece en la hoja de estilo en línea aunque el elemento no se muestre, así que buscarlo no prueba nada. La demostración fabrica su propia página:
printf '<style>.promo{color:red}</style>\n<p>texto</p>\n' > page.html
grep -c promo page.html
grep -c 'class="promo"' page.html
1
0
El primer recuento da 1 para un elemento ausente de la página, el segundo 0, porque apunta al atributo puesto en el elemento. Ejecuta el caso de ausencia antes de creer el caso de presencia.
Producir el testigo antes de declarar el control activo
Cablea primero la escritura del testigo en caso de éxito, ejecuta la tarea una vez de verdad para que ese testigo exista realmente, y solo después declara la verificación activa. Invertir este orden, declarar una verificación de testigo antes de que nada escriba ese testigo, entrena a la gente a ignorar todo el sistema de vigilancia: un sistema ignorado vale menos que ningún sistema.
Renombra el testigo, nunca lo borres, y confirma que el control reacciona cada vez, luego restáuralo. Enumera también las condiciones que un control de completitud cubre, en lugar de resumirlas en «todo va bien», verdadero en una condición y falso en las otras dos.
Este principio se prolonga en prueba el verificador antes de creer su veredicto, que aplica la misma exigencia a un script que mide una cifra.
Un control probado frente a un control nunca puesto a prueba
Verde ciego
Imposible distinguir un sistema limpio de un control roto.
Verde demostrado
El testigo positivo ya ha demostrado que el mecanismo sabe detectar, este cero es creíble.
Alerta no fiable
Se señala un problema, pero nada prueba que el control no produzca también falsos positivos al azar.
Rojo fiable
El control ya ha demostrado que sabe detectar este tipo de caso, la alerta es creíble.
Dos fallos silenciosos, dos causas distintas
Un equipo añade al script de control un archivo que contiene la palabra prohibida escrita con mayúscula inicial. El script señala ese archivo. La misma semana, ese script se ejecuta sobre todo el repositorio y no señala ninguna otra ocurrencia de la palabra prohibida.
Escribe en una frase lo que este resultado establece, y en una frase lo que no establece.
Lo que esto establece: El resultado obtenido sobre todo el repositorio es creíble para la categoría de problema que representaba el caso añadido, una palabra prohibida escrita con mayúscula inicial.
Lo que esto no establece: No establece que el script detecte otra variante de escritura de la palabra prohibida, como una mayúscula en cada letra, que no ha sido probada.
Los tres calibrados falsos más frecuentes
- Demasiado amplio El script detecta a partir de ahora cualquier variante de escritura de la palabra prohibida, sea cual sea su forma.
- Demasiado estrecho Este resultado no prueba nada en absoluto, ya que el caso añadido solo afectaba a un único archivo del repositorio.
- Fuera de lugar Este resultado muestra que el equipo detectó el problema a tiempo, antes de que causara un incidente en producción.
- Un control automático que nunca ha sido puesto en jaque por un caso conocido malo no prueba nada, aunque lleve meses funcionando sin incidentes.
- El testigo positivo debe ser producido por el mecanismo real que se supone debe probar, nunca inyectado a mano para probar solo la lectura.
- La escritura del testigo de éxito se cablea y se ejecuta una vez de verdad antes de que la verificación se declare activa, nunca en el orden inverso.
- Renombrar periódicamente el testigo, sin borrarlo nunca, confirma que el mecanismo de detección sigue reaccionando.
- Un cero puede ocultar una búsqueda que no pudo realizarse, y un detector que apunta a un nombre de clase en lugar de al atributo del elemento da un recuento sin relación con la página mostrada.
Elige un control automático en el que confías sin haberlo puesto nunca en jaque, fabrica un caso que debe detectar, ejecuta el control y confirma que lo señala antes de seguir confiando en él.
Cada afirmación datable de esta lección remite aquí al texto público que la respalda. Una fuente que no se abre no prueba nada.
- Claude Code changelog consultée le 2026-10-24