From 4de484cd35fba1d2d70999fa9089905b5353856f Mon Sep 17 00:00:00 2001 From: Kayos Date: Fri, 15 May 2026 14:25:59 -0700 Subject: [PATCH] forge: prose audit runs at high effort, not max MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A max-effort pass over a whole-book input (quarter-million chars) runs an impractical hour-plus and was timing out. Finding repeated passages is comparison work, not deep reasoning — high effort does it well in minutes at a fraction of the cost. --- skald-core/src/forge.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/skald-core/src/forge.rs b/skald-core/src/forge.rs index b6f7790..c5c206b 100644 --- a/skald-core/src/forge.rs +++ b/skald-core/src/forge.rs @@ -206,9 +206,10 @@ impl Forge { /// drift. This is the QC gate before a story goes to narration, /// where repetition a silent reader skims becomes glaring. /// - /// MAX effort: unlike the prose-craft passes, catching every - /// near-duplicate across a whole book is real reasoning work and - /// worth the spend (same posture as the canon audit). + /// HIGH effort: finding repeated passages and motif reuse is + /// comparison work, not deep reasoning — high-effort Opus does it + /// well in minutes. A max-effort pass over a whole-book input + /// (quarter-million chars) runs an impractical hour-plus. pub async fn prose_audit(&self, full_story: &str) -> anyhow::Result { let prompt = format!( "Audit the complete story below for repetition, template tics, \ @@ -220,9 +221,9 @@ impl Forge { prompt, model: Some(self.model.clone()), system: Some(SYSTEM_PROSE_AUDIT.to_string()), - effort: Some(Effort::Max), - // A max-effort audit over a whole book genuinely runs long — - // 1800s strands it. 3600s covers a 50k+-word story. + effort: Some(Effort::High), + // High effort over a whole book lands in minutes; 3600s is + // a generous ceiling that won't bite. timeout_secs: Some(3600), ..Default::default() };