This is the record of an abcd-managed repository

abcdBetav0.16.2 · 2026-11-06

Development record

The OpenAI-compatible provider adapter sends non-streaming chat requests with one end-to-end deadline, so a long delegated step routed to a reasoning model fails and wastes the provider's work. internal/adapter/openaiapi/client.go:291 renders "stream": false; DefaultTimeout (client.go:63) bounds the whole call at 120 seconds (connecting, sending and reading the entire answer), and only the connect verification passes its own timeout (internal/core/oracle/connect.go:116), so a dispatched step gets the 120-second default; max_tokens is sent only when a route or --route sets it (client.go:81). Evidence from a user test on 2026-10-03 against a keyless local OpenAI-compatible server on loopback: that server's gateway answers HTTP 504 to a non-streaming request whose generation exceeds about 600 seconds, because no headers are sent until the answer is complete, and the model keeps generating up to its token limit after the 504; reproduced twice with two reasoning models on a 44-line classification prompt, while a non-reasoning model finished in 181 seconds. abcd's own 120-second deadline abandons such a call earlier still, and an abandoned non-streaming request is not cancelled at the server. Any proxy or gateway with a header or idle timeout behaves the same way; intent consistency's bundled corpus (about 29k tokens) is the kind of step that reaches it.

issueresolvedmajoriss-2610030931521214

The OpenAI-compatible provider adapter sends non-streaming chat requests with one end-to-end deadline, so a long delegated step routed to a reasoning model fails and wastes the provider's work. internal/adapter/openaiapi/client.go:291 renders "stream": false; DefaultTimeout (client.go:63) bounds the whole call at 120 seconds (connecting, sending and reading the entire answer), and only the connect verification passes its own timeout (internal/core/oracle/connect.go:116), so a dispatched step gets the 120-second default; max_tokens is sent only when a route or --route sets it (client.go:81). Evidence from a user test on 2026-10-03 against a keyless local OpenAI-compatible server on loopback: that server's gateway answers HTTP 504 to a non-streaming request whose generation exceeds about 600 seconds, because no headers are sent until the answer is complete, and the model keeps generating up to its token limit after the 504; reproduced twice with two reasoning models on a 44-line classification prompt, while a non-reasoning model finished in 181 seconds. abcd's own 120-second deadline abandons such a call earlier still, and an abandoned non-streaming request is not cancelled at the server. Any proxy or gateway with a header or idle timeout behaves the same way; intent consistency's bundled corpus (about 29k tokens) is the kind of step that reaches it.

Grounds

  • pursued: a long reasoning answer that keeps streaming is read to the end and a stall or cancel is cut off and seen by the server, as the fake-server tests in stream_test.go prove; a real OpenAI-compatible server that streams in a shape these tests do not cover (multi-line data events, a model name changing mid-stream) would show it wrong.

Frontmatter

idiss-2610030931521214
typeissue
lifecycleresolved
severitymajor

mentions1