release: 0.79.0 - #347
Conversation
jbeckwith-oai
left a comment
There was a problem hiding this comment.
Release metadata is consistent for 0.78.1, the changelog covers the sole commit since v0.78.0, the gem builds successfully, and exact-head CI is green.
09dfc58 to
1690f68
Compare
jbeckwith-oai
left a comment
There was a problem hiding this comment.
Release metadata is consistent for 0.78.1, the changelog now covers all three user-facing fixes since v0.78.0 while correctly omitting the test-only commit, the gem builds successfully with the expected package metadata, targeted load-order and multipart/IO tests pass, lint/type validation passes, and exact-head CI is green across Ruby 3.3, 3.4, and 4.0.
1690f68 to
cec65a3
Compare
jbeckwith-oai
left a comment
There was a problem hiding this comment.
Re-reviewed the complete 0.78.1 release at this refreshed head. The manifest, runtime version, README install version, lockfile path version, changelog heading/date, and compare link are consistent. The changelog covers all four user-facing fixes since v0.78.0 and correctly omits the test-only commit; the newly included binary multipart stream-read fix has matching runtime, RBI/RBS, and regression-test coverage. Exact-head package, RuboCop, Sorbet, RBS, Ruby 3.3/3.4/4.0, required CI, and CodeQL checks are green. I found no release-integrity, compatibility, security, supply-chain, architecture, file-size, or maintainability blocker.
cec65a3 to
3f76599
Compare
jbeckwith-oai
left a comment
There was a problem hiding this comment.
Fresh review of the complete 0.79.0 release at this exact head. The minor version is appropriate for the new Azure OpenAI v1 provider; manifest, runtime version, README install version, lockfile path version, changelog heading/date, and compare link all agree. The changelog covers the Azure feature and all four user-facing fixes since v0.78.0 while correctly omitting the test-only commit. The Azure implementation stays behind the existing provider boundary, refreshes tokens per attempt, validates origin before attaching credentials, rejects custom-auth ambiguity, normalizes endpoints explicitly, and includes aligned RBI/RBS plus focused configuration, retry, origin, and authentication coverage. The multipart stream-read addition likewise has matching runtime/type/test coverage. Exact-head package, RuboCop, Sorbet, RBS, Ruby 3.3/3.4/4.0, required CI, and CodeQL are green. No release-integrity, compatibility, security, supply-chain, architecture, file-size, or maintainability blocker found.
03a067e to
b87fca1
Compare
jbeckwith-oai
left a comment
There was a problem hiding this comment.
Fresh thermo-nuclear review of the complete 0.79.0 release at this exact head. The new delta since the prior approval cleanly exposes request IDs on successful top-level models/pages and API errors without leaking metadata into model serialization, with aligned runtime, RBI/RBS, documentation, and regression coverage. The fiber-scheduler documentation matches the existing Net::HTTP behavior and is backed by an integration test that proves concurrent progress on one scheduler thread. The manifest, runtime version, README install version, lockfile path version, changelog heading/date/compare link, and built gem metadata are consistent; the changelog covers all user-facing commits since v0.78.0 and omits the test-only commit. The earlier Azure, multipart, nested-form, interruptible-enumerator, and load-order deltas remain coherent. Exact-head package, RuboCop, Sorbet, RBS, Ruby 3.3/3.4/4.0, required CI, and CodeQL checks are green. No release-integrity, compatibility, security, supply-chain, architecture, file-size, or maintainability blocker found.
b87fca1 to
adefbbf
Compare
jbeckwith-oai
left a comment
There was a problem hiding this comment.
Fresh thermo-nuclear review of the complete 0.79.0 release at this exact head. The new delta cleanly tightens JSON, JSONL, and SSE content-type matching: matching is anchored, case-insensitive, parameter-aware, and avoids false-positive prefixes, with aligned RBI declarations and focused matcher/dispatch regression coverage. The manifest, runtime version, README install version, lockfile path version, changelog heading/date/compare link, and built gem metadata remain consistent. The changelog now covers all nine user-facing commits since v0.78.0 and correctly omits the test-only commit. Previously reviewed Azure, request-ID, multipart, enumerator, load-order, and scheduler-documentation changes remain coherent. Exact-head package, RuboCop, Sorbet, RBS, Ruby 3.3/3.4/4.0, required CI, and CodeQL checks are green. No release-integrity, runtime/API compatibility, security, architecture, file-size, or maintainability blocker found.
adefbbf to
c3415b0
Compare
jbeckwith-oai
left a comment
There was a problem hiding this comment.
The newly accumulated nested-model coercion change adds the cross-component OpenAI::Internal::Type::Converter.coerce_with_error singleton method in lib/openai/internal/type/converter.rb, and calls it from ArrayOf, HashOf, BaseModel, and Union, but the shipped declarations in rbi/openai/internal/type/converter.rbi and sig/openai/internal/type/converter.rbs do not declare it. That leaves the runtime and the SDK's RBI/RBS surface out of sync and conflicts with this repository's contributor rule that public @api private methods used across components retain declarations at the same visibility. Please add matching singleton declarations (including the coerced-value/error tuple return), validate Sorbet and RBS, and regenerate this release. The exact-head package build, 568-test suite, targeted 13-test/95-assertion nested-coercion suite, diff check, and CI matrix are otherwise clean.
c3415b0 to
5436b93
Compare
jbeckwith-oai
left a comment
There was a problem hiding this comment.
The prior blocker remains unresolved on this refreshed release head. OpenAI::Internal::Type::Converter.coerce_with_error still exists only in lib/openai/internal/type/converter.rb and is still absent from both shipped declaration files, rbi/openai/internal/type/converter.rbi and sig/openai/internal/type/converter.rbs, even though ArrayOf, HashOf, BaseModel, and Union call it across components. Please add matching singleton declarations, including the coerced-value/error tuple return, then run Sorbet/RBS validation and regenerate the release. The newly accumulated file-upload documentation accurately describes the SDK's fallback filename/content types and FilePart escape hatch; version/changelog/compare metadata is consistent; the local 568-test suite, gem package build, diff check, exact-head CI matrix, and file-threshold audit are otherwise clean.
5436b93 to
4b5b5c7
Compare
jbeckwith-oai
left a comment
There was a problem hiding this comment.
Two release blockers remain on this exact head:
-
OpenAI::Internal::Type::Converter.coerce_with_erroris shipped inlib/openai/internal/type/converter.rband is called byArrayOf,HashOf,BaseModel, andUnion, but the packaged declarations still omit it from bothrbi/openai/internal/type/converter.rbiandsig/openai/internal/type/converter.rbs. Please add matching singleton declarations with the(coerced value, nullable StandardError)tuple return, then rerun Sorbet/RBS validation and regenerate the release. The built 0.79.0 gem confirms the mismatch: the runtime method is present while neither declaration contains it. -
The 0.79.0 changelog lists commit
e0a4bc5twice for the same “Add new model identifiers and remove audit log source” change: once under Features and again under Bug Fixes. Please keep the entry once under the intended category and regenerate the release notes.
The remaining release metadata is internally consistent; the targeted 131-test/750-assertion release-delta suite, RuboCop (2,601 files), Sorbet, RBS (1,211 files), gem build/inspection, diff check, exact-head Ruby 3.3/3.4/4.0 CI, required CI, and CodeQL are otherwise clean.
4b5b5c7 to
02b100b
Compare
jbeckwith-oai
left a comment
There was a problem hiding this comment.
Both blockers from the previous release head remain unresolved:
-
OpenAI::Internal::Type::Converter.coerce_with_error is still shipped in lib/openai/internal/type/converter.rb and called across ArrayOf, HashOf, BaseModel, and Union, but it remains absent from both packaged declaration files: rbi/openai/internal/type/converter.rbi and sig/openai/internal/type/converter.rbs. Please add matching singleton declarations with the coerced-value / nullable StandardError tuple return, validate Sorbet and RBS, and regenerate the release.
-
The 0.79.0 changelog still lists commit e0a4bc5 twice for the same “Add new model identifiers and remove audit log source” change, once under Features and once under Bug Fixes. Please retain a single PR-linked entry under the intended category and regenerate the release notes.
The newly accumulated upload-metadata documentation is consistent with the runtime fallback filename/content types and FilePart escape hatch. The remaining version/package metadata, all 12 other user-facing release entries, complete v0.78.0 release delta, file thresholds, and diff hygiene look clean. Local 568-test/1,971-assertion suite, targeted nested-coercion tests, RuboCop, Sorbet, RBS, and 0.79.0 gem build/inspection pass; exact-head package, Ruby 3.3/3.4/4.0, required CI, and CodeQL checks are green.
fca6b46 to
8788fc6
Compare
jbeckwith-oai
left a comment
There was a problem hiding this comment.
Both previously reported release blockers remain unresolved on exact head 8788fc66189f4e417276d8a5c85d4feadb123842:
-
and directly called by ArrayOf/HashOf/BaseModel/Union, but both packaged declaration files still omit the public singleton method: and . This violates the repository cross-component visibility/declaration rule and leaves the runtime and type surfaces inconsistent. Add matching singleton declarations withOpenAI::Internal::Type::Converter.coerce_with_erroris still shipped attarget,value, andstateparameters and tuple returns[T.anything, T.nilable(StandardError)]/[top, StandardError?], run Sorbet/RBS, and regenerate the release. -
CHANGELOG.mdstill lists commite0a4bc5twice with identical text/hash under both Features and Bug Fixes:andLine 9 in 8788fc6
. Keep one entry, preferably the Bug Fixes entry linked to #360, and regenerate the release notes.Line 16 in 8788fc6
The newly accumulated Tapioca typing, root lint coverage, and nil-timeout changes are otherwise coherent, and release metadata is aligned. Local validation passed 169 tests / 901 assertions, RuboCop over 2,607 files, Sorbet, RBS validation over 1,211 files, gem build/package inspection, diff checks, and file-threshold checks. Exact-head Ruby-matrix CI, required CI, CodeQL, and 237/237 OkTest SDK tests are green.
8788fc6 to
f81ea9b
Compare
jbeckwith-oai
left a comment
There was a problem hiding this comment.
Three release blockers remain on exact head f81ea9b9770f85ef31b5719e3541f5a4f0fd94da:
-
The new purportedly safe info/error summaries disclose non-credential query values. Both completion and failure logs use
safe_path(@url), butsafe_pathpreserves every query value whose key does not match the credential regex. For example, the generated organization-users list acceptsemails, and an info/error log emits/v1/organization/users?emails%5B%5D=alice%40example.com; other generated query fields includeactor_emailsand user-providedname. That conflicts with the README description of:infoas a safe summary and its warning that sensitive-content disclosure is limited to debug diagnostics. Please make the non-debug path omit the query or redact every query value, keep selective query rendering in debug-onlysafe_url, and add info/error regression coverage with a PII query. -
The prior type-surface blocker remains. Runtime still ships public
Converter.coerce_with_error, called by four SDK components, but the packaged RBI and RBS still omit it. The same declarations typeCoerceState#erroras a class even though runtime initializes it toniland storesStandardErrorinstances. Add matching singleton declarations with the coerced-value / nullable-error tuple return and model the state member as nullableStandardError, then rerun both type validations and regenerate the release. -
CHANGELOG.md:10andCHANGELOG.md:17still list the samee0a4bc5change under both Features and Bug Fixes. Remove the unlinked Features duplicate and retain the complete PR-linked Bug Fixes entry.
The rest of the new observability delta is cohesive, version/package metadata is aligned, no file crossed 1,000 lines, and exact-head CI plus 237/237 OkTest cases are green. Local validation passed 136 targeted tests / 770 assertions, RuboCop across 2,611 files, Sorbet, all 1,212 RBS files, gem build/package inspection, syntax, and diff checks.
f81ea9b to
a00e645
Compare
jbeckwith-oai
left a comment
There was a problem hiding this comment.
Requesting changes on exact head a00e645f84178192a06417d3f2f7ff1365c3c6db after a full v0.78.0-to-v0.79.0 release-delta review.
-
High — keep query values out of default info/error logs.
Context#completedandrequest_failedlogsafe_path, but that helper preserves every query value not matched by the credential-key denylist. This includes generated filters such asemails,actor_emails, andname; an exact-head reproduction returned those PII/resource values while redacting onlyapi_key. The README calls info summaries safe and reserves its sensitive-content warning for debug, so ordinary production success and failure logs can persist customer data. Please makesafe_pathpath-only for info/error, keep sanitized query diagnostics confined to debugsafe_url, and add success/failure PII regressions. Expanding the denylist remains brittle. -
Medium — complete and correct the shipped Converter signatures.
Converter.coerce_with_erroris directly shared byBaseModel,ArrayOf,HashOf, andUnion, but neither packaged RBI nor RBS declares it. The runtimeCoerceState#error, RBI, and RBS also describe an error class even though runtime state starts as nil and stores exception instances. Please add matching singleton declarations returning a value plus nullableStandardError, and type the state as a nullableStandardErrorinstance across runtime/RBI/RBS (including the YARD option docs). -
Low — remove the duplicate release note. Changelog line 10 and line 17 list the same
e0a4bc5change under both Features and Bug Fixes. Keep the complete PR-linked Bug Fix entry and remove the duplicate; adjust generator inputs only if regeneration brings it back.
Validation otherwise looks healthy: full local suite 612 runs / 2,307 assertions; RuboCop clean across 2,611 files; Sorbet clean; 1,212 RBS files valid; gem builds; git diff --check passes; exact-head GitHub CI and OkTest 237/237 are green; version/manifest/README/lockfile align at 0.79.0; no file crossed the 1,000-line threshold.
a00e645 to
6c14d14
Compare
jbeckwith-oai
left a comment
There was a problem hiding this comment.
Requesting changes on exact head 6c14d142c3bb5366d6a6e0e822c60500fe0b88e7 after a full v0.78.0-to-v0.79.0 release review.
-
High — keep query values out of default info/error logs.
Context#completedandrequest_failedlogsafe_path, which preserves every query value outside a narrow credential-key denylist. An exact-head reproduction emittedemails,actor_emails, andnamewhile redacting onlyapi_key. Since README describes info summaries as safe and warns about sensitive content only for debug, ordinary success/failure logs can persist customer PII. Please makesafe_pathpath-only for info/error, keep sanitized query diagnostics confined to debugsafe_url, and add success/failure PII regressions. Expanding the denylist remains brittle. -
Medium — complete and correct the shipped Converter signatures.
Converter.coerce_with_erroris directly shared byBaseModel,ArrayOf,HashOf, andUnion, but neither packaged RBI nor RBS declares it. Runtime initializes the state error to nil and stores exception instances, while the runtime alias, RBI, and RBS describe an error class. Please add matching singleton declarations returning a value plus nullableStandardError, and type the state as a nullableStandardErrorinstance across runtime/RBI/RBS, including the YARD option docs. -
Low — remove the duplicate release note. Changelog line 10 and line 18 list the same
e0a4bc5change under Features and Bug Fixes. Keep the complete PR-linked Bug Fix entry and remove the duplicate; adjust release generation only if it reappears.
The new default_headers API looks sound: normalization/removal semantics, merge precedence, provider authentication, docs, RBI/RBS, and coverage align. Validation otherwise passes: targeted 114 runs / 675 assertions, diff and syntax checks, exact-head GitHub CI, and OkTest 237/237; release metadata aligns at 0.79.0 and no file crossed the 1,000-line threshold.
6c14d14 to
0e0bad2
Compare
0e0bad2 to
9a2e5ef
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9a2e5ef781
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
|
||
| * add HTTP response observability ([#365](https://github.com/openai/openai-ruby/issues/365)) ([48d36b7](https://github.com/openai/openai-ruby/commit/48d36b70883a446a8062dca50fbc2d419fbe1fb9)) | ||
| * add Tapioca typing for structured outputs ([#364](https://github.com/openai/openai-ruby/issues/364)) ([738e2b4](https://github.com/openai/openai-ruby/commit/738e2b4de4f991e594f9d319c4d17f0955cd8edd)) | ||
| * **api:** Add new model identifiers and remove audit log source ([e0a4bc5](https://github.com/openai/openai-ruby/commit/e0a4bc56d5280c45a12e44adc49b6c34e182b33f)) |
There was a problem hiding this comment.
Add migration guidance for the removed audit source
For users upgrading from 0.78.0 who read AuditLogListResponse::Data#source, e0a4bc5 removes the public accessor and its RBI/RBS types; VERSIONING.md classifies removals as breaking and says 0.x releases need migration guidance. This release note only states the removal, so those users have no upgrade path or replacement called out—please add a brief migration note, even if the guidance is that there is no replacement.
Useful? React with 👍 / 👎.
Automated Release PR
0.79.0 (2026-08-12)
Features
Bug Fixes
Chores
Documentation
This PR was generated with Release Please. See documentation.