Ir al contenido

← Skills

assert-what-the-generator-found

Un generador que se cae te dice que falló; uno que emite salida plausible no te dice nada. Prueba lo que encontró, nunca que se ejecutó.

PatrónProcedencia: cleanEstado: activev0.1.0 · Apache-2.0

Conferida por quien revisó y leyó la tarjeta, no reclamada por el propio archivo. Una tarjeta que el agente destila durante una ejecución que consumió contenido no confiable nace contaminada y queda retenida para revisión antes de ser recuperada.

Cuándo viene a la mente

  • escribiste un generador de código
  • probando un volcado de esquema
  • la salida se ve bien
  • extrayendo estructura de una librería

Evita y Comprueba es donde suele estar el valor. Haz es la sección que todo el mundo escribe.

El cuerpo de la tarjeta de arriba es una traducción. El original en inglés es lo que importa la CLI, lo que lee el agente en ejecución y lo que atestigua el hash de abajo.

Disparador

Has escrito algo que lee una representación y emite otra: un volcado de esquema, un extractor de referencias, una migración, un scraper, un generador de índices. Cualquier cosa cuya salida nadie lee por completo porque hay demasiada.

No aplica a una función que devuelve un único valor que puedes verificar a simple vista. El riesgo aquí es específico de una salida lo bastante grande como para que «parece correcto» sea la única revisión que jamás recibirá.

Haz

  1. Antes de escribir la prueba, nombra la cantidad. ¿Cuántos comandos, filas, archivos o campos deberían salir? Obtén ese número de algún lugar distinto del generador — la fuente, la documentación, un conteo manual.
  2. Verifica la cantidad, o un piso sobre ella. assert len(groups) >= 10, no assert result.
  3. Verifica la presencia de elementos específicos y nombrados que sabes que deben existir. Tres o cuatro son suficientes, y elige unos de distintas formas de entrada.
  4. Si el generador clasifica cosas, verifica que cada clase no esté vacía. Un clasificador que pone todo en un solo grupo es el fallo que esto detecta.

Evita

assert build() — pasa cuando el generador devuelve una lista vacía, una lista parcial, o una lista donde cada elemento es sutilmente del tipo equivocado.

Evita también confiar en isinstance al recorrer una estructura de terceros. Las bibliotecas empaquetan sus propias dependencias: un TyperGroup no es una instancia del click.Group que importó tu archivo, porque Typer incluye su propia copia de Click. Pregunta si el objeto tiene lo que necesitas — un mapeo commands, un método items — en lugar de qué clase dice ser. El duck-typing sobrevive a una dependencia empaquetada y a un cambio de versión mayor; una verificación de clase no sobrevive a ninguno de los dos, y falla clasificando mal en lugar de lanzar una excepción.

Comprueba

Rompe el generador a propósito y observa que la prueba falla. Comenta la recursión hacia los subcomandos, o haz que la verificación de tipo rechace todo, y ejecuta la suite.

Si la suite sigue pasando, la prueba solo verifica que el generador se ejecutó, y has escrito la prueba que esta skill existe para evitar.

Riesgo

Codificar una cantidad exacta convierte la prueba en una tarea de mantenimiento: cada comando añadido legítimamente la pone en rojo. Prefiere un piso (>= 10) más elementos nombrados, y reserva las cantidades exactas para cosas que genuinamente no deberían cambiar sin una decisión.

También hay un límite. Estas verificaciones detectan un generador que descartó toda una categoría. No detectan uno que se equivoca en un solo campo de un solo elemento, y fingir lo contrario es su propio tipo de falsa confianza.

Cómo usarla

La tarjeta es un dato. Clona el repositorio e impórtala por ruta: lo que llega por la red se trata como contaminado y queda retenido a la espera de aprobación, que es el comportamiento deseable y la razón por la que aquí no hay un instalador de una línea.

git clone https://github.com/brcampidelli/chimera-agent.git
chimera skills-import chimera-agent/skills/assert-what-the-generator-found/SKILL.md

Integridad

SHA-256 del archivo tal como se publicó. Quien lo importe puede comprobar que lo que recibió es lo que mostró esta página.

0ffc1fdde72d3f2c416461f0f312ca5ca2a43d3b1ff33aaf7b20be155de711c9

Lee la tarjeta en el repositorio →