Controles de pasos: el estado era correcto, el agente no
Stripe estaba perfecto. Aun así, el agente había intentado cancelar dos veces. Por qué ahora leemos la traza OpenTelemetry del agente, y por qué una traza que falta nunca hace fallar una prueba.

Los controles de estado responden a la pregunta más importante: ¿la cuenta terminó como debía? Pero a veces termina bien por suerte.
Estado correcto, pasos equivocados
En una ejecución, el agente propuso la misma cancelación dos veces. Guard reconoció el duplicado y la segunda vez no hizo nada, así que Stripe estaba perfecto. En producción, con un reembolso en lugar de una cancelación y una clave de idempotencia distinta, la misma costumbre podría costar dinero.
Qué es un control de pasos
Una regla sobre cómo llegó ahí el agente, definida por escenario:
- una herramienta se llama antes que otra (buscar la suscripción antes de cancelar);
- una herramienta se llama como máximo N veces, o nunca;
- el agente responde solo después de que COLVO decida;
- ningún paso terminó con un error.
Los controles de pasos son deterministas y solo pueden añadir un FAIL. Nunca convierten un FAIL en un PASS: el estado sigue decidiendo.
De dónde salen los pasos
Durante la prueba, tu agente exporta su traza OpenTelemetry a COLVO con la clave de prueba que viene en la solicitud. Seguimos las convenciones GenAI (spans chat … y execute_tool …) y solo guardamos nombres, tiempos, modelos y recuentos de tokens; nunca prompts, respuestas ni argumentos de herramientas. Con el preset de OpenAI, COLVO conduce la conversación, así que registra cada paso sin configurar nada.
COLVO siempre cuenta las propuestas y, para cada acción, gana la fuente que vio más llamadas: un reintento que Guard deduplicó sigue contando.
¿Sin traza? Sin penalización
Si el agente no envía traza, los controles sobre sus propias herramientas aparecen como “no comprobado”. Una traza que falta nunca es un FAIL.


