Summary
Two client-side bugs found during live-prod E2E of the v0.11.0-beta.2 release, both in the Altimate Base free-tier code path.
Bug 1 — 413 oversize error shows a generic message instead of the friendly one
FreeTier.describeRequestTooLarge (packages/opencode/src/altimate/free/client.ts) tries to JSON.parse the response body and returns undefined if parsing throws.
In production, oversized requests (roughly >1 MiB) are rejected by the gateway's edge proxy with a raw HTML error page, not a JSON body. JSON.parse throws on that HTML, the function returns undefined, and the user is shown a generic fallback error instead of the friendly "your request is too large — start a new session or shorten it" guidance that fires when the body is parseable JSON.
Expected: on any HTTP 413 from the Altimate Base provider, the user should see the friendly "request too large" message regardless of whether the response body is JSON or HTML.
Actual: only a parseable JSON body with the expected shape produces the friendly message; an HTML/unparseable body falls through to the generic error.
Bug 2 — Altimate Base provider has no client-side header timeout
The altimate-free provider loader (packages/opencode/src/provider/provider.ts) does not set a headerTimeout option, unlike the openai loader in the same file which sets one by default.
If the gateway hangs before sending response headers, a request through the Altimate Base provider has no client-side timeout and can hang indefinitely — the CLI never surfaces an error or times out on its own.
Expected: the Altimate Base provider should time out client-side (matching the existing OpenAI-loader default) if the gateway doesn't respond in time.
Actual: no timeout is configured, so a hung gateway request hangs the CLI.
How found
Both were found via live-prod end-to-end testing of the v0.11.0-beta.2 release.
Summary
Two client-side bugs found during live-prod E2E of the
v0.11.0-beta.2release, both in the Altimate Base free-tier code path.Bug 1 — 413 oversize error shows a generic message instead of the friendly one
FreeTier.describeRequestTooLarge(packages/opencode/src/altimate/free/client.ts) tries toJSON.parsethe response body and returnsundefinedif parsing throws.In production, oversized requests (roughly >1 MiB) are rejected by the gateway's edge proxy with a raw HTML error page, not a JSON body.
JSON.parsethrows on that HTML, the function returnsundefined, and the user is shown a generic fallback error instead of the friendly "your request is too large — start a new session or shorten it" guidance that fires when the body is parseable JSON.Expected: on any HTTP
413from the Altimate Base provider, the user should see the friendly "request too large" message regardless of whether the response body is JSON or HTML.Actual: only a parseable JSON body with the expected shape produces the friendly message; an HTML/unparseable body falls through to the generic error.
Bug 2 — Altimate Base provider has no client-side header timeout
The
altimate-freeprovider loader (packages/opencode/src/provider/provider.ts) does not set aheaderTimeoutoption, unlike theopenailoader in the same file which sets one by default.If the gateway hangs before sending response headers, a request through the Altimate Base provider has no client-side timeout and can hang indefinitely — the CLI never surfaces an error or times out on its own.
Expected: the Altimate Base provider should time out client-side (matching the existing OpenAI-loader default) if the gateway doesn't respond in time.
Actual: no timeout is configured, so a hung gateway request hangs the CLI.
How found
Both were found via live-prod end-to-end testing of the
v0.11.0-beta.2release.