diff --git a/crates/zesdex-backend/src/app/util/abort.rs b/crates/zesdex-backend/src/app/util/abort.rs index ac22ca1..010d743 100644 --- a/crates/zesdex-backend/src/app/util/abort.rs +++ b/crates/zesdex-backend/src/app/util/abort.rs @@ -1,7 +1,8 @@ //! Shared abort-flag checks. //! -//! The two variants (Option> and bare AtomicBool) are -//! used across the agent runtime, subagent, workflow engine, and provider. +//! Three variants (Option>, bare AtomicBool, and +//! Option<&AtomicBool>) cover the agent runtime, subagent, workflow +//! engine, and provider. use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; diff --git a/crates/zesdex-backend/src/app/util/backoff.rs b/crates/zesdex-backend/src/app/util/backoff.rs index d6cf554..4e51745 100644 --- a/crates/zesdex-backend/src/app/util/backoff.rs +++ b/crates/zesdex-backend/src/app/util/backoff.rs @@ -13,10 +13,10 @@ use std::time::{Duration, SystemTime, UNIX_EPOCH}; pub fn backoff_seconds(attempt: u32, max_secs: u64) -> Duration { let base_secs = (2u64).pow(attempt).min(max_secs); let quarter = (base_secs * 250_000_000).max(100_000_000); // 25% of base, min 100ms - let offset = jitter_ns(quarter); - // ±25%: offset in [0, quarter), so result = base - quarter/2 + offset + let offset = jitter_ns(quarter * 2); // [0, 50% of base) + // ±25%: offset in [0, 2×quarter), result = base + offset - quarter // which lies in [base - 25%, base + 25%). - let ns = base_secs * 1_000_000_000 + offset - quarter / 2; + let ns = base_secs * 1_000_000_000 + offset - quarter; Duration::from_nanos(ns) }