Skip to content

examples: write streamed images in binary mode - #506

Open
jbeckwith-oai wants to merge 2 commits into
mainfrom
codex/fix-image-stream-binary-write
Open

examples: write streamed images in binary mode#506
jbeckwith-oai wants to merge 2 commits into
mainfrom
codex/fix-image-stream-binary-write

Conversation

@jbeckwith-oai

Copy link
Copy Markdown
Contributor

Summary

  • write decoded partial and completed image data with File.binwrite
  • add an offline regression test that executes the real image streaming example and verifies exact PNG bytes

Evidence

The example decodes base64 PNG data and previously passed the resulting binary string to File.write. Text-mode writes can translate byte sequences on platforms with text/binary distinctions. The fixture includes CRLF and control-byte sequences and verifies both generated files byte-for-byte.

Blast radius and compatibility

This changes only the handwritten image streaming example and its focused test. It does not change the SDK runtime, generated code, public API, type signatures, dependencies, serialization, transport, or authentication behavior.

Generator ownership

examples/ and this test are handwritten repository artifacts and are not generator-owned.

Validation

  • bundle exec ruby -Itest test/openai/image_stream_example_test.rb — 1 run, 11 assertions, passed
  • bundle exec rake test:examples:inventory — passed
  • bundle exec rake lint — RuboCop, rubyfmt, RBI, and RBS validation passed
  • ./scripts/test with a private TMPDIR — 1,088 runs, 9,799 assertions, 0 failures, 1 unrelated local error in the unchanged realtime HTTP proxy invariant
  • isolated formatting-policy and RBS-script tests — 22 runs, 275 assertions, passed
  • git diff --check — passed
  • thermo-nuclear code-quality review — no findings

@jbeckwith-oai jbeckwith-oai added the codex-maintenance Low-risk maintenance changes created by Codex label Aug 21, 2026
@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Castiron custom code

✅ No new custom-code files detected.

48 mixed files remain; 0 existing customizations changed.

Compared 851f53438f5accc119f58ed3. Generated baselines verified.

48 existing customizations unchanged
  • lib/openai.rb
  • lib/openai/client.rb
  • lib/openai/models/chat/chat_completion_message.rb
  • lib/openai/models/chat/chat_completion_message_function_tool_call.rb
  • lib/openai/models/chat/completion_create_params.rb
  • lib/openai/models/response_format_json_schema.rb
  • lib/openai/models/responses/function_tool.rb
  • lib/openai/models/responses/response.rb
  • lib/openai/models/responses/response_create_params.rb
  • lib/openai/models/responses/response_format_text_config.rb
  • lib/openai/models/responses/response_format_text_json_schema_config.rb
  • lib/openai/models/responses/response_function_tool_call.rb
  • lib/openai/models/responses/response_function_web_search.rb
  • lib/openai/models/responses/response_output_text.rb
  • lib/openai/models/responses/tool.rb
  • lib/openai/resources/beta/responses.rb
  • lib/openai/resources/beta/threads.rb
  • lib/openai/resources/chat/completions.rb
  • lib/openai/resources/files.rb
  • lib/openai/resources/responses.rb
  • lib/openai/resources/vector_stores/file_batches.rb
  • lib/openai/resources/vector_stores/files.rb
  • lib/openai/resources/webhooks.rb
  • rbi/openai/client.rbi
  • rbi/openai/models/chat/chat_completion_message.rbi
  • rbi/openai/models/chat/chat_completion_message_function_tool_call.rbi
  • rbi/openai/models/chat/completion_create_params.rbi
  • rbi/openai/models/response_format_json_schema.rbi
  • rbi/openai/models/responses/response.rbi
  • rbi/openai/models/responses/response_create_params.rbi
  • rbi/openai/models/responses/response_function_tool_call.rbi
  • rbi/openai/models/responses/response_function_web_search.rbi
  • rbi/openai/models/responses/response_output_text.rbi
  • rbi/openai/resources/chat/completions.rbi
  • rbi/openai/resources/files.rbi
  • rbi/openai/resources/responses.rbi
  • rbi/openai/resources/vector_stores/file_batches.rbi
  • rbi/openai/resources/vector_stores/files.rbi
  • scripts/castiron/README.md
  • scripts/castiron/custom_code_report.py

8 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 32447293012 --repo openai/openai-ruby \
  --name castiron-custom-code-32447293012-1 --dir /tmp/castiron-custom-code-32447293012-1
git apply --stat /tmp/castiron-custom-code-32447293012-1/custom-code.patch
cat /tmp/castiron-custom-code-32447293012-1/custom-code.patch

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

