Skip to content

fix(api): preserve stream IDs for factory-created response errors - #926

Merged
apcha-oai merged 1 commit into
mainfrom
castiron/promotions/pr-43
Aug 21, 2026
Merged

fix(api): preserve stream IDs for factory-created response errors#926
apcha-oai merged 1 commit into
mainfrom
castiron/promotions/pr-43

Conversation

@apcha-oai

Copy link
Copy Markdown
Contributor

Summary

Fix streamId() on factory-created Responses WebSocket error events by reading the error model's typed metadata field. Preserve the existing stable and beta event types, accessors, factories, visitors, and wire formats.

The event-model implementation now matches the generated output. Generation metadata and generated event coverage are refreshed; the existing typed streaming-query setters remain unchanged in the SDK.

(manual)

Resolved generation conflicts in the stable and beta event models and their test files. Kept the generated model implementations and retained all 14 existing stream-ID and shell-event regression tests verbatim. No handwritten runtime workaround was added.

Validation

  • ./scripts/format passed.
  • Stable and beta Responses event suites: 266 tests passed, with no failures or skips.
  • The same suites against the older supported Jackson version: 266 tests passed, with no failures or skips.
  • Both production files are byte-identical to the new generated snapshot.
  • All previous test methods remain present, and all 14 retained handwritten test bodies are unchanged.
  • The transformed API reference is byte-identical to the previous release.

Castiron-Internal-PR: openai/openai-java-internal#43
Castiron-Source-SHA: b46d2787602d56fa4a8653f23463bd9d27251dcc
Castiron-Public-Base-SHA: 085ea7d
@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Castiron custom code

✅ No new custom-code files detected.

53 mixed files remain; 0 existing customizations changed; 4 customizations removed; 6 generated baselines changed.

Compared 085ea7d5f9c810e50df54124. Generated baselines verified.

