Skip to content

fix(core): fail steps with empty provider output after bounded retries - #40437

Closed
ServOMorph wants to merge 1 commit into
anomalyco:devfrom
ServOMorph:empty-reasoning-output
Closed

fix(core): fail steps with empty provider output after bounded retries#40437
ServOMorph wants to merge 1 commit into
anomalyco:devfrom
ServOMorph:empty-reasoning-output

Conversation

@ServOMorph

@ServOMorph ServOMorph commented Aug 4, 2026

Copy link
Copy Markdown

Issue for this PR

Closes #37372

Type of change

  • Bug fix

What does this PR do?

A provider turn that streams a successful step finish but produces no visible text and no tool call (for example a reasoning-only response) was recorded as a successful step (finish: "stop"), so the session ended cleanly with an empty assistant turn.

The publisher now tracks whether any usable output was streamed: non-blank text deltas or a tool call. When a successful stream has neither, the turn is retried up to two times through the existing bounded turn-transition path. If the budget is exhausted, the step is recorded as a terminal failure (finish: "error") with a clear message instead of a false success.

How did you verify your code works?

  • Ran the session-runner tests in packages/core (86 tests in session-runner.test.ts, 129 across the runner files) — all green.
  • bun typecheck in packages/core — clean.
  • Updated existing empty-turn fixtures to produce real output and added tests for retry-then-fail, retry-then-recover, and tool-call (no retry).

Screenshots / recordings

N/A — core change, no UI.

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

@github-actions github-actions Bot added the needs:compliance This means the issue will auto-close after 2 hours. label Aug 4, 2026
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

This PR doesn't fully meet our contributing guidelines and PR template.

What needs to be fixed:

  • PR description is missing required template sections. Please use the PR template.

Please edit this PR description to address the above within 2 hours, or it will be automatically closed.

If you believe this was flagged incorrectly, please let a maintainer know.

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

The following comment was made by an LLM, it may be inaccurate:

Related PRs Found

These PRs address similar issues with empty or incomplete provider output:

  1. PR fix(opencode): surface truncated turns instead of ending the loop #40142 - fix(opencode): surface truncated turns instead of ending the loop

    • Related: Both handle cases where provider output is incomplete or missing
  2. PR fix(opencode): make long-lived provider streams robust to silent SSE terminations #39970 - fix(opencode): make long-lived provider streams robust to silent SSE terminations

    • Related: Handles edge cases in provider stream handling
  3. PR fix(core): fail empty provider output #37843 - fix(core): fail empty provider output

    • Related: Directly addresses failing on empty provider output (may be a precursor or related approach)
  4. PR fix(session): retry empty stream truncations and discard partial parts #26167 - fix(session): retry empty stream truncations and discard partial parts

    • Related: Handles retrying when streams produce incomplete output

The most relevant duplicate candidate is PR #37843 which also tackles failing on empty provider output. This PR (40437) appears to be a more comprehensive fix with bounded retries and better tracking of usable output.

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

This pull request has been automatically closed because it was not updated to meet our contributing guidelines within the 2-hour window.

Feel free to open a new pull request that follows our guidelines.

@github-actions github-actions Bot removed the needs:compliance This means the issue will auto-close after 2 hours. label Aug 4, 2026
@github-actions github-actions Bot closed this Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

v2: empty reasoning-only response is recorded as successful completion

1 participant