git fetch --no-tags origin 851f53438f5afc7f32e3ccbe866fd03bbade576a ccc119f58ed385c49ecdbd287bcfbf749eb9b0be
python3 scripts/castiron/custom_code_report.py report \
  --base 851f53438f5afc7f32e3ccbe866fd03bbade576a \
  --head ccc119f58ed385c49ecdbd287bcfbf749eb9b0be --fetch --require-head-hash --public \
  --out /tmp/castiron-custom-code-ccc119f58ed3
cat /tmp/castiron-custom-code-ccc119f58ed3/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

@jbeckwith-oai
jbeckwith-oai force-pushed the codex/fix-image-stream-binary-write branch from 26b465d to ccc119f Compare August 21, 2026 04:29
@jbeckwith-oai
jbeckwith-oai requested a review from a team August 21, 2026 04:32
@jbeckwith-oai
jbeckwith-oai marked this pull request as ready for review August 21, 2026 04:32
@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-21T04:33:24.868736Z ccc119f Draft marked ready
🔒 Security Review Completed 2026-08-21T04:33:29.126134Z ccc119f 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 10.915s for Ruby SDK PR #506.

Test results — 42 files
Test Result Time
tests/chat-completions-complex-body.test.ts ✅ Passed 246ms
tests/chat-completions-create.test.ts ✅ Passed 291ms
tests/chat-completions-stream.test.ts ✅ Passed 152ms
tests/files-content-binary.test.ts ✅ Passed 226ms
tests/files-create-multipart.test.ts ✅ Passed 196ms
tests/files-list-pagination.test.ts ✅ Passed 171ms
tests/initialize-config.test.ts ✅ Passed 181ms
tests/instance-isolation.test.ts ✅ Passed 237ms
tests/models-list.test.ts ✅ Passed 161ms
tests/responses-background-lifecycle.test.ts ✅ Passed 243ms
tests/responses-body-method-errors.test.ts ✅ Passed 675ms
tests/responses-cancel-timeout.test.ts ✅ Passed 272ms
tests/responses-cancel.test.ts ✅ Passed 370ms
tests/responses-compact-retries.test.ts ✅ Passed 300ms
tests/responses-compact.test.ts ✅ Passed 341ms
tests/responses-create-advanced-stream.test.ts ✅ Passed 172ms
tests/responses-create-advanced.test.ts ✅ Passed 211ms
tests/responses-create-disconnect.test.ts ✅ Passed 1.039s
tests/responses-create-errors.test.ts ✅ Passed 377ms
tests/responses-create-malformed-api-responses.test.ts ✅ Passed 136ms
tests/responses-create-retries.test.ts ✅ Passed 260ms
tests/responses-create-stream-failures.test.ts ✅ Passed 176ms
tests/responses-create-stream-timeout.test.ts ✅ Passed 229ms
tests/responses-create-stream-wire.test.ts ✅ Passed 2.464s
tests/responses-create-stream.test.ts ✅ Passed 152ms
tests/responses-create-terminal-states.test.ts ✅ Passed 386ms
tests/responses-create-timeout.test.ts ✅ Passed 271ms
tests/responses-create.test.ts ✅ Passed 302ms
tests/responses-delete.test.ts ✅ Passed 245ms
tests/responses-input-items-errors.test.ts ✅ Passed 194ms
tests/responses-input-items-list.test.ts ✅ Passed 195ms
tests/responses-input-items-options.test.ts ✅ Passed 211ms
tests/responses-input-tokens-count-timeout.test.ts ✅ Passed 389ms
tests/responses-input-tokens-count.test.ts ✅ Passed 390ms
tests/responses-malformed-inputs.test.ts ✅ Passed 2.156s
tests/responses-not-found-errors.test.ts ✅ Passed 420ms
tests/responses-parse.test.ts ✅ Passed 261ms
tests/responses-retrieve-retries.test.ts ✅ Passed 287ms
tests/responses-retrieve.test.ts ✅ Passed 368ms
tests/responses-stored-method-errors.test.ts ✅ Passed 956ms
tests/retry-behavior.test.ts ✅ Passed 2.954s
tests/sdk-error-shape.test.ts ✅ Passed 493ms

View OkTest run #32447294677

SDK merge (198b7b3bece9) · head (ccc119f58ed3) · base (851f53438f5a) · OkTest (2b1bdfd25e98)

@jbeckwith-oai jbeckwith-oai changed the title fix(examples): write streamed images in binary mode examples: write streamed images in binary mode Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

codex-maintenance Low-risk maintenance changes created by Codex

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant