Skip to content

chore(deps-dev): bump the bundler-dependencies group across 1 directory with 3 updates - #321

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/bundler/bundler-dependencies-e5634c7705
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/bundler/bundler-dependencies-e5634c7705

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Bumps the bundler-dependencies group with 3 updates in the / directory: mcp, rubocop and webmock.

Updates mcp from 1.7.0 to 1.8.2

Release notes

Sourced from mcp's releases.

v1.8.2

This release finishes the encoding fixes of 1.8.1 on the client and the HTTP transport, which no longer fail a request or a stream on a frame or a reply they cannot encode. The Changed entry alters what a subscriptions/listen stream honors under the exceptions described in https://github.com/modelcontextprotocol/ruby-sdk/blob/HEAD/VERSIONING.md: a resources_subscribe_handler that raises for a URI now narrows the acknowledgement, and the handler runs for listen streams without a matching resources_unsubscribe_handler call.

Changed

  • Consult the resources_subscribe_handler for the resource URIs of a subscriptions/listen stream (#632)

Fixed

  • Strip stdio client frames as bytes (#627)
  • Skip a stdio ping whose id cannot be encoded (#628)
  • Answer an HTTP request whose reply cannot be generated with Internal error (#629)
  • Drop a buffered notification that cannot be generated (#630)
  • Report failed session notifications through the server configuration (#631)

v1.8.1

This release brings the server's JSON-RPC framing and capability advertisement, and the HTTP client's handling of an initialize answered over SSE, in line with the MCP specification. The Changed entries alter answers on the wire, as fixes of incorrect conformance under the exceptions described in https://github.com/modelcontextprotocol/ruby-sdk/blob/HEAD/VERSIONING.md. Only senders of null ids and client code that read the error event of a 4xx or 5xx SSE answer, which the client now raises as RequestHandlerError, have to change. A stdio server also survives a frame it cannot strip, parse or answer.

Changed

  • Refuse a request whose id is null and do not run a request method sent without an id (#612)
  • Leave the id out of an error response when the request id cannot be read (#615)
  • Return from initialize as soon as its SSE response arrives and raise on an error-status SSE answer in the HTTP client (#617)
  • Leave listChanged and subscribe out of a stateless server's initialize result (#620)

Fixed

  • Answer a method of an undeclared capability with Method not found (#611)
  • Accept any string as a request id (#613)
  • Ignore empty members of the Accept header (#616)
  • Keep Ruby 2.7 from warning about keywords in StdioTransport (#621)
  • Keep the stdio server running when a reply cannot be encoded (#623)
  • Treat a JSON key that is not valid UTF-8 as a parse error (#624)
  • Strip stdio frames as bytes (#625)

v1.8.0

This release adds OAuth 2.1 resource server support to StreamableHTTPTransport: bearer tokens are verified by a JWT or an RFC 7662 introspection verifier (or one of your own), requests without a valid token get RFC 6750 challenges, and a Rack middleware serves the RFC 9728 Protected Resource Metadata document; token issuance stays with an external authorization server. The bundled client transports now reject server messages that are not JSON-RPC 2.0, which rejects what earlier releases accepted and ships in a minor release under the exceptions described in https://github.com/modelcontextprotocol/ruby-sdk/blob/HEAD/VERSIONING.md: a server whose responses lack "jsonrpc": "2.0" has to send the member, since there is no opt-out.

Added

  • Add OAuth 2.1 resource server support (#545)
  • Add a scope selector for OAuth authorization-code clients (#579)

... (truncated)

Changelog

Sourced from mcp's changelog.

[1.8.2] - 2026-10-27

This release finishes the encoding fixes of 1.8.1 on the client and the HTTP transport, which no longer fail a request or a stream on a frame or a reply they cannot encode. The Changed entry alters what a subscriptions/listen stream honors under the exceptions described in https://github.com/modelcontextprotocol/ruby-sdk/blob/main/VERSIONING.md: a resources_subscribe_handler that raises for a URI now narrows the acknowledgement, and the handler runs for listen streams without a matching resources_unsubscribe_handler call.

Changed

  • Consult the resources_subscribe_handler for the resource URIs of a subscriptions/listen stream (#632)

Fixed

  • Strip stdio client frames as bytes (#627)
  • Skip a stdio ping whose id cannot be encoded (#628)
  • Answer an HTTP request whose reply cannot be generated with Internal error (#629)
  • Drop a buffered notification that cannot be generated (#630)
  • Report failed session notifications through the server configuration (#631)

[1.8.1] - 2026-10-21

This release brings the server's JSON-RPC framing and capability advertisement, and the HTTP client's handling of an initialize answered over SSE, in line with the MCP specification. The Changed entries alter answers on the wire, as fixes of incorrect conformance under the exceptions described in https://github.com/modelcontextprotocol/ruby-sdk/blob/main/VERSIONING.md. Only senders of null ids and client code that read the error event of a 4xx or 5xx SSE answer, which the client now raises as RequestHandlerError, have to change. A stdio server also survives a frame it cannot strip, parse or answer.

Changed

  • Refuse a request whose id is null and do not run a request method sent without an id (#612)
  • Leave the id out of an error response when the request id cannot be read (#615)
  • Return from initialize as soon as its SSE response arrives and raise on an error-status SSE answer in the HTTP client (#617)
  • Leave listChanged and subscribe out of a stateless server's initialize result (#620)

Fixed

  • Answer a method of an undeclared capability with Method not found (#611)
  • Accept any string as a request id (#613)
  • Ignore empty members of the Accept header (#616)
  • Keep Ruby 2.7 from warning about keywords in StdioTransport (#621)
  • Keep the stdio server running when a reply cannot be encoded (#623)
  • Treat a JSON key that is not valid UTF-8 as a parse error (#624)
  • Strip stdio frames as bytes (#625)

[1.8.0] - 2026-10-16

This release adds OAuth 2.1 resource server support to StreamableHTTPTransport: bearer tokens are verified by a JWT or an RFC 7662 introspection verifier (or one of your own), requests without a valid token get RFC 6750

... (truncated)

Commits
  • ac8e5af Merge pull request #634 from koic/release_1_8_2
  • f8fbeb7 Merge pull request #633 from koic/refine_the_token_endpoint_error_docs
  • ab55a8e Release 1.8.2
  • 26eabbc Merge pull request #632 from koic/authorize_the_resource_subscriptions_of_a_l...
  • de9d539 [Doc] Bound the token endpoint error docs to what sets the readers
  • fc41dae Merge pull request #631 from koic/report_failed_session_notifications_through...
  • 52edb18 Consult the resources_subscribe_handler for listen resource URIs
  • ec6501b Merge pull request #630 from koic/drop_a_buffered_notification_that_cannot_be...
  • 89772bf Drop a buffered notification that cannot be generated
  • a7bd967 Report failed session notifications through the server configuration
  • Additional commits viewable in compare view

Updates rubocop from 1.91.0 to 1.92.1

Release notes

Sourced from rubocop's releases.

RuboCop v1.92.1

Bug fixes

  • #16063: Fix an error for Layout/HashAlignment with a key spanning multiple lines. ([@​koic][])
  • #15776: Fix an error in server mode when the configuration file is missing or empty. ([@​MIbtehajNasar][])
  • #15939: Fix an error for Style/ClassAndModuleChildren when compacting a namespace that contains another compactable one. ([@​Starlexxx][])
  • #16047: Fix an error for Style/ClassMethodsDefinitions with a nested class << self. ([@​Starlexxx][])
  • #16041: Fix an error for Style/EmptyStringInsideInterpolation with nested conditionals. ([@​koic][])
  • #16067: Fix an error for Style/RedundantInterpolationUnfreeze with an unfrozen string interpolated into another one. ([@​Starlexxx][])
  • #16055: Fix an error for Style/RescueModifier with a rescue modifier in the rescue body of another one. ([@​Starlexxx][])
  • #15968: Fix an error when the target Ruby version lookup cannot list a directory for a gemspec or read a version file or lockfile, and stop the gemspec search at the project root. ([@​koic][])
  • #16073: Fix an incorrect autocorrect for Layout/ClassStructure with code after a heredoc. ([@​koic][])
  • #16026: Fix an incorrect autocorrect for Layout/DotPosition with a dot removed by another cop. ([@​koic][])
  • #16107: Fix an incorrect autocorrect for Layout/HeredocArgumentClosingParenthesis with Layout/MultilineMethodCallBraceLayout. ([@​koic][])
  • #16117: Fix an incorrect autocorrect for Layout/LineLength with an unparenthesized method definition. ([@​koic][])
  • #16061: Fix an incorrect autocorrect for Layout/MultilineHashBraceLayout with a nested literal. ([@​koic][])
  • #16033: Fix an incorrect autocorrect for Layout/MultilineMethodCallIndentation with a single-line block. ([@​koic][])
  • #16077: Fix an incorrect autocorrect for Layout/SingleLineBlockChain with Style/RedundantSort. ([@​koic][])
  • #16098: Fix an incorrect autocorrect for Lint/AmbiguousRegexpLiteral with a regexp hash key. ([@​koic][])
  • #16086: Fix an incorrect autocorrect for Lint/SymbolConversion with hash value omission. ([@​koic][])
  • #16099: Fix an incorrect autocorrect for Naming/RescuedExceptionsVariableName with Style/HashSyntax. ([@​koic][])
  • #16023: Fix an incorrect autocorrect for Style/AccessModifierDeclarations with Style/EndlessMethod. ([@​Starlexxx][])
  • #16024: Fix an incorrect autocorrect for Style/AccessModifierDeclarations with an endless method command body. ([@​Starlexxx][])
  • #16111: Fix an incorrect autocorrect for Style/AccessModifierDeclarations with an endless method with a do...end block body. ([@​koic][])
  • #16056: Fix an incorrect autocorrect for Style/AndOr with a safe navigation command call. ([@​Starlexxx][])
  • #16043: Fix an incorrect autocorrect for Style/AndOr with Style/ReturnNil. ([@​koic][])
  • #16020: Fix an incorrect autocorrect for Style/ArgumentsForwarding when another call forwards anonymous arguments without the block. ([@​Starlexxx][])
  • #16038: Fix an incorrect autocorrect for Style/ArgumentsForwarding with index assignment and setter methods. ([@​koic][])
  • #15067: Fix an incorrect autocorrect for Style/CollectionQuerying when count is used without a block. ([@​Starlexxx][], [@​wwenrr][])
  • #16032: Fix an incorrect autocorrect for Style/CombinableLoops with Layout/BlockEndNewline. ([@​Starlexxx][])
  • #16072: Fix an incorrect autocorrect for Style/CombinableLoops with Layout/RedundantLineBreak. ([@​koic][])
  • #16036: Fix an incorrect autocorrect for Style/ConcatArrayLiterals with a multiline call without parentheses. ([@​koic][])
  • #16100: Fix an incorrect autocorrect for Style/EmptyStringInsideInterpolation with a command call. ([@​koic][])
  • #16023: Fix an incorrect autocorrect for Style/EndlessMethod with a command body in a method definition passed as an argument. ([@​Starlexxx][])
  • #16110: Fix an incorrect autocorrect for Style/EndlessMethod with a do...end block body in a method definition passed as an argument. ([@​koic][])
  • #16042: Fix an incorrect autocorrect for Style/EndlessMethod with a negated command call. ([@​koic][])
  • #16029: Fix an incorrect autocorrect for Style/EndlessMethod with Style/GuardClause. ([@​koic][])
  • #16058: Fix an incorrect autocorrect for Style/EndlessMethod with Style/RaiseArgs. ([@​Starlexxx][])
  • #16045: Fix an incorrect autocorrect for Style/For with a numbered or it block. ([@​koic][])
  • #16046: Fix an incorrect autocorrect for Style/For with block parameters invalid as loop variables. ([@​koic][])
  • #16044: Fix an incorrect autocorrect for Style/For with Style/ItBlockParameter. ([@​koic][])
  • #16031: Fix an incorrect autocorrect for Style/GuardClause with a heredoc in a multiline guard clause. ([@​Starlexxx][])
  • #16031: Fix an incorrect autocorrect for Style/GuardClause with a heredoc in the kept branch. ([@​Starlexxx][])
  • #16021: Fix an incorrect autocorrect for Style/HashAsLastArrayItem with Style/TrailingCommaInArrayLiteral. ([@​Starlexxx][])
  • #16027: Fix an incorrect autocorrect for Style/IfUnlessModifier with a heredoc in the condition. ([@​koic][])
  • #16025: Fix an incorrect autocorrect for Style/Lambda with extra spacing before the block. ([@​koic][])
  • #16054: Fix an incorrect autocorrect for Style/MethodCallWithArgsParentheses with a trailing comma. ([@​koic][])
  • #16080: Fix an incorrect autocorrect for Style/MethodCallWithArgsParentheses with a parenthesized argument. ([@​koic][])
  • #16074: Fix an incorrect autocorrect for Style/MethodCallWithArgsParentheses with an assignment used as an argument. ([@​koic][])
  • #16118: Fix an incorrect autocorrect for Style/MethodDefParentheses with Layout/LineLength. ([@​koic][])

... (truncated)

Changelog

Sourced from rubocop's changelog.

1.92.1 (2026-10-22)

Bug fixes

  • #16063: Fix an error for Layout/HashAlignment with a key spanning multiple lines. ([@​koic][])
  • #15776: Fix an error in server mode when the configuration file is missing or empty. ([@​MIbtehajNasar][])
  • #15939: Fix an error for Style/ClassAndModuleChildren when compacting a namespace that contains another compactable one. ([@​Starlexxx][])
  • #16047: Fix an error for Style/ClassMethodsDefinitions with a nested class << self. ([@​Starlexxx][])
  • #16041: Fix an error for Style/EmptyStringInsideInterpolation with nested conditionals. ([@​koic][])
  • #16067: Fix an error for Style/RedundantInterpolationUnfreeze with an unfrozen string interpolated into another one. ([@​Starlexxx][])
  • #16055: Fix an error for Style/RescueModifier with a rescue modifier in the rescue body of another one. ([@​Starlexxx][])
  • #15968: Fix an error when the target Ruby version lookup cannot list a directory for a gemspec or read a version file or lockfile, and stop the gemspec search at the project root. ([@​koic][])
  • #16073: Fix an incorrect autocorrect for Layout/ClassStructure with code after a heredoc. ([@​koic][])
  • #16026: Fix an incorrect autocorrect for Layout/DotPosition with a dot removed by another cop. ([@​koic][])
  • #16107: Fix an incorrect autocorrect for Layout/HeredocArgumentClosingParenthesis with Layout/MultilineMethodCallBraceLayout. ([@​koic][])
  • #16117: Fix an incorrect autocorrect for Layout/LineLength with an unparenthesized method definition. ([@​koic][])
  • #16061: Fix an incorrect autocorrect for Layout/MultilineHashBraceLayout with a nested literal. ([@​koic][])
  • #16033: Fix an incorrect autocorrect for Layout/MultilineMethodCallIndentation with a single-line block. ([@​koic][])
  • #16077: Fix an incorrect autocorrect for Layout/SingleLineBlockChain with Style/RedundantSort. ([@​koic][])
  • #16098: Fix an incorrect autocorrect for Lint/AmbiguousRegexpLiteral with a regexp hash key. ([@​koic][])
  • #16086: Fix an incorrect autocorrect for Lint/SymbolConversion with hash value omission. ([@​koic][])
  • #16099: Fix an incorrect autocorrect for Naming/RescuedExceptionsVariableName with Style/HashSyntax. ([@​koic][])
  • #16023: Fix an incorrect autocorrect for Style/AccessModifierDeclarations with Style/EndlessMethod. ([@​Starlexxx][])
  • #16024: Fix an incorrect autocorrect for Style/AccessModifierDeclarations with an endless method command body. ([@​Starlexxx][])
  • #16111: Fix an incorrect autocorrect for Style/AccessModifierDeclarations with an endless method with a do...end block body. ([@​koic][])
  • #16056: Fix an incorrect autocorrect for Style/AndOr with a safe navigation command call. ([@​Starlexxx][])
  • #16043: Fix an incorrect autocorrect for Style/AndOr with Style/ReturnNil. ([@​koic][])
  • #16020: Fix an incorrect autocorrect for Style/ArgumentsForwarding when another call forwards anonymous arguments without the block. ([@​Starlexxx][])
  • #16038: Fix an incorrect autocorrect for Style/ArgumentsForwarding with index assignment and setter methods. ([@​koic][])
  • #15067: Fix an incorrect autocorrect for Style/CollectionQuerying when count is used without a block. ([@​Starlexxx][], [@​wwenrr][])
  • #16032: Fix an incorrect autocorrect for Style/CombinableLoops with Layout/BlockEndNewline. ([@​Starlexxx][])
  • #16072: Fix an incorrect autocorrect for Style/CombinableLoops with Layout/RedundantLineBreak. ([@​koic][])
  • #16036: Fix an incorrect autocorrect for Style/ConcatArrayLiterals with a multiline call without parentheses. ([@​koic][])
  • #16100: Fix an incorrect autocorrect for Style/EmptyStringInsideInterpolation with a command call. ([@​koic][])
  • #16023: Fix an incorrect autocorrect for Style/EndlessMethod with a command body in a method definition passed as an argument. ([@​Starlexxx][])
  • #16110: Fix an incorrect autocorrect for Style/EndlessMethod with a do...end block body in a method definition passed as an argument. ([@​koic][])
  • #16042: Fix an incorrect autocorrect for Style/EndlessMethod with a negated command call. ([@​koic][])
  • #16029: Fix an incorrect autocorrect for Style/EndlessMethod with Style/GuardClause. ([@​koic][])
  • #16058: Fix an incorrect autocorrect for Style/EndlessMethod with Style/RaiseArgs. ([@​Starlexxx][])
  • #16045: Fix an incorrect autocorrect for Style/For with a numbered or it block. ([@​koic][])
  • #16046: Fix an incorrect autocorrect for Style/For with block parameters invalid as loop variables. ([@​koic][])
  • #16044: Fix an incorrect autocorrect for Style/For with Style/ItBlockParameter. ([@​koic][])
  • #16031: Fix an incorrect autocorrect for Style/GuardClause with a heredoc in a multiline guard clause. ([@​Starlexxx][])
  • #16031: Fix an incorrect autocorrect for Style/GuardClause with a heredoc in the kept branch. ([@​Starlexxx][])
  • #16021: Fix an incorrect autocorrect for Style/HashAsLastArrayItem with Style/TrailingCommaInArrayLiteral. ([@​Starlexxx][])
  • #16027: Fix an incorrect autocorrect for Style/IfUnlessModifier with a heredoc in the condition. ([@​koic][])
  • #16025: Fix an incorrect autocorrect for Style/Lambda with extra spacing before the block. ([@​koic][])
  • #16054: Fix an incorrect autocorrect for Style/MethodCallWithArgsParentheses with a trailing comma. ([@​koic][])
  • #16080: Fix an incorrect autocorrect for Style/MethodCallWithArgsParentheses with a parenthesized argument. ([@​koic][])
  • #16074: Fix an incorrect autocorrect for Style/MethodCallWithArgsParentheses with an assignment used as an argument. ([@​koic][])

... (truncated)

Commits
  • aa228eb Cut 1.92.1
  • 32be1f5 Update Changelog
  • 3b48d7f Merge pull request #16122 from koic/fix_false_positives_in_style_it_block_par...
  • b40eece Merge pull request #16131 from koic/fix_badge_equality_hash_collision
  • 652f167 Fix Badge equality treating hash collisions as equal badges
  • 45bc56c Merge pull request #16121 from koic/fix_false_positives_in_style_it_block_par...
  • 88a4008 Merge pull request #16118 from koic/fix_an_incorrect_autocorrect_for_style_me...
  • e8026a4 Merge pull request #16117 from koic/fix_an_incorrect_autocorrect_for_layout_l...
  • 57e64d0 Merge pull request #16109 from Starlexxx/fix-parentheses-around-condition-masgn
  • 68f505e [Fix #16119] Fix false positives in Style/ItBlockParameter when a local var...
  • Additional commits viewable in compare view

Updates webmock from 3.26.4 to 3.34.0

Release notes

Sourced from webmock's releases.

3.34.0

  • Allow with(query: :any) to match any query string (#1099)

    stub_request(:get, "www.example.com").with(query: :any) matches requests with any query string, or none. RSpec's anything works the same way. Previously, this raised NoMethodError, and you had to write with(query: hash_including({})).

    Use a URL without query parameters when passing query: :any. Otherwise, WebMock raises ArgumentError.

    Thanks to nightpool

  • Raise a clear ArgumentError for an unsupported query option

    Previously, a value such as with(query: :all) raised NoMethodError (undefined method split). The new error lists the supported values.

  • Show anything for keys given without a value to hash_including or hash_excluding outside RSpec

    Previously, with Minitest or Test::Unit, messages showed #<WebMock::Matchers::AnyArgMatcher:0x...>, for example for with(query: hash_including(:a)). RSpec's own matchers already showed anything.

  • Provide HTTP_HOST to to_rack apps when the client has not supplied a Host header (#1084)

    Previously, requests from some HTTP clients reached the Rack app without HTTP_HOST. This caused host checks such as Sinatra's HostAuthorization to see an empty host.

    WebMock now fills in the host from the request URL, including the port when it is not the default. An explicit Host header is preserved.

    Thanks to Benoit Tigeot

  • Fix Rack compatibility for to_rack apps

    The request environment now passes Rack::Lint.

    SERVER_PORT and CONTENT_LENGTH are now strings. If your app or tests read them directly, use string comparisons, such as env['SERVER_PORT'] == "80". The environment also includes SERVER_PROTOCOL.

    CONTENT_TYPE is omitted when the request has no content type. The Content-Length header is passed only as CONTENT_LENGTH, without an extra HTTP_CONTENT_LENGTH entry. Transfer-Encoding is removed because the body has already been decoded.

    Repeated header values are joined into one string. Header values and the body read from rack.input now use binary (ASCII-8BIT) strings.

3.33.0

  • Return effective_url as a String for stubbed Typhoeus responses (#869)

    Previously, this was an Addressable::URI. If your code calls methods such as effective_url.host, parse the returned string into a URI first.

    The URL keeps the request's port, query order and encoding. It follows curl's formatting: for example, http://example.com:80 becomes http://example.com:80/. Stubbed timeouts now provide an effective_url too.

    Thanks to Tom Brammar

  • Fix incorrect removal of default ports from displayed URLs

    WebMock could accidentally remove :80 or :443 from a URL's path or query. For example, an error message could show /foo/bar instead of /foo:80/bar.

    Only the host's default port is now removed. This also works when the port is immediately followed by a query string, as in http://example.com:80?a=b.

... (truncated)

Changelog

Sourced from webmock's changelog.

3.34.0

  • Allow with(query: :any) to match any query string (#1099)

    stub_request(:get, "www.example.com").with(query: :any) matches requests with any query string, or none. RSpec's anything works the same way. Previously, this raised NoMethodError, and you had to write with(query: hash_including({})).

    Use a URL without query parameters when passing query: :any. Otherwise, WebMock raises ArgumentError.

    Thanks to nightpool

  • Raise a clear ArgumentError for an unsupported query option

    Previously, a value such as with(query: :all) raised NoMethodError (undefined method split). The new error lists the supported values.

  • Show anything for keys given without a value to hash_including or hash_excluding outside RSpec

    Previously, with Minitest or Test::Unit, messages showed #<WebMock::Matchers::AnyArgMatcher:0x...>, for example for with(query: hash_including(:a)). RSpec's own matchers already showed anything.

  • Provide HTTP_HOST to to_rack apps when the client has not supplied a Host header (#1084)

    Previously, requests from some HTTP clients reached the Rack app without HTTP_HOST. This caused host checks such as Sinatra's HostAuthorization to see an empty host.

    WebMock now fills in the host from the request URL, including the port when it is not the default. An explicit Host header is preserved.

    Thanks to Benoit Tigeot

  • Fix Rack compatibility for to_rack apps

    The request environment now passes Rack::Lint.

    SERVER_PORT and CONTENT_LENGTH are now strings. If your app or tests read them directly, use string comparisons, such as env['SERVER_PORT'] == "80". The environment also includes SERVER_PROTOCOL.

    CONTENT_TYPE is omitted when the request has no content type. The Content-Length header is passed only as CONTENT_LENGTH, without an extra HTTP_CONTENT_LENGTH entry. Transfer-Encoding is removed because the body has already been decoded.

    Repeated header values are joined into one string. Header values and the body read from rack.input now use binary (ASCII-8BIT) strings.

3.33.0

  • Return effective_url as a String for stubbed Typhoeus responses (#869)

    Previously, this was an Addressable::URI. If your code calls methods such as effective_url.host, parse the returned string into a URI first.

    The URL keeps the request's port, query order and encoding. It follows curl's formatting: for example, http://example.com:80 becomes http://example.com:80/. Stubbed timeouts now provide an effective_url too.

    Thanks to Tom Brammar

  • Fix incorrect removal of default ports from displayed URLs

    WebMock could accidentally remove :80 or :443 from a URL's path or query. For example, an error message could show /foo/bar instead of /foo:80/bar.

... (truncated)

Commits
  • 11392e4 Version 3.34.0
  • eabc151 Close the gaps a review found in the Rack env
  • 38f08be Make the Rack env for to_rack apps follow the Rack spec
  • 732328b Tidy the Rack host fallback and its specs
  • 3d831ce Set HTTP_HOST in the Rack env instead of the Net::HTTP signature
  • aa71fc1 Merge pull request #1084 from benoittgt/prevent-empty-host
  • 5fbb394 Reject query :any with a URI query and accept anything matchers
  • d94e918 Reject unsupported query options and describe :any as anything
  • 0b56b62 Merge pull request #1099 from nightpool/add-any-query-option
  • 78d1078 Version 3.33.0
  • Additional commits viewable in compare view

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file ruby Pull requests that update ruby code labels Oct 28, 2026
@dependabot
dependabot Bot requested a review from a team as a code owner October 28, 2026 18:23
@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

posthog-ruby-async Compliance Report

Date: 2026-11-05T06:34:55.264565+00:00
Duration: 98196ms

⚠️ Some Tests Failed

46/47 tests passed, 1 failed


Capture Tests

✅ 30/30 tests passed

View Details
Test Status Duration
Format Validation.Event Has Required Fields ✅ 107ms
Format Validation.Event Has Uuid ✅ 107ms
Format Validation.Event Has Lib Properties ✅ 105ms
Format Validation.Distinct Id Is String ✅ 105ms
Format Validation.Token Is Present ✅ 105ms
Format Validation.Custom Properties Preserved ✅ 107ms
Format Validation.Event Has Timestamp ✅ 106ms
Format Validation.Non Utc Event Timestamp Is Converted To Utc ✅ 107ms
Retry Behavior.Retries On 503 ✅ 5313ms
Retry Behavior.Does Not Retry On 400 ✅ 2107ms
Retry Behavior.Does Not Retry On 401 ✅ 2108ms
Retry Behavior.Respects Retry After Header ✅ 8115ms
Retry Behavior.Implements Backoff ✅ 15622ms
Retry Behavior.Retries On 500 ✅ 5211ms
Retry Behavior.Retries On 502 ✅ 5211ms
Retry Behavior.Retries On 504 ✅ 5211ms
Retry Behavior.Max Retries Respected ✅ 15510ms
Deduplication.Generates Unique Uuids ✅ 110ms
Deduplication.Preserves Uuid On Retry ✅ 5210ms
Deduplication.Preserves Uuid And Timestamp On Retry ✅ 10312ms
Deduplication.Preserves Uuid And Timestamp On Batch Retry ✅ 5213ms
Deduplication.No Duplicate Events In Batch ✅ 109ms
Deduplication.Different Events Have Different Uuids ✅ 106ms
Compression.Sends Gzip When Enabled ✅ 106ms
Batch Format.Uses Proper Batch Structure ✅ 105ms
Batch Format.Flush With No Events Sends Nothing ✅ 4ms
Batch Format.Multiple Events Batched Together ✅ 108ms
Error Handling.Does Not Retry On 403 ✅ 2107ms
Error Handling.Does Not Retry On 413 ✅ 2108ms
Error Handling.Retries On 408 ✅ 5211ms

Feature_Flags Tests

⚠️ 16/17 tests passed, 1 failed

View Details
Test Status Duration
Request Payload.Request With Person Properties Device Id ✅ 106ms
Request Payload.Flags Request Uses V2 Query Param ✅ 108ms
Request Payload.Flags Request Hits Flags Path Not Decide ✅ 108ms
Request Payload.Flags Request Omits Authorization Header ✅ 108ms
Request Payload.Token In Flags Body Matches Init ✅ 106ms
Request Payload.Groups Round Trip ✅ 106ms
Request Payload.Groups Default To Empty Object ✅ 106ms
Request Payload.Disable Geoip False Propagates As Geoip Disable False ✅ 106ms
Request Payload.Disable Geoip Omitted Defaults To False ❌ 106ms
Request Payload.Flag Keys To Evaluate Contains Only Requested Key ✅ 106ms
Request Lifecycle.No Flags Request On Init Alone ✅ 3ms
Request Lifecycle.No Flags Request On Normal Capture ✅ 104ms
Request Lifecycle.Two Flag Calls Produce Two Remote Requests ✅ 109ms
Request Lifecycle.Mock Response Value Is Returned To Caller ✅ 105ms
Retry Behavior.Retries Flags On 502 ✅ 209ms
Retry Behavior.Retries Flags On 504 ✅ 208ms
Side Effect Events.Get Feature Flag Captures Feature Flag Called Event ✅ 108ms

Failures

request_payload.disable_geoip_omitted_defaults_to_false

Field 'geoip_disable' not found in /flags request body at path 'geoip_disable'. Available keys: ['distinct_id', 'groups', 'person_properties', 'group_properties', 'flag_keys_to_evaluate', 'token']

@marandaneto marandaneto left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Automated advisory code review.

Comment thread Gemfile.lock
rdoc (>= 4.0.0)
reline (>= 0.4.2)
json (2.21.2)
json (3.1.0)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

blocking: JSON 3 breaks the locked ActiveSupport serializer — The transitive JSON upgrade to 3.1.0 is incompatible with the still-locked ActiveSupport 7.2.3.1: its encoder calls JSON.generate(..., quirks_mode: true), but JSON 3 rejects that option. Since spec_helper.rb loads active_support/all, even appending a plain hash to MessageBatch now raises JSONGenerationError, breaking existing batching, capture, and transport tests. Keep the resolved JSON/ActiveSupport combination compatible in this dependency update. Reproduction: reproduced — bundle exec rspec spec/posthog/message_batch_spec.rb:10 fails on the reviewed head with Serialization error: unknown keyword: quirks_mode, passes on the exact merge-base, and reverting only JSON restores all 91 focused examples.

Comment thread Gemfile Outdated
gem 'rake', '~> 13.4.2'
gem 'rspec', '~> 3.13'
gem 'rubocop', '~> 1.91.0'
gem 'rubocop', '~> 1.92.0'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

blocking: Update the optional bundle lockfile with the shared RuboCop constraint — gemfiles/otel.gemfile evaluates this Gemfile, but its committed lockfile still requires and resolves RuboCop ~> 1.91.0. Raising the shared constraint to ~> 1.92.0 without updating that lockfile makes frozen installations fail before tests start. Both logs-integration CI jobs use this optional bundle with ruby/setup-ruby bundler-cache, which enables deployment mode when the lockfile exists. Reproduction: reproduced — BUNDLE_FROZEN=true BUNDLE_GEMFILE=gemfiles/otel.gemfile bundle install --local exits 16 on the reviewed head with the RuboCop constraint mismatch and exits 0 on the exact merge-base with the same dependency cache.

@marandaneto
marandaneto requested a review from a team October 30, 2026 13:25
@dependabot
dependabot Bot force-pushed the dependabot/bundler/bundler-dependencies-e5634c7705 branch from 389b912 to bc9dd68 Compare November 4, 2026 18:23
@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

posthog-ruby-sync Compliance Report

Date: 2026-11-05T06:34:08.583104+00:00
Duration: 55760ms

⚠️ Some Tests Failed

39/47 tests passed, 8 failed


Capture Tests

⚠️ 23/30 tests passed, 7 failed

View Details
Test Status Duration
Format Validation.Event Has Required Fields ✅ 7ms
Format Validation.Event Has Uuid ✅ 4ms
Format Validation.Event Has Lib Properties ✅ 7ms
Format Validation.Distinct Id Is String ✅ 3ms
Format Validation.Token Is Present ✅ 4ms
Format Validation.Custom Properties Preserved ✅ 4ms
Format Validation.Event Has Timestamp ✅ 7ms
Format Validation.Non Utc Event Timestamp Is Converted To Utc ✅ 4ms
Retry Behavior.Retries On 503 ✅ 5296ms
Retry Behavior.Does Not Retry On 400 ❌ 6ms
Retry Behavior.Does Not Retry On 401 ❌ 4ms
Retry Behavior.Respects Retry After Header ✅ 8012ms
Retry Behavior.Implements Backoff ❌ 333ms
Retry Behavior.Retries On 500 ✅ 5110ms
Retry Behavior.Retries On 502 ✅ 5162ms
Retry Behavior.Retries On 504 ✅ 5151ms
Retry Behavior.Max Retries Respected ❌ 504ms
Deduplication.Generates Unique Uuids ✅ 13ms
Deduplication.Preserves Uuid On Retry ✅ 5114ms
Deduplication.Preserves Uuid And Timestamp On Retry ✅ 10265ms
Deduplication.Preserves Uuid And Timestamp On Batch Retry ✅ 5117ms
Deduplication.No Duplicate Events In Batch ✅ 13ms
Deduplication.Different Events Have Different Uuids ✅ 5ms
Compression.Sends Gzip When Enabled ✅ 4ms
Batch Format.Uses Proper Batch Structure ✅ 4ms
Batch Format.Flush With No Events Sends Nothing ✅ 2ms
Batch Format.Multiple Events Batched Together ❌ 11ms
Error Handling.Does Not Retry On 403 ❌ 3ms
Error Handling.Does Not Retry On 413 ❌ 3ms
Error Handling.Retries On 408 ✅ 5110ms

Failures

retry_behavior.does_not_retry_on_400

500, message='Internal Server Error', url='http://sdk-adapter:8080/capture'

retry_behavior.does_not_retry_on_401

500, message='Internal Server Error', url='http://sdk-adapter:8080/capture'

retry_behavior.implements_backoff

500, message='Internal Server Error', url='http://sdk-adapter:8080/capture'

retry_behavior.max_retries_respected

500, message='Internal Server Error', url='http://sdk-adapter:8080/capture'

batch_format.multiple_events_batched_together

Expected 1 requests, got 5

error_handling.does_not_retry_on_403

500, message='Internal Server Error', url='http://sdk-adapter:8080/capture'

error_handling.does_not_retry_on_413

500, message='Internal Server Error', url='http://sdk-adapter:8080/capture'

Feature_Flags Tests

⚠️ 16/17 tests passed, 1 failed

View Details
Test Status Duration
Request Payload.Request With Person Properties Device Id ✅ 7ms
Request Payload.Flags Request Uses V2 Query Param ✅ 4ms
Request Payload.Flags Request Hits Flags Path Not Decide ✅ 7ms
Request Payload.Flags Request Omits Authorization Header ✅ 5ms
Request Payload.Token In Flags Body Matches Init ✅ 5ms
Request Payload.Groups Round Trip ✅ 5ms
Request Payload.Groups Default To Empty Object ✅ 4ms
Request Payload.Disable Geoip False Propagates As Geoip Disable False ✅ 4ms
Request Payload.Disable Geoip Omitted Defaults To False ❌ 4ms
Request Payload.Flag Keys To Evaluate Contains Only Requested Key ✅ 4ms
Request Lifecycle.No Flags Request On Init Alone ✅ 2ms
Request Lifecycle.No Flags Request On Normal Capture ✅ 3ms
Request Lifecycle.Two Flag Calls Produce Two Remote Requests ✅ 6ms
Request Lifecycle.Mock Response Value Is Returned To Caller ✅ 5ms
Retry Behavior.Retries Flags On 502 ✅ 107ms
Retry Behavior.Retries Flags On 504 ✅ 150ms
Side Effect Events.Get Feature Flag Captures Feature Flag Called Event ✅ 5ms

Failures

request_payload.disable_geoip_omitted_defaults_to_false

Field 'geoip_disable' not found in /flags request body at path 'geoip_disable'. Available keys: ['distinct_id', 'groups', 'person_properties', 'group_properties', 'flag_keys_to_evaluate', 'token']

…ry with 3 updates

Bumps the bundler-dependencies group with 3 updates in the / directory: [mcp](https://github.com/modelcontextprotocol/ruby-sdk), [rubocop](https://github.com/rubocop/rubocop) and [webmock](https://github.com/bblimke/webmock).


Updates `mcp` from 1.7.0 to 1.8.2
- [Release notes](https://github.com/modelcontextprotocol/ruby-sdk/releases)
- [Changelog](https://github.com/modelcontextprotocol/ruby-sdk/blob/main/CHANGELOG.md)
- [Commits](modelcontextprotocol/ruby-sdk@v1.7.0...v1.8.2)

Updates `rubocop` from 1.91.0 to 1.92.1
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](rubocop/rubocop@v1.91.0...v1.92.1)

Updates `webmock` from 3.26.4 to 3.34.0
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](bblimke/webmock@v3.26.4...v3.34.0)

---
updated-dependencies:
- dependency-name: mcp
  dependency-version: 1.8.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: bundler-dependencies
- dependency-name: rubocop
  dependency-version: 1.92.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: bundler-dependencies
- dependency-name: webmock
  dependency-version: 3.34.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: bundler-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/bundler/bundler-dependencies-e5634c7705 branch from bc9dd68 to e36a7ef Compare November 5, 2026 06:32
@github-actions

github-actions Bot commented Nov 5, 2026

Copy link
Copy Markdown

SDK performance: posthog-ruby

Benchmarks completed. No changes flagged for review.

Flags require at least a 5% change in the median and all six pairs agreeing on direction. This is a noise filter, not proof of a performance change or a CI gate.

View all results
Test Measurement Before PR With PR Change Assessment
Capture and deliver events (32-byte payload, burst)
Shard: capture
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Capture and deliver events (32-byte payload, steady)
Shard: capture
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Queue an event (32-byte payload)
Shard: capture
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Background serialization has no public enqueue completion boundary; use completed-delivery workloads for process-wide allocation counts.​; head:​ Background serialization has no public enqueue completion boundary; use completed-delivery workloads for process-wide allocation counts.​
Queue an event (32-byte payload)
Shard: capture
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Background serialization has no public enqueue completion boundary; use completed-delivery workloads for process-wide allocation counts.​; head:​ Background serialization has no public enqueue completion boundary; use completed-delivery workloads for process-wide allocation counts.​
Queue an event (4,096-byte payload)
Shard: capture
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Background serialization has no public enqueue completion boundary; use completed-delivery workloads for process-wide allocation counts.​; head:​ Background serialization has no public enqueue completion boundary; use completed-delivery workloads for process-wide allocation counts.​
Queue an event (4,096-byte payload)
Shard: capture
Allocations per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Background serialization has no public enqueue completion boundary; use completed-delivery workloads for process-wide allocation counts.​; head:​ Background serialization has no public enqueue completion boundary; use completed-delivery workloads for process-wide allocation counts.​
Evaluate all 10 flags
Shard: flags-scaling
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Evaluate all 100 flags
Shard: flags-scaling
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Evaluate all 1,000 flags
Shard: flags-scaling
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Evaluate one boolean flag
Shard: flags-single
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Evaluate a cohort-filtered flag
Shard: flags-single
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Evaluate a flag (early match)
Shard: flags-single
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Evaluate a flag (late match)
Shard: flags-single
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Evaluate a flag (no match)
Shard: flags-single
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Evaluate a property-filtered flag
Shard: flags-single
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Evaluate a regex-filtered flag
Shard: flags-single
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Evaluate a rollout flag
Shard: flags-single
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Evaluate a multivariate flag
Shard: flags-single
Allocated memory per operation — — — unavailable; base:​ unsupported; head:​ unsupported; base:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​; head:​ Ruby has no cumulative allocated-byte counter here; retained ObjectSpace bytes are not allocation volume.​
Capture and deliver events (32-byte payload, burst)
Shard: capture
Allocations per operation 56.27 count/op 56.27 count/op No observed change Not flagged
Capture and deliver events (32-byte payload, burst)
Shard: capture
Time per operation 108.44 µs/op 108.29 µs/op 0.1% less time Not flagged
Capture and deliver events (32-byte payload, burst)
Shard: capture
Idle process memory (RSS) 28.27 MiB 28.28 MiB <0.1% more memory Not flagged
Capture and deliver events (32-byte payload, burst)
Shard: capture
Observed peak process memory (RSS) 31.1 MiB 31.11 MiB <0.1% more memory Not flagged
Capture and deliver events (32-byte payload, burst)
Shard: capture
Managed heap after settling 5.26 MiB 5.26 MiB <0.1% more memory Not flagged
Capture and deliver events (32-byte payload, burst)
Shard: capture
Process memory after settling (RSS) 30.33 MiB 30.34 MiB <0.1% more memory Not flagged
Capture and deliver events (32-byte payload, burst)
Shard: capture
Process CPU time per operation 19.27 µs/op 18.64 µs/op 3.3% less time Not flagged
Capture and deliver events (32-byte payload, burst)
Shard: capture
Lifetime peak process memory (RSS) 30.88 MiB 30.95 MiB 0.2% more memory Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Allocations per operation 58.66 count/op 58.66 count/op No observed change Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Time per operation 108.27 µs/op 108.18 µs/op <0.1% less time Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Idle process memory (RSS) 33.17 MiB 33.18 MiB <0.1% more memory Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Observed peak process memory (RSS) 41.75 MiB 41.72 MiB <0.1% less memory Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Managed heap after settling 9.12 MiB 9.12 MiB <0.1% less memory Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Process memory after settling (RSS) 39.52 MiB 38.66 MiB 2.2% less memory Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Process CPU time per operation 27.15 µs/op 26.9 µs/op 0.9% less time Not flagged
Capture and deliver events (4,096-byte payload, burst)
Shard: capture
Lifetime peak process memory (RSS) 41.67 MiB 41.63 MiB <0.1% less memory Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Allocations per operation 58.69 count/op 58.69 count/op No observed change Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Time per operation 1.01 ms/op 1.01 ms/op <0.1% more time Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Idle process memory (RSS) 28.19 MiB 28.2 MiB <0.1% more memory Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Observed peak process memory (RSS) 30.28 MiB 30.26 MiB <0.1% less memory Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Managed heap after settling 5.26 MiB 5.26 MiB No observed change Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Process memory after settling (RSS) 30.28 MiB 30.26 MiB <0.1% less memory Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Process CPU time per operation 28.08 µs/op 28.48 µs/op 1.4% more time Not flagged
Capture and deliver events (32-byte payload, steady)
Shard: capture
Lifetime peak process memory (RSS) 30.28 MiB 30.26 MiB <0.1% less memory Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Allocations per operation 58.69 count/op 58.69 count/op No observed change Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Time per operation 1.01 ms/op 1.01 ms/op <0.1% less time Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Idle process memory (RSS) 33.03 MiB 33.02 MiB <0.1% less memory Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Observed peak process memory (RSS) 41.03 MiB 41.03 MiB <0.1% more memory Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Managed heap after settling 9.12 MiB 9.12 MiB <0.1% more memory Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Process memory after settling (RSS) 39.05 MiB 39.09 MiB 0.1% more memory Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Process CPU time per operation 34.24 µs/op 34.38 µs/op 0.4% more time Not flagged
Capture and deliver events (4,096-byte payload, steady)
Shard: capture
Lifetime peak process memory (RSS) 41 MiB 40.97 MiB <0.1% less memory Not flagged
Queue an event (32-byte payload)
Shard: capture
Caller-thread CPU time per operation 7.46 µs/op 7.44 µs/op 0.4% less time Not flagged
Queue an event (32-byte payload)
Shard: capture
Time per operation 7.46 µs/op 7.43 µs/op 0.4% less time Not flagged
Queue an event (4,096-byte payload)
Shard: capture
Caller-thread CPU time per operation 7.48 µs/op 7.46 µs/op 0.2% less time Not flagged
Queue an event (4,096-byte payload)
Shard: capture
Time per operation 7.48 µs/op 7.46 µs/op 0.2% less time Not flagged
Evaluate all 10 flags
Shard: flags-scaling
Allocations per operation 343.02 count/op 343.02 count/op No observed change Not flagged
Evaluate all 10 flags
Shard: flags-scaling
Time per operation 74.94 µs/op 74.82 µs/op 0.2% less time Not flagged
Evaluate all 10 flags
Shard: flags-scaling
Process CPU time per operation 74.94 µs/op 74.81 µs/op 0.2% less time Not flagged
Evaluate all 100 flags
Shard: flags-scaling
Allocations per operation 3,324 count/op 3,324 count/op No observed change Not flagged
Evaluate all 100 flags
Shard: flags-scaling
Time per operation 719.07 µs/op 714.93 µs/op 0.6% less time Not flagged
Evaluate all 100 flags
Shard: flags-scaling
Process CPU time per operation 719.04 µs/op 714.92 µs/op 0.6% less time Not flagged
Evaluate all 1,000 flags
Shard: flags-scaling
Allocations per operation 33,113.56 count/op 33,113.62 count/op <0.1% more Not flagged
Evaluate all 1,000 flags
Shard: flags-scaling
Time per operation 7.35 ms/op 7.41 ms/op 0.8% more time Not flagged
Evaluate all 1,000 flags
Shard: flags-scaling
Process CPU time per operation 7.35 ms/op 7.41 ms/op 0.8% more time Not flagged
Evaluate 1,000 flags under concurrent load
Shard: flags-memory
Idle process memory (RSS) 38.69 MiB 38.67 MiB <0.1% less memory Not flagged
Evaluate 1,000 flags under concurrent load
Shard: flags-memory
Observed peak process memory (RSS) 40.39 MiB 40.37 MiB <0.1% less memory Not flagged
Evaluate 1,000 flags under concurrent load
Shard: flags-memory
Managed heap after settling 7.95 MiB 7.95 MiB <0.1% more memory Not flagged
Evaluate 1,000 flags under concurrent load
Shard: flags-memory
Process memory after settling (RSS) 39.3 MiB 39.07 MiB 0.6% less memory Not flagged
Evaluate 1,000 flags under concurrent load
Shard: flags-memory
Lifetime peak process memory (RSS) 40.3 MiB 40.18 MiB 0.3% less memory Not flagged
Refresh 1,000 flag definitions
Shard: flags-memory
Idle process memory (RSS) 40.23 MiB 40.21 MiB <0.1% less memory Not flagged
Refresh 1,000 flag definitions
Shard: flags-memory
Observed peak process memory (RSS) 41.06 MiB 41.05 MiB <0.1% less memory Not flagged
Refresh 1,000 flag definitions
Shard: flags-memory
Managed heap after settling 9.46 MiB 9.46 MiB <0.1% more memory Not flagged
Refresh 1,000 flag definitions
Shard: flags-memory
Process memory after settling (RSS) 39.91 MiB 40.59 MiB 1.7% more memory Not flagged
Refresh 1,000 flag definitions
Shard: flags-memory
Lifetime peak process memory (RSS) 40.86 MiB 40.88 MiB <0.1% more memory Not flagged
Evaluate one boolean flag
Shard: flags-single
Allocations per operation 38 count/op 38 count/op No observed change Not flagged
Evaluate one boolean flag
Shard: flags-single
Time per operation 7.75 µs/op 7.75 µs/op <0.1% less time Not flagged
Evaluate one boolean flag
Shard: flags-single
Process CPU time per operation 7.75 µs/op 7.74 µs/op <0.1% less time Not flagged
Evaluate a cohort-filtered flag
Shard: flags-single
Allocations per operation 38 count/op 38 count/op No observed change Not flagged
Evaluate a cohort-filtered flag
Shard: flags-single
Time per operation 10.38 µs/op 10.4 µs/op 0.2% more time Not flagged
Evaluate a cohort-filtered flag
Shard: flags-single
Process CPU time per operation 10.38 µs/op 10.4 µs/op 0.2% more time Not flagged
Evaluate a flag (early match)
Shard: flags-single
Allocations per operation 55 count/op 55 count/op No observed change Not flagged
Evaluate a flag (early match)
Shard: flags-single
Time per operation 13.39 µs/op 13.34 µs/op 0.3% less time Not flagged
Evaluate a flag (early match)
Shard: flags-single
Process CPU time per operation 13.38 µs/op 13.34 µs/op 0.3% less time Not flagged
Evaluate a flag (late match)
Shard: flags-single
Allocations per operation 76 count/op 76 count/op No observed change Not flagged
Evaluate a flag (late match)
Shard: flags-single
Time per operation 18.82 µs/op 18.64 µs/op 1% less time Not flagged
Evaluate a flag (late match)
Shard: flags-single
Process CPU time per operation 18.82 µs/op 18.64 µs/op 1% less time Not flagged
Evaluate a flag (no match)
Shard: flags-single
Allocations per operation 67 count/op 67 count/op No observed change Not flagged
Evaluate a flag (no match)
Shard: flags-single
Time per operation 16.8 µs/op 16.82 µs/op 0.1% more time Not flagged
Evaluate a flag (no match)
Shard: flags-single
Process CPU time per operation 16.8 µs/op 16.82 µs/op 0.1% more time Not flagged
Evaluate a property-filtered flag
Shard: flags-single
Allocations per operation 34 count/op 34 count/op No observed change Not flagged
Evaluate a property-filtered flag
Shard: flags-single
Time per operation 7.91 µs/op 7.91 µs/op <0.1% more time Not flagged
Evaluate a property-filtered flag
Shard: flags-single
Process CPU time per operation 7.91 µs/op 7.91 µs/op <0.1% more time Not flagged
Evaluate a regex-filtered flag
Shard: flags-single
Allocations per operation 99 count/op 99 count/op No observed change Not flagged
Evaluate a regex-filtered flag
Shard: flags-single
Time per operation 22.78 µs/op 22.8 µs/op <0.1% more time Not flagged
Evaluate a regex-filtered flag
Shard: flags-single
Process CPU time per operation 22.78 µs/op 22.8 µs/op <0.1% more time Not flagged
Evaluate a rollout flag
Shard: flags-single
Allocations per operation 31 count/op 31 count/op No observed change Not flagged
Evaluate a rollout flag
Shard: flags-single
Time per operation 6.81 µs/op 6.78 µs/op 0.3% less time Not flagged
Evaluate a rollout flag
Shard: flags-single
Process CPU time per operation 6.81 µs/op 6.78 µs/op 0.3% less time Not flagged
Evaluate a multivariate flag
Shard: flags-single
Allocations per operation 37 count/op 37 count/op No observed change Not flagged
Evaluate a multivariate flag
Shard: flags-single
Time per operation 8.52 µs/op 8.51 µs/op 0.1% less time Not flagged
Evaluate a multivariate flag
Shard: flags-single
Process CPU time per operation 8.52 µs/op 8.51 µs/op <0.1% less time Not flagged

Values are medians of paired measurements. Not flagged does not mean unchanged. Unavailable means a measurement could not be provided, not zero. Estimated allocation measurements retain their instrumentation uncertainty. RSS measures the whole process, not just SDK allocations; observed peaks are sampled checkpoints. Paired ranges in the diagnostics describe variability, not confidence intervals.

Each shard uses its own runner; compare Before PR against With PR within a row, not across shards.

Compared cf92bbf3d721995e8ecb1c2cf13671e891910641 → e36a7ef59b5a37beae5b54343f3c2424e30d4be3.

Full report and diagnostics

102 metric rows; 102 rows shown in all results. Omitted or shortened data remain in comparison.json, including per-runner environments, resource limits, measurement methods, samples and checkpoints.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file ruby Pull requests that update ruby code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant