[Bug]: Background task remains running and retries with <none> after provider stream timeout
What happened, and what did you expect?
A background Oracle task using a single configured model received a terminal upstream stream error, but the task lifecycle did not become terminal. The TUI retried it as Retrying (attempt 2) · <none>, while plugin logs continued to report the child as running for more than two minutes after the gateway had already ended the request with stream stall timeout.
Expected behavior:
- the provider error should be preserved instead of rendered as
<none>; - the background task should transition once to a terminal
errorstate; - the parent should receive that terminal result and be able to reconcile it.
This resembles the lifecycle family tracked in #595 and #998, but this reproduction does not use a model-array fallback: Oracle is configured with one model string. The trigger is a terminal streaming error from the provider/gateway.
The plugin was also running in degraded compatibility mode: startup logs report unavailable ctx.storage, ctx.generate.text, ctx.tool.transform, ctx.session.hook, ctx.tool.hook registration, and ctx.event.subscribe, followed by children-driven degraded mode. This may be relevant to the missing terminal reconciliation.
Steps to reproduce
- Use OpenCode 1.18.31 with oh-my-opencode-slim 2.2.20.
- Configure Oracle with one streaming model (not a fallback array).
- Start Oracle through
task(..., background: true)with a large context. - Make the upstream Responses stream end with an error after a long silent gap (observed:
stream stall timeout). - Observe the task UI and plugin lifecycle logs.
Observed sequence (UTC, identifiers redacted):
03:16:46 child state=running; upstream streaming request starts
03:29:25 gateway ends request: stream stall timeout
03:31:39 child is still reported state=running
TUI: Retrying (attempt 2) · <none>A separate lifecycle observation in the same environment produced:
state=error
timedOut=false
hasResult=true
terminalUnreconciled=trueoh-my-opencode.json
{
"agents": {
"oracle": {
"model": "9router/cx/gpt-5.6-sol",
"variant": "high"
}
}
}OpenCode version
1.18.31
oh-my-opencode-slim version
2.2.20
Operating system
macOS (client); Linux/Docker (gateway)
Logs, screenshots, or extra context
ctx.storage unavailable
ctx.generate.text unavailable
ctx.tool.transform unavailable
ctx.session.hook unavailable
ctx.tool.hook registration failed
ctx.event.subscribe unavailable
children-driven degraded modeRelated:
- #595 tracks detached terminal results during model-array fallback.
- #998 tracks premature terminalization during fallback; this case shows the inverse symptom, remaining
runningafter terminal provider failure. - The gateway-side stream stall is being reported separately to decolua/9router.
No account identifiers, prompts, request bodies, tokens, or connection IDs are included.
Source: alvinunreal/oh-my-opencode-slim