09 · 6 waterfalls
Anatomía de un turno
Un turno puede contener varias peticiones al modelo y cada una deja rastro.
Dos palabras que hay que fijar, porque de ellas sale todo lo demás.
- Step Una petición Una llamada al modelo más las herramientas que llame a raíz de ella
- Turno Varios steps Desde que pides algo hasta que no queda nada pendiente. Puede contener varios steps o ninguno
Anatomía de un turno
La secuencia
Se abre el turno. Se recoge lo que hayas escrito. Se ensamblan las instrucciones y la lista de herramientas disponibles.
Antes de enviar nada, hay un punto donde cualquier pieza instalada puede reescribir lo que el modelo va a ver o rechazarlo directamente.
Si pasa, se abre un step. Tu mensaje se escribe en el registro. Se construye el historial que verá el modelo. Se lanza la petición y la respuesta llega por fragmentos, que también se guardan.
Si el modelo pide una herramienta, esa petición pasa por tres fases: una donde se decide si tiene permiso, otra donde se ejecuta y otra donde se puede transformar el resultado. El resultado se escribe en el registro.
Se cierra el step. Y si las herramientas han dejado algo pendiente, se abre otro. Ahí es donde un turno se alarga: cada step es otra petición al modelo, con su coste.
Cuando no queda nada, se cierra el turno.
El detalle que más dice del diseño
Si el filtro previo rechaza tu mensaje, el turno se cierra igualmente y queda registrado, aunque no haya llegado a hacerse ni una sola petición al modelo.
Se puede auditar también lo que no llegó a ejecutarse.
Detalle técnico opcional
Los eventos de turno, step, mensaje y herramienta son duraderos y se escriben en el registro. El resto son puntos de extensión en vivo. Seis de ellos funcionan como middleware envolvente y sus escuchas deben delegar explícitamente para que la cadena continúe. El evento que avisa del cierre del turno es la excepción: se ejecuta en orden y no delega.