- Every
.awaitinside a routing function must be covered bytokio::time::timeoutortimeout_atdirectly or by an enclosing phase fence with a specific, named error type. - The outer
route_timeoutwrapper inguard-core/src/proxy_service.rsis a backstop only; ifguard.request_timeoutappears forroute_resolution, add a missing per-phase timeout instead of extending the backstop budget. - Per-phase timeout budgets live in guard config with code defaults and must stay below the outer backstop.
- Per-phase errors live in the routing function's primary domain package, not in
guard-core; prefer operator-meaningful phase errors over one public error per helper await.