Altimate Base: HeaderTimeoutError is not auto-retried (dead-ends after the header timeout)
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from AltimateAI/altimate-code
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
AltimateAI/altimate-code#1323 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
AltimateAI/altimate-code#1288 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
AltimateAI/altimate-code#1285 ·
-
privacy: Altimate Base consent dialog no longer discloses persistent per-installation identifier Open
Difficulty 1/5 Under an hour Newbie friendliness 88/100
AltimateAI/altimate-code#1284 ·
-
Difficulty 2/5 Under an hour Newbie friendliness 72/100
AltimateAI/altimate-code#1283 ·
All issues in AltimateAI/altimate-code
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
copse-dev/agent-pane#2953 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug clawsweeper:linked-pr-open clawsweeper:needs-live-repro clawsweeper:no-new-fix-pr impact:message-loss issue-rating: 🐚 platinum hermit P2 regression
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
calcite-components needs triage refactor
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Esri/calcite-design-system#15203 ·