feat(#2109): harness-side idle watchdog to bail on anthropic api stall storms

This commit is contained in:
damocles 2026-07-07 17:17:45 +02:00 committed by mara
commit 5027068e31
7 changed files with 157 additions and 8 deletions

View file

@ -57,6 +57,14 @@ pub enum Error {
#[error("waiting on claude failed: {0}")]
Wait(#[source] std::io::Error),
/// The child produced no stdout for longer than the configured idle
/// window (`Config::idle_timeout`) and was killed. Indicative of an
/// Anthropic API stall (e.g. a multi-retry connection storm that goes
/// silent for minutes). Callers typically park briefly and retry, like
/// the rate-limit path.
#[error("claude idle timeout: no output for the configured window")]
IdleTimeout,
/// claude exited non-zero and raised none of the recognized sentinels.
/// `stderr_tail` is the last handful of stderr lines (empty if there were
/// none), included so the caller can surface a real diagnostic.