forge: raise timeouts for the max-effort whole-book audit pass

The prose audit reads a whole story at max effort and genuinely
runs past 1800s on a 50k-word book — it was timing out. Bump the
audit pass server-side timeout to 3600s and the shared reqwest
client ceiling to 7200s (matching clawdforge's new cap). Other
passes keep their own shorter timeout_secs.
This commit is contained in:
Kayos 2026-05-15 11:54:50 -07:00
parent fd7a34ac1d
commit 22dadc793c

View file

@ -106,10 +106,12 @@ impl Forge {
let client = ClientBuilder::default()
.base_url(&cfg.base_url)
.token(&cfg.app_token)
// Generation passes at --effort max can run 1020 min wall
// clock. clawdforge's server-side cap is 1800s — match it.
// Default 120s would strand any prose-craft pass.
.timeout(Duration::from_secs(1800))
// Generation passes at --effort max run 1020 min wall clock;
// the max-effort whole-book prose audit can run past an hour.
// This is the client-side ceiling — set high enough to cover
// the slowest pass; each pass still sends its own server-side
// timeout_secs. Default 120s would strand any real pass.
.timeout(Duration::from_secs(7200))
.user_agent(concat!("skald/", env!("CARGO_PKG_VERSION")))
.build()?;
Ok(Self {
@ -219,7 +221,9 @@ impl Forge {
model: Some(self.model.clone()),
system: Some(SYSTEM_PROSE_AUDIT.to_string()),
effort: Some(Effort::Max),
timeout_secs: Some(1800),
// A max-effort audit over a whole book genuinely runs long —
// 1800s strands it. 3600s covers a 50k+-word story.
timeout_secs: Some(3600),
..Default::default()
};
let r = self.client.run(body).await?;