forge: prose audit runs at high effort, not max

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.
This commit is contained in:
Kayos 2026-05-15 14:25:59 -07:00
parent 22dadc793c
commit 4de484cd35

View file

@ -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<PassOutput> {
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()
};