Skip to content

fix(gapic-common): require grpc >= 1.83 for post-quantum key exchange - #73

Draft
torreypayne wants to merge 1 commit into
mainfrom
grpc-pqc-floor
Draft

torreypayne wants to merge 1 commit into
mainfrom
grpc-pqc-floor

Conversation

@torreypayne

@torreypayne torreypayne commented Sep 15, 2026

Copy link
Copy Markdown
Member

Raises the gapic-common gRPC floor from ~> 1.66 to ">= 1.83", "< 2.a" so every downstream generated Ruby client resolves a transport capable of post-quantum key exchange.

gRPC began defaulting to the X25519MLKEM768 hybrid key exchange in 1.83 (v1.83.0 release notes). The current floor lets a resolver select anything in 1.661.82, silently downgrading to classical-only cryptography with no signal to the caller and no way to detect it. The < 2.a bound matches this gemspec's convention (faraday, faraday-retry).

This executes a directive from the approved parent design, go/cloudsdk-pqc-ruby:

"We should update the minimal grpc gem version to be grpc ~> 1.83 for all libraries… The only potential work item left is to set up continuous PQC CI tests with Showcase."

Reviewer notes

  • Typed fix: deliberately. This is the only customer-facing change in the Ruby PQC effort and the only one that triggers a publication, so release-please needs to cut a patch release. chore: or build: would leave it unpublished.
  • The resolved version does not move. Gemfile.lock changes on the constraint line only; it already resolved to 1.83.0.
  • Risk: consumers pinned below grpc 1.83 cannot resolve the next gapic-common patch. No Ruby support is dropped: grpc 1.83.0 needs >= 3.1, this gem already requires >= 3.2.

toys ci on Ruby 4.0.5: rubocop clean, 308 runs / 0 failures, yardoc clean.


The companion Showcase conformance work is gapic-generator-ruby#1330#1331#1351#1352, decoupled so this release is not blocked on harness review.
Design: go/client-libraries:ruby-pqc

gRPC began defaulting to the X25519MLKEM768 hybrid post-quantum key
exchange in 1.83 (grpc/grpc#42560). The existing "~> 1.66" floor permits
a resolver to select any release in the 1.66-1.82 range, which silently
downgrades the transport to classical-only cryptography with no signal
to the caller and no way for them to detect it.

Raising the floor to ">= 1.83", "< 2.a" guarantees that every downstream
generated client resolves a PQC-capable gRPC transport. The upper bound
preserves the existing practice of excluding a future 2.x major.

The resolved version in Gemfile.lock is unchanged at 1.83.0; only the
declared constraint moves.
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.

1 participant