Main-agent state carrying a criteria request until it is cleared.
This intentionally uses normal last-value state: earlier middleware can
consume an ephemeral channel before GoalCriteriaMiddleware runs. Success
clears the request here, while the TUI uses a request-correlated checkpoint
update after failure or cancellation. Normal TUI and headless turns also
submit None defensively so a terminal request can never rerun as chat.