)]}'
{
  "log": [
    {
      "commit": "a46bbaa63e4dd69f9a615ee0f5ccdbb3c342f771",
      "tree": "9e18d47851de52f95e2cb2075bab1217b3c98eb6",
      "parents": [
        "4ad5d50aaf4392d19fd391ee71eec1c5029ecd1d"
      ],
      "author": {
        "name": "sahusneha2004",
        "email": "129661293+sahusneha2004@users.noreply.github.com",
        "time": "Thu Oct 08 12:28:47 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 02:58:47 2026 -0400"
      },
      "message": "chore(storage): update BufferPool Get/TryGet semantics (#20647)\n\nUpdates the experimental BufferPool interface (added in #20513 and\n#20522) to match the revised design:\n\n- `Get(maxSize)` is non-blocking and always returns a buffer regardless\nof pool constraints (error only on allocation failure). It no longer\ntakes a context. Callers use it for the first buffer of each upload to\nguarantee progress and avoid deadlocks.\n- `TryGet(maxSize)` now returns `([]byte, bool, error)`: `false` when a\nbuffer cannot be provided within the pool\u0027s constraints, error only on\nallocation failure.\n\nThe interface is still unsupported; this only changes the API surface."
    },
    {
      "commit": "4ad5d50aaf4392d19fd391ee71eec1c5029ecd1d",
      "tree": "d1318a796f3f66a54c5a1cf67b50d55e94ddc2a1",
      "parents": [
        "8edc42515545a2a951bfd7e47717faabf4be19ff"
      ],
      "author": {
        "name": "Noah Dietz",
        "email": "noahdietz@users.noreply.github.com",
        "time": "Wed Oct 07 10:58:55 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 10:58:55 2026 -0700"
      },
      "message": "feat: update API sources and regenerate (#20646)"
    },
    {
      "commit": "8edc42515545a2a951bfd7e47717faabf4be19ff",
      "tree": "e885a8baf4e99332adc19895e57cd985104aa7b5",
      "parents": [
        "f00e293f04f91d0b35885ef9429ef9bbf43962ea"
      ],
      "author": {
        "name": "Baha Aiman",
        "email": "bahaaiman@google.com",
        "time": "Wed Oct 07 09:18:20 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 09:18:20 2026 -0700"
      },
      "message": "test(firestore): enable BSON integration tests (#20639)\n\nEnable the BSON integration tests in `integration_test.go` and\n`pipeline_integration_test.go` now that BSON support is available in\nproduction for Enterprise databases\n\nRemove the `Snapshots` (Watch stream) check (`getFirstSnapshot`) from\n`assertQueryOrder` since `Listen` queries are not supported on\nEnterprise databases (client-side BSON value comparison is already\ncovered by unit tests in `order_test.go`)."
    },
    {
      "commit": "f00e293f04f91d0b35885ef9429ef9bbf43962ea",
      "tree": "e9dc4c83ecb1586637ea41443c2b4ff53eb63eed",
      "parents": [
        "fdbd4f4f05e8782966bb8bb537f8a2ca96aef815"
      ],
      "author": {
        "name": "release-please[bot]",
        "email": "55107282+release-please[bot]@users.noreply.github.com",
        "time": "Wed Oct 07 10:55:44 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 10:55:44 2026 -0400"
      },
      "message": "chore(main): release spanner 1.96.0 (#20543)\n\n:robot: I have created a release *beep* *boop*\n---\n\n\n##\n[1.96.0](https://github.com/googleapis/google-cloud-go/compare/spanner/v1.95.1...spanner/v1.96.0)\n(2026-10-07)\n\n\n### Features\n\n* **all:** Update supported go versions\n([#20520](https://github.com/googleapis/google-cloud-go/issues/20520))\n([90413d3](https://github.com/googleapis/google-cloud-go/commit/90413d3e9d381ef4b92e3c496d98b023c5b2d8cc))\n* **spanner:** Add experimental vtprotobuf decoding with\nExperimentalBorrowRows under the spanner_vtproto build tag\n([#20642](https://github.com/googleapis/google-cloud-go/issues/20642))\n([fdbd4f4](https://github.com/googleapis/google-cloud-go/commit/fdbd4f4f05e8782966bb8bb537f8a2ca96aef815))\n\n\n### Bug Fixes\n\n* **spanner:** Keep DCP transaction on its channel while it drains\n([#20618](https://github.com/googleapis/google-cloud-go/issues/20618))\n([93dfc20](https://github.com/googleapis/google-cloud-go/commit/93dfc20d4fbecd0af253bad0a714e1fb693eb452))\n* **spanner:** Prioritize leader replica for read-write transactions in\nlocation-aware routing\n([#20620](https://github.com/googleapis/google-cloud-go/issues/20620))\n([a524d66](https://github.com/googleapis/google-cloud-go/commit/a524d66ac4ba3aab6b5ccf5e2310d76d6f32b7fe))\n* **spanner:** Record streaming built-in metrics per result stream\n([#20596](https://github.com/googleapis/google-cloud-go/issues/20596))\n([be75f7e](https://github.com/googleapis/google-cloud-go/commit/be75f7e1de9e42685bc12eb9adc8d2fb61a75911))\n* **spanner:** Retry and resume BatchWrite streams on UNAVAILABLE\n([#20623](https://github.com/googleapis/google-cloud-go/issues/20623))\n([a302277](https://github.com/googleapis/google-cloud-go/commit/a302277410f1b89d66dddd7f7559825742dcb79f))\n\n\n### Performance Improvements\n\n* **spanner:** Skip builtin metrics tracer allocation when metrics are\ndisabled\n([#20582](https://github.com/googleapis/google-cloud-go/issues/20582))\n([9971a0c](https://github.com/googleapis/google-cloud-go/commit/9971a0c2b414ca671ab1b83ca7cba6c3cc96f00f))\n* **spanner:** Skip reading response headers when no latency sink is\nenabled\n([#20583](https://github.com/googleapis/google-cloud-go/issues/20583))\n([3dcc2c3](https://github.com/googleapis/google-cloud-go/commit/3dcc2c30f99b6d2aa51143dfb8e2eecac2f3f99d))\n\n---\nThis PR was generated with [Release\nPlease](https://github.com/googleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: release-please[bot] \u003c55107282+release-please[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fdbd4f4f05e8782966bb8bb537f8a2ca96aef815",
      "tree": "012225b58d032257b5bdd33e41368df4815e2c00",
      "parents": [
        "f9eec5d653b0faf5ea541d2574b47251365a627a"
      ],
      "author": {
        "name": "rahul2393",
        "email": "irahul@google.com",
        "time": "Wed Oct 07 19:49:27 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 19:49:27 2026 +0530"
      },
      "message": "feat(spanner): add experimental vtprotobuf decoding  with ExperimentalBorrowRows under the spanner_vtproto build tag (#20642)\n\n## Summary\n\nThis change adds a faster decoder for query and read results. The\ndecoder uses vtprotobuf. It is experimental.\n\n  To use it, do these two steps:\n\n  1. Build with the `spanner_vtproto` build tag.\n2. Set `ExperimentalBorrowRows: true` in `QueryOptions` or `ReadOptions`\nfor each query or read that must be fast.\n\n  All other queries and reads do not change.\n\n  ## What the option does\n\nWith the tag and the option, the client does not copy strings and does\nnot make a new row for each result row. The client reuses the memory of\nthe gRPC receive buffer. This decreases CPU time and memory allocations.\n\nBecause of this, a row and the strings in it are valid only until the\nnext call to `Next` or `Stop`. In `Do`, they are valid only until your\nfunction returns. To keep data, use `row.Detach()` or `strings.Clone`.\n\n  ## Changes\n\n  - Add `ExperimentalBorrowRows` to `QueryOptions` and `ReadOptions`.\n- The client uses the option only when you set it on the call. It does\nnot use a value from `ClientConfig`.\n- `ReadRow`, `ReadRowWithOptions`, `ReadRowUsingIndex`, `SelectAll` and\npartitioned queries and reads always return data that stays valid.\n- Add `Row.Detach()`. It returns a row that stays valid after the\niterator moves to the next row. Without the tag, it returns the same\nrow.\n- Add the environment variable\n`SPANNER_VTPROTO_POISON_RELEASED_BUFFERS`. Use it in tests only. When it\nis `true`, the client writes `0xAA` bytes into each\nreceive buffer that it releases. Then a test that uses released data\ngets incorrect values and fails.\n- Update the README. It gives a list of things that an application must\nnot do, and it shows how to keep data.\n- Without the build tag, nothing changes. The binary does not include\nvtprotobuf code."
    },
    {
      "commit": "f9eec5d653b0faf5ea541d2574b47251365a627a",
      "tree": "547ada96717351e04ba676e6bd87b840766f6e10",
      "parents": [
        "54c1ee9b5f5c43a11070527c231b07158cc31bb0"
      ],
      "author": {
        "name": "Priti Chattopadhyay",
        "email": "cpriti@google.com",
        "time": "Wed Oct 07 08:29:11 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 08:29:11 2026 +0530"
      },
      "message": "fix(storage): correct remaining bytes for gRPC bidi range reads (#20619)\n\n## Description\nFor gRPC BiDi range reads (`WithGRPCBidiReads`), the expected byte count\nwas computed as `length - startOffset`, treating the requested length as\nan end offset. Range reads at a non-zero offset therefore:\n- logged a bogus `received N more bytes than requested` on `Close()`,\nwhere N equals the read offset.\n- returned a wrong `Reader.Remain()`.\n\nThe data read was always correct.\n\n## Changes\n- New `rangeReaderRemain` helper: `min(length, size - startOffset)`,\nnever below 0.\n- Used by the BiDi range reader, and as the `ReadObject` fallback when\nthe response has no `ContentRange`.\n\n## Tests\n- Unit tests for the helper.\n- Emulator test covering HTTP, gRPC and BiDi. It fails on the old code\nwith the bogus log.\n- New middle-of-object range cases in `TestIntegration_Reader`. These\npass against real GCS on all transports."
    },
    {
      "commit": "54c1ee9b5f5c43a11070527c231b07158cc31bb0",
      "tree": "5e7bab74d7247284fa74c81a1b3ad6cc34271c79",
      "parents": [
        "6665a437f756e872822c7510b5f2aaa20c5559c8"
      ],
      "author": {
        "name": "Noah Dietz",
        "email": "noahdietz@users.noreply.github.com",
        "time": "Tue Oct 06 11:58:30 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 14:58:30 2026 -0400"
      },
      "message": "chore: update librarian version to v0.47.0 (#20643)"
    },
    {
      "commit": "6665a437f756e872822c7510b5f2aaa20c5559c8",
      "tree": "acd7a1e6f18e4b9d1581eade9bc01e4ef14b0b56",
      "parents": [
        "df47d64a291c6060846d456a9b72d91a1ed207c0"
      ],
      "author": {
        "name": "Amit Saurav",
        "email": "amitsaurav@google.com",
        "time": "Tue Oct 06 08:56:05 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 11:56:05 2026 -0400"
      },
      "message": "test(storage): add gRPC write stall emulator tests (#20635)\n\n### Summary\n\nAdds end-to-end tests for gRPC write stall detection\n(`Writer.ChunkTransferTimeout`) against the storage testbench, using\n`stall-for-Ns-after-NK` instructions on `BidiWriteObject`.\n\n### Changes\n\n- `storage/writer_stall_emulated_test.go`: new\n`TestGRPCWriterStallEmulated`. Each case asserts the outcome, the number\nof `BidiWriteObject` streams opened (counted with a stream interceptor),\nthat the injected stalls were consumed, and byte-exact object contents\non success. The 2 MiB chunk, 250ms timeout and 2s stall are chosen so a\nsuccessful recovery is shorter than the stall, which proves it was\ndetected and retried rather than waited out.\n- Recovers: stall in the first chunk, second chunk, and final request;\ntwo consecutive stalls; a custom `WithErrorFunc` that rejects the error;\nappendable stall after the `WriteHandle` is issued, with\n`FinalizeOnClose` true and false.\n- Fails as expected: `RetryNever` (stall error, 1 stream); repeated\nstalls exhaust `ChunkRetryDeadline` (a `chunkRetryDeadlineError`\nwrapping the stall error); appendable stall before a `WriteHandle`\nexists (not retried by the session gate from #20612); appendable stall\nbefore a `WriteHandle` with `DoesNotExist` (retried, then fails\n`FailedPrecondition` because the first attempt already created the\nobject; 2 streams).\n  - Not detected: `ChunkTransferTimeout` of 0; oneshot uploads.\n- No false stall: slow producer idling with an unflushed quantum in\nflight; appendable `Flush()` followed by idle; appendable close with\n`FinalizeOnClose\u003dfalse`.\n- Flush offsets: `Flush()` after a recovered stall, and a `Flush()`\nwhose own request stalls and is retried, both return the full persisted\nsize.\n- `storage/client_test.go`: run `TestWriterChunkTransferTimeoutEmulated`\nfor gRPC as well as HTTP, and shorten its injected stalls from 10s to 2s\nto avoid tying up testbench workers.\n- `storage/grpc_writer_test.go`: unit tests for two-layer stall handling\nand the retry deadline, driven through `writerRetryConfig`.\n\n### Testing\n\n- Emulator tests: `go test -short -run\n\u0027TestGRPCWriterStallEmulated|TestWriterChunkTransferTimeoutEmulated\u0027`\npasses against storage-testbench. The appendable `FinalizeOnClose\u003dfalse`\nstall-after-handle case relies on googleapis/storage-testbench#827,\nwhich is merged but not yet in a testbench release (CI uses `:latest`,\ncurrently v0.65.0). Exact stream counts can occasionally flake on a slow\ntestbench.\n- Mutation checks: disabling the watchdog, disabling `pause()`, removing\nthe forced stall retry, and arming oneshot uploads each fail the\ncorresponding cases.\n- Unit tests: `go test -short -race`."
    },
    {
      "commit": "df47d64a291c6060846d456a9b72d91a1ed207c0",
      "tree": "635f4311bb965103374c63024c6a08b3ec586506",
      "parents": [
        "8f964fba8c1b37e63c6a3b7fcfdf1fd08eb0b22b"
      ],
      "author": {
        "name": "Amit Saurav",
        "email": "amitsaurav@google.com",
        "time": "Tue Oct 06 07:47:24 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 20:17:24 2026 +0530"
      },
      "message": "feat(storage): honor ChunkTransferTimeout in the gRPC Writer (#20634)\n\n### Summary\n\nImplements gRPC write stall detection for `Writer.ChunkTransferTimeout`,\ncovering both resumable and appendable uploads. A watchdog in\n`gRPCWriter.writeLoop` cancels the attempt and returns\n`stallTimeoutError` if GCS does not acknowledge outstanding data within\nthe timeout. The upload then resumes through the normal retry path.\n\n### Behavior\n\n- **Stage 1:** `StartResumableWrite`, `QueryWriteStatus`, the appendable\ntakeover handshake, and the `BidiWriteObject` stream open share one\ntimeout.\n- **Data transfer:** the timer runs only while a flush or the final\nrequest is waiting on GCS, and restarts on strict offset progress. GCS\nacknowledges only flushes, so the watchdog pauses while the writer waits\nfor the application to fill a chunk. This keeps a slow producer from\nlooking like a stall.\n- **Teardown:** once every byte is acknowledged and, if the close\nfinalizes, the object has been returned, the watchdog pauses, so a slow\nstream teardown is not reported as a stall. A stall is reported only if\nit ended a failed attempt.\n- **Non-appendable uploads sent in a single request are excluded.**\nThere is no upload session, so a commit abandoned by a cancelled attempt\ncould land after the retry. Appendable uploads are always watched.\n- **Retries:** stalls are retried even when a custom `WithErrorFunc`\nrejects them, matching the HTTP writer. `RetryNever` and the\nno-precondition, no-session gate from #20612 still apply, and\n`ChunkRetryDeadline` bounds the retries (#20611). A\n`chunkRetryDeadlineError` that wraps a stall stays terminal: the\ndeadline guard from #20637 runs before the stall check.\n- **Telemetry:** records the `gcp.storage.client.stall.duration`\nhistogram when debug metrics are enabled. Its `rpc.method` attribute and\n`stallTimeoutError` name the RPC that stalled: `StartResumableWrite`,\n`QueryWriteStatus`, or `BidiWriteObject`.\n\n### Compatibility\n\nThe gRPC Writer currently ignores `ChunkTransferTimeout`. Callers that\nalready set it for HTTP will get stall detection on gRPC uploads after\nupgrading. For example, GCSFuse sets it on every writer from\n`chunk-transfer-timeout-secs` (default 10s). To keep the current gRPC\nbehavior, leave `ChunkTransferTimeout` at 0 for gRPC clients.\n\n### Changes\n\n- `storage/grpc_writer.go`:\n- Add `writeStallWatchdog` (reset / pause / resume / stop). It tracks\nthe RPC being timed and freezes it when a stall fires. A generation\ncounter makes a timer callback that already started when its timer was\nstopped return without firing.\n- Arm it in `writeLoop` unless the upload is a non-appendable oneshot.\nConvert a stall-cancelled attempt into `stallTimeoutError`.\n- Resume on flush and final requests. Reset on strict progress in\n`handleCompletion`. Pause before waiting on the application\n(`flushOutstanding()`) and in teardown once every byte is acknowledged\nand, if the close finalizes, the object is returned.\n- Retry `errStallTimeout` in `writerRetryConfig` after the session gate\nand the chunk retry deadline guard.\n- `storage/writer.go`: document `ChunkTransferTimeout` for gRPC uploads.\n- `storage/metrics.go`: extend the stall histogram description to cover\nwrites.\n- `storage/grpc_writer_test.go`: tests for Stage 1 stall, data stall,\nprogress resetting the timer, pausing when idle, slow producer\n(resumable and appendable), arming of the final request (oneshot\nexcluded), stall retry policy, stale watchdog callbacks, a deadline\nerror wrapping a stall staying terminal, slow stream teardown, the\nstalled RPC label, and telemetry.\n- `storage/metrics_test.go`: `TestRecordStallDuration_BidiWriteObject`."
    },
    {
      "commit": "8f964fba8c1b37e63c6a3b7fcfdf1fd08eb0b22b",
      "tree": "bd68fce666221c959ebe253cb203c5e37fc01f9b",
      "parents": [
        "c9b95335d97895312dc473b4f3a928d5c6332340"
      ],
      "author": {
        "name": "Priti Chattopadhyay",
        "email": "cpriti@google.com",
        "time": "Tue Oct 06 13:57:26 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 13:57:26 2026 +0530"
      },
      "message": "fix(storage): surface the last transport error from the gRPC Writer\u0027s ChunkRetryDeadline error (#20637)\n\nFollow-ups from reviewing #20611. Behaviour-preserving except for the\nerror-wrapping change, which is called out below.\n\n### 1. `chunkRetryBudget` owns the per-chunk retry state\n`chunkRetryDeadline`, `abandonRetriesTime`, `attempts` and\n`progressMade` collapse into one value with `start()` / `pause()` /\n`expired()` / `recordProgress(stillActive)` / `consumeProgress()`. The\nsix copies of `if w.chunkRetryDeadline \u003e 0 \u0026\u0026\nw.abandonRetriesTime.IsZero() { ... time.Now().Add(...) }` become\n`w.budget.start()`. The budget carries an injectable clock (`now func()\ntime.Time`, nil ⇒ `time.Now`).\n\n`run()` still owns maxAttempts/backoff and learns about progress through\n`withProgressReset(w.budget.consumeProgress)`; there\u0027s now a TODO on\nthat hook describing the end state (writer owns all three, `run()` knows\nnothing about progress).\n\n### 2. `awaitingFirstAck` replaces the `bufFlushedIdx \u003d\u003d -1` sentinel\nUntil the first completion, offset 0 is not a confirmed offset: a\n0-offset ack must still be processed (it\u0027s what completes a zero-byte\n`Flush`) and a `Flush` must wait for it. That\u0027s now a named bool checked\nin `handleCompletion`\u0027s duplicate guard and in the Flush/Write wait\nloops, instead of `max(0, bufFlushedIdx)` and `-1 \u003c x` arithmetic.\n\n### 3. Typed `chunkRetryDeadlineError` that wraps the last error\n`writeLoop` now returns `*chunkRetryDeadlineError{deadline, attempts,\nerr}` with `Unwrap()`. Message is unchanged (so `\"retry deadline\"`\nstring matches in #20635 keep working), but `errors.Is/As` and\n`status.Code` now see the wrapped transport error.\n\n**Why this needs a guard:** the wrapped error is usually retryable\n(`Unavailable`, `io.ErrUnexpectedEOF`…). With plain `%w`, `run()` would\nsee a retryable error, back off, re-enter `writeLoop` with the same\nexpired budget, and loop until the context died. So\n`writerRetryConfig`\u0027s predicates refuse `chunkRetryDeadlineError`\n*before* delegating to any user `ErrorFunc`.\n`TestGRPCWriter_ChunkRetryDeadlineError_IsTerminal` pins this: with the\nguard removed it fails with `run() made 4625 calls, want 2`.\n\nOne consequence worth knowing: `checkCanceled` uses `status.Code(err)`,\nso if a user `ErrorFunc` retried `codes.Canceled` and the budget then\nexpired, the surfaced error is `context.Canceled` rather than the\ndeadline error. The default `ShouldRetry` never retries `Canceled`, so\nthis doesn\u0027t happen out of the box.\n\n### 4. Invocation-ID policy documented\nOnly attempts + backoff reset on progress; the invocation ID (and\nidempotency token) stays per-session. HTTP\u0027s\n`gensupport.uploadChunkWithRetries` mints a fresh ID per chunk. The\ncomment on `withProgressReset` says which one gRPC does and why, so\nnobody \"fixes\" it by accident.\n\n### 5. Deterministic timing tests\nAll `ChunkRetryDeadline_*` tests use a fake clock; the two \"sleep so the\ncompletion gets processed\" sleeps are replaced by waiting on the\n`progress` callback (runs on the writer goroutine after the completion\nis applied). The timing tests went from ~1.5s of wall-clock sleeps to\n0.00s each, and pass `-race -count\u003d30`. `invoke_test`\u0027s \"resets backoff\non progress\" now asserts directly on the pause between calls 2 and 3\n(residual false-pass window documented).\n\nNew tests: `TestChunkRetryBudget`, `TestGRPCWriter_AwaitingFirstAck`,\n`TestGRPCWriter_ZeroByteFlushWaitsForFirstAck`,\n`TestGRPCWriter_ChunkRetryDeadlineError_IsTerminal` (incl. all four\n`writerRetryConfig` policy shapes).\n\n### 6. staticcheck housekeeping (unchanged from the original PR)\nUnused `forcedStreamResult` / `objResource`, two dead stores and a\nredundant `break` in `grpc_writer.go`.\n\n### Verification\n- `go vet`, `gofmt`, `staticcheck` clean on touched code\n- `go test -race -short ./storage` green; writer/budget tests `-race\n-count\u003d30` green\n- Mutation check: guard removed ⇒ `IsTerminal` fails in 5s with an\nexplicit message"
    },
    {
      "commit": "c9b95335d97895312dc473b4f3a928d5c6332340",
      "tree": "94ef1d4907bdd4262bf92b189cc6af2eb064ccb0",
      "parents": [
        "a302277410f1b89d66dddd7f7559825742dcb79f"
      ],
      "author": {
        "name": "Amit Saurav",
        "email": "amitsaurav@google.com",
        "time": "Mon Oct 05 21:22:33 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 09:52:33 2026 +0530"
      },
      "message": "fix(storage): reset gRPC writer retry budget per chunk on strict offset progress (#20611)\n\n### Summary\n\nEnsures the gRPC `Writer`\u0027s per-chunk retry state — `ChunkRetryDeadline`\n(`w.abandonRetriesTime`), `w.attempts`, and `run()`\u0027s `WithMaxAttempts`\ncounter and `gax.Backoff` — is reset on a per-chunk basis only when the\nserver confirms strict forward byte progress (`c.flushOffset \u003e\nprevConfirmed`) or returns the final object resource (`c.resource !\u003d\nnil`).\n\n### Problem\n\n1. **Reconnect at offset 0 (`bufBaseOffset \u003d\u003d 0`, `bufFlushedIdx \u003d\u003d\n-1`):** `gRPCWriter` tracks confirmed bytes via `w.bufBaseOffset +\nint64(w.bufFlushedIdx)` with `w.bufFlushedIdx` initialized to `-1` (to\nallow 0-byte `Flush()` completions on appendable objects). If the\ninitial attempt fails before any bytes are persisted, the subsequent\n`QueryWriteStatus` returns `PersistedSize \u003d 0`. In `handleCompletion`,\n`0 \u003c\u003d 0 + (-1)` evaluated to `false`, resetting `w.abandonRetriesTime`\nand `w.attempts` despite 0 bytes being persisted.\n2. **Reconnect after partial buffer shift (`bufBaseOffset \u003e 0`,\n`bufFlushedIdx \u003d\u003d -1`):** After shifting partially flushed bytes out of\n`w.buf` and advancing `w.bufBaseOffset`, `writeLoop` set\n`w.bufFlushedIdx \u003d -1` (unlike full-buffer clear in `handleCompletion`,\nwhich sets `w.bufFlushedIdx \u003d 0`). On the next reconnect, if\n`QueryWriteStatus` returned the same `PersistedSize \u003d\u003d w.bufBaseOffset`,\n`c.flushOffset \u003c\u003d w.bufBaseOffset - 1` evaluated to `false`, granting\nthe stuck chunk a second full `ChunkRetryDeadline` budget and calling\n`ProgressFunc` a second time for the same offset.\n3. **Upload-wide `WithMaxAttempts` and `gax.Backoff` accumulation:**\n`OpenWriter` wraps the entire `writeLoop` in a single `run()` call in\n`storage/invoke.go`. Without a progress signal back to `run()`,\n`attempts` (checked against `WithMaxAttempts` and reported in\n`gccl-attempt-count`) and `bo` (`gax.Backoff`) accumulated across the\nentire upload rather than resetting per chunk when forward progress was\nconfirmed.\n\n### Changes\n\n- `storage/invoke.go`:\n- Add `withProgressReset(fn func() bool) runOption` and replace\n`internal.Retry` in `run()` with an explicit retry loop that resets\n`attempts \u003d 1` and `bo \u003d initialBo` when `shouldReset()` reports forward\nprogress during the failed call.\n- `storage/grpc_writer.go`:\n- In `writeLoop`, set `w.bufFlushedIdx \u003d 0` instead of `-1` after\nshifting `w.buf` by `w.bufFlushedIdx`.\n- In `handleCompletion`, compute `prevConfirmed :\u003d w.bufBaseOffset +\nint64(max(0, w.bufFlushedIdx))` before updating `w.bufFlushedIdx`, and\nonly reset `w.abandonRetriesTime`, `w.attempts`, and set `w.progressMade\n\u003d true` when `c.flushOffset \u003e prevConfirmed || c.resource !\u003d nil`.\n- Wire `withProgressReset(w.checkAndResetProgress)` into `run()` in\n`OpenWriter`.\n- `storage/invoke_test.go`:\n  - Add `TestInvokeWithProgressReset`.\n- `storage/grpc_writer_test.go`:\n- Add\n`TestGRPCWriter_ChunkRetryDeadline_NoResetOnUnchangedOffsetAfterPartialShift`.\n- Add `TestGRPCWriter_ChunkRetryDeadline_NoResetOnZeroOffsetReconnect`.\n  - Add `TestGRPCWriter_PerChunkMaxAttemptsResetOnStrictProgress`."
    },
    {
      "commit": "a302277410f1b89d66dddd7f7559825742dcb79f",
      "tree": "7204ce68d244b538f0f79041cc124663e5bdb340",
      "parents": [
        "82bb5c956b9988ffa95ad556f30e0c8f882a6415"
      ],
      "author": {
        "name": "rahul2393",
        "email": "irahul@google.com",
        "time": "Mon Oct 05 19:44:41 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 05 19:44:41 2026 +0530"
      },
      "message": "fix(spanner): retry and resume BatchWrite streams on UNAVAILABLE  (#20623)\n\nBatchWrite previously failed on any stream error, including transient\nUNAVAILABLE errors, and treated a stream that ended early as complete."
    },
    {
      "commit": "82bb5c956b9988ffa95ad556f30e0c8f882a6415",
      "tree": "a792ae6adc612f71207abd444125ae066082f30a",
      "parents": [
        "c74aee178dbb81948810ec48d8f2a2d73c1b5384"
      ],
      "author": {
        "name": "Amit Saurav",
        "email": "amitsaurav@google.com",
        "time": "Mon Oct 05 01:34:23 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 05 14:04:23 2026 +0530"
      },
      "message": "feat(storage): plumb ChunkTransferTimeout and stall timeout error into gRPC Writer (#20613)\n\n### Summary\n\nPlumbs `Writer.ChunkTransferTimeout` into `gRPCWriter`, updates its\ndocumentation on `storage.Writer`, and defines the retryable\n`errStallTimeout` / `stallTimeoutError` error types in preparation for\ngRPC write stall detection.\n\n### Changes\n\n- `storage/writer.go`: Update `Writer.ChunkTransferTimeout`\ndocumentation to reflect gRPC support.\n- `storage/client.go`: Add field comment on\n`openWriterParams.chunkTransferTimeout`.\n- `storage/grpc_writer.go`:\n  - Plumb `params.chunkTransferTimeout` into `gRPCWriter`.\n- Define `errStallTimeout` sentinel and `stallTimeoutError` wrapper\n(unwrapping to `errStallTimeout` rather than `context.Canceled` so\n`checkCanceled` and `errors.Is(err, context.Canceled)` preserve caller\ncancellation semantics).\n- `storage/invoke.go`: Recognize `errStallTimeout` as retryable in\n`ShouldRetry`.\n- `storage/grpc_writer_test.go`: Add\n`TestGRPCWriter_ChunkTransferTimeoutPlumbing` and\n`TestStallTimeoutError`."
    },
    {
      "commit": "c74aee178dbb81948810ec48d8f2a2d73c1b5384",
      "tree": "7599bb3f11c73fa2c23678d4caeb01c08f65b540",
      "parents": [
        "1cdb61a25ffb7ac5d0c859191d485621c4f7aed7"
      ],
      "author": {
        "name": "Amit Saurav",
        "email": "amitsaurav@gmail.com",
        "time": "Sun Oct 04 20:35:53 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 05 09:05:53 2026 +0530"
      },
      "message": "fix(storage): allow mid-stream retries once gRPC upload session is established (#20612)\n\n### Summary\n\nAllows the gRPC `Writer` to retry transient errors mid-upload under the\ndefault `RetryIdempotent` policy once a resumable upload ID (`upid`) or\nappendable `WriteHandle` (or takeover generation) has been established,\neven when the caller did not specify initial object preconditions\n(`IfGenerationMatch` / `DoesNotExist`).\n\n### Problem\n\n1. `w.settings.idempotent` is computed statically when `Writer` is\nopened based solely on initial object preconditions (`GenerationMatch \u003e\u003d\n0 || DoesNotExist` or `Append \u0026\u0026 gen \u003e 0`).\n2. In `invoke.go`, `run()` checks `(retry.policy \u003d\u003d RetryIdempotent \u0026\u0026\n!isIdempotent)` before invoking `writeLoop` the first time and bypasses\n`internal.Retry` altogether when `isIdempotent \u003d\u003d false`.\n3. Once `StartResumableWrite` returns an `upload_id` (`upid`) or an\nappendable write receives a `WriteHandle`, reconnecting and resuming\nthat session via `QueryWriteStatus` + `BidiWriteObject` is idempotent\n(bound to the single upload session, matching HTTP resumable upload\nbehavior). Previously, any transient error (`UNAVAILABLE`,\n`DEADLINE_EXCEEDED`, `INTERNAL`) during `QueryWriteStatus` or\n`BidiWriteObject` failed the upload immediately unless preconditions\nwere set.\n\n### Changes\n\n- `storage/grpc_writer.go`:\n- Add `canResumeSession() bool` to `gRPCBidiWriteBufferSender` and its\nimplementations:\n    - `gRPCOneshotBidiWriteBufferSender`: `false`\n    - `gRPCResumableBidiWriteBufferSender`: `s.upid !\u003d \"\"`\n- `gRPCAppendBidiWriteBufferSender`:\n`s.firstMessage.GetAppendObjectSpec().GetWriteHandle() !\u003d nil ||\ns.takeoverWriter`\n- Replace `withBidiWriteObjectRedirectionErrorRetries` with `(w\n*gRPCWriter) writerRetryConfig()`, which preserves `RetryNever` (except\nfor mandatory append redirection errors) and allows `RetryIdempotent` to\nretry transient errors once `w.settings.idempotent ||\nw.streamSender.canResumeSession()` holds.\n- When no backoff is configured, default the writer\u0027s initial retry\nbackoff to 100ms (`defaultWriteRetryInitialBackoff`), matching HTTP\nresumable uploads (gensupport). Previously gax\u0027s 1s default applied. A\nuser-configured backoff is unchanged.\n- `storage/grpc_writer_test.go`:\n- Add `TestGRPCWriter_CanResumeSession`,\n`TestGRPCWriter_SessionRecoveryRetries` and\n`TestGRPCWriter_RetryConfigDefaultBackoff`."
    },
    {
      "commit": "1cdb61a25ffb7ac5d0c859191d485621c4f7aed7",
      "tree": "9044d395b26c0d8716901852fef68a6a31c96281",
      "parents": [
        "9121e01fd7995dd6c9e617345e07dd52c0cbbfad"
      ],
      "author": {
        "name": "Andy Zhao",
        "email": "andyzhao@google.com",
        "time": "Fri Oct 02 20:23:48 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 02 13:23:48 2026 -0700"
      },
      "message": "fix(auth): return empty tls.Certificate on secureconnect helper failure (#20632)\n\nWhen the Secure Connect helper tool fails during execution,\ngetClientCertificate previously returned (nil, nil) so that the probe in\nNewSecureConnectProvider could detect the provider was unavailable.\nHowever, crypto/tls.Config.GetClientCertificate requires returning\neither an error or a non-nil *tls.Certificate; returning (nil, nil)\nviolates this contract and causes crypto/tls to panic with a nil pointer\ndereference during TLS 1.3 handshakes when an expired certificate is\nrefreshed at runtime.\n\nFix this by returning nil, errSourceUnavailable on helper failure, and\nupdate the probe in NewSecureConnectProvider to check for this sentinel\nerror.\n\nThis catches an edge case where the secure connect helper passes the\n\"probe\" during initialization, but starts failing later on. In this\nscenario, the TLS handshake will fail with the errSourceUnavailable if\nthe secure connect helper command fails at runtime.\n\nFixes #20593"
    },
    {
      "commit": "9121e01fd7995dd6c9e617345e07dd52c0cbbfad",
      "tree": "f4aecd5d2ad9d1f1ec2903348a0f82a330119ce3",
      "parents": [
        "513a383a584c22f5caafb236367a966c78cabc02"
      ],
      "author": {
        "name": "shollyman",
        "email": "shollyman@google.com",
        "time": "Fri Oct 02 11:04:28 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 02 11:04:28 2026 -0700"
      },
      "message": "chore: default flakybot to file at p2 (#20630)\n\nThis change means that flakybot-created issues will default to be\ncreated with P2 priority. Default is P1, which tends to create a lot of\nnoise for what is usually transient service issues.\n\nrelated: b/555857556"
    },
    {
      "commit": "513a383a584c22f5caafb236367a966c78cabc02",
      "tree": "b338e7583ba49dda8bc5d51a01588a6673d89896",
      "parents": [
        "7660eabfab30f7a9c8216694568da14fd5d6f64a"
      ],
      "author": {
        "name": "Mattie Fu",
        "email": "mattiefu@google.com",
        "time": "Fri Oct 02 14:04:13 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 02 14:04:13 2026 -0400"
      },
      "message": "Revert \"fix(bigtable): only surface partial cluster failure in UpdateInstanceAndSyncClusters when relevant\" (#20631)\n\nReverts #20629.\n\nThe fix is unsafe for sync operations under partial observability. If a\ncluster exists in an unavailable zone and the user wants to *delete* it\n(i.e., it is absent from `conf.Clusters`), `ListClusters` returns\n`ErrPartiallyUnavailable` but the cluster is also absent from the\nresponse. The overlap check only looks at `conf.Clusters` (clusters to\nkeep), so it incorrectly allows the sync to proceed — the cluster is\nsilently skipped instead of deleted, leaving the instance in an\ninconsistent state.\n\nThe original fail-fast behavior is correct:\n`UpdateInstanceAndSyncClusters` cannot safely reconcile state it cannot\nfully observe."
    },
    {
      "commit": "7660eabfab30f7a9c8216694568da14fd5d6f64a",
      "tree": "b1d150d1f3a527cfa7afd6b5faf3e5fe36c1d4da",
      "parents": [
        "244ea294f9b531fc2c51cf453f2f63009d3913d0"
      ],
      "author": {
        "name": "Mattie Fu",
        "email": "mattiefu@google.com",
        "time": "Fri Oct 02 13:06:31 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 02 13:06:31 2026 -0400"
      },
      "message": "fix(bigtable): only surface partial cluster failure in UpdateInstanceAndSyncClusters when relevant (#20629)\n\n## Summary\n\n`UpdateInstanceAndSyncClusters` calls `Clusters()` to fetch the current\ncluster state before syncing. If any zone is temporarily unavailable,\n`Clusters()` returns both partial results and `ErrPartiallyUnavailable`.\nPreviously the function treated any `ErrPartiallyUnavailable` as fatal,\naborting the sync even when the unavailable zones had nothing to do with\nthe clusters being configured.\n\nThis change makes the failure check precise: a partial location failure\nis only promoted to a fatal error if the failed zone overlaps with a\nzone in `conf.Clusters`. If the failed zones are unrelated to the\nintended cluster config, we have sufficient information to proceed.\n\n## Behavior change\n\n| Scenario | Before | After |\n|---|---|---|\n| Failed zone is in `conf.Clusters` | error | error |\n| Failed zone is unrelated to `conf.Clusters` | error | proceeds with\npartial results |\n\n## Implementation\n\nAdded `clusterZonesOverlapFailedLocations` helper that extracts the zone\nsuffix from `projects/\u003cproject\u003e/locations/\u003czone\u003e` failed-location\nstrings and compares against `ClusterConfig.Zone` values."
    },
    {
      "commit": "244ea294f9b531fc2c51cf453f2f63009d3913d0",
      "tree": "b338e7583ba49dda8bc5d51a01588a6673d89896",
      "parents": [
        "a524d66ac4ba3aab6b5ccf5e2310d76d6f32b7fe"
      ],
      "author": {
        "name": "Mattie Fu",
        "email": "mattiefu@google.com",
        "time": "Fri Oct 02 12:38:48 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 02 12:38:48 2026 -0400"
      },
      "message": "docs(bigtable): deprecate hand-written AdminClient and InstanceAdminClient methods (#20628)\n\n## Summary\n\n- Marks all exported methods on `bigtable.AdminClient` and\n`bigtable.InstanceAdminClient` as deprecated via `// Deprecated:` doc\ncomments (surfaced by gopls and `go vet` at call sites)\n- Each comment points to the equivalent method on the GAPIC-generated\nclients, accessible via `TableAdminClientV2()` or\n`InstanceAdminClientV2()`\n- No behavior changes — doc-only\n\n## Background\n\nThe hand-written layer in `bigtable/admin.go` bypasses\n`bigtable/admin/apiv2` and calls raw gRPC stubs directly. The apiv2\nGAPIC clients are the canonical surface going forward. This follows the\nsame pattern Java has already adopted (`@ObsoleteApi` annotations on the\nequivalent hand-written methods).\n\n## Migration\n\nCallers should switch from `bigtable.AdminClient` /\n`bigtable.InstanceAdminClient` to the apiv2 clients directly:\n\n```go\n// Before\nac, _ :\u003d bigtable.NewAdminClient(ctx, project, instance)\ntables, _ :\u003d ac.Tables(ctx)\n\n// After\nc, _ :\u003d admin.NewBigtableTableAdminClient(ctx)\nit :\u003d c.ListTables(ctx, \u0026adminpb.ListTablesRequest{Parent: ...})\n```\n\nNote: callers of `Clusters()` or `Instances()` that handle\n`ErrPartiallyUnavailable` should add an explicit\n`res.GetFailedLocations()` check when migrating, as the apiv2 layer\nexposes failed locations as a response field rather than an error.\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "a524d66ac4ba3aab6b5ccf5e2310d76d6f32b7fe",
      "tree": "d18d687714e33edd4ef0237414d01f914091209f",
      "parents": [
        "56307b0f0af1e90a8b892cc14e40964ad36cf483"
      ],
      "author": {
        "name": "rahul2393",
        "email": "irahul@google.com",
        "time": "Thu Oct 01 22:03:09 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 22:03:09 2026 +0530"
      },
      "message": "fix(spanner): prioritize leader replica for read-write transactions in location-aware routing (#20620)\n\nWhen location-aware routing is enabled, read-write requests that prefer\nthe leader could be routed to a follower because a non-zero operation\nUID on the routing hint sent fillRoutingHintAttempt down the score-aware\nreplica selection path before the local leader was considered. There the\nleader only receives a cost bias, so a sufficiently faster follower\nwould win.\n\nCheck for a healthy local leader first whenever preferLeader is set, and\nfall back to score-aware selection only when the leader is missing,\nremote, or unhealthy. This mirrors googleapis/google-cloud-java#14195."
    },
    {
      "commit": "56307b0f0af1e90a8b892cc14e40964ad36cf483",
      "tree": "dbb8102adab1762ffade8468674ef533210d8efc",
      "parents": [
        "93dfc20d4fbecd0af253bad0a714e1fb693eb452"
      ],
      "author": {
        "name": "rootkiller6788",
        "email": "c8688rickowens@outlook.com",
        "time": "Fri Oct 02 00:16:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 09:16:12 2026 -0700"
      },
      "message": "pubsub: don\u0027t truncate the simulated processing delay on 32-bit\n\nbigquery/storage/managedwriter: keep flow controller test within int32\n\nspanner/spansql: format the int64 bounds as int64 in TestParseExpr (#20585)\n\nThe 32-bit build failures tracked in #14220 are mostly fixed on main by\nnow, but a few are left. These four are the ones I could still reproduce\nat HEAD with GOARCH\u003d386 go vet:\n\n- pubsub and pubsub/v2 longtest: rand.Intn takes an int, and\nackDeadline*3 is 30s worth of nanoseconds, so it doesn\u0027t fit in an\nint32. Switched to rand.Int63n.\n- bigquery/storage/managedwriter flow controller test: 4e9 as an int\noverflows. The byte limit in that test is unbounded so the number itself\nis arbitrary; lowered it to 2e9, same as what pubsub\u0027s copy of this test\nalready does.\n- spanner/spansql parser test: math.MaxInt64 passed to fmt.Sprintf goes\nthrough ...any and defaults to int, which overflows on 32-bit. Explicit\nint64 conversion.\n\nNo non-test code touched, and nothing changes on 64-bit. Verified with\nGOARCH\u003d386 go vet on pubsub, pubsub/v2, bigquery and spanner (all\nclean), plus the affected tests on amd64.\n\nCloses #14236.\n\n---------\n\nCo-authored-by: rootkiller6788 \u003c221446036+rootkiller6788@users.noreply.github.com\u003e\nCo-authored-by: shollyman \u003cshollyman@google.com\u003e"
    },
    {
      "commit": "93dfc20d4fbecd0af253bad0a714e1fb693eb452",
      "tree": "0f4bc8d165fa7356d65e04a0f496296765e17167",
      "parents": [
        "0872c4983adfa2391c79057c9320e4641872d709"
      ],
      "author": {
        "name": "rahul2393",
        "email": "irahul@google.com",
        "time": "Thu Oct 01 21:18:28 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 15:48:28 2026 +0000"
      },
      "message": "fix(spanner): keep DCP transaction on its channel while it drains (#20618)\n\nWith the dynamic channel pool, a session handle re-resolved its bound channel by id among active entries on every RPC, so a read-write transaction moved to another channel as soon as scale-down marked its channel draining. Keep a pointer to the bound entry instead and use it while it is active or draining; re-pick only once it is closed."
    },
    {
      "commit": "0872c4983adfa2391c79057c9320e4641872d709",
      "tree": "95e9bcea0f0749022aeca701ea88843a7b117ea9",
      "parents": [
        "31e672180527d862b60f7f9036513174b5ae37dd"
      ],
      "author": {
        "name": "release-please[bot]",
        "email": "55107282+release-please[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 21:27:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 21:27:58 2026 +0800"
      },
      "message": "chore: release main (#20608)\n\n:robot: I have created a release *beep* *boop*\n---\n\n\n\u003cdetails\u003e\u003csummary\u003eapigateway: 1.16.0\u003c/summary\u003e\n\n##\n[1.16.0](https://github.com/googleapis/google-cloud-go/compare/apigateway/v1.15.0...apigateway/v1.16.0)\n(2026-10-01)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20607](https://github.com/googleapis/google-cloud-go/issues/20607))\n([395fc59](https://github.com/googleapis/google-cloud-go/commit/395fc59e067ed2576a1c8c961edf3f749633520c))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003echat: 1.9.0\u003c/summary\u003e\n\n##\n[1.9.0](https://github.com/googleapis/google-cloud-go/compare/chat/v1.8.0...chat/v1.9.0)\n(2026-10-01)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20607](https://github.com/googleapis/google-cloud-go/issues/20607))\n([395fc59](https://github.com/googleapis/google-cloud-go/commit/395fc59e067ed2576a1c8c961edf3f749633520c))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003ecommerce: 1.10.0\u003c/summary\u003e\n\n##\n[1.10.0](https://github.com/googleapis/google-cloud-go/compare/commerce/v1.9.0...commerce/v1.10.0)\n(2026-10-01)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20607](https://github.com/googleapis/google-cloud-go/issues/20607))\n([395fc59](https://github.com/googleapis/google-cloud-go/commit/395fc59e067ed2576a1c8c961edf3f749633520c))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003ecommerceproducer: 0.6.0\u003c/summary\u003e\n\n##\n[0.6.0](https://github.com/googleapis/google-cloud-go/compare/commerceproducer/v0.5.0...commerceproducer/v0.6.0)\n(2026-10-01)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20607](https://github.com/googleapis/google-cloud-go/issues/20607))\n([395fc59](https://github.com/googleapis/google-cloud-go/commit/395fc59e067ed2576a1c8c961edf3f749633520c))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003ecompute: 1.71.0\u003c/summary\u003e\n\n##\n[1.71.0](https://github.com/googleapis/google-cloud-go/compare/compute/v1.70.0...compute/v1.71.0)\n(2026-10-01)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20607](https://github.com/googleapis/google-cloud-go/issues/20607))\n([395fc59](https://github.com/googleapis/google-cloud-go/commit/395fc59e067ed2576a1c8c961edf3f749633520c))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003edataform: 1.6.0\u003c/summary\u003e\n\n##\n[1.6.0](https://github.com/googleapis/google-cloud-go/compare/dataform/v1.5.0...dataform/v1.6.0)\n(2026-10-01)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20607](https://github.com/googleapis/google-cloud-go/issues/20607))\n([395fc59](https://github.com/googleapis/google-cloud-go/commit/395fc59e067ed2576a1c8c961edf3f749633520c))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003edatamanager: 1.7.0\u003c/summary\u003e\n\n##\n[1.7.0](https://github.com/googleapis/google-cloud-go/compare/datamanager/v1.6.0...datamanager/v1.7.0)\n(2026-10-01)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20607](https://github.com/googleapis/google-cloud-go/issues/20607))\n([395fc59](https://github.com/googleapis/google-cloud-go/commit/395fc59e067ed2576a1c8c961edf3f749633520c))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003edialogflow: 1.87.0\u003c/summary\u003e\n\n##\n[1.87.0](https://github.com/googleapis/google-cloud-go/compare/dialogflow/v1.86.0...dialogflow/v1.87.0)\n(2026-10-01)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20607](https://github.com/googleapis/google-cloud-go/issues/20607))\n([395fc59](https://github.com/googleapis/google-cloud-go/commit/395fc59e067ed2576a1c8c961edf3f749633520c))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eretail: 1.36.0\u003c/summary\u003e\n\n##\n[1.36.0](https://github.com/googleapis/google-cloud-go/compare/retail/v1.35.0...retail/v1.36.0)\n(2026-10-01)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20607](https://github.com/googleapis/google-cloud-go/issues/20607))\n([395fc59](https://github.com/googleapis/google-cloud-go/commit/395fc59e067ed2576a1c8c961edf3f749633520c))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eshopping: 1.17.0\u003c/summary\u003e\n\n##\n[1.17.0](https://github.com/googleapis/google-cloud-go/compare/shopping/v1.16.0...shopping/v1.17.0)\n(2026-10-01)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20607](https://github.com/googleapis/google-cloud-go/issues/20607))\n([395fc59](https://github.com/googleapis/google-cloud-go/commit/395fc59e067ed2576a1c8c961edf3f749633520c))\n\u003c/details\u003e\n\n---\nThis PR was generated with [Release\nPlease](https://github.com/googleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: release-please[bot] \u003c55107282+release-please[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "31e672180527d862b60f7f9036513174b5ae37dd",
      "tree": "b69e56deecceabd677ccccab8e3cba3cbadbfd02",
      "parents": [
        "dbc26066f70a8f204695aade7768987acdf89a85"
      ],
      "author": {
        "name": "Priti Chattopadhyay",
        "email": "cpriti@google.com",
        "time": "Thu Oct 01 16:45:14 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 07:15:14 2026 -0400"
      },
      "message": "test(storage): only add storage.googleapis.com prefix when emitting destination.id (#20616)\n\n## Description\n#20569 added the `//storage.googleapis.com/` prefix to\n`gcp.resource.destination.id` by building it into\n`getMetadataFromAttrs`. As a side effect, `fetchBucketMetadata` and the\nbucket metadata cache now return the full resource name instead of the\nbare `projects/{project}/buckets/{bucket}` path. This breaks\n`TestIntegration_FetchBucketMetadata` (Regional and Zonal, HTTP and\ngRPC):\n\n```\nintegration_test.go:9658: unexpected resource format: \"//storage.googleapis.com/projects/.../buckets/test-nonreg-metadata-...\"\n```\n\nThe prefix is only needed by Cloud Trace\u0027s App Hub extractor, so it\nshould be applied only when the span attribute is written.\n\n## Changes\n- `getMetadataFromAttrs`, the `fetchBackground` failure placeholder and\nthe `startSpanWithBucket` cache-miss placeholder use the bare\n`projects/{p}/buckets/{b}` form again.\n- New `destinationResourceName` helper in `trace.go` adds\n`//storage.googleapis.com/`. It\u0027s used only when emitting\n`gcp.resource.destination.id`, so the emitted attribute value is\nunchanged from #20569.\n- Tests:\n- Cache and `getMetadataFromAttrs` expectations are back to the bare\nform.\n- `TestGetMetadataFromAttrsResourceNameFormat` still checks the App Hub\nwell-formedness regex, now on `destinationResourceName(resource)`.\n- `TestStartSpanWithBucket` cache-hit case now checks the prefixed\nattribute. Before, it passed only because the test seeded the cache with\na bare value.\n- The integration tests that check span attributes\n(`TestIntegration_ClientTracing`) are unchanged and still expect the\nprefix.\n\n## Testing\n- `go build ./...` and `go vet .` in `storage/` pass.\n- `go test -short ./storage` passes, including\n`TestCacheFetchBackground*`, `TestOpportunisticCacheFill`,\n`TestGetMetadataFromAttrsResourceNameFormat` and\n`TestStartSpanWithBucket`.\n- With this change, `TestIntegration_FetchBucketMetadata` gets the bare\nresource format it expects again."
    },
    {
      "commit": "dbc26066f70a8f204695aade7768987acdf89a85",
      "tree": "d63824fcde1d01c4b62a3dbdcde241d35657152a",
      "parents": [
        "9981d08a82c88e29c2250831a4449f1966418609"
      ],
      "author": {
        "name": "Nidhi",
        "email": "nidhiii@google.com",
        "time": "Thu Oct 01 05:38:25 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 11:08:25 2026 +0530"
      },
      "message": "feat(auth/grpctransport): support DirectPath over Interconnect (#20559)\n\n## Summary\n\nAdds support for DirectPath over Google Cloud Interconnect in\n`cloud.google.com/go/auth/grpctransport` (and `auth/internal/transport`)\nfor on-premises and hybrid environments.\n\n*(Note: The `cloud.google.com/go/storage` changes have been split out\ninto a separate dependent PR so that `cloud.google.com/go/auth` can be\nmerged and released first.)*\n\n### Changes in `auth`\n- **`auth/grpctransport` \u0026 `auth/internal/transport`**:\n- Adds `InternalOptions.EnableDirectPathXdsOverInterconnect` and\nenvironment variable override\n`GOOGLE_CLOUD_ENABLE_DIRECT_PATH_XDS_OVER_INTERCONNECT`.\n- Bypasses GCE residency (`compute.OnComputeEngine()`) and GCE metadata\ndefault service account constraints when DirectPath over Interconnect is\nenabled and valid credentials are provided within the Google Default\nUniverse (`googleapis.com`).\n- Rewrites standard `\u003cservice\u003e.googleapis.com` endpoints to\n`google-c2p:///\u003cservice\u003e-direct.googleapis.com?force-xds` and sets\n`grpc.WithAuthority(\"\u003cservice\u003e.googleapis.com\")` inside\n`configureDirectPath` when DirectPath over Interconnect is eligible.\n- Preserves the original endpoint unmodified when `canUseDirectPath`\nreturns `false`.\n- Skips S2A mTLS and ALTS hard-bound token probing when DirectPath over\nInterconnect is enabled.\n- Strips query parameters (such as `?force-xds`) in `extractHostPort`\nand allows `google-c2p:///` target URIs in `checkDirectPathEndPoint`."
    },
    {
      "commit": "9981d08a82c88e29c2250831a4449f1966418609",
      "tree": "5e9f2fe716f1d707fde234654571e70d670eabe9",
      "parents": [
        "fda935d459df612a40ec6df7c7ec1ff477d8cd50"
      ],
      "author": {
        "name": "release-please[bot]",
        "email": "55107282+release-please[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 10:52:37 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 10:52:37 2026 +0530"
      },
      "message": "chore(main): release storage 1.69.0 (#20542)\n\n:robot: I have created a release *beep* *boop*\n---\n\n\n##\n[1.69.0](https://github.com/googleapis/google-cloud-go/compare/storage/v1.68.0...storage/v1.69.0)\n(2026-10-01)\n\n\n### Features\n\n* **all:** Update supported go versions\n([#20520](https://github.com/googleapis/google-cloud-go/issues/20520))\n([90413d3](https://github.com/googleapis/google-cloud-go/commit/90413d3e9d381ef4b92e3c496d98b023c5b2d8cc))\n* **storage:** Add read stall retry for gRPC storage client\n([#20525](https://github.com/googleapis/google-cloud-go/issues/20525))\n([8bfc486](https://github.com/googleapis/google-cloud-go/commit/8bfc4863da4151976a5e4629ef9dce429edb43d5))\n\n\n### Bug Fixes\n\n* **storage:** Add App Hub storage.googleapis.com prefix to\ndestination.id\n([#20569](https://github.com/googleapis/google-cloud-go/issues/20569))\n([2bca92a](https://github.com/googleapis/google-cloud-go/commit/2bca92a333bcadaa78b7c3b841e5a293e3a681d7))\n* **storage:** Follow-ups for read stall retry\n([#20577](https://github.com/googleapis/google-cloud-go/issues/20577))\n([24eacd5](https://github.com/googleapis/google-cloud-go/commit/24eacd52ffc1697341d5f6a8380abc656292367a))\n* **storage:** Update PartSize documentation and optimize cleanup\n([#19930](https://github.com/googleapis/google-cloud-go/issues/19930))\n([3d09abf](https://github.com/googleapis/google-cloud-go/commit/3d09abf7dd357cbf5c1022a7e65c7859d617ccd6))\n* **various:** Address format directive issues\n([#20547](https://github.com/googleapis/google-cloud-go/issues/20547))\n([e2e1047](https://github.com/googleapis/google-cloud-go/commit/e2e104731999b3bfc75ed0b8f2d71844ced3b073))\n\n---\nThis PR was generated with [Release\nPlease](https://github.com/googleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: release-please[bot] \u003c55107282+release-please[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fda935d459df612a40ec6df7c7ec1ff477d8cd50",
      "tree": "60ac985fd1c20699613d493f436b6382fbc15dd6",
      "parents": [
        "db1c1eedd56534b899067f8f9ad33ce9c83ebf8c"
      ],
      "author": {
        "name": "Noah Dietz",
        "email": "noahdietz@users.noreply.github.com",
        "time": "Wed Sep 30 19:08:02 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 19:08:02 2026 -0700"
      },
      "message": "chore: bump compute preview to 1.72.0-preview.1 (#20610)"
    },
    {
      "commit": "db1c1eedd56534b899067f8f9ad33ce9c83ebf8c",
      "tree": "60dabfbc710c4d37ea3d812b77789b690003f480",
      "parents": [
        "185c388defd190ba9735df32a82bbbda94fc6c9e"
      ],
      "author": {
        "name": "haphungw",
        "email": "haphung.w@gmail.com",
        "time": "Wed Sep 30 17:51:26 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 17:51:26 2026 -0700"
      },
      "message": "test(o11y): add hermetic telemetry client test (#20604)\n\nAdd `TestObservabilitySignals` to hermetically verify Golden Telemetry\nsignals against an in-process fake Secret Manager gRPC server.\n\nUpdate `internal/kokoro/presubmit.sh` and\n`internal/kokoro/continuous.sh` so test modules under\n`internal/testing/` execute during presubmit, continuous, and nightly CI\nruns across both earliest and latest Go versions.\n\nTowards googleapis/google-cloud-go#20535"
    },
    {
      "commit": "185c388defd190ba9735df32a82bbbda94fc6c9e",
      "tree": "225db3f88842c3a861e0ed38095d941b971139c7",
      "parents": [
        "395fc59e067ed2576a1c8c961edf3f749633520c"
      ],
      "author": {
        "name": "Min Zhu",
        "email": "zhumin@google.com",
        "time": "Wed Sep 30 16:12:49 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 16:12:49 2026 -0400"
      },
      "message": "chore: update CODEOWNERS to remove cloud-sdk-librarian-team (#20609)\n\nRemove @googleapis/cloud-sdk-librarian-team as code owner for everything\nother than /librarian.yaml.\n\nFor https://github.com/googleapis/librarian/issues/7739"
    },
    {
      "commit": "395fc59e067ed2576a1c8c961edf3f749633520c",
      "tree": "4a704fb3bb366ec8bd7e460b474677e8034a255f",
      "parents": [
        "3d09abf7dd357cbf5c1022a7e65c7859d617ccd6"
      ],
      "author": {
        "name": "Joe Wang",
        "email": "106995533+JoeWang1127@users.noreply.github.com",
        "time": "Wed Sep 30 15:53:44 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 23:53:44 2026 +0800"
      },
      "message": "feat: update API sources and regenerate (#20607)\n\nUpdate API sources and regenerate.\n\n## Debug Info\n### System Details\n- Go version: go version go1.26.6 linux/amd64\n- OS: Linux 7.1.6-1rodete1-amd64 x86_64\n- Librarian version: v0.46.0\n\n### Commands Executed\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.46.0 update\nsources.googleapis`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.46.0 generate\n--all`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.46.0 tidy`\n- `git add .`\n- `git commit -m \"feat: update API sources and regenerate\"`\n### Included googleapis CLs\n\n**google/ads/datamanager/v1**\n- http://cl/988218184\n\n**google/bigtable/v2**\n- http://cl/987497247\n\n**google/chat/v1**\n- http://cl/990680923\n\n**google/cloud/aiplatform/v1beta1**\n- http://cl/990525310\n\n**google/cloud/apigateway/v1**\n- http://cl/988404601\n\n**google/cloud/commerceproducer/v1beta**\n- http://cl/990614647\n\n**google/cloud/compute/v1**\n- http://cl/990472754\n\n**google/cloud/compute/v1beta**\n- http://cl/989949731\n\n**google/cloud/dataform/v1**\n- http://cl/989490905\n\n**google/cloud/dataform/v1beta1**\n- http://cl/989473161\n\n**google/cloud/dialogflow/v2**\n- http://cl/986988400\n\n**google/cloud/retail/v2alpha**\n- http://cl/989724021\n\n**google/shopping/merchant/products/v1**\n- http://cl/990489149"
    },
    {
      "commit": "3d09abf7dd357cbf5c1022a7e65c7859d617ccd6",
      "tree": "1769f2ff8038545a088d1ffd570156fea43e668a",
      "parents": [
        "d5997c02264161499c5978648991631a84adbef6"
      ],
      "author": {
        "name": "Priti Chattopadhyay",
        "email": "cpriti@google.com",
        "time": "Wed Sep 30 19:25:17 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 19:25:17 2026 +0530"
      },
      "message": "fix(storage): update PartSize documentation and optimize cleanup (#19930)"
    },
    {
      "commit": "d5997c02264161499c5978648991631a84adbef6",
      "tree": "34985e733393b08c65210ce325610181d4ba42f1",
      "parents": [
        "2bca92a333bcadaa78b7c3b841e5a293e3a681d7"
      ],
      "author": {
        "name": "Joe Wang",
        "email": "106995533+JoeWang1127@users.noreply.github.com",
        "time": "Wed Sep 30 13:44:58 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 08:44:58 2026 -0500"
      },
      "message": "chore: update librarian version to v0.46.0 (#20597)\n\nUpdate librarian version to v0.46.0.\n\n## Debug Info\n### System Details\n- Go version: go version go1.26.6 linux/amd64\n- OS: Linux 7.1.6-1rodete1-amd64 x86_64\n- Librarian version: v0.46.0\n\n### Commands Executed\n- `go run github.com/googleapis/librarian/cmd/librarian@latest update\nversion`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.46.0 tidy`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.46.0 install`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.46.0 generate\n--all`\n- `git add .`\n- `git commit -m \"chore: update librarian version to v0.46.0\"`\n\n### Included Librarian Updates\n- googleapis/librarian#7653: chore(main): release 0.46.0\n- googleapis/librarian#7691: fix(generate): race related to `docindex`\n- googleapis/librarian#7689: fix(internal/sidekick): restore protocol\nmethod"
    },
    {
      "commit": "2bca92a333bcadaa78b7c3b841e5a293e3a681d7",
      "tree": "7f29b775605101dd666f896827fadc02334ecbc3",
      "parents": [
        "62ea97e0cb58324165bdaa5a5b0308a0f89c3827"
      ],
      "author": {
        "name": "Priti Chattopadhyay",
        "email": "cpriti@google.com",
        "time": "Wed Sep 30 18:55:30 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 18:55:30 2026 +0530"
      },
      "message": "fix(storage): add App Hub storage.googleapis.com prefix to destination.id (#20569)\n\nCloud Trace\u0027\u0027s App Hub URI extractor requires a full resource name of\nthe form `//storage.googleapis.com/projects/{project}/buckets/{bucket}`.\nA bare path like `projects/{project}/buckets/{bucket}` is rejected and\nthe span is silently dropped from App Hub enrichment.\n\nThis PR adds the `//storage.googleapis.com/` prefix to\n`gcp.resource.destination.id` emitted by the Storage SDK, aligning it\nwith Cloud Trace expectations.\n\nAlso fixes an issue with `fetchBackground` creating a detached context\nusing `context.Background()`, which resulted in an orphan root span by\ndropping the active span context. It now uses `context.WithoutCancel` to\npersist the trace context while outliving the original request bounds."
    },
    {
      "commit": "62ea97e0cb58324165bdaa5a5b0308a0f89c3827",
      "tree": "fd48885e08e05b35179f2022ab105ef24879207e",
      "parents": [
        "1b99cd42fa0059bcc344f103063d7a3821dee508"
      ],
      "author": {
        "name": "Mattie Fu",
        "email": "mattiefu@google.com",
        "time": "Tue Sep 29 22:28:19 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 22:28:19 2026 -0400"
      },
      "message": "docs(bigtable): document admin client guidance in AGENTS.md (#20603)\n\n## Summary\n\n- Documents that `bigtable/admin/apiv2/` is auto-generated from the\nBigtable Admin proto and must not be edited directly; proto changes are\nthe right entry point.\n- Points agents to the two generated clients as the authoritative\nreference when writing application code that calls admin operations:\n- `bigtable_instance_admin_client.go` — instance, cluster, app-profile\nops\n  - `table_admin.go` — table, backup, schema ops\n\n## Test plan\n- [ ] No code changes; documentation-only update to\n`bigtable/AGENTS.md`."
    },
    {
      "commit": "1b99cd42fa0059bcc344f103063d7a3821dee508",
      "tree": "76fc607da900839d170841af25a4b7d07b65b7f6",
      "parents": [
        "9b5aebf41b5f3d24c9176af4a410583de1efbc89"
      ],
      "author": {
        "name": "shollyman",
        "email": "shollyman@google.com",
        "time": "Tue Sep 29 14:53:48 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 14:53:48 2026 -0700"
      },
      "message": "testing: correct presubmit logic (#20601)\n\nThis PR makes a minor change to the presubmit driver, and introduces a\nstale go.mod/sum pair that should induce test failures."
    },
    {
      "commit": "9b5aebf41b5f3d24c9176af4a410583de1efbc89",
      "tree": "1aadbe0bc60c8ade52f7b6be949b99d9a5fcaa2b",
      "parents": [
        "31e8a93f63b973b69ed09c4c97904b14e18cd116"
      ],
      "author": {
        "name": "Mattie Fu",
        "email": "mattiefu@google.com",
        "time": "Tue Sep 29 17:07:02 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 17:07:02 2026 -0400"
      },
      "message": "feat(bigtable): add classic-path fallback to accelerator daemon (#20598)\n\n## Summary\n\n- Adds `--fallback` flag to the accelerator daemon. When set, a\n`FallbackChannel` wraps the session `Channel` and transparently retries\nRPCs via `bigtable.Client` (classic path) when the session backend\nreturns `codes.Unimplemented` (instance lacks session serving).\n- Uses `bigtable.Client` directly for the classic path so retry logic\n(gax backoff, `RetryInfo` header, retryable `INTERNAL` codes) stays in\nsync with the rest of the Go client without duplication.\n- Adds two minimal seams to the `bigtable` package: `RawProtoFilter` and\n`NewMutationFromProto`, so the fallback can pass proto fields from\nincoming requests directly into `bigtable.Client` calls without a\nround-trip through the Go Filter/Mutation API.\n\n## Design notes\n\n- `DisableSession: true` prevents the fallback `bigtable.Client` from\nspinning up session infrastructure it never uses.\n- A sticky `atomic.Bool` breaker (per `FallbackChannel`) skips the\nsession path after the first backend `Unimplemented`, matching the\nPython client\u0027s per-table breaker behavior.\n- Shape-based `Unimplemented` (unsupported request forms from\n`validateSingleRowReadRequest`) propagates to the caller as-is so the\nPython client\u0027s per-method native fallback handles it. Only\nbackend-originated `Unimplemented` (from `RecvMsg`, after a valid\nsession dispatch) trips the sticky flag.\n- Supports tables, authorized views, and materialized views.\n\n## Test plan\n\n- [ ] Existing accelerator unit tests pass (`go test\n./internal/accelerator/... -count\u003d1 -short`)\n- [ ] Manual integration test against an instance without session\nserving enabled: verify `--fallback\u003dtrue` daemon serves reads and writes\nvia classic path after the first `Unimplemented` from the session\nbackend\n- [ ] Manual integration test against an instance with session serving\nenabled: verify `--fallback\u003dtrue` daemon uses session path normally with\nno fallback triggered"
    },
    {
      "commit": "31e8a93f63b973b69ed09c4c97904b14e18cd116",
      "tree": "cc0e05de6c956ab885b06a2e978a8890d1ab4abb",
      "parents": [
        "fdb3b574193833da864b6f92d98bba53da8ae284"
      ],
      "author": {
        "name": "shollyman",
        "email": "shollyman@google.com",
        "time": "Tue Sep 29 10:34:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 17:34:21 2026 +0000"
      },
      "message": "chore: update apptopology go.mod (#20600)\n\napptopology had a stale gax-go usage, and observed failures overnight due to regen invoking gax options not present in the older version."
    },
    {
      "commit": "fdb3b574193833da864b6f92d98bba53da8ae284",
      "tree": "ee2ac0d629d299ce5f9a0a7420040b40215847ac",
      "parents": [
        "be75f7e1de9e42685bc12eb9adc8d2fb61a75911"
      ],
      "author": {
        "name": "Baha Aiman",
        "email": "bahaaiman@google.com",
        "time": "Tue Sep 29 09:38:40 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 16:38:40 2026 +0000"
      },
      "message": "test(firestore): enable BSON integration tests (#20599)\n\nEnable the BSON integration tests in `integration_test.go` and\n`pipeline_integration_test.go` now that BSON support is available in\nproduction for Enterprise databases:\n- Unskip `testIntegrationBSONTypes`, `testIntegrationBSONQueries`,\n`testIntegrationBSONCrossTypeOrder`,\n`testIntegrationBSONValidationRejection`, and `bsonPipelineFuncs`.\n- Remove the `Snapshots` (Watch stream) check (`getFirstSnapshot`) from\n`assertQueryOrder` since `Listen` queries are not supported on\nEnterprise databases (client-side BSON value comparison is already\ncovered by unit tests in `order_test.go`)."
    },
    {
      "commit": "be75f7e1de9e42685bc12eb9adc8d2fb61a75911",
      "tree": "ff7447a2b392192f92cedec8405d34aa9ac88bc2",
      "parents": [
        "3dcc2c30f99b6d2aa51143dfb8e2eecac2f3f99d"
      ],
      "author": {
        "name": "rahul2393",
        "email": "irahul@google.com",
        "time": "Tue Sep 29 17:11:14 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 17:11:14 2026 +0530"
      },
      "message": "fix(spanner): record streaming built-in metrics per result stream (#20596)\n\nRowIterator recorded a built-in metrics operation on each call to Next\nthat opened a stream. Operation latency was therefore about the time to\nthe first result, a resumed stream was recorded as a second operation,\nand a non-retryable error after the first rows was never recorded as an\noperation. It also created a metrics tracer on every call to Next.\n\nRecord one operation per result stream instead, matching the published\ndefinitions of the client-side metrics:\nhttps://cloud.google.com/spanner/docs/client-side-metrics-descriptions \n\n- The operation starts when the first stream is opened and ends when\nNext returns iterator.Done (OK) or an error (its status), or when Stop\nis called before that (OK). Its latency includes retries, backoff and\nthe application time between calls to Next. Iterators that are neither\nread to the end nor stopped record nothing.\n- Every stream that is opened or resumed is an attempt of that\noperation, from its open until the stream ends or fails. The attempt\ncount is still recorded when the operation ends.\n- The tracer is created when the first stream is opened and only when\nbuilt-in metrics are enabled, so Next does no per-row metrics work.\n- The stream metrics interceptor sets the method before creating the\nstream, so a stream that fails to open is recorded as an attempt of its\nmethod. Attempts that fail before the RPC is sent are not recorded."
    },
    {
      "commit": "3dcc2c30f99b6d2aa51143dfb8e2eecac2f3f99d",
      "tree": "84521211528155e6eecae586beb7a9ca7e8c993e",
      "parents": [
        "f116187a8e1b2c998fb2c0036985a8909f4c9235"
      ],
      "author": {
        "name": "rahul2393",
        "email": "irahul@google.com",
        "time": "Tue Sep 29 12:23:09 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 12:23:09 2026 +0530"
      },
      "message": "perf(spanner): skip reading response headers when no latency sink is enabled (#20583)\n\nResponse headers carry the GFE/AFE server-timing latency. That latency\nfeeds OpenCensus or OpenTelemetry GFE latency metrics, built-in metrics,\nand the `gfe.latency_ms` / `afe.latency_ms` attributes of recording\nspans. Several call paths copied and parsed these headers even when none\nof their consumers was enabled. This PR applies one rule to streaming,\nunary and BatchWrite calls: skip the header capture when nothing on that\npath uses it.\n\nThis does **not** reduce network wait. The first `Recv()` on a stream\nalways waits for the response headers, because they are sent before any\ndata. What it removes is CPU and allocations: header map copies and\nserver-timing parsing on the no-sink path."
    },
    {
      "commit": "f116187a8e1b2c998fb2c0036985a8909f4c9235",
      "tree": "defd678f560e2efc4bde722b38a7bd68ee36481d",
      "parents": [
        "a20cbc92bb1c457f7f85788eee572190f1cff46d"
      ],
      "author": {
        "name": "haphungw",
        "email": "haphung.w@gmail.com",
        "time": "Mon Sep 28 14:41:30 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 14:41:30 2026 -0700"
      },
      "message": "chore: update gapic-generator-go to 0.65.0 (#20590)\n\nUpdate `protoc-gen-go_gapic` to `v0.65.0` in `librarian.yaml` and\nregenerate clients to wire default client tracing and structured error\nlogging (`https://github.com/googleapis/gapic-generator-go/pull/1801`).\n\nTowards googleapis/google-cloud-go#20535"
    },
    {
      "commit": "a20cbc92bb1c457f7f85788eee572190f1cff46d",
      "tree": "19ada1cb4c33e2a3623a0be32bfdea2872c0ffef",
      "parents": [
        "979a694f4765b21cde538724182b52a436e7cf81"
      ],
      "author": {
        "name": "shollyman",
        "email": "shollyman@google.com",
        "time": "Mon Sep 28 13:42:49 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 20:42:49 2026 +0000"
      },
      "message": "chore: bump gax/v2 usages to 2.26.2 (#20588)\n\nTo prepare for observability improvements, this PR bumps usages of gax-go up to a newer release.  Other changes are due to automatic deps resolution"
    },
    {
      "commit": "979a694f4765b21cde538724182b52a436e7cf81",
      "tree": "d3233933c8db4a3c84aa8c98b12ef53c1fdf98cf",
      "parents": [
        "22bb42abb3d58f1058e513c6030010f7a44b536d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 28 15:32:28 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 15:32:28 2026 -0400"
      },
      "message": "chore(deps): bump go.opentelemetry.io/otel/sdk from 1.44.0 to 1.45.0 in /iam (#20587)"
    },
    {
      "commit": "22bb42abb3d58f1058e513c6030010f7a44b536d",
      "tree": "ba6db0e5ff06a4c7533b72d4ce1d9329dfa8e51f",
      "parents": [
        "9971a0c2b414ca671ab1b83ca7cba6c3cc96f00f"
      ],
      "author": {
        "name": "shollyman",
        "email": "shollyman@google.com",
        "time": "Mon Sep 28 11:32:18 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 11:32:18 2026 -0700"
      },
      "message": "chore: update otel dependencies (#20586)"
    },
    {
      "commit": "9971a0c2b414ca671ab1b83ca7cba6c3cc96f00f",
      "tree": "c4e0afe59a9c3b31c8725ff0dc6479df98dbe209",
      "parents": [
        "24eacd52ffc1697341d5f6a8380abc656292367a"
      ],
      "author": {
        "name": "rahul2393",
        "email": "irahul@google.com",
        "time": "Mon Sep 28 20:11:28 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 20:11:28 2026 +0530"
      },
      "message": "perf(spanner): skip builtin metrics tracer allocation when metrics are disabled (#20582)\n\nUnary RPC wrappers allocated a builtin metrics tracer, operation state\nand read the clock on every call even when built-in metrics were\ndisabled. The tracer factory now returns nil in that case and the\nwrappers, record functions and unary metrics interceptor handle a nil\ntracer.\n\nServer timing span attributes are still recorded for traced unary calls\nwhen metrics are disabled. Behavior with metrics enabled is unchanged.\n\n ## Benchmark\n\nBuilt-in metrics disabled (`DisableNativeMetrics: true`, no\n`ClientMetricsProvider`), in-memory Spanner server. Each op is a\nread-write transaction with one DML\nstatement, which issues two unary RPCs (`ExecuteSql` with inline begin,\nthen `Commit`). The benchmark is not included in this change.\n\n  ```\n  goos: darwin\n  goarch: arm64\n  cpu: Apple M2 Max\n  go: go1.26.7\n│ main │ this PR │\n│ sec/op │ sec/op vs base │\nDMLTransactionMetricsDisabled-12 165.1µ ± 5% 163.1µ ± 6% ~ (p\u003d0.289\nn\u003d20)\n\n│ main │ this PR │\n│ B/op │ B/op vs base │\nDMLTransactionMetricsDisabled-12 51.05Ki ± 0% 49.17Ki ± 0% -3.69%\n(p\u003d0.000 n\u003d20)\n\n│ main │ this PR │\n│ allocs/op │ allocs/op vs base │\nDMLTransactionMetricsDisabled-12 745.0 ± 0% 721.0 ± 0% -3.22% (p\u003d0.000\nn\u003d20)\n  ```\n\n  ### Summary\n\n- With built-in metrics disabled, each unary RPC no longer allocates a\nmetrics tracer, its operation state, the context value that carries it,\nor the server-timing parse result. That saves about **12 allocations and\nabout 960 B per unary RPC** (24 allocations and about 1.9 KiB per\ntransaction above).\n- The reduction is the same in every run (±0%), so it applies to every\nunary call.\n- Latency is unchanged within noise. The benefit is less allocation and\nGC pressure at high request rates, not per-call latency.\n  - Behavior with built-in metrics enabled is unchanged.\n\n  \u003cdetails\u003e\n  \u003csummary\u003eBenchmark used (not committed)\u003c/summary\u003e\n\n  ```go\n  func BenchmarkDMLTransactionMetricsDisabled(b *testing.B) {\n_, client, teardown :\u003d setupMockedTestServerWithConfig(\u0026testing.T{},\nClientConfig{DisableNativeMetrics: true})\n        defer teardown()\n        ctx :\u003d context.Background()\n        stmt :\u003d NewStatement(UpdateBarSetFoo)\n        run :\u003d func() {\nif _, err :\u003d client.ReadWriteTransaction(ctx, func(ctx context.Context,\ntx *ReadWriteTransaction) error {\n                        _, err :\u003d tx.Update(ctx, stmt)\n                        return err\n                }); err !\u003d nil {\n                        b.Fatal(err)\n                }\n        }\n        run() // warm up the session and channel\n        b.ReportAllocs()\n        b.ResetTimer()\n        for i :\u003d 0; i \u003c b.N; i++ {\n                run()\n        }\n  }\n  ```\n\nRun on both commits, interleaved: `go test -run \u0027^$\u0027 -bench\nDMLTransactionMetricsDisabled -benchmem -count 2 -benchtime 3000x .` (5\nrounds per side), then `benchstat main.txt pr.txt`.\n  \u003c/details\u003e"
    },
    {
      "commit": "24eacd52ffc1697341d5f6a8380abc656292367a",
      "tree": "5b19c798f67f7222b16a632721d77c288229c6dd",
      "parents": [
        "967a532a6d1f3ffe5210c7f972b82b20ef663c2d"
      ],
      "author": {
        "name": "Priti Chattopadhyay",
        "email": "cpriti@google.com",
        "time": "Mon Sep 28 13:43:00 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 13:43:00 2026 +0530"
      },
      "message": "fix(storage): follow-ups for read stall retry (#20577)\n\nFollow-ups to #20525.\n\n**1. XML reads: don\u0027t leak invocation headers across retries.**\n`newRangeReaderXML` reuses one `*http.Request` for every attempt, and\n`setHeadersFromCtx` merges `x-goog-api-client` values into whatever the\nheader already contains. As a result, retried requests carried the\nattempt counts from all earlier attempts, e.g. on attempt 3:\n`gccl-invocation-id/… gccl-attempt-count/3 gl-go/… gccl/…\ngccl-attempt-count/2 gccl-attempt-count/1`.\nThe fix snapshots the header value before the first attempt and restores\nit at the start of each attempt, before the per-attempt context headers\nare applied. The new test `TestXMLReaderRetryInvocationHeaders` checks\nthat each of 3 attempts carries exactly one `gccl-attempt-count/N` (the\ncorrect N) and exactly one `gccl-invocation-id`.\n\n**2. Emulator stall tests: cover BidiReadObject, and assert the stall\nwas injected.**\n- `TestGRPCRetryReadStallEmulated` now runs for both `ReadObject` and\n`BidiReadObject` (`WithGRPCBidiReads()`).\n- The HTTP and gRPC stall tests now call a new helper,\n`checkRetryTestCompleted`, which reuses `emulatorTest.check()`. It fails\nthe test if the testbench didn\u0027t use the stall instruction, so the tests\ncan no longer pass without a stall ever happening.\n- Requires storage-testbench **v0.64.0** (gRPC read stall support,\ngoogleapis/storage-testbench#819).\n\n**3. Stall metric description.**\nThe description of `gcp.storage.client.stall.duration` said \"waiting for\nthe first byte\", which is only accurate for HTTP. It now says: stall\ntimeout after which a read attempt was aborted while waiting for the\ninitial response (response headers for HTTP, first response message for\ngRPC).\n\n**4. `executeWithReadStallTimeout`: prefer the real result when it\narrives at the same moment the timer fires.**\nIf `openStream` finished just as the stall timer fired, `select` could\npick the timer case at random. That threw away a real success (or a real\nerror such as NotFound) and reported a stall instead. The timer case now\nfirst checks whether `openStream` has already finished and, if so,\nreturns its result.\n\n## Testing\n- `go build ./...`, `go vet .`, `gofmt -l .`: clean.\n- `go test -short -race -count\u003d1 .`: pass.\n- `go test -short -race -count\u003d50 -run TestExecuteWithReadStallTimeout\n.`: pass.\n- `TestXMLReaderRetryInvocationHeaders` fails without fix 1 (2 or 3\n`gccl-attempt-count` tokens on attempts 2 and 3) and passes with it.\n- Emulator tests against storage-testbench **v0.64.0**:\n`TestRetryReadStallEmulated`,\n`TestGRPCRetryReadStallEmulated/ReadObject` and\n`TestGRPCRetryReadStallEmulated/BidiReadObject` all pass (~0.3s each:\nstall, then retry).\n- The same tests against **v0.63.0** fail with `test not completed;\nunused instructions: map[storage.objects.get:[stall-for-10s-after-0K]]`,\nwhich confirms the new assertion works."
    },
    {
      "commit": "967a532a6d1f3ffe5210c7f972b82b20ef663c2d",
      "tree": "17e99bf719e8ba2406cb9760a5dcf4d3f59da707",
      "parents": [
        "5f385428ea1a0b47c1ec758096307b34eb3e2555"
      ],
      "author": {
        "name": "release-please[bot]",
        "email": "55107282+release-please[bot]@users.noreply.github.com",
        "time": "Fri Sep 25 14:57:12 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 25 14:57:12 2026 -0400"
      },
      "message": "chore(main): release bigtable 1.58.0 (#20528)\n\n:robot: I have created a release *beep* *boop*\n---\n\n\n##\n[1.58.0](https://github.com/googleapis/google-cloud-go/compare/bigtable/v1.57.0...bigtable/v1.58.0)\n(2026-09-25)\n\n\n### Features\n\n* **all:** Update supported go versions\n([#20520](https://github.com/googleapis/google-cloud-go/issues/20520))\n([90413d3](https://github.com/googleapis/google-cloud-go/commit/90413d3e9d381ef4b92e3c496d98b023c5b2d8cc))\n* **bigtable:** Support hot duration, disabled, and effective backup\npolicy\n([#20573](https://github.com/googleapis/google-cloud-go/issues/20573))\n([da2bfcc](https://github.com/googleapis/google-cloud-go/commit/da2bfcc3bcf396acbd3fbbbbfb50cb7feb184496))\n* Update API sources and regenerate\n([#20526](https://github.com/googleapis/google-cloud-go/issues/20526))\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n* Update API sources and regenerate\n([#20570](https://github.com/googleapis/google-cloud-go/issues/20570))\n([cc91d66](https://github.com/googleapis/google-cloud-go/commit/cc91d66d3435de4bed07ffec7abc226cdcdbf29c))\n* Update API sources and regenerate.\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n\n\n### Bug Fixes\n\n* **bigtable:** Detect omitted MutateRows response entries in ApplyBulk\n([#20557](https://github.com/googleapis/google-cloud-go/issues/20557))\n([68b3f33](https://github.com/googleapis/google-cloud-go/commit/68b3f3321bd5ba7d72a60b425345a4680023925b))\n* **bigtable:** Fix TestRetryApplyBulk_OverallRequestFailure test\ninterceptor\n([#20574](https://github.com/googleapis/google-cloud-go/issues/20574))\n([25bc085](https://github.com/googleapis/google-cloud-go/commit/25bc085c8fde602f7027cb48532f204be9e0dbd5))\n* **various:** Address format directive issues\n([#20547](https://github.com/googleapis/google-cloud-go/issues/20547))\n([e2e1047](https://github.com/googleapis/google-cloud-go/commit/e2e104731999b3bfc75ed0b8f2d71844ced3b073))\n\n---\nThis PR was generated with [Release\nPlease](https://github.com/googleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: release-please[bot] \u003c55107282+release-please[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5f385428ea1a0b47c1ec758096307b34eb3e2555",
      "tree": "d91b500965dc221c019e956679988d6229928236",
      "parents": [
        "8bfc4863da4151976a5e4629ef9dce429edb43d5"
      ],
      "author": {
        "name": "Mattie Fu",
        "email": "mattiefu@google.com",
        "time": "Fri Sep 25 11:20:17 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 25 11:20:17 2026 -0400"
      },
      "message": "deps(bigtable): bump cloud-bigtable-clients-test to v0.0.5 (#20578)\n\n## Summary\n\nBumps `github.com/googleapis/cloud-bigtable-clients-test` from `v0.0.4`\nto `v0.0.5`.\n\n`v0.0.5` fixes the flaky `TestReadRow_NoRetry_CommitInSeparateChunk`\nconformance test\n([#300](https://github.com/googleapis/cloud-bigtable-clients-test/pull/300)):\n`rowToProto` now sorts families before building the response proto, so\nthe assertion no longer depends on non-deterministic Go map iteration\norder.\n\n## Test plan\n\n- [ ] Conformance tests pass without flaking on\n`TestReadRow_NoRetry_CommitInSeparateChunk`"
    },
    {
      "commit": "8bfc4863da4151976a5e4629ef9dce429edb43d5",
      "tree": "e3679fadc0688772005683822c01d07185dfc96b",
      "parents": [
        "da2bfcc3bcf396acbd3fbbbbfb50cb7feb184496"
      ],
      "author": {
        "name": "dangarhs",
        "email": "dangarhshubham@gmail.com",
        "time": "Fri Sep 25 12:08:19 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 25 06:38:19 2026 +0000"
      },
      "message": "feat(storage): add read stall retry for gRPC storage client (#20525)\n\nAdds support for dynamic read stall timeouts (`WithReadStallTimeout`) to\nthe gRPC storage client (`BidiReadObject` and legacy `ReadObject`\npaths), bringing feature parity with the XML HTTP client.\n\n- Extracts dynamic read stall timeout orchestration into\n`executeWithReadStallTimeout` in `storage/dynamic_delay.go`.\n- Wires `executeWithReadStallTimeout` into both\n`grpcStorageClient.NewRangeReader` and\n`grpcStorageClient.NewRangeReaderReadObject`.\n- Deduplicates `x-goog-api-client` headers using `strings.Fields` and\n`slices.Contains` in `setHeadersFromCtx`.\n- Adds unit tests in `storage/dynamic_delay_test.go` and an emulated\ngRPC stall retry test in `storage/client_test.go`.\n\n---------\n\nCo-authored-by: Priti Chattopadhyay \u003ccpriti@google.com\u003e"
    },
    {
      "commit": "da2bfcc3bcf396acbd3fbbbbfb50cb7feb184496",
      "tree": "7d8a4852c0a858e2c3dba001f5d4377309a3abc3",
      "parents": [
        "25bc085c8fde602f7027cb48532f204be9e0dbd5"
      ],
      "author": {
        "name": "NickASC4",
        "email": "saffron195@gmail.com",
        "time": "Thu Sep 24 19:18:14 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 19:18:14 2026 -0400"
      },
      "message": "feat(bigtable): support hot duration, disabled, and effective backup policy (#20573)\n\nExpose KeepHotDuration and Disabled on TableAutomatedBackupPolicy for\ntable creation, updates, and retrieval. Also expose the output-only\nEffectiveAutomatedBackupPolicy field on TableInfo."
    },
    {
      "commit": "25bc085c8fde602f7027cb48532f204be9e0dbd5",
      "tree": "ba25cc89cf940091f7c8a0fa219f0fd244bc4f27",
      "parents": [
        "8a17bee208939e0166936a59675414439c47e341"
      ],
      "author": {
        "name": "Mattie Fu",
        "email": "mattiefu@google.com",
        "time": "Thu Sep 24 17:37:41 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 17:37:41 2026 -0400"
      },
      "message": "fix(bigtable): fix TestRetryApplyBulk_OverallRequestFailure test interceptor (#20574)\n\n## Summary\n\n- The stream interceptor\u0027s success branch (`errCount \u003e\u003d 3`) returned\n`nil` without calling `handler(srv, ss)`, so the fake server never wrote\nany `MutateRowsResponse` entries.\n- The client received a clean gRPC stream with zero response entries for\nits one mutation and raised `bigtable: missing entry result in\nMutateRows response`.\n- Fixed by delegating to `handler(srv, ss)` on the success path,\nmatching the pattern used by every other interceptor in `retry_test.go`.\n\n## Test plan\n\n- [ ] `go test -run TestRetryApplyBulk_OverallRequestFailure -v -count\u003d1\n./bigtable/` passes\n- [ ] `go test -run TestRetryApplyBulk -v -count\u003d1 ./bigtable/` — all\nbulk retry tests pass"
    },
    {
      "commit": "8a17bee208939e0166936a59675414439c47e341",
      "tree": "d18c4d8cde43ff547026e84059d5bda833874d76",
      "parents": [
        "07831307923aa343a6b02725d737c136ba3e6f8d"
      ],
      "author": {
        "name": "release-please[bot]",
        "email": "55107282+release-please[bot]@users.noreply.github.com",
        "time": "Thu Sep 24 12:36:54 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 12:36:54 2026 -0700"
      },
      "message": "chore: release main (#20540)\n\nThis release is too large to preview in the pull request body. View the\nfull release notes here:\nhttps://github.com/googleapis/google-cloud-go/blob/release-please--branches--main--release-notes/release-notes.md\n\n---------\n\nCo-authored-by: release-please[bot] \u003c55107282+release-please[bot]@users.noreply.github.com\u003e\nCo-authored-by: sofisl \u003c55454395+sofisl@users.noreply.github.com\u003e"
    },
    {
      "commit": "07831307923aa343a6b02725d737c136ba3e6f8d",
      "tree": "5cc788b4fbf742507800d8a08775f832df7bbfd0",
      "parents": [
        "cc91d66d3435de4bed07ffec7abc226cdcdbf29c"
      ],
      "author": {
        "name": "release-please[bot]",
        "email": "55107282+release-please[bot]@users.noreply.github.com",
        "time": "Wed Sep 23 15:33:16 2026 +0000"
      },
      "committer": {
        "name": "Ben Kazemi",
        "email": "BenjaminKazemi@users.noreply.github.com",
        "time": "Wed Sep 23 15:27:26 2026 -0700"
      },
      "message": "chore(main): release agentplatform 0.22.0"
    },
    {
      "commit": "cc91d66d3435de4bed07ffec7abc226cdcdbf29c",
      "tree": "b3b83a6d14bd0f41c629257c30cfde63ecf39656",
      "parents": [
        "d3974fa9e15413351912096ba2d6ebf0da5a89cb"
      ],
      "author": {
        "name": "sofisl",
        "email": "55454395+sofisl@users.noreply.github.com",
        "time": "Wed Sep 23 10:44:26 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 10:44:26 2026 -0700"
      },
      "message": "feat: update API sources and regenerate (#20570)\n\nUpdate API sources and regenerate.\n\n## Debug Info\n### System Details\n- Go version: go version go1.26.6 linux/amd64\n- OS: Linux 7.1.6-1rodete1-amd64 x86_64\n- Librarian version: v0.45.0\n\n### Commands Executed\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.45.0 install`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.45.0 update\nsources.googleapis`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.45.0 generate\n--all`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.45.0 tidy`\n- `git add .`\n- `git commit -m \"feat: update API sources and regenerate\"`\n### Included googleapis CLs\n\n**google/bigtable/admin/v2**\n- http://cl/985340194\n\n**google/chat/v1**\n- http://cl/985471432\n- http://cl/984009633\n- http://cl/982580920\n\n**google/cloud/agentregistry/v1**\n- http://cl/984147399\n\n**google/cloud/geminidataanalytics/v1**\n- http://cl/985350099\n\n**google/cloud/geminidataanalytics/v1beta**\n- http://cl/985427080\n\n**google/cloud/lustre/v1**\n- http://cl/985572102\n\n**google/cloud/parametermanager/v1**\n- http://cl/982650924\n\n**google/cloud/sql/v1**\n- http://cl/985143287\n\n**google/cloud/sql/v1beta4**\n- http://cl/985077866\n\n**google/cloud/tasks/v2**\n- http://cl/984260262\n\n**google/cloud/vectorsearch/v1**\n- http://cl/984037515\n\n**google/cloud/vectorsearch/v1beta**\n- http://cl/984035901\n\n**google/monitoring/dashboard/v1**\n- http://cl/986124202"
    },
    {
      "commit": "d3974fa9e15413351912096ba2d6ebf0da5a89cb",
      "tree": "3bc542068798b05d62d5c95aa89d74183ecf41eb",
      "parents": [
        "39f0ea51dcbcae2bef1e8c900bdf2e675a19199c"
      ],
      "author": {
        "name": "rahul2393",
        "email": "irahul@google.com",
        "time": "Wed Sep 23 23:12:27 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 23:12:27 2026 +0530"
      },
      "message": "chore(spanner): generate private vtprotobuf copy of google.spanner.v1 under internal/vtpb (#20566)\n\nConfigure a librarian internal copy of google/spanner/v1 for the spanner\nmodule\n\nThe copy is a private, renamed version of the Spanner data-plane\nmessages (proto package google.spanner.v1.vtinternal, files under\ngoogle/spanner/v1/vtinternal) generated with protoc-gen-go-vtproto\nalongside protoc-gen-go. It contains messages only, no service or gRPC\ncode. Renaming the proto package and file paths keeps protobuf-go\u0027s\nglobal registry free of conflicts, so the public and private copies can\nbe linked into the same binary.\n\nThis is groundwork for an optional, faster decoding path for query\nresults. Keeping the vtprotobuf code in an internal package means:\n- no vt methods are added to the public spannerpb types, so users cannot\ndepend on them;\n- nothing in the spanner package imports the copy yet, so applications\ndo not link any vtprotobuf code;\n  - vtprotobuf can be removed later without a public API change.\n\nThe public spannerpb package is unchanged.\n\nRefs googleapis/librarian#7585"
    },
    {
      "commit": "39f0ea51dcbcae2bef1e8c900bdf2e675a19199c",
      "tree": "b9c05d2b1fab5ca1440867c9e0a2f18c6fb992f3",
      "parents": [
        "9b3c9a557153b81a32403489c13593b3cdfdea6a"
      ],
      "author": {
        "name": "Maksim P",
        "email": "6707562+maksimp13@users.noreply.github.com",
        "time": "Wed Sep 23 22:22:13 2026 +0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 15:22:13 2026 +0000"
      },
      "message": "fix(auth): honor DisableAsyncRefresh and EarlyTokenRefresh consistently (#20564)\n\nDisableAsyncRefresh and EarlyTokenRefresh are documented on DetectOptions,\nbut several code paths drop them before they reach the token cache that is\nactually used. Credentials on those paths always refresh asynchronously: a\ntoken inside the early refresh window is returned as is while a background\nrefresh runs, and with sparse traffic it can expire in flight, which\nsurfaces as a 401 from the API.\n\nThis change passes both options through on every path:\n\n- fileCredentials passes DisableAsyncRefresh to the cache it creates, which\n  covers service_account, impersonated_service_account and\n  gdch_service_account.\n- authorized_user, external_account and external_account_authorized_user\n  already return a cached provider, so NewCachedTokenProvider returns it\n  unchanged and ignores the options. The options now reach those inner\n  caches: Options3LO gets a DisableAsyncRefresh field, and the internal\n  externalaccount and externalaccountuser options get EarlyTokenRefresh and\n  DisableAsyncRefresh. OAuth client credentials files are covered the same\n  way.\n- transport.CloneDetectOptions copies DisableAsyncRefresh, so it survives\n  DetectOpts passed to httptransport and grpctransport.\n- cachedTokenProvider.tokenBlocking checks the token against the configured\n  ExpireEarly instead of the fixed 225s default.\n\nBehavior changes: in blocking mode a custom EarlyTokenRefresh now takes\neffect (the default is unchanged), and external_account and\nexternal_account_authorized_user now honor EarlyTokenRefresh.\n\nTestDefaultCredentials_DisableAsyncRefresh checks every JSON credential\ntype end to end.\n\nFixes #20563"
    },
    {
      "commit": "9b3c9a557153b81a32403489c13593b3cdfdea6a",
      "tree": "2f4426ef8ee3c61a87b82aa5043d9fed1094f7cc",
      "parents": [
        "68b3f3321bd5ba7d72a60b425345a4680023925b"
      ],
      "author": {
        "name": "sofisl",
        "email": "55454395+sofisl@users.noreply.github.com",
        "time": "Tue Sep 22 12:01:04 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 12:01:04 2026 -0700"
      },
      "message": "chore: update librarian version to v0.45.0 (#20565)\n\nUpdate librarian version to v0.45.0.\n\n## Debug Info\n### System Details\n- Go version: go version go1.26.6 linux/amd64\n- OS: Linux 7.1.6-1rodete1-amd64 x86_64\n- Librarian version: v0.45.0\n\n### Commands Executed\n- `go run github.com/googleapis/librarian/cmd/librarian@latest update\nversion`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.45.0 tidy`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.45.0 install`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.45.0 generate\n--all`\n- `git add .`\n- `git commit -m \"chore: update librarian version to v0.45.0\"`"
    },
    {
      "commit": "68b3f3321bd5ba7d72a60b425345a4680023925b",
      "tree": "145eacfb4f4971b0967830ced520a568ddb5e8e2",
      "parents": [
        "17626fb33aefc67bca73052dca6b95b4edb7b68d"
      ],
      "author": {
        "name": "Mattie Fu",
        "email": "mattiefu@google.com",
        "time": "Tue Sep 22 12:57:33 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 12:57:33 2026 -0400"
      },
      "message": "fix(bigtable): detect omitted MutateRows response entries in ApplyBulk (#20557)"
    },
    {
      "commit": "17626fb33aefc67bca73052dca6b95b4edb7b68d",
      "tree": "b34c81af337a8b9cf8e0fe6f83e4937390d0fc05",
      "parents": [
        "ec37b97b1dd08c9d8191afd5881fa29eaed86701"
      ],
      "author": {
        "name": "Sakthivel Subramanian",
        "email": "179120858+sakthivelmanii@users.noreply.github.com",
        "time": "Tue Sep 22 14:49:47 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 14:49:47 2026 +0530"
      },
      "message": "test(spanner): unflake TestIntegration_ListDatabaseRoles (#20562)\n\nIgnore the optional system-defined role `spanner_secure_context_reader`\nwhen comparing listed database roles in\n`TestIntegration_ListDatabaseRoles`. The `spanner_secure_context_reader`\nsystem role is currently rolling out across Spanner environments (such\nas `cloud-devel`), causing `ListDatabaseRoles` to return it depending on\nthe serving frontend version."
    },
    {
      "commit": "ec37b97b1dd08c9d8191afd5881fa29eaed86701",
      "tree": "d568cdf2aa2e88fa76a85bbc95ad6053d531022a",
      "parents": [
        "d0df0a613350b390f55763761309f6a709e21513"
      ],
      "author": {
        "name": "Sakthivel Subramanian",
        "email": "179120858+sakthivelmanii@users.noreply.github.com",
        "time": "Tue Sep 22 11:45:02 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 11:45:02 2026 +0530"
      },
      "message": "test(spanner): unflake TestIntegration_BatchQuery and TestIntegration… (#20560)\n\n…_BatchRead on non-prod\n\nDisable DataBoostEnabled in TestIntegration_BatchQuery and\nTestIntegration_BatchRead when running against cloud-devel\n(staging-wrenchworks.sandbox.googleapis.com) or cloud-staging\n(preprod-spanner.sandbox.googleapis.com) endpoints to prevent\nintermittent stream wait timeouts caused by pre-prod DataBoost worker\nmemory limits."
    },
    {
      "commit": "d0df0a613350b390f55763761309f6a709e21513",
      "tree": "bd4493ffc8cca73ecfff2eb7be4da4649b7245a5",
      "parents": [
        "ab027859b8a3ef285fb818412c6c0d8036bf3c57"
      ],
      "author": {
        "name": "Joe Wang",
        "email": "106995533+JoeWang1127@users.noreply.github.com",
        "time": "Fri Sep 18 16:54:43 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 19 00:54:43 2026 +0800"
      },
      "message": "chore: remove unused .librarian directory (#20556)\n\nRemove the legacy `.librarian/generator-input/repo-config.yaml`\nconfiguration file, which has been superseded by the root\n`librarian.yaml` configuration."
    },
    {
      "commit": "ab027859b8a3ef285fb818412c6c0d8036bf3c57",
      "tree": "1bed154e21ed12ff7777370eca8b61ed698e1cae",
      "parents": [
        "e2e104731999b3bfc75ed0b8f2d71844ced3b073"
      ],
      "author": {
        "name": "Sakthivel Subramanian",
        "email": "179120858+sakthivelmanii@users.noreply.github.com",
        "time": "Fri Sep 18 11:54:55 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 18 02:24:55 2026 -0400"
      },
      "message": "test(spanner): unflake TestIntegration_DbRemovalIsFatal across all channels (#20551)\n\nEnsure database removal fully propagates across all gRPC channels and\nbackend endpoints before recreating the database in\nTestIntegration_DbRemovalIsFatal.\n\nWaiting for post-drop propagation ensures that database removal takes\neffect across all channels and backends. On the emulator, this wait is\nbypassed as changes take effect immediately.\n\nChanges:\n- Wait for post-drop propagation and at least 20 consecutive Database\nnot found errors at 500ms poll intervals before recreating the database.\n- Reset the consecutive NotFound counter if a query succeeds during the\ndrop window, ensuring all channels observe database removal before\nrecreation.\n- Verify that a newly created client can query the recreated database\nfirst before asserting permanent failure on the original client.\n- Assert that the original client\u0027s multiplexed session ID remains\nunchanged across all post-recreation attempts.\n- Use an independent context with timeout when dropping the recreated\ndatabase in defer cleanup so teardown succeeds even if the test context\nexpires."
    },
    {
      "commit": "e2e104731999b3bfc75ed0b8f2d71844ced3b073",
      "tree": "3ab5a46fe610254dfea27e3279b61634e8d64457",
      "parents": [
        "90413d3e9d381ef4b92e3c496d98b023c5b2d8cc"
      ],
      "author": {
        "name": "shollyman",
        "email": "shollyman@google.com",
        "time": "Thu Sep 17 16:19:52 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 16:19:52 2026 -0700"
      },
      "message": "fix(various): address format directive issues (#20547)\n\nWe\u0027re getting various failures due to format directive mismatches. This\nis a quick pass to correct those issues."
    },
    {
      "commit": "90413d3e9d381ef4b92e3c496d98b023c5b2d8cc",
      "tree": "cc4fdd836ec699df9d8e82d97728aab0d0d872ff",
      "parents": [
        "1b10ddfc0fc88f9f30f2e428830a736fb563650c"
      ],
      "author": {
        "name": "shollyman",
        "email": "shollyman@google.com",
        "time": "Thu Sep 17 11:46:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 11:46:21 2026 -0700"
      },
      "message": "feat(all): update supported go versions (#20520)\n\nThis PR updates module metadata to set 1.26 as the lowest supported\nversion, and updates references elsewhere to reflect this new bound."
    },
    {
      "commit": "1b10ddfc0fc88f9f30f2e428830a736fb563650c",
      "tree": "41b4f8667cc55f61b88412ce087ac712e277bf45",
      "parents": [
        "e6a8b83615a5efaf7a754e2b565bf971bff77b6f"
      ],
      "author": {
        "name": "release-please[bot]",
        "email": "55107282+release-please[bot]@users.noreply.github.com",
        "time": "Thu Sep 17 14:22:24 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 14:22:24 2026 -0400"
      },
      "message": "chore: release main (#20515)\n\n:robot: I have created a release *beep* *boop*\n---\n\n\n\u003cdetails\u003e\u003csummary\u003eapigateway: 1.14.0\u003c/summary\u003e\n\n##\n[1.14.0](https://github.com/googleapis/google-cloud-go/compare/apigateway/v1.13.0...apigateway/v1.14.0)\n(2026-09-17)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20526](https://github.com/googleapis/google-cloud-go/issues/20526))\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n* Update API sources and regenerate.\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eapps: 1.2.0\u003c/summary\u003e\n\n##\n[1.2.0](https://github.com/googleapis/google-cloud-go/compare/apps/v1.1.0...apps/v1.2.0)\n(2026-09-17)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20526](https://github.com/googleapis/google-cloud-go/issues/20526))\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n* Update API sources and regenerate.\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eauditmanager: 1.4.0\u003c/summary\u003e\n\n##\n[1.4.0](https://github.com/googleapis/google-cloud-go/compare/auditmanager/v1.3.0...auditmanager/v1.4.0)\n(2026-09-17)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20526](https://github.com/googleapis/google-cloud-go/issues/20526))\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n* Update API sources and regenerate.\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eauth: 0.23.3\u003c/summary\u003e\n\n##\n[0.23.3](https://github.com/googleapis/google-cloud-go/compare/auth/v0.23.2...auth/v0.23.3)\n(2026-09-17)\n\n\n### Bug Fixes\n\n* Handle secureconnect helper failures gracefully\n([c2794c6](https://github.com/googleapis/google-cloud-go/commit/c2794c6bdf267278489af42591f3c3549ae8fcba))\n* Handle secureconnect helper failures gracefully\n([#20443](https://github.com/googleapis/google-cloud-go/issues/20443))\n([c2794c6](https://github.com/googleapis/google-cloud-go/commit/c2794c6bdf267278489af42591f3c3549ae8fcba))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003ebackupdr: 1.17.0\u003c/summary\u003e\n\n##\n[1.17.0](https://github.com/googleapis/google-cloud-go/compare/backupdr/v1.16.0...backupdr/v1.17.0)\n(2026-09-17)\n\n\n### Features\n\n* **google/cloud/backupdr/v1beta:** Add backupdr\n([#20534](https://github.com/googleapis/google-cloud-go/issues/20534))\n([19651ea](https://github.com/googleapis/google-cloud-go/commit/19651eab31216a6decd2f543d9a186abe97e2ae1))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003ebigquery: 1.84.0\u003c/summary\u003e\n\n##\n[1.84.0](https://github.com/googleapis/google-cloud-go/compare/bigquery/v1.83.0...bigquery/v1.84.0)\n(2026-09-17)\n\n\n### Features\n\n* **bigquery:** Add JobCreationMode to QueryConfig to allow per query\noverride\n([#20510](https://github.com/googleapis/google-cloud-go/issues/20510))\n([953f5cc](https://github.com/googleapis/google-cloud-go/commit/953f5ccb679e8628992b6d25dd3190731f434060))\n\n\n### Bug Fixes\n\n* **bigquery:** Plumb query ID on polls\n([#20512](https://github.com/googleapis/google-cloud-go/issues/20512))\n([ebb729d](https://github.com/googleapis/google-cloud-go/commit/ebb729d1e6b60156ee1b6c4a2b295a0ed1e77243)),\nrefs\n[#20435](https://github.com/googleapis/google-cloud-go/issues/20435)\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003ecompute: 1.69.0\u003c/summary\u003e\n\n##\n[1.69.0](https://github.com/googleapis/google-cloud-go/compare/compute/v1.68.0...compute/v1.69.0)\n(2026-09-17)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20526](https://github.com/googleapis/google-cloud-go/issues/20526))\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n* Update API sources and regenerate.\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003ecompute/metadata: 0.9.1\u003c/summary\u003e\n\n##\n[0.9.1](https://github.com/googleapis/google-cloud-go/compare/compute/metadata/v0.9.0...compute/metadata/v0.9.1)\n(2026-09-17)\n\n\n### Bug Fixes\n\n* **compute/metadata:** Timeout initial metadata subscriber GET request\n([#20488](https://github.com/googleapis/google-cloud-go/issues/20488))\n([f06f6b3](https://github.com/googleapis/google-cloud-go/commit/f06f6b35e4b7ae8b48a3f9d1715229fe81cb2ebd)),\nrefs\n[#20487](https://github.com/googleapis/google-cloud-go/issues/20487)\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003edatamanager: 1.5.0\u003c/summary\u003e\n\n##\n[1.5.0](https://github.com/googleapis/google-cloud-go/compare/datamanager/v1.4.0...datamanager/v1.5.0)\n(2026-09-17)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20526](https://github.com/googleapis/google-cloud-go/issues/20526))\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n* Update API sources and regenerate.\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003edevicestreaming: 1.1.0\u003c/summary\u003e\n\n##\n[1.1.0](https://github.com/googleapis/google-cloud-go/compare/devicestreaming/v1.0.0...devicestreaming/v1.1.0)\n(2026-09-17)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20526](https://github.com/googleapis/google-cloud-go/issues/20526))\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n* Update API sources and regenerate.\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003ediscoveryengine: 1.34.0\u003c/summary\u003e\n\n##\n[1.34.0](https://github.com/googleapis/google-cloud-go/compare/discoveryengine/v1.33.0...discoveryengine/v1.34.0)\n(2026-09-17)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20526](https://github.com/googleapis/google-cloud-go/issues/20526))\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n* Update API sources and regenerate.\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003ekms: 1.34.0\u003c/summary\u003e\n\n##\n[1.34.0](https://github.com/googleapis/google-cloud-go/compare/kms/v1.33.0...kms/v1.34.0)\n(2026-09-17)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20526](https://github.com/googleapis/google-cloud-go/issues/20526))\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n* Update API sources and regenerate.\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003emaps: 1.42.0\u003c/summary\u003e\n\n##\n[1.42.0](https://github.com/googleapis/google-cloud-go/compare/maps/v1.41.0...maps/v1.42.0)\n(2026-09-17)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20526](https://github.com/googleapis/google-cloud-go/issues/20526))\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n* Update API sources and regenerate.\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003enetworkservices: 1.6.0\u003c/summary\u003e\n\n##\n[1.6.0](https://github.com/googleapis/google-cloud-go/compare/networkservices/v1.5.0...networkservices/v1.6.0)\n(2026-09-17)\n\n\n### Features\n\n* **google/cloud/networkservices/v1beta1:** Add networkservices\n([#20533](https://github.com/googleapis/google-cloud-go/issues/20533))\n([c5626ad](https://github.com/googleapis/google-cloud-go/commit/c5626adf844e75388b25b675cc722226b3333be7))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003esecuresourcemanager: 1.11.0\u003c/summary\u003e\n\n##\n[1.11.0](https://github.com/googleapis/google-cloud-go/compare/securesourcemanager/v1.10.0...securesourcemanager/v1.11.0)\n(2026-09-17)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20526](https://github.com/googleapis/google-cloud-go/issues/20526))\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n* Update API sources and regenerate.\n([e6f37a3](https://github.com/googleapis/google-cloud-go/commit/e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8))\n\u003c/details\u003e\n\n---\nThis PR was generated with [Release\nPlease](https://github.com/googleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: release-please[bot] \u003c55107282+release-please[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e6a8b83615a5efaf7a754e2b565bf971bff77b6f",
      "tree": "727fa29dd4a096172736526be247fd2dc79e158f",
      "parents": [
        "56ce1ca05089a895ce4f33e89f6b4f2c3060dead"
      ],
      "author": {
        "name": "shollyman",
        "email": "shollyman@google.com",
        "time": "Thu Sep 17 11:21:09 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 11:21:09 2026 -0700"
      },
      "message": "chore: address stale grpc dependency declarations (#20539)\n\nrelated: b/562654066"
    },
    {
      "commit": "56ce1ca05089a895ce4f33e89f6b4f2c3060dead",
      "tree": "20537b15d6df8ac8ff8689eeee6bff1bb0fc8b5f",
      "parents": [
        "5300f6abc4dbf1adb24beb0f635a2fd7e388f0ed"
      ],
      "author": {
        "name": "Sakthivel Subramanian",
        "email": "179120858+sakthivelmanii@users.noreply.github.com",
        "time": "Thu Sep 17 18:01:38 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 18:01:38 2026 +0530"
      },
      "message": "test(spanner): unflake TestIntegration_DbRemovalIsFatal across all channels (#20524)\n\nWait 60s for database removal to propagate across all gRPC channels and\nDirectPath endpoints before recreating the database in\nTestIntegration_DbRemovalIsFatal.\n\nWhen a database is dropped, backend endpoints that previously cached\nmetadata for the database may continue serving from cache for up to 60s\nbefore returning Database not found. If the database is recreated before\nall channels have observed Database not found, subsequent requests\nrouted to untouched channels can unexpectedly succeed.\n\nAdditionally:\n- Assert that the client\u0027s multiplexed session ID remains unchanged\nacross post-recreation attempts.\n- Use an independent context with timeout when dropping the recreated\ndatabase in defer cleanup."
    },
    {
      "commit": "5300f6abc4dbf1adb24beb0f635a2fd7e388f0ed",
      "tree": "68973bb9910388dec1c07d65c057d71d7f21d6e8",
      "parents": [
        "8a55dee7d694d1b0b35f9eaff8a0517bffec320d"
      ],
      "author": {
        "name": "release-please[bot]",
        "email": "55107282+release-please[bot]@users.noreply.github.com",
        "time": "Thu Sep 17 11:52:09 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 11:52:09 2026 +0530"
      },
      "message": "chore(main): release storage 1.68.0 (#20537)\n\n:robot: I have created a release *beep* *boop*\n---\n\n\n##\n[1.68.0](https://github.com/googleapis/google-cloud-go/compare/storage/v1.67.1...storage/v1.68.0)\n(2026-09-17)\n\n\n### Bug Fixes\n\n* **storage:** Minor documentation fixes\n([#20531](https://github.com/googleapis/google-cloud-go/issues/20531))\n([8a55dee](https://github.com/googleapis/google-cloud-go/commit/8a55dee7d694d1b0b35f9eaff8a0517bffec320d))\n\n---\nThis PR was generated with [Release\nPlease](https://github.com/googleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: release-please[bot] \u003c55107282+release-please[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "8a55dee7d694d1b0b35f9eaff8a0517bffec320d",
      "tree": "9aa1e931721cf782b8e174e0ab29d93c55dc80a4",
      "parents": [
        "19651eab31216a6decd2f543d9a186abe97e2ae1"
      ],
      "author": {
        "name": "Priti Chattopadhyay",
        "email": "cpriti@google.com",
        "time": "Thu Sep 17 10:43:09 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 17 10:43:09 2026 +0530"
      },
      "message": "fix(storage): minor documentation fixes (#20531)\n\nFixes four small documentation defects in `storage/doc.go`. No\nfunctional changes.\n\n1. **Unclosed parenthesis** in the ACLs section — `(see [Cloud Storage\nIAM docs].` was never closed.\n2. **Semicolon typo** in the Post Policy V4 example — `Fields; %v`\nshould be `Fields: %v`.\n3. **Invalid zone name** in the Direct Connectivity requirements —\n`us-east1a` is not a valid zone identifier (zones are hyphenated, and\n`us-east1` has no `a` zone; its zones are `us-east1-b`, `-c`, `-d`).\nChanged to `us-east1-b`.\n4. **Markdown bold rendering literally** in the Parallel Uploads note —\ngodoc has no bold syntax, so `**Note:**` renders verbatim on pkg.go.dev.\nChanged to the plain `Note:` form already used elsewhere in this file.\n\nVerified with `go build`, `go vet`, `gofmt -l`, and by inspecting `go\ndoc -all` output to confirm each line now renders as intended.\n\nThis also serves to cut a storage release. The only commits to land\nsince `storage/v1.67.1` have been typed `chore`, which release-please\ntreats as non-releasable, so no release PR has been generated since\n#20476. The `Release-As` footer below forces the next release. A minor\nbump is used because the pending commits add new exported API surface\n(`Writer.Abort`, `experimental.BufferPool`,\n`experimental.WithBufferPool`).\n\nRelease-As: 1.68.0"
    },
    {
      "commit": "19651eab31216a6decd2f543d9a186abe97e2ae1",
      "tree": "4d7b35184c40e5ac6bef019fcb93d6175722e8f2",
      "parents": [
        "c5626adf844e75388b25b675cc722226b3333be7"
      ],
      "author": {
        "name": "Min Zhu",
        "email": "zhumin@google.com",
        "time": "Wed Sep 16 15:56:56 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 15:56:56 2026 -0400"
      },
      "message": "feat(google/cloud/backupdr/v1beta): add backupdr (#20534)\n\nOnboard google/cloud/backupdr/v1beta API (backupdr).\n\nInternal tracking bug http://b/561460713\n\n## Debug Info\n### System Details\n- Go version: go version go1.26.6 linux/amd64\n- OS: Linux 6.18.14-1rodete4-amd64 x86_64\n- Librarian version: v0.44.0\n\n### Commands Executed\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 install`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 add\ngoogle/cloud/backupdr/v1beta`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 generate\n-v backupdr`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 tidy`\n- `git add .`\n- `git commit -m \"feat(google/cloud/backupdr/v1beta): add backupdr\"`"
    },
    {
      "commit": "c5626adf844e75388b25b675cc722226b3333be7",
      "tree": "588712164558b7afd7f3f332b17f2a9d41c9efa2",
      "parents": [
        "e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8"
      ],
      "author": {
        "name": "Min Zhu",
        "email": "zhumin@google.com",
        "time": "Wed Sep 16 15:56:44 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 15:56:44 2026 -0400"
      },
      "message": "feat(google/cloud/networkservices/v1beta1): add networkservices (#20533)\n\nOnboard google/cloud/networkservices/v1beta1 API (networkservices).\n\nInternal tracking bug http://b/561919930\n\n## Debug Info\n### System Details\n- Go version: go version go1.26.6 linux/amd64\n- OS: Linux 6.18.14-1rodete4-amd64 x86_64\n- Librarian version: v0.44.0\n\n### Commands Executed\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 install`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 add\ngoogle/cloud/networkservices/v1beta1`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 generate\nnetworkservices`\n- `cd networkservices \u0026\u0026 go build ./... \u0026\u0026 go vet ./...`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 tidy`\n- `git add .`\n- `git commit -m \"feat(google/cloud/networkservices/v1beta1): add\nnetworkservices\"`"
    },
    {
      "commit": "e6f37a362b6e37b0bc74e77b8d7f151dc7443fb8",
      "tree": "d01e630a59e0325e7d15d5fa5681a2079ab2927a",
      "parents": [
        "6f663ea66ca375d11b18e5a83a2c82dbc2a2424a"
      ],
      "author": {
        "name": "Min Zhu",
        "email": "zhumin@google.com",
        "time": "Wed Sep 16 12:13:39 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 12:13:39 2026 -0400"
      },
      "message": "feat: update API sources and regenerate (#20526)\n\nfeat: update API sources and regenerate.\n\n## Debug Info\n### System Details\n- Go version: go version go1.26.6 linux/amd64\n- OS: Linux 6.18.14-1rodete4-amd64 x86_64\n- Librarian version: v0.44.0\n\n### Commands Executed\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 install`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 update\nsources.googleapis`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 generate\n--all`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 tidy`\n- `git add .`\n- `git commit -m \"feat: update API sources and regenerate\"`"
    },
    {
      "commit": "6f663ea66ca375d11b18e5a83a2c82dbc2a2424a",
      "tree": "afaee1c1c4bb89bf8f1326f43af9611f6b087b30",
      "parents": [
        "be88c6a045e0f863c0a25144f8984f25b513e3ab"
      ],
      "author": {
        "name": "sahusneha2004",
        "email": "129661293+sahusneha2004@users.noreply.github.com",
        "time": "Wed Sep 16 15:28:22 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 15:28:22 2026 +0530"
      },
      "message": "chore(storage): add TryGet to BufferPool and clean up global memory limit (#20522)\n\nThis PR adds TryGet to the experimental BufferPool interface and cleans\nup the deprecated parallel uploads global memory limit option."
    },
    {
      "commit": "be88c6a045e0f863c0a25144f8984f25b513e3ab",
      "tree": "3c0d7b0108728410aeb6af638a1fe7e68d467748",
      "parents": [
        "f06f6b35e4b7ae8b48a3f9d1715229fe81cb2ebd"
      ],
      "author": {
        "name": "Sakthivel Subramanian",
        "email": "179120858+sakthivelmanii@users.noreply.github.com",
        "time": "Wed Sep 16 13:25:10 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 09:55:10 2026 +0200"
      },
      "message": "test(spanner): unflake TestIntegration_DbRemovalRecovery as TestIntegration_DbRemovalIsFatal (#20514)\n\nRename `TestIntegration_DbRemovalRecovery` to\n`TestIntegration_DbRemovalIsFatal` to test the expected behavior when a\ndatabase is dropped and recreated with the same name:\n\n1. **Fatal Client Invalidation on Database Removal**: Ensure the\nmultiplexed session is established before dropping the database. Once\ndropped and recreated, the original client continues to use the session\nbound to the dropped database, and must fail with `codes.NotFound`\n(`\"Database not found\"` on Cloud Spanner, or `\"Session not found\"` on\nthe emulator) rather than silently reattaching to the recreated\ndatabase.\n2. **Elimination of Multi-channel Cache Flakiness**: Removing the manual\n`client.sm.multiplexedSession \u003d nil` reset eliminates the race condition\nagainst GFE/DirectPath negative directory cache expiration across gRPC\nchannels.\n3. **Recovery via New Client**: Verify that a newly constructed client\n(`createClient`) successfully connects to and queries the recreated\ndatabase, and remove `t.Skip` to re-enable the test in CI."
    },
    {
      "commit": "f06f6b35e4b7ae8b48a3f9d1715229fe81cb2ebd",
      "tree": "2617c83de8a8f151e5111300cc957132a6e39094",
      "parents": [
        "c2794c6bdf267278489af42591f3c3549ae8fcba"
      ],
      "author": {
        "name": "bdhawk",
        "email": "158655421+bdhawk@users.noreply.github.com",
        "time": "Tue Sep 15 15:54:52 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 22:54:52 2026 +0000"
      },
      "message": "fix(compute/metadata): Timeout initial metadata subscriber GET request (#20488)\n\nWhen calling SubscribeWithContext, an initial GET request is performed to verify whether the metadata attribute exists before entering the wait_for_change long-polling loop. Previously, this initial request used the subscriber client (which disables HTTP request timeouts) with no timeout on the context, which could cause SubscribeWithContext to hang indefinitely if the initial connection stalled.\r\n\r\nThis change adds a 5-second timeout to the context used for the initial subscriber check, and adds a unit test exercising a stalled connection on the initial subscriber request.\r\n\r\nFixes #20487"
    },
    {
      "commit": "c2794c6bdf267278489af42591f3c3549ae8fcba",
      "tree": "0447dafbc7c65e0faccf9c88a77cf848561828e4",
      "parents": [
        "ebfb202684083ce4f14849c7231b5287a5ab1ff4"
      ],
      "author": {
        "name": "Daniel Wu",
        "email": "dee_winn_github@icloud.com",
        "time": "Tue Sep 15 12:29:00 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 12:29:00 2026 -0700"
      },
      "message": "fix: handle secureconnect helper failures gracefully (#20443)\n\nfix: handle secureconnect helper failures gracefully\n\nUpdate getClientCertificate to return nil, nil when the helper command\nfails, and perform a trial call in NewSecureConnectProvider. If the\ntrial call returns nil, nil (cert unavailable), return the sentinel\nerror errSourceUnavailable so DefaultProvider can fall back cleanly."
    },
    {
      "commit": "ebfb202684083ce4f14849c7231b5287a5ab1ff4",
      "tree": "9157b0293f183e05e19546029d3e3e6b274ad611",
      "parents": [
        "e1196fa26a7e938d14f0405067807c1ea18f971d"
      ],
      "author": {
        "name": "Min Zhu",
        "email": "zhumin@google.com",
        "time": "Tue Sep 15 13:46:21 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 13:46:21 2026 -0400"
      },
      "message": "chore: update librarian version to v0.44.0 (#20519)\n\nUpdate librarian version to v0.44.0.\n\n## Debug Info\n### System Details\n- Go version: go version go1.26.6 linux/amd64\n- OS: Linux 6.18.14-1rodete4-amd64 x86_64\n- Librarian version: v0.44.0\n\n### Commands Executed\n- `go run github.com/googleapis/librarian/cmd/librarian@latest update\nversion`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 tidy`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 install`\n- `go run github.com/googleapis/librarian/cmd/librarian@v0.44.0 generate\n--all`\n- `git add .`\n- `git commit -m \"chore: update librarian version to v0.44.0\"`\n\nCo-authored-by: shollyman \u003cshollyman@google.com\u003e"
    },
    {
      "commit": "e1196fa26a7e938d14f0405067807c1ea18f971d",
      "tree": "b26bd11ae8115c012c8737569b991ec5549f6bcd",
      "parents": [
        "d8f1aa197b0633b277f51dc9e21b4a226b46384b"
      ],
      "author": {
        "name": "sahusneha2004",
        "email": "129661293+sahusneha2004@users.noreply.github.com",
        "time": "Tue Sep 15 22:10:07 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 22:10:07 2026 +0530"
      },
      "message": "chore(storage): add Abort, BufferPool interface, and experimental options (#20513)\n\nAdds unimplemented API surface for gRPC parallel uploads:\n  Writer.Abort() returns an Unimplemented error.\n  experimental.BufferPool interface.\n  experimental.WithParallelUploadsGlobalMemoryLimit and\n  experimental.WithBufferPool\nNone of these are supported yet; they only establish the API surface."
    },
    {
      "commit": "d8f1aa197b0633b277f51dc9e21b4a226b46384b",
      "tree": "0102ce17dd5138d7d9837b69f39980ea2fc31195",
      "parents": [
        "953f5ccb679e8628992b6d25dd3190731f434060"
      ],
      "author": {
        "name": "shollyman",
        "email": "shollyman@google.com",
        "time": "Tue Sep 15 08:40:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 08:40:21 2026 -0700"
      },
      "message": "chore: remove unused path from vet (#20517)\n\nNoticed reviewing a PR that it caught caught up on the old\ninternal/generated/snippets pattern, which isn\u0027t in use anymore."
    },
    {
      "commit": "953f5ccb679e8628992b6d25dd3190731f434060",
      "tree": "d339e671cf699a862533e8667d3cad66ecac4e69",
      "parents": [
        "3c04d014f238a61cce9ba7f777a58d26fe71e34a"
      ],
      "author": {
        "name": "Alvaro Viebrantz",
        "email": "aviebrantz@google.com",
        "time": "Mon Sep 14 23:16:52 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 23:16:52 2026 -0400"
      },
      "message": "feat(bigquery): add JobCreationMode to QueryConfig to allow per query override (#20510)"
    },
    {
      "commit": "3c04d014f238a61cce9ba7f777a58d26fe71e34a",
      "tree": "0879721be5bc74b978d77932f04e4a0b1966858a",
      "parents": [
        "4d345f89f50c2a18088ed0e5d90320ac62cf76ec"
      ],
      "author": {
        "name": "shollyman",
        "email": "shollyman@google.com",
        "time": "Mon Sep 14 14:16:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 14:16:21 2026 -0700"
      },
      "message": "test: improve vet checks (#20516)\n\nThis PR removes golint (deprecated) from our code checking, and also\nremoves the -go version flag from staticcheck. We run the check in a go\nenv corresponding to our lower bound already, so there\u0027s no need to be\nexplicit here."
    },
    {
      "commit": "4d345f89f50c2a18088ed0e5d90320ac62cf76ec",
      "tree": "7279a409151aa4e910cadb82cbd1b256363b6797",
      "parents": [
        "ebb729d1e6b60156ee1b6c4a2b295a0ed1e77243"
      ],
      "author": {
        "name": "shollyman",
        "email": "shollyman@google.com",
        "time": "Mon Sep 14 12:53:07 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 12:53:07 2026 -0700"
      },
      "message": "chore: bump debian image in profiler integration test (#20505)"
    },
    {
      "commit": "ebb729d1e6b60156ee1b6c4a2b295a0ed1e77243",
      "tree": "14c0d3b2dc1ccdedec3a1155ceabc8146e15d921",
      "parents": [
        "f1b952aab5ab9923265598ef31f100937fdc7a84"
      ],
      "author": {
        "name": "Darren Bolduc",
        "email": "dbolduc@google.com",
        "time": "Mon Sep 14 12:26:23 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 15:26:23 2026 -0400"
      },
      "message": "fix(bigquery): plumb query ID on polls (#20512)\n\nSeems like this is a legit bug in the client library where we did not\nplumb the query ID to the read acceleration path on queries that require\npolling to complete.\n\nHere is Gemini\u0027s report:\n\n# Bug Report: Empty QueryID Flake in\nTestIntegration_StorageReadQueryMorePages\n\n## What Failed\nThe integration test `TestIntegration_StorageReadQueryMorePages` flakily\nfailed with the following error:\n```\nstorage_integration_test.go:429: expected non-empty QueryID for jobs.query storage read\n```\n\n## Root Cause Analysis\n1. When `query.go:Read` submits a query, it attempts the fast path.\n2. If the query completes within the fast path timeout (e.g. 10\nseconds), `resp.JobComplete` is true. If the query is more than one page\nand Storage Read API is available, it returns a Storage Row Iterator and\nsets its `queryID` from `resp.QueryId`.\n3. However, under heavier load or larger query execution times, the\nquery does not finish within the initial fast path timeout, resulting in\n`resp.JobComplete` being false.\n4. When `resp.JobComplete` is false, the fast path falls back to the\njob-polling mechanism via `minimalJob.Read(ctx)`.\n5. `Job.Read` polls until complete and initializes the Storage Row\nIterator, but it **never set/propagated the `queryID` field** (either on\nthe standard iterator\u0027s `rowSource` or the Storage API\u0027s\n`it.src.queryID`). Thus, `it.QueryID()` returned `\"\"`, causing the\nassertion to fail.\n\n## Fix Implemented\n1. Added an unexported `queryID string` field to the internal `Job`\nstruct.\n2. Updated the fast path fallback construction in `bigquery/query.go` to\nsave `resp.QueryId` in `minimalJob.queryID`.\n3. Modified `Job.read` in `bigquery/job.go` to propagate `j.queryID` to\nthe returned iterator\u0027s `rowSource` or `it.src.queryID` depending on the\nselected execution path (standard or Storage API).\n4. Fixed a replay test configuration incompatibility in\n`bigquery/integration_test.go` by removing the incorrect\n`option.WithHTTPClient` option from the gRPC-based `connectionsClient`\ninstantiation, which previously prevented proper local/replay\ninitializations.\n\nFixes #20435"
    },
    {
      "commit": "f1b952aab5ab9923265598ef31f100937fdc7a84",
      "tree": "e125a69a15b84af92fb17bf357dab44753168327",
      "parents": [
        "4dc7532ec124a797db0b78205a837a64ec49ed42"
      ],
      "author": {
        "name": "Priti Chattopadhyay",
        "email": "cpriti@google.com",
        "time": "Mon Sep 14 13:15:56 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 13:15:56 2026 +0530"
      },
      "message": "chore(go): inject server.address, add exemplar support, standardize metric names (#20424)\n\n## Description\n\nThis PR enhances OpenTelemetry metrics in the Cloud Storage Go client\nlibrary by adding TraceBased exemplar support, injecting the\n`server.address` attribute into logical and attempt metric scopes, and\naligning metric names with OpenTelemetry semantic conventions.\n\n### Changes Included:\n\n1. **TraceBased Exemplar Support**:\n- Configured `sdkmetric.WithExemplarFilter(exemplar.TraceBasedFilter)`\non `MeterProvider` initializations in `storage/metrics.go` so that\nmetrics capture trace context exemplars when active traces are present.\n\n2. **`server.address` Dimension Injection**:\n   - Injected `server.address` (with port stripped) into:\n     - gRPC and HTTP attempt and error metrics.\n     - TTFB (time-to-first-byte) metric recordings.\n- Top-level operation latency scopes in `startOperation` by propagating\n`target` through `metricsState`.\n- Request body size (`Writer`) and response body size (`Reader`)\nmetrics.\n\n3. **Metric Name Standardization**:\n   - Updated metric names to align with standard semantic conventions:\n- `gcp.storage.client.network.egress_bytes_count` →\n`gcp.storage.client.network.bytes.sent`\n- `gcp.storage.client.network.ingress_bytes_count` →\n`gcp.storage.client.network.bytes.received`\n- `gcp.storage.client.active_requests` →\n`gcp.storage.client.request.active`\n\n4. **Testing**:\n- Updated corresponding unit and integration test assertions in\n`storage/metrics_test.go` and `storage/integration_test.go`."
    },
    {
      "commit": "4dc7532ec124a797db0b78205a837a64ec49ed42",
      "tree": "f0b0af4b03e11320440509275afac240f1ad7895",
      "parents": [
        "165cd73c5eff6af4fb61d3196264199eccd2025d"
      ],
      "author": {
        "name": "Darren Bolduc",
        "email": "dbolduc@google.com",
        "time": "Fri Sep 11 09:41:37 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 12:41:37 2026 -0400"
      },
      "message": "ci: deflake translate test (#20511)\n\nFixes #20509 \n\nGooglers can see:\nhttps://fusion2.corp.google.com/invocations/72c4fa54-0319-4054-b10c-7068368ea0ba/targets/google-cloud-go%2Ftranslate\n\ntl;dr I can reproduce this with Gemini, and see flakes about 5% of the\ntime. With the fix, I had 1000 successful runs.\n\nAside: arguably we should just delete this test? Why are we verifying\nservice behavior?\nAside 2: why isn\u0027t this thing a GAPIC? Why are we maintaining this\nclient?\n\nHere is Gemini\u0027s report\n\n---\n\n# Integration Test Failure Investigation: Cloud Translation V2\n\nThis report documents the root-cause analysis, empirical findings, and\nfix implemented for the integration test failure in\n`TestTranslateOneInput`.\n\n## 1. Issue Overview\nWe observed a non-deterministic failure in `translate_test.go` on line\n171:\n```\ntranslate_test.go:171: source: got \"fr\", wanted \"und\"\n```\n\n## 2. Empirical Findings\nTo determine if this was a transient flake or a permanent API change, we\nran the unmodified test with the original expectations in a loop under\nproject `dbolduc-test` exactly **100 times**:\n\n*   **Total Runs:** 100\n*   **Successes:** 95 (Returned `tr.Source` as `language.Und`)\n*   **Failures:** 5 (Returned `tr.Source` as `\"fr\"` or `\"en\"`)\n*   **Failure Rate (Flake Rate):** 5%\n\n## 3. Solid Evidence of Backend Non-Determinism\nThe official Google Cloud Translation V2 REST API documentation for\n`detectedSourceLanguage` specifies:\n\n\u003e *\"The source language of the initial request, detected automatically,\nif no source language was passed within the initial request. **If the\nsource language was passed, auto-detection of the language will not\noccur and this field will be omitted.**\"*\n\nHowever, our empirical loop results provide solid evidence that **the\nTranslation V2 API backend behaves non-deterministically**:\n* In **95% of cases**, the API conforms to the specification, omitting\n`detectedSourceLanguage` from the response (which is parsed as\n`language.Und`).\n* In **5% of cases**, the API returns `detectedSourceLanguage` with the\nconfirmed/original source language (e.g., `\"fr\"` or `\"en\"`), violating\nthe omission spec.\n\nThis inconsistency (possibly due to regional backend replicas/models or\nload balancer routing differences) is the direct cause of the\nintegration test flaking.\n\n## 4. Changes Implemented\nTo make the integration test resilient against both behaviors (avoiding\nfuture CI flakes), we relaxed the hardcoded expectation in\n`translate/translate_test.go` to accept either `language.Und` or the\nexpected `test.source`:\n\n```go\n// Provide source and format.\ntr :\u003d translate(test.input, test.target, \u0026Options{Source: test.source, Format: Text})\nif got :\u003d tr.Source; got !\u003d language.Und \u0026\u0026 got !\u003d test.source {\n    t.Errorf(\"source: got %q, wanted %q or %q\", got, language.Und, test.source)\n    continue\n}\n```\n\nThis ensures the test passes cleanly regardless of whether the backend\nreplica populates or omits the source language in its response."
    },
    {
      "commit": "165cd73c5eff6af4fb61d3196264199eccd2025d",
      "tree": "2b5e12fce7b8bcc4fe2139b558e15481840115b2",
      "parents": [
        "cec012d4bd1ab94e586f10fbbd1285216877335a"
      ],
      "author": {
        "name": "Google Team Member",
        "email": "genai-sdk-bot@google.com",
        "time": "Tue Aug 25 16:42:33 2026 -0700"
      },
      "committer": {
        "name": "Ben Kazemi",
        "email": "BenjaminKazemi@users.noreply.github.com",
        "time": "Thu Sep 10 11:41:58 2026 -0700"
      },
      "message": "feat: Expose service_attachment field on SandboxEnvironmentConnectionInfo across Python, Java, JS, and Go SDKs.\n\nThe read-only serviceAttachment field is populated by the backend on sandboxes whose template enables private ingress (SandboxEnvironmentTemplate.ingress_control_config), and carries the PSC-E service attachment name customers need to create the consumer-side Private Service Connect endpoint in their VPC.\n\nPiperOrigin-RevId: 970879943\n"
    },
    {
      "commit": "cec012d4bd1ab94e586f10fbbd1285216877335a",
      "tree": "72b0e72da21be2a9a63213ac762f6e8195c4f109",
      "parents": [
        "78076a814f444a16e78a3760cbe665acf064765a"
      ],
      "author": {
        "name": "release-please[bot]",
        "email": "55107282+release-please[bot]@users.noreply.github.com",
        "time": "Thu Sep 10 14:06:00 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 14:06:00 2026 -0400"
      },
      "message": "chore: release main (#20507)\n\n:robot: I have created a release *beep* *boop*\n---\n\n\n\u003cdetails\u003e\u003csummary\u003ealloydb: 1.30.0\u003c/summary\u003e\n\n##\n[1.30.0](https://github.com/googleapis/google-cloud-go/compare/alloydb/v1.29.0...alloydb/v1.30.0)\n(2026-09-10)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20502](https://github.com/googleapis/google-cloud-go/issues/20502))\n([95479e9](https://github.com/googleapis/google-cloud-go/commit/95479e9b74215f969b04d3ebfd01b8f98f11f5ed))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003echronicle: 1.4.0\u003c/summary\u003e\n\n##\n[1.4.0](https://github.com/googleapis/google-cloud-go/compare/chronicle/v1.3.0...chronicle/v1.4.0)\n(2026-09-10)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20502](https://github.com/googleapis/google-cloud-go/issues/20502))\n([95479e9](https://github.com/googleapis/google-cloud-go/commit/95479e9b74215f969b04d3ebfd01b8f98f11f5ed))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003ecompute: 1.68.0\u003c/summary\u003e\n\n##\n[1.68.0](https://github.com/googleapis/google-cloud-go/compare/compute/v1.67.0...compute/v1.68.0)\n(2026-09-10)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20502](https://github.com/googleapis/google-cloud-go/issues/20502))\n([95479e9](https://github.com/googleapis/google-cloud-go/commit/95479e9b74215f969b04d3ebfd01b8f98f11f5ed))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eretail: 1.34.0\u003c/summary\u003e\n\n##\n[1.34.0](https://github.com/googleapis/google-cloud-go/compare/retail/v1.33.0...retail/v1.34.0)\n(2026-09-10)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20502](https://github.com/googleapis/google-cloud-go/issues/20502))\n([95479e9](https://github.com/googleapis/google-cloud-go/commit/95479e9b74215f969b04d3ebfd01b8f98f11f5ed))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eshopping: 1.15.0\u003c/summary\u003e\n\n##\n[1.15.0](https://github.com/googleapis/google-cloud-go/compare/shopping/v1.14.0...shopping/v1.15.0)\n(2026-09-10)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20502](https://github.com/googleapis/google-cloud-go/issues/20502))\n([95479e9](https://github.com/googleapis/google-cloud-go/commit/95479e9b74215f969b04d3ebfd01b8f98f11f5ed))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003evectorsearch: 1.4.0\u003c/summary\u003e\n\n##\n[1.4.0](https://github.com/googleapis/google-cloud-go/compare/vectorsearch/v1.3.0...vectorsearch/v1.4.0)\n(2026-09-10)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20502](https://github.com/googleapis/google-cloud-go/issues/20502))\n([95479e9](https://github.com/googleapis/google-cloud-go/commit/95479e9b74215f969b04d3ebfd01b8f98f11f5ed))\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003evisionai: 1.2.0\u003c/summary\u003e\n\n##\n[1.2.0](https://github.com/googleapis/google-cloud-go/compare/visionai/v1.1.0...visionai/v1.2.0)\n(2026-09-10)\n\n\n### Features\n\n* Update API sources and regenerate\n([#20502](https://github.com/googleapis/google-cloud-go/issues/20502))\n([95479e9](https://github.com/googleapis/google-cloud-go/commit/95479e9b74215f969b04d3ebfd01b8f98f11f5ed))\n\u003c/details\u003e\n\n---\nThis PR was generated with [Release\nPlease](https://github.com/googleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: release-please[bot] \u003c55107282+release-please[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "78076a814f444a16e78a3760cbe665acf064765a",
      "tree": "20ea3ac742aa25013371da15a4abbae32bb1a2d3",
      "parents": [
        "e8737c3e327fd35ed0b93379fbf0889e94efb673"
      ],
      "author": {
        "name": "release-please[bot]",
        "email": "55107282+release-please[bot]@users.noreply.github.com",
        "time": "Thu Sep 10 14:00:58 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 14:00:58 2026 -0400"
      },
      "message": "chore(main): release spanner 1.95.1 (#20501)\n\n:robot: I have created a release *beep* *boop*\n---\n\n\n##\n[1.95.1](https://github.com/googleapis/google-cloud-go/compare/spanner/v1.95.0...spanner/v1.95.1)\n(2026-09-10)\n\n\n### Bug Fixes\n\n* **spanner/spansql:** Support ARRAY of PROTO types in DDL\n([#20463](https://github.com/googleapis/google-cloud-go/issues/20463))\n([5fe6a28](https://github.com/googleapis/google-cloud-go/commit/5fe6a289c715a06b5addc95415f44fb42a79bdbc))\n\n---\nThis PR was generated with [Release\nPlease](https://github.com/googleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: release-please[bot] \u003c55107282+release-please[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e8737c3e327fd35ed0b93379fbf0889e94efb673",
      "tree": "9941aab5cc8648b1fd448f38b3c406172b4d8153",
      "parents": [
        "015b73cfb3e86199783968d22792d86b9e4022c7"
      ],
      "author": {
        "name": "release-please[bot]",
        "email": "55107282+release-please[bot]@users.noreply.github.com",
        "time": "Thu Sep 10 14:00:30 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 14:00:30 2026 -0400"
      },
      "message": "chore(main): release bigtable 1.57.0 (#20485)\n\n:robot: I have created a release *beep* *boop*\n---\n\n\n##\n[1.57.0](https://github.com/googleapis/google-cloud-go/compare/bigtable/v1.56.0...bigtable/v1.57.0)\n(2026-09-10)\n\n\n### Features\n\n* **bigtable:** Build the accelerator daemon for Windows\n([#20455](https://github.com/googleapis/google-cloud-go/issues/20455))\n([df55af5](https://github.com/googleapis/google-cloud-go/commit/df55af57867ed03076cba91e3c3a18616711a5e4))\n\n\n### Bug Fixes\n\n* **bigtable/bttest:** Honor timestamp_origin on SetCell\n([#20469](https://github.com/googleapis/google-cloud-go/issues/20469))\n([528aaf8](https://github.com/googleapis/google-cloud-go/commit/528aaf81e9366b99e88f39c40acba2ccbd7830cd)),\nrefs\n[#20468](https://github.com/googleapis/google-cloud-go/issues/20468)\n* **bigtable:** Keep single-key ReadRows on the streaming classic path\n([#20506](https://github.com/googleapis/google-cloud-go/issues/20506))\n([2bfdb5d](https://github.com/googleapis/google-cloud-go/commit/2bfdb5d137567b5f339c96b9a330e2d5e9d610fa))\n\n---\nThis PR was generated with [Release\nPlease](https://github.com/googleapis/release-please). See\n[documentation](https://github.com/googleapis/release-please#release-please).\n\nCo-authored-by: release-please[bot] \u003c55107282+release-please[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "015b73cfb3e86199783968d22792d86b9e4022c7",
      "tree": "f97d715a4e59580501fbc46126ddb09d47923cc2",
      "parents": [
        "2bfdb5d137567b5f339c96b9a330e2d5e9d610fa"
      ],
      "author": {
        "name": "Sushan Bhattarai",
        "email": "sushantsusan@google.com",
        "time": "Thu Sep 10 12:47:27 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 12:47:27 2026 -0400"
      },
      "message": "test(bigtable): fakeStream.Recv observes ctx.Done to fix pool-Close deadlock (#20508)\n\n## Summary\nFixes the 45-minute CI hang on\n\\`TestPool_LeastInFlight_FansOutAcrossAFEs\\` (and any other pool test\nwhose Tick spawns real createSessions).\n\n## Root cause\n\\`SessionPoolImpl.Close\\`\u0027s Phase-5 \\`spawns.Wait\\` blocks on every\nin-flight \\`createSession\\`, each parked at \\`s.WaitGoroutines()\\`\nwaiting for the session\u0027s \\`readLoop\\` to exit. In production, dialCtx\ncancellation aborts the underlying gRPC stream so \\`readLoop.Recv\\`\nerrors out. In tests, \\`fakeStream.Recv\\` is a plain \\`\u003c-f.recv\\`\nchannel receive that does **not** observe context cancellation — nothing\nwakes it when poolCtx cancels.\n\n\\`newTestPool\\` has an async \\`poolCtx.Done → closeStreams\\` bridge that\ncloses every fakeStream when \\`poolCancel\\` fires, but a Close/cancel\nrace where the bridge hasn\u0027t scheduled yet leaves readLoop parked and\n\\`spawns.Wait\\` deadlocks. Under CI\u0027s slower scheduling and the\n900-iteration test load, this hung the full 45-min test timeout.\n\n## Fix\n- \\`fakeStream\\` gains a \\`ctx\\` field (default \\`context.Background\\`).\n\\`Recv\\` now selects on both \\`f.recv\\` and \\`f.ctx.Done\\` — matching\nreal gRPC \\`ClientStream\\` semantics where Recv aborts on stream ctx\ncancellation.\n- \\`newStubStreamFactory\\` binds the \\`dialCtx\\` it receives from the\npool into every fakeStream via a new \\`bindCtx\\` helper. \\`dialCtx\\` is\nderived from \\`poolCtx\\` in production, so \\`Close\\`\u0027s Phase-4\n\\`poolCancel\\` now synchronously unblocks every readLoop regardless of\nwhether the \\`poolCtx.Done\\` bridge has scheduled.\n\n## Regression test\n\\`TestPoolClose_UnblocksReadLoopsViaCtxCancel\\` drives the exact CI\nscenario: build a pool, Tick to spawn real createSession→readLoop, then\nClose WITHOUT running closeStreams first.\n\n- Pre-fix: hangs past a 5-second deadline (verified locally by stashing\nthe Recv change and re-running — test failed with \\`Close did not return\nwithin 5s\\` in exactly 5.00s).\n- Post-fix: returns in ~milliseconds. \\`go test -count\u003d100 -race\\` on\nthe new test + the original CI-failing test completes in 4s.\n\n## Test plan\n- [x] \\`go test ./internal/transport/ -run\nTestPoolClose_UnblocksReadLoopsViaCtxCancel -count\u003d100 -race\\` — pass.\n- [x] \\`go test ./internal/transport/ -run\nTestPool_LeastInFlight_FansOutAcrossAFEs -count\u003d100 -race\\` — pass.\n- [x] \\`go test ./internal/transport/ ./internal/session/ -count\u003d1\n-short -race\\` — pass.\n- [x] Stash-revert verification: with the Recv change reverted, the new\ntest fails with the exact 5-second hang the CI stack showed."
    },
    {
      "commit": "2bfdb5d137567b5f339c96b9a330e2d5e9d610fa",
      "tree": "050fcab1a683ddc1c298bf5766d74a77d139dbf8",
      "parents": [
        "95479e9b74215f969b04d3ebfd01b8f98f11f5ed"
      ],
      "author": {
        "name": "Mattie Fu",
        "email": "mattiefu@google.com",
        "time": "Thu Sep 10 09:35:47 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 09:35:47 2026 -0400"
      },
      "message": "fix(bigtable): keep single-key ReadRows on the streaming classic path (#20506)\n\nFix conformance test + clean up unimplemented interceptor.\n\nReadRows could return a row followed by an error. Routing readRow\nthrough readRows broke this contract."
    },
    {
      "commit": "95479e9b74215f969b04d3ebfd01b8f98f11f5ed",
      "tree": "2c81413a432ebf31a5f6906d137629b747dae4a0",
      "parents": [
        "1c940ce76d6e995f1d21538c61950a53eacee053"
      ],
      "author": {
        "name": "Tomo Suzuki",
        "email": "suztomo@gmail.com",
        "time": "Wed Sep 09 16:03:53 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 16:03:53 2026 -0400"
      },
      "message": "feat: update API sources and regenerate (#20502)\n\nUpdate API sources and regenerate.\n### Included googleapis CLs\n\n**google/cloud/alloydb/v1alpha**\n- http://cl/975529881\n\n**google/cloud/alloydb/v1beta**\n- http://cl/975531896\n\n**google/cloud/chronicle/v1**\n- http://cl/977394036\n\n**google/cloud/compute/v1**\n- http://cl/975313910\n\n**google/cloud/compute/v1beta**\n- http://cl/975305241\n\n**google/cloud/retail/v2alpha**\n- http://cl/977945556\n\n**google/cloud/vectorsearch/v1beta**\n- http://cl/978510688\n\n**google/cloud/visionai/v1**\n- http://cl/978607144\n\n**google/shopping/merchant/loyaltycustomers/v1**\n- http://cl/975976939"
    },
    {
      "commit": "1c940ce76d6e995f1d21538c61950a53eacee053",
      "tree": "aad069590d0c63a1ce992d19b1b342074f6525a7",
      "parents": [
        "93af9035389d72e514b30dd1fec11d8ee31b816c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Sep 09 16:01:15 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 16:01:15 2026 -0400"
      },
      "message": "chore(deps): bump google.golang.org/grpc from 1.83.0 to 1.83.2 in /ftp (#20492)\n\nBumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from\n1.83.0 to 1.83.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/releases\"\u003egoogle.golang.org/grpc\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.83.2\u003c/h2\u003e\n\u003ch1\u003eSecurity\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eserver: Reject requests missing both \u003ccode\u003e:authority\u003c/code\u003e and\n\u003ccode\u003eHost\u003c/code\u003e headers with HTTP 400 and status\n\u003ccode\u003eInternal\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/pull/9365\"\u003egrpc/grpc-go#9365\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/winklemad\"\u003e\u003ccode\u003e@​winklemad\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 1.83.1\u003c/h2\u003e\n\u003ch1\u003eSecurity\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003exds/rbac: Fix a bug where nested \u003ccode\u003ePrincipal\u003c/code\u003e or\n\u003ccode\u003ePermission\u003c/code\u003e rules with \u003ccode\u003e:scheme\u003c/code\u003e or\n\u003ccode\u003egrpc-\u003c/code\u003e prefixed header matchers were not rejected, which\ncould cause DENY rules to fail open. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9258\"\u003e#9258\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/nvxbug\"\u003e\u003ccode\u003e@​nvxbug\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds/rbac: Fix a bug where the \u003ccode\u003ehost\u003c/code\u003e header matcher was\nnot being replaced with \u003ccode\u003e:authority\u003c/code\u003e in nested\n\u003ccode\u003ePrincipal\u003c/code\u003e or \u003ccode\u003ePermission\u003c/code\u003e rules. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9258\"\u003e#9258\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/nvxbug\"\u003e\u003ccode\u003e@​nvxbug\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds/rbac: Fix a bug where a header matcher whose name was not\nlowercase, such as \u003ccode\u003eX-Role\u003c/code\u003e, matched no header, which could\ncause DENY rules to fail open. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9332\"\u003e#9332\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/alimony\"\u003e\u003ccode\u003e@​alimony\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds/rbac: Fix a bug where a \u003ccode\u003e:scheme\u003c/code\u003e or\n\u003ccode\u003egrpc-\u003c/code\u003e prefixed header matcher was accepted when its name\nwas not lowercase. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9332\"\u003e#9332\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/alimony\"\u003e\u003ccode\u003e@​alimony\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds/rbac: Fix a bug where a \u003ccode\u003eHost\u003c/code\u003e header matcher was not\nreplaced with \u003ccode\u003e:authority\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9332\"\u003e#9332\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/alimony\"\u003e\u003ccode\u003e@​alimony\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ePerformance\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003etransport: Restrict memory overhead of buffering small data frames.\n(\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9331\"\u003e#9331\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/030ee8becb20ce4315d6bf2dfa26bdd876169dc4\"\u003e\u003ccode\u003e030ee8b\u003c/code\u003e\u003c/a\u003e\nUpdate version to 1.83.2 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9375\"\u003e#9375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/8668b69c167df908b6b3666dcbf40992b9e932a4\"\u003e\u003ccode\u003e8668b69\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9365\"\u003e#9365\u003c/a\u003e to\nv1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9366\"\u003e#9366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/a3e952d2b7c973b7ec6357676e55a2a9c9faaa0d\"\u003e\u003ccode\u003ea3e952d\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9346\"\u003e#9346\u003c/a\u003e to\nv1.83.x and update x/net dependency (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9369\"\u003e#9369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/58f8fd9a002536548ac96e34621d761b29cc4f3e\"\u003e\u003ccode\u003e58f8fd9\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.2-dev (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9337\"\u003e#9337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/1550d9e0cddb30ce99e61a2102e8294a49461e5e\"\u003e\u003ccode\u003e1550d9e\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.1 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9336\"\u003e#9336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/ebba6f3f1b206e2b4dc4d1d5a96d18430302c2fe\"\u003e\u003ccode\u003eebba6f3\u003c/code\u003e\u003c/a\u003e\nCherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9258\"\u003e#9258\u003c/a\u003e\nand \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9332\"\u003e#9332\u003c/a\u003e\ninto v1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9335\"\u003e#9335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/8cfeca0e1ee5ea0980dcc320e20240fa1079ec77\"\u003e\u003ccode\u003e8cfeca0\u003c/code\u003e\u003c/a\u003e\nCherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9331\"\u003e#9331\u003c/a\u003e to\nv1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9333\"\u003e#9333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/dec6951305e88906696f1d0a00dd2439363bc708\"\u003e\u003ccode\u003edec6951\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.1-dev (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9229\"\u003e#9229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/compare/v1.83.0...v1.83.2\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: Darren Bolduc \u003cdbolduc@google.com\u003e"
    },
    {
      "commit": "93af9035389d72e514b30dd1fec11d8ee31b816c",
      "tree": "ebfa43596acfba91ad102f46ef030d02a00c429f",
      "parents": [
        "fd2947086c38a3ffd673126ad3544fa54cc56e6b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Sep 09 10:50:55 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 10:50:55 2026 -0700"
      },
      "message": "chore(deps): bump google.golang.org/grpc from 1.83.1 to 1.83.2 in /support (#20504)\n\nBumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from\n1.83.1 to 1.83.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/releases\"\u003egoogle.golang.org/grpc\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.83.2\u003c/h2\u003e\n\u003ch1\u003eSecurity\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eserver: Reject requests missing both \u003ccode\u003e:authority\u003c/code\u003e and\n\u003ccode\u003eHost\u003c/code\u003e headers with HTTP 400 and status\n\u003ccode\u003eInternal\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/pull/9365\"\u003egrpc/grpc-go#9365\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/winklemad\"\u003e\u003ccode\u003e@​winklemad\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/030ee8becb20ce4315d6bf2dfa26bdd876169dc4\"\u003e\u003ccode\u003e030ee8b\u003c/code\u003e\u003c/a\u003e\nUpdate version to 1.83.2 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9375\"\u003e#9375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/8668b69c167df908b6b3666dcbf40992b9e932a4\"\u003e\u003ccode\u003e8668b69\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9365\"\u003e#9365\u003c/a\u003e to\nv1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9366\"\u003e#9366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/a3e952d2b7c973b7ec6357676e55a2a9c9faaa0d\"\u003e\u003ccode\u003ea3e952d\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9346\"\u003e#9346\u003c/a\u003e to\nv1.83.x and update x/net dependency (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9369\"\u003e#9369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/58f8fd9a002536548ac96e34621d761b29cc4f3e\"\u003e\u003ccode\u003e58f8fd9\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.2-dev (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9337\"\u003e#9337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/compare/v1.83.1...v1.83.2\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dgoogle.golang.org/grpc\u0026package-manager\u003dgo_modules\u0026previous-version\u003d1.83.1\u0026new-version\u003d1.83.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/googleapis/google-cloud-go/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fd2947086c38a3ffd673126ad3544fa54cc56e6b",
      "tree": "037d15493297490566c0b17edf5e0f3e6e4d5b79",
      "parents": [
        "70b9796c8022958ad53d773e349f251444371111"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Sep 09 10:50:47 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 10:50:47 2026 -0700"
      },
      "message": "chore(deps): bump google.golang.org/grpc from 1.82.1 to 1.83.2 in /webrisk (#20503)\n\nBumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from\n1.82.1 to 1.83.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/releases\"\u003egoogle.golang.org/grpc\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.83.2\u003c/h2\u003e\n\u003ch1\u003eSecurity\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eserver: Reject requests missing both \u003ccode\u003e:authority\u003c/code\u003e and\n\u003ccode\u003eHost\u003c/code\u003e headers with HTTP 400 and status\n\u003ccode\u003eInternal\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/pull/9365\"\u003egrpc/grpc-go#9365\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/winklemad\"\u003e\u003ccode\u003e@​winklemad\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 1.83.1\u003c/h2\u003e\n\u003ch1\u003eSecurity\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003exds/rbac: Fix a bug where nested \u003ccode\u003ePrincipal\u003c/code\u003e or\n\u003ccode\u003ePermission\u003c/code\u003e rules with \u003ccode\u003e:scheme\u003c/code\u003e or\n\u003ccode\u003egrpc-\u003c/code\u003e prefixed header matchers were not rejected, which\ncould cause DENY rules to fail open. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9258\"\u003e#9258\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/nvxbug\"\u003e\u003ccode\u003e@​nvxbug\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds/rbac: Fix a bug where the \u003ccode\u003ehost\u003c/code\u003e header matcher was\nnot being replaced with \u003ccode\u003e:authority\u003c/code\u003e in nested\n\u003ccode\u003ePrincipal\u003c/code\u003e or \u003ccode\u003ePermission\u003c/code\u003e rules. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9258\"\u003e#9258\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/nvxbug\"\u003e\u003ccode\u003e@​nvxbug\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds/rbac: Fix a bug where a header matcher whose name was not\nlowercase, such as \u003ccode\u003eX-Role\u003c/code\u003e, matched no header, which could\ncause DENY rules to fail open. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9332\"\u003e#9332\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/alimony\"\u003e\u003ccode\u003e@​alimony\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds/rbac: Fix a bug where a \u003ccode\u003e:scheme\u003c/code\u003e or\n\u003ccode\u003egrpc-\u003c/code\u003e prefixed header matcher was accepted when its name\nwas not lowercase. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9332\"\u003e#9332\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/alimony\"\u003e\u003ccode\u003e@​alimony\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds/rbac: Fix a bug where a \u003ccode\u003eHost\u003c/code\u003e header matcher was not\nreplaced with \u003ccode\u003e:authority\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9332\"\u003e#9332\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/alimony\"\u003e\u003ccode\u003e@​alimony\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ePerformance\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003etransport: Restrict memory overhead of buffering small data frames.\n(\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9331\"\u003e#9331\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 1.83.0\u003c/h2\u003e\n\u003ch1\u003eSecurity\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eserver: Stop reading from connections when flooded by HTTP/2 frames\nto mitigate resource exhaustion. The default value for this limit is 100\nframes, excluding DATA and HEADERS, and may be changed by setting\nenvironment variable\n\u003ccode\u003eGRPC_GO_EXPERIMENTAL_CONTROL_BUFFER_THROTTLE_LIMIT\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003exds/rbac: Support \u003ccode\u003eMetadata\u003c/code\u003e and\n\u003ccode\u003eRequestedServerName\u003c/code\u003e permissions matcher fields. If present\nin a DENY rule, previously these would be ignored and fail-open.\u003c/li\u003e\n\u003cli\u003exds/rbac: Fix panic when parsing unsupported fields in\n\u003ccode\u003eNotRule\u003c/code\u003e/\u003ccode\u003eNotId\u003c/code\u003e permissions.\u003c/li\u003e\n\u003cli\u003exds/rbac: Support the deprecated \u003ccode\u003esource_ip\u003c/code\u003e principal\nidentifier by treating it as equivalent to\n\u003ccode\u003edirect_remote_ip\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003exds: Fix panic when parsing route header matchers configured with\nempty \u003ccode\u003eexact_match\u003c/code\u003e, \u003ccode\u003eprefix_match\u003c/code\u003e, or\n\u003ccode\u003esuffix_match\u003c/code\u003e strings. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9223\"\u003e#9223\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eNew Features\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003exds/googlec2p: Enable DirectPath over Interconnect support for\non-premises clients via the \u003ccode\u003eforce-xds\u003c/code\u003e target URI query\nparameter. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9133\"\u003e#9133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003exds: Enable xDS configuration to control which fields get propagated\nfrom ORCA backend metric reports to LRS load reports. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9145\"\u003e#9145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eauthz: Add \u003ccode\u003eOnPolicyUpdate\u003c/code\u003e callback to\n\u003ccode\u003eFileWatcherOptions\u003c/code\u003e to notify when an authz policy is loaded\nor updated. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9142\"\u003e#9142\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/hnefatl\"\u003e\u003ccode\u003e@​hnefatl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds: Add support for the GCP Authentication HTTP Filter, which\nautomatically fetches and attaches GCP Service Account Identity JWT\ntokens to outgoing RPCs.\n\u003cul\u003e\n\u003cli\u003eThis feature can be enabled by setting environment variable\n\u003ccode\u003eGRPC_EXPERIMENTAL_XDS_GCP_AUTHENTICATION_FILTER\u003dtrue\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9119\"\u003e#9119\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds: Add support for xDS-based HTTP CONNECT proxies.\n\u003cul\u003e\n\u003cli\u003eThis feature can be enabled by setting environment variable\n\u003ccode\u003eGRPC_EXPERIMENTAL_XDS_HTTP_CONNECT\u003dtrue\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9151\"\u003e#9151\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds: Add support for \u003ccode\u003econtains_match\u003c/code\u003e in route header\nmatchers. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9223\"\u003e#9223\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug Fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ecredentials/alts: Fix panic when processing malformed frames by\nvalidating that the message frame length exceeds the message type field\nsize. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9197\"\u003e#9197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003egrpc: Fix compilation on Plan 9 targets (\u003ccode\u003eGOOS\u003dplan9\u003c/code\u003e),\nbroken since v1.81.0. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9255\"\u003e#9255\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/Yusufihsangorgel\"\u003e\u003ccode\u003e@​Yusufihsangorgel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/030ee8becb20ce4315d6bf2dfa26bdd876169dc4\"\u003e\u003ccode\u003e030ee8b\u003c/code\u003e\u003c/a\u003e\nUpdate version to 1.83.2 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9375\"\u003e#9375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/8668b69c167df908b6b3666dcbf40992b9e932a4\"\u003e\u003ccode\u003e8668b69\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9365\"\u003e#9365\u003c/a\u003e to\nv1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9366\"\u003e#9366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/a3e952d2b7c973b7ec6357676e55a2a9c9faaa0d\"\u003e\u003ccode\u003ea3e952d\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9346\"\u003e#9346\u003c/a\u003e to\nv1.83.x and update x/net dependency (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9369\"\u003e#9369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/58f8fd9a002536548ac96e34621d761b29cc4f3e\"\u003e\u003ccode\u003e58f8fd9\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.2-dev (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9337\"\u003e#9337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/1550d9e0cddb30ce99e61a2102e8294a49461e5e\"\u003e\u003ccode\u003e1550d9e\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.1 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9336\"\u003e#9336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/ebba6f3f1b206e2b4dc4d1d5a96d18430302c2fe\"\u003e\u003ccode\u003eebba6f3\u003c/code\u003e\u003c/a\u003e\nCherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9258\"\u003e#9258\u003c/a\u003e\nand \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9332\"\u003e#9332\u003c/a\u003e\ninto v1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9335\"\u003e#9335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/8cfeca0e1ee5ea0980dcc320e20240fa1079ec77\"\u003e\u003ccode\u003e8cfeca0\u003c/code\u003e\u003c/a\u003e\nCherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9331\"\u003e#9331\u003c/a\u003e to\nv1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9333\"\u003e#9333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/dec6951305e88906696f1d0a00dd2439363bc708\"\u003e\u003ccode\u003edec6951\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.1-dev (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9229\"\u003e#9229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/4c226daff88f54441d70f710815e07b81fb162b2\"\u003e\u003ccode\u003e4c226da\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.0 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9228\"\u003e#9228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/c198988aa9297cb9428c7afaaee4363d0082b838\"\u003e\u003ccode\u003ec198988\u003c/code\u003e\u003c/a\u003e\nCherrypick 9223 into v1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9279\"\u003e#9279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/compare/v1.82.1...v1.83.2\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dgoogle.golang.org/grpc\u0026package-manager\u003dgo_modules\u0026previous-version\u003d1.82.1\u0026new-version\u003d1.83.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/googleapis/google-cloud-go/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "70b9796c8022958ad53d773e349f251444371111",
      "tree": "b31373d00ea1cc2f76cf29fcfae56de2c8ce7cd4",
      "parents": [
        "5ada5767ada25aebeb2c083177b081c773035ffd"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Sep 09 17:42:21 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 17:42:21 2026 +0000"
      },
      "message": "chore(deps): bump google.golang.org/grpc from 1.83.1 to 1.83.2 in /trace (#20499)\n\nBumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from\n1.83.1 to 1.83.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/releases\"\u003egoogle.golang.org/grpc\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.83.2\u003c/h2\u003e\n\u003ch1\u003eSecurity\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eserver: Reject requests missing both \u003ccode\u003e:authority\u003c/code\u003e and\n\u003ccode\u003eHost\u003c/code\u003e headers with HTTP 400 and status\n\u003ccode\u003eInternal\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/pull/9365\"\u003egrpc/grpc-go#9365\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/winklemad\"\u003e\u003ccode\u003e@​winklemad\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/030ee8becb20ce4315d6bf2dfa26bdd876169dc4\"\u003e\u003ccode\u003e030ee8b\u003c/code\u003e\u003c/a\u003e\nUpdate version to 1.83.2 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9375\"\u003e#9375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/8668b69c167df908b6b3666dcbf40992b9e932a4\"\u003e\u003ccode\u003e8668b69\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9365\"\u003e#9365\u003c/a\u003e to\nv1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9366\"\u003e#9366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/a3e952d2b7c973b7ec6357676e55a2a9c9faaa0d\"\u003e\u003ccode\u003ea3e952d\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9346\"\u003e#9346\u003c/a\u003e to\nv1.83.x and update x/net dependency (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9369\"\u003e#9369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/58f8fd9a002536548ac96e34621d761b29cc4f3e\"\u003e\u003ccode\u003e58f8fd9\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.2-dev (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9337\"\u003e#9337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/compare/v1.83.1...v1.83.2\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5ada5767ada25aebeb2c083177b081c773035ffd",
      "tree": "0b143c52095cb448f6fda5ea66404a5d3770d082",
      "parents": [
        "82539a0707f7296b676f5ebcec93fee75ee3f9fb"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Sep 09 17:37:29 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 17:37:29 2026 +0000"
      },
      "message": "chore(deps): bump google.golang.org/grpc from 1.83.1 to 1.83.2 in /video (#20496)\n\n[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don\u0027t worry if this takes some\ntime.\n\nNote: if you make any changes to this PR yourself, they will take\nprecedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from\n1.83.1 to 1.83.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/releases\"\u003egoogle.golang.org/grpc\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.83.2\u003c/h2\u003e\n\u003ch1\u003eSecurity\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eserver: Reject requests missing both \u003ccode\u003e:authority\u003c/code\u003e and\n\u003ccode\u003eHost\u003c/code\u003e headers with HTTP 400 and status\n\u003ccode\u003eInternal\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/pull/9365\"\u003egrpc/grpc-go#9365\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/winklemad\"\u003e\u003ccode\u003e@​winklemad\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/030ee8becb20ce4315d6bf2dfa26bdd876169dc4\"\u003e\u003ccode\u003e030ee8b\u003c/code\u003e\u003c/a\u003e\nUpdate version to 1.83.2 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9375\"\u003e#9375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/8668b69c167df908b6b3666dcbf40992b9e932a4\"\u003e\u003ccode\u003e8668b69\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9365\"\u003e#9365\u003c/a\u003e to\nv1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9366\"\u003e#9366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/a3e952d2b7c973b7ec6357676e55a2a9c9faaa0d\"\u003e\u003ccode\u003ea3e952d\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9346\"\u003e#9346\u003c/a\u003e to\nv1.83.x and update x/net dependency (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9369\"\u003e#9369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/58f8fd9a002536548ac96e34621d761b29cc4f3e\"\u003e\u003ccode\u003e58f8fd9\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.2-dev (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9337\"\u003e#9337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/compare/v1.83.1...v1.83.2\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dgoogle.golang.org/grpc\u0026package-manager\u003dgo_modules\u0026previous-version\u003d1.83.1\u0026new-version\u003d1.83.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/googleapis/google-cloud-go/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "82539a0707f7296b676f5ebcec93fee75ee3f9fb",
      "tree": "e5cdad2fbdef1de1e73dc95c0d9c7b764d9bf2d5",
      "parents": [
        "3ecac601dbabee5e91a3d32336507957982d274a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Sep 09 17:37:22 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 17:37:22 2026 +0000"
      },
      "message": "chore(deps): bump google.golang.org/grpc from 1.83.1 to 1.83.2 in /vertexai (#20497)\n\n[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don\u0027t worry if this takes some\ntime.\n\nNote: if you make any changes to this PR yourself, they will take\nprecedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from\n1.83.1 to 1.83.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/releases\"\u003egoogle.golang.org/grpc\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.83.2\u003c/h2\u003e\n\u003ch1\u003eSecurity\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eserver: Reject requests missing both \u003ccode\u003e:authority\u003c/code\u003e and\n\u003ccode\u003eHost\u003c/code\u003e headers with HTTP 400 and status\n\u003ccode\u003eInternal\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/pull/9365\"\u003egrpc/grpc-go#9365\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/winklemad\"\u003e\u003ccode\u003e@​winklemad\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/030ee8becb20ce4315d6bf2dfa26bdd876169dc4\"\u003e\u003ccode\u003e030ee8b\u003c/code\u003e\u003c/a\u003e\nUpdate version to 1.83.2 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9375\"\u003e#9375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/8668b69c167df908b6b3666dcbf40992b9e932a4\"\u003e\u003ccode\u003e8668b69\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9365\"\u003e#9365\u003c/a\u003e to\nv1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9366\"\u003e#9366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/a3e952d2b7c973b7ec6357676e55a2a9c9faaa0d\"\u003e\u003ccode\u003ea3e952d\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9346\"\u003e#9346\u003c/a\u003e to\nv1.83.x and update x/net dependency (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9369\"\u003e#9369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/58f8fd9a002536548ac96e34621d761b29cc4f3e\"\u003e\u003ccode\u003e58f8fd9\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.2-dev (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9337\"\u003e#9337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/compare/v1.83.1...v1.83.2\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dgoogle.golang.org/grpc\u0026package-manager\u003dgo_modules\u0026previous-version\u003d1.83.1\u0026new-version\u003d1.83.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/googleapis/google-cloud-go/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "3ecac601dbabee5e91a3d32336507957982d274a",
      "tree": "bd6d7e80887a2cf55933bf9ced2340d0a2b318ca",
      "parents": [
        "97b33ae139aaeb3a287fe5e0d7e71ab17c653fc8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Sep 09 10:37:09 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 10:37:09 2026 -0700"
      },
      "message": "chore(deps): bump google.golang.org/grpc from 1.83.1 to 1.83.2 in /developerknowledge (#20493)\n\n[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don\u0027t worry if this takes some\ntime.\n\nNote: if you make any changes to this PR yourself, they will take\nprecedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from\n1.83.1 to 1.83.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/releases\"\u003egoogle.golang.org/grpc\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.83.2\u003c/h2\u003e\n\u003ch1\u003eSecurity\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eserver: Reject requests missing both \u003ccode\u003e:authority\u003c/code\u003e and\n\u003ccode\u003eHost\u003c/code\u003e headers with HTTP 400 and status\n\u003ccode\u003eInternal\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/pull/9365\"\u003egrpc/grpc-go#9365\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/winklemad\"\u003e\u003ccode\u003e@​winklemad\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/030ee8becb20ce4315d6bf2dfa26bdd876169dc4\"\u003e\u003ccode\u003e030ee8b\u003c/code\u003e\u003c/a\u003e\nUpdate version to 1.83.2 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9375\"\u003e#9375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/8668b69c167df908b6b3666dcbf40992b9e932a4\"\u003e\u003ccode\u003e8668b69\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9365\"\u003e#9365\u003c/a\u003e to\nv1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9366\"\u003e#9366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/a3e952d2b7c973b7ec6357676e55a2a9c9faaa0d\"\u003e\u003ccode\u003ea3e952d\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9346\"\u003e#9346\u003c/a\u003e to\nv1.83.x and update x/net dependency (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9369\"\u003e#9369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/58f8fd9a002536548ac96e34621d761b29cc4f3e\"\u003e\u003ccode\u003e58f8fd9\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.2-dev (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9337\"\u003e#9337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/compare/v1.83.1...v1.83.2\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dgoogle.golang.org/grpc\u0026package-manager\u003dgo_modules\u0026previous-version\u003d1.83.1\u0026new-version\u003d1.83.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/googleapis/google-cloud-go/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "97b33ae139aaeb3a287fe5e0d7e71ab17c653fc8",
      "tree": "995ecb416da135f6ba5769a69ce03ee0a0e88e59",
      "parents": [
        "ef4f41b75092d51ba607db0d3dbee04d8c31d55a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Sep 09 10:37:02 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 10:37:02 2026 -0700"
      },
      "message": "chore(deps): bump google.golang.org/grpc from 1.83.0 to 1.83.2 in /spanner/benchmarks (#20490)\n\n[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don\u0027t worry if this takes some\ntime.\n\nNote: if you make any changes to this PR yourself, they will take\nprecedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from\n1.83.0 to 1.83.2.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/releases\"\u003egoogle.golang.org/grpc\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.83.2\u003c/h2\u003e\n\u003ch1\u003eSecurity\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eserver: Reject requests missing both \u003ccode\u003e:authority\u003c/code\u003e and\n\u003ccode\u003eHost\u003c/code\u003e headers with HTTP 400 and status\n\u003ccode\u003eInternal\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/pull/9365\"\u003egrpc/grpc-go#9365\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/winklemad\"\u003e\u003ccode\u003e@​winklemad\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 1.83.1\u003c/h2\u003e\n\u003ch1\u003eSecurity\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003exds/rbac: Fix a bug where nested \u003ccode\u003ePrincipal\u003c/code\u003e or\n\u003ccode\u003ePermission\u003c/code\u003e rules with \u003ccode\u003e:scheme\u003c/code\u003e or\n\u003ccode\u003egrpc-\u003c/code\u003e prefixed header matchers were not rejected, which\ncould cause DENY rules to fail open. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9258\"\u003e#9258\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/nvxbug\"\u003e\u003ccode\u003e@​nvxbug\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds/rbac: Fix a bug where the \u003ccode\u003ehost\u003c/code\u003e header matcher was\nnot being replaced with \u003ccode\u003e:authority\u003c/code\u003e in nested\n\u003ccode\u003ePrincipal\u003c/code\u003e or \u003ccode\u003ePermission\u003c/code\u003e rules. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9258\"\u003e#9258\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/nvxbug\"\u003e\u003ccode\u003e@​nvxbug\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds/rbac: Fix a bug where a header matcher whose name was not\nlowercase, such as \u003ccode\u003eX-Role\u003c/code\u003e, matched no header, which could\ncause DENY rules to fail open. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9332\"\u003e#9332\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/alimony\"\u003e\u003ccode\u003e@​alimony\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds/rbac: Fix a bug where a \u003ccode\u003e:scheme\u003c/code\u003e or\n\u003ccode\u003egrpc-\u003c/code\u003e prefixed header matcher was accepted when its name\nwas not lowercase. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9332\"\u003e#9332\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/alimony\"\u003e\u003ccode\u003e@​alimony\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds/rbac: Fix a bug where a \u003ccode\u003eHost\u003c/code\u003e header matcher was not\nreplaced with \u003ccode\u003e:authority\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9332\"\u003e#9332\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/alimony\"\u003e\u003ccode\u003e@​alimony\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ePerformance\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003etransport: Restrict memory overhead of buffering small data frames.\n(\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9331\"\u003e#9331\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/030ee8becb20ce4315d6bf2dfa26bdd876169dc4\"\u003e\u003ccode\u003e030ee8b\u003c/code\u003e\u003c/a\u003e\nUpdate version to 1.83.2 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9375\"\u003e#9375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/8668b69c167df908b6b3666dcbf40992b9e932a4\"\u003e\u003ccode\u003e8668b69\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9365\"\u003e#9365\u003c/a\u003e to\nv1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9366\"\u003e#9366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/a3e952d2b7c973b7ec6357676e55a2a9c9faaa0d\"\u003e\u003ccode\u003ea3e952d\u003c/code\u003e\u003c/a\u003e\ncherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9346\"\u003e#9346\u003c/a\u003e to\nv1.83.x and update x/net dependency (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9369\"\u003e#9369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/58f8fd9a002536548ac96e34621d761b29cc4f3e\"\u003e\u003ccode\u003e58f8fd9\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.2-dev (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9337\"\u003e#9337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/1550d9e0cddb30ce99e61a2102e8294a49461e5e\"\u003e\u003ccode\u003e1550d9e\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.1 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9336\"\u003e#9336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/ebba6f3f1b206e2b4dc4d1d5a96d18430302c2fe\"\u003e\u003ccode\u003eebba6f3\u003c/code\u003e\u003c/a\u003e\nCherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9258\"\u003e#9258\u003c/a\u003e\nand \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9332\"\u003e#9332\u003c/a\u003e\ninto v1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9335\"\u003e#9335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/8cfeca0e1ee5ea0980dcc320e20240fa1079ec77\"\u003e\u003ccode\u003e8cfeca0\u003c/code\u003e\u003c/a\u003e\nCherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9331\"\u003e#9331\u003c/a\u003e to\nv1.83.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9333\"\u003e#9333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/dec6951305e88906696f1d0a00dd2439363bc708\"\u003e\u003ccode\u003edec6951\u003c/code\u003e\u003c/a\u003e\nChange version to 1.83.1-dev (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/9229\"\u003e#9229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/compare/v1.83.0...v1.83.2\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dgoogle.golang.org/grpc\u0026package-manager\u003dgo_modules\u0026previous-version\u003d1.83.0\u0026new-version\u003d1.83.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the\n[Security Alerts\npage](https://github.com/googleapis/google-cloud-go/network/alerts).\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    }
  ],
  "next": "ef4f41b75092d51ba607db0d3dbee04d8c31d55a"
}
