Altimate Base: HeaderTimeoutError is not auto-retried (dead-ends after the header timeout)

Open
#1,261 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Bug
Clarity
Needs clarification
Activity status
Active
Tech stack
typescript
Domain
backend

Research direction

Read provider/error.ts and trace MessageV2.fromError() into SessionRetry.retryable(). Decide retry semantics that distinguish transient queue spikes from sustained delays, including a bounded or capped retry rather than blindly using the generic backoff. Done means the chosen behavior prevents the current dead-end without multiplying a persistent header-timeout wait into five sequential waits.

Written by the indexing model from the issue text.

Description

Found during the v0.11.0-beta.4 release review (Chaos Gremlin, P1). Deferred — needs design, not a hotfix.

HeaderTimeoutError (provider/error.ts) is not special-cased in MessageV2.fromError(); it becomes a NamedError.Unknown, which SessionRetry.retryable() does not recognize — so the session's 5-attempt backoff never engages. After beta.4 raised the free-tier header timeout to 5 min, a genuinely dead-but-connected gateway now dead-ends after a 5-minute wait with no auto-retry (beta.3 did the same, at 10s).

Why deferred (not a blind "make it retryable"): naively marking it retryable means up to 5 sequential header-timeout waits — for a persistently slow/dead gateway that is ~25 min of hanging, strictly worse than a single failure. The right design distinguishes a transient queue spike (retry helps) from a sustained cold-start/reasoning delay (retry just multiplies the wait), and likely needs a capped/short first-retry or a single bounded retry, not the generic backoff. Decide the retry semantics deliberately.

Related follow-up: # (a "still waiting" indicator would make the wait legible regardless of retry).

Dominant language
TypeScript
Stars
813
Forks
134
Avg merge
2d 5h
Merged PRs (30d)
62

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from AltimateAI/altimate-code

All issues in AltimateAI/altimate-code

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.