File Result Current custom patch
openai-java-core/src/main/kotlin/com/openai/models/beta/responses/BetaResponsesServerEvent.kt Generated baseline changed None
openai-java-core/src/main/kotlin/com/openai/models/responses/ResponsesServerEvent.kt Generated baseline changed None
openai-java-core/src/main/kotlin/com/openai/services/async/beta/ResponseServiceAsyncImpl.kt Generated baseline changed None
openai-java-core/src/main/kotlin/com/openai/services/blocking/beta/ResponseServiceImpl.kt Generated baseline changed None
openai-java-core/src/test/kotlin/com/openai/models/beta/responses/BetaResponsesServerEventTest.kt Generated baseline changed +101 / −0
openai-java-core/src/test/kotlin/com/openai/models/responses/ResponsesServerEventTest.kt Generated baseline changed +101 / −0
51 existing customizations unchanged
  • openai-java-core/src/main/kotlin/com/openai/models/audio/AudioResponseFormat.kt
  • openai-java-core/src/main/kotlin/com/openai/models/chat/completions/ChatCompletionCreateParams.kt
  • openai-java-core/src/main/kotlin/com/openai/models/chat/completions/ChatCompletionMessageFunctionToolCall.kt
  • openai-java-core/src/main/kotlin/com/openai/models/chat/completions/ChatCompletionToolMessageParam.kt
  • openai-java-core/src/main/kotlin/com/openai/models/embeddings/Embedding.kt
  • openai-java-core/src/main/kotlin/com/openai/models/embeddings/EmbeddingCreateParams.kt
  • openai-java-core/src/main/kotlin/com/openai/models/responses/ResponseCreateParams.kt
  • openai-java-core/src/main/kotlin/com/openai/models/responses/ResponseFunctionToolCall.kt
  • openai-java-core/src/main/kotlin/com/openai/models/responses/ResponseFunctionWebSearch.kt
  • openai-java-core/src/main/kotlin/com/openai/models/responses/ResponseInputItem.kt
  • openai-java-core/src/main/kotlin/com/openai/models/responses/ResponseTextConfig.kt
  • openai-java-core/src/main/kotlin/com/openai/models/videos/Video.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/BetaServiceAsync.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/BetaServiceAsyncImpl.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/ResponseServiceAsync.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/ResponseServiceAsyncImpl.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/WebhookServiceAsync.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/WebhookServiceAsyncImpl.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/audio/TranscriptionServiceAsyncImpl.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/chat/ChatCompletionServiceAsync.kt
  • openai-java-core/src/main/kotlin/com/openai/services/async/finetuning/checkpoints/PermissionServiceAsyncImpl.kt
  • openai-java-core/src/main/kotlin/com/openai/services/blocking/BetaService.kt
  • openai-java-core/src/main/kotlin/com/openai/services/blocking/BetaServiceImpl.kt
  • openai-java-core/src/main/kotlin/com/openai/services/blocking/ResponseService.kt
  • openai-java-core/src/main/kotlin/com/openai/services/blocking/ResponseServiceImpl.kt
  • openai-java-core/src/main/kotlin/com/openai/services/blocking/WebhookService.kt
  • openai-java-core/src/main/kotlin/com/openai/services/blocking/WebhookServiceImpl.kt
  • openai-java-core/src/main/kotlin/com/openai/services/blocking/audio/TranscriptionServiceImpl.kt
  • openai-java-core/src/main/kotlin/com/openai/services/blocking/chat/ChatCompletionService.kt
  • openai-java-core/src/main/kotlin/com/openai/services/blocking/finetuning/checkpoints/PermissionServiceImpl.kt
  • openai-java-core/src/test/kotlin/com/openai/services/async/CompletionServiceAsyncTest.kt
  • openai-java-core/src/test/kotlin/com/openai/services/async/ImageServiceAsyncTest.kt
  • openai-java-core/src/test/kotlin/com/openai/services/async/ResponseServiceAsyncTest.kt
  • openai-java-core/src/test/kotlin/com/openai/services/async/WebhookServiceAsyncTest.kt
  • openai-java-core/src/test/kotlin/com/openai/services/async/audio/TranscriptionServiceAsyncTest.kt
  • openai-java-core/src/test/kotlin/com/openai/services/async/beta/ResponseServiceAsyncTest.kt
  • openai-java-core/src/test/kotlin/com/openai/services/async/beta/ThreadServiceAsyncTest.kt
  • openai-java-core/src/test/kotlin/com/openai/services/async/beta/threads/RunServiceAsyncTest.kt
  • openai-java-core/src/test/kotlin/com/openai/services/async/chat/ChatCompletionServiceAsyncTest.kt
  • openai-java-core/src/test/kotlin/com/openai/services/blocking/CompletionServiceTest.kt

11 more in the full report.

A changed generated baseline means this report cannot reliably identify which handwritten lines changed.

Inspect the custom-code diff

Download the exact patch produced by this run (requires repository access):

gh run download 32502750930 --repo openai/openai-java \
  --name castiron-custom-code-32502750930-1 --dir /tmp/castiron-custom-code-32502750930-1
git apply --stat /tmp/castiron-custom-code-32502750930-1/custom-code.patch
cat /tmp/castiron-custom-code-32502750930-1/custom-code.patch

Or reproduce it from an SDK checkout containing the vendored reporter:

git fetch --no-tags origin 085ea7d5f9c863aaeb6698f2c5f7efdc283bc01e 10e50df54124d84af72503f6ec389cd45e51aa82
python3 scripts/castiron/custom_code_report.py report \
  --base 085ea7d5f9c863aaeb6698f2c5f7efdc283bc01e \
  --head 10e50df54124d84af72503f6ec389cd45e51aa82 --fetch --require-head-hash --public \
  --out /tmp/castiron-custom-code-10e50df54124
cat /tmp/castiron-custom-code-10e50df54124/custom-code.patch

This is the current full custom patch for mixed files, not an attribution of only the handwritten lines changed by this PR.

Full report and patch

@apcha-oai
apcha-oai marked this pull request as ready for review August 21, 2026 16:24
@apcha-oai
apcha-oai requested a review from a team as a code owner August 21, 2026 16:24
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Aug 21, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-08-21T16:25:39.924749Z 10e50df Draft marked ready
🔒 Security Review Completed 2026-08-21T16:25:44.526741Z 10e50df Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@openai-sdks

openai-sdks Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

OkTest Summary

237/237 SDK tests passed in 16.452s for Java SDK PR #926.

Test results — 42 files
Test Result Time
tests/chat-completions-complex-body.test.ts ✅ Passed 180ms
tests/chat-completions-create.test.ts ✅ Passed 545ms
tests/chat-completions-stream.test.ts ✅ Passed 374ms
tests/files-content-binary.test.ts ✅ Passed 224ms
tests/files-create-multipart.test.ts ✅ Passed 376ms
tests/files-list-pagination.test.ts ✅ Passed 358ms
tests/initialize-config.test.ts ✅ Passed 190ms
tests/instance-isolation.test.ts ✅ Passed 245ms
tests/models-list.test.ts ✅ Passed 172ms
tests/responses-background-lifecycle.test.ts ✅ Passed 597ms
tests/responses-body-method-errors.test.ts ✅ Passed 549ms
tests/responses-cancel-timeout.test.ts ✅ Passed 222ms
tests/responses-cancel.test.ts ✅ Passed 307ms
tests/responses-compact-retries.test.ts ✅ Passed 396ms
tests/responses-compact.test.ts ✅ Passed 357ms
tests/responses-create-advanced-stream.test.ts ✅ Passed 657ms
tests/responses-create-advanced.test.ts ✅ Passed 1.093s
tests/responses-create-disconnect.test.ts ✅ Passed 1.188s
tests/responses-create-errors.test.ts ✅ Passed 405ms
tests/responses-create-malformed-api-responses.test.ts ✅ Passed 316ms
tests/responses-create-retries.test.ts ✅ Passed 305ms
tests/responses-create-stream-failures.test.ts ✅ Passed 246ms
tests/responses-create-stream-timeout.test.ts ✅ Passed 223ms
tests/responses-create-stream-wire.test.ts ✅ Passed 6.103s
tests/responses-create-stream.test.ts ✅ Passed 536ms
tests/responses-create-terminal-states.test.ts ✅ Passed 371ms
tests/responses-create-timeout.test.ts ✅ Passed 211ms
tests/responses-create.test.ts ✅ Passed 246ms
tests/responses-delete.test.ts ✅ Passed 225ms
tests/responses-input-items-errors.test.ts ✅ Passed 294ms
tests/responses-input-items-list.test.ts ✅ Passed 336ms
tests/responses-input-items-options.test.ts ✅ Passed 433ms
tests/responses-input-tokens-count-timeout.test.ts ✅ Passed 196ms
tests/responses-input-tokens-count.test.ts ✅ Passed 379ms
tests/responses-malformed-inputs.test.ts ✅ Passed 5.03s
tests/responses-not-found-errors.test.ts ✅ Passed 364ms
tests/responses-parse.test.ts ✅ Passed 733ms
tests/responses-retrieve-retries.test.ts ✅ Passed 265ms
tests/responses-retrieve.test.ts ✅ Passed 344ms
tests/responses-stored-method-errors.test.ts ✅ Passed 1.035s
tests/retry-behavior.test.ts ✅ Passed 3.609s
tests/sdk-error-shape.test.ts ✅ Passed 416ms

View OkTest run #32502753246

SDK merge (7a1ea54260eb) · head (10e50df54124) · base (085ea7d5f9c8) · OkTest (2b1bdfd25e98)

@apcha-oai
apcha-oai enabled auto-merge August 21, 2026 16:54

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved after two independent reviews. Stable and beta factory-created Responses WebSocket error events now preserve typed stream IDs; both production models exactly match the pinned generated snapshot. All 14 existing stream-ID regressions are preserved alongside expanded malformed/null/round-trip coverage, public event APIs and wire compatibility remain intact, and all public checks pass.

@apcha-oai
apcha-oai added this pull request to the merge queue Aug 21, 2026
Merged via the queue into main with commit 7f9f186 Aug 21, 2026
11 checks passed
@openai-sdks openai-sdks Bot mentioned this pull request Aug 21, 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.

2 participants