)]}'
{
  "log": [
    {
      "commit": "e9ba9bee1de4408da6409be18643d73d70e60590",
      "tree": "8feee29b78dc095a192e63dc16306d84422992ef",
      "parents": [
        "160271019d4cd87d4fe8c1709f7a7c1cbef6a0f5"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Fri Oct 09 07:30:31 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 07:30:31 2026 -0700"
      },
      "message": "docs: update for v2 (#2474)\n\n**What type of PR is this?**\n\n\u003e Documentation\n\n**What package or component does this PR mostly affect?**\n\n\u003e all\n\n**What does this PR do? Why is it needed?**\n\n- README.md:\n  - Add link to `#gazelle` Slack, remove unused mailing list.\n  - Group links to other docs near the top.\n  - Add Bzlmod quick start examples.\n- Removed *Dependency resolution* section, since this is mostly covered\nby how-gazelle-works.md.\n- workspace.md: moved `WORKSPACE` setup instructions to new file, linked\nfrom README.md.\n- v2.md: added information about v2 to a new page, linked from\nREADME.md.\n- extend.md: rewrote and simplified around the v2 interfaces.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**"
    },
    {
      "commit": "160271019d4cd87d4fe8c1709f7a7c1cbef6a0f5",
      "tree": "2bf4a6c9a5d2c1b1edac71c9bfb5f0481ccda8db",
      "parents": [
        "ac47a800befac451c5f8d5bbb296baa09fdc6d19"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Thu Oct 08 16:24:22 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 16:24:22 2026 -0700"
      },
      "message": "gazelle-migrate-language skill: fix friction seen in gazelle_cc (#2470)\n\n**What type of PR is this?**\n\n\u003e Bug fix\n\n**What package or component does this PR mostly affect?**\n\n\u003e skills/gazelle-migrate-language\n\n**What does this PR do? Why is it needed?**\n\nMostly minor edits. The agent was able to complete the upgrade, but got\nconfused in a few places.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**"
    },
    {
      "commit": "ac47a800befac451c5f8d5bbb296baa09fdc6d19",
      "tree": "382f4d90d9265576115fa34dc9321adb5e3db348",
      "parents": [
        "a6598082134d0084ca599a65fcfd68afb45c452e"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Thu Oct 08 16:24:08 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 16:24:08 2026 -0700"
      },
      "message": "go_deps: don\u0027t report version conflicts for go.work Bazel modules (#2468)\n\n**What type of PR is this?**\n\n\u003e Bug fix\n\n**What package or component does this PR mostly affect?**\n\n\u003e go_deps\n\n**What does this PR do? Why is it needed?**\n\nWhen an external repo has a bazel_dep on gazelle 2.0.0-beta.1 and\ndepends on both v1 and v2 via go.mod, go_deps reports a version conflict\nerror because the v1 module version does not and cannot match.\n\nPreviously, we skipped reporting version conflict errors for Go modules\nthat aren\u0027t at the root of the Bazel module that provides them. This\nisn\u0027t enough. With this change, we skip errors for all Go modules\nprovided through go.work in a Bazel module. There may be no good\ncorrespondence between Bazel and Go versions for these.\n\n**Which issues(s) does this PR fix?**\n\nn/a\n\n**Other notes for review**"
    },
    {
      "commit": "a6598082134d0084ca599a65fcfd68afb45c452e",
      "tree": "c2da4af8f1bf2471c943e75d7a7649675e0c3d27",
      "parents": [
        "d10bb0d7dce4087e1fe8d45620ad3ff5f5602cb3"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Wed Oct 07 16:09:42 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 16:09:42 2026 -0700"
      },
      "message": "v2/resolve: plumb in walk.Cache to Imports, Find, Resolve (#2469)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e v2/resolve\n\n**What does this PR do? Why is it needed?**\n\ngazelle_cc needs to call GetDirInfo for these methods, and other\nextensions probably will too. For example, if we have:\n\n    cc_library(\n        name \u003d \"lib\",\n        hdrs \u003d glob([\"*.h\"]),\n    )\n\nImports needs to expand the glob, and it needs GetDirInfo in order to\navoid excluded files.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**"
    },
    {
      "commit": "d10bb0d7dce4087e1fe8d45620ad3ff5f5602cb3",
      "tree": "ec22e546928c7f70ad0219c4d241267f782f8c23",
      "parents": [
        "8f92f053d284b62833c2c9afff46b5ed4b436cfc"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Wed Oct 07 10:18:11 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 10:18:11 2026 -0700"
      },
      "message": "v2/errors: support error severity (#2467)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e v2/errors\n\n**What does this PR do? Why is it needed?**\n\nAdds support for error severity and modifies strict mode to skip writing\nbuild files after errors.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2465\n\n**Other notes for review**"
    },
    {
      "commit": "8f92f053d284b62833c2c9afff46b5ed4b436cfc",
      "tree": "94f2ca0840463dfb923ee306adcd640fbb1300cb",
      "parents": [
        "9711ee84a3ffa8f91926b91344cc874e236823f6"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Wed Oct 07 09:26:48 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 09:26:48 2026 -0700"
      },
      "message": "gazelle_binary: fix //language/defaults dependency (#2466)\n\n**What type of PR is this?**\n\n\u003e Bug fix\n\n**What package or component does this PR mostly affect?**\n\n\u003e gazelle_binary\n\n**What does this PR do? Why is it needed?**\n\nWrap with Label so that it works outside Gazelle.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**"
    },
    {
      "commit": "9711ee84a3ffa8f91926b91344cc874e236823f6",
      "tree": "50babd7b262bfcebd213c81b51187593a3d59db9",
      "parents": [
        "95ac9cd10512b9219dbc2a3ee6119e87458f664b"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Fri Oct 02 13:52:01 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 02 13:52:01 2026 -0700"
      },
      "message": "go.mod: use v2.0.0-beta.1 (#2464)\n\n**What type of PR is this?**\n\n\u003e Other\n\n**What package or component does this PR mostly affect?**\n\n\u003e go.mod\n\n**What does this PR do? Why is it needed?**\n\nReference v2.0.0-beta.1 from the v1 go.mod so that projects that depend\non Gazelle via\ngo.mod can run `go mod tidy` without error.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**\n\nAlso needed to run `go work vendor -e`, which pulled in some new\n`x/tools` packages used by `gazelle_binary`."
    },
    {
      "commit": "95ac9cd10512b9219dbc2a3ee6119e87458f664b",
      "tree": "b6b2cd02b81855b4496e4fa3a154e05030afb715",
      "parents": [
        "4540280c49402b3a30b0a13b3afc4c4d7df9bdf8"
      ],
      "author": {
        "name": "Fabian Meumertzheim",
        "email": "fabian@meumertzhe.im",
        "time": "Thu Oct 01 18:01:11 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 16:01:11 2026 +0000"
      },
      "message": "go_deps: more follow-up fixes for the \u0027go list -m\u0027 rewrite (#2463)\n\nSecond batch of follow-up fixes for the `go_deps` rewrite in #2418, from\nthe same review as #2441 and rebased onto #2462. As before, each commit\nfixes one issue and comes with unit test coverage in\n`//tests/bzlmod:go_deps_test` where that was reasonably possible; the\ncommit message says so where it wasn\u0027t.\n\nFixes, in commit order:\n\n**Hard failures on previously working setups**\n- A versioned `replace` whose replacement has no zip checksum in\n`go.sum` (the state `go mod tidy` leaves behind when no package of the\nmodule is needed) failed unconditionally with \"sum missing for\nreplacement\". Replacements are now treated like other modules and\nreported through the configurable checks.\n- On Windows, the `C:/...` directory of a Bazel-provided Go module was\nwritten as `./C:/...` into synthetic `replace` directives, so `go list\n-m` failed whenever such a module was required.\n- `archive_override`, `module_override`, and `gazelle_override` tags for\na Go module provided by a Bazel module were silently ignored. They now\nfail with a pointer to `local_path_override`/`single_version_override`;\n`replace` directives for such modules are reported through the checks.\n\n**Tools**\n- Tool targets in Bazel-provided modules were formatted as\n`@gazelle+//...`, which is neither a canonical label nor a visible\napparent name, so `bazel run @rules_go//go -- tool gazelle` failed. They\nnow use `@@\u003ccanonical name\u003e//...`.\n- A Go module that is both provided by a Bazel module in a subdirectory\nand required by the root `go.mod` (as Go requires for `tool` directives)\nlost its package, so `tool .../v2/cmd/gazelle` resolved to the v1\nbinary.\n- A `tool` directive naming the root package of a module with a major\nversion suffix (`tool github.com/goreleaser/goreleaser/v2`) produced a\ntarget named `goreleaser` instead of the `v2` that Gazelle generates.\n\n**Workspaces and the config repo**\n- `go.work.sum` (or `workspace.go.work.sum`) was never read: `go_deps`\nstripped `.work` and looked for `go.sum`/`workspace.go.sum` instead,\nlosing checksums and watching the wrong file.\n`tests/bcr/go_work/workspace.go.sum`, which had been named to match the\nold logic, is renamed.\n- The synthetic `go_deps_module_tags` module was indexed for Gazelle and\nappeared as a `go_repository` in every user\u0027s config `WORKSPACE`. The\n`config_prefix_dirs` test case from #2420 expected it in `repo_names`.\n- The Go environment persisted in `@bazel_gazelle_go_repository_config`\nwas the execution-ready one, including the absolute `GOROOT`, `GOPATH`,\nand `GOCACHE` of the current output base. `bazel run @rules_go//go --\nenv GOPATH` pointed into the output base, and every `go_repository`\nrecorded a `go.env` whose digest differs per output base, so the\nrepository contents cache never shared results.\n\n**Version checks**\n- `go_deps.gazelle_default_attributes` in non-root modules is rejected\nagain instead of silently doing nothing.\n- The check against the version of the Bazel module providing a Go\nmodule reported false conflicts for registry patch versions like\n`1.3.8.bcr.1`, for the empty version of modules with a non-registry\noverride (Gazelle\u0027s own `bcr_go_mod` test printed this on every run),\nand for Bazel modules newer than an indirect requirement.\n- Requested versions were compared against the replacement version, so\n`require a v1.2.0` with `replace a \u003d\u003e a v1.2.1` was a conflict on every\nrun, and directory replacements reported \"selected by Go: None\".\n- The deprecated `check_direct_dependencies` was combined with `checks`\nusing `max()`, so an explicit `\"off\"` no longer silenced anything and\n`\"error\"` escalated all checks. It now takes the place of `checks` when\nset and prints a deprecation notice.\n\n**Dead output and restored checks**\n- `go_repository_cache` no longer writes `def.bzl`, which contained an\ninvalid label expression since the rewrite and is loaded by nothing.\n- Malformed directives in `gazelle_override` and\n`gazelle_default_attributes` are rejected again instead of being written\nas plain comments.\n- `from_file(go_mod \u003d ...)` labels must name a `go.mod` file again,\nsince the synthetic `go.work` references the file\u0027s directory.\n\n**Download settings** (the commit pulled out of #2441, redone as\nsuggested there on top of #2437)\n- `go list -m` in `go_deps` ran without the host\u0027s sum database, auth,\nproxy, and TLS settings, so it failed on a cold module cache behind a\ncorporate proxy or with a custom `GOSUMDB`. `compute_env` in\n`go_repository_cache` now reads `GOAUTH`, `GONOSUMDB`, and `GOSUMDB`\nfrom `go env` next to `GOPROXY`, `GONOPROXY`, and `GOPRIVATE` (so `go\nenv -w` is honored), and they flow through `go.env` to `go_deps`,\n`go_repository`, and `@rules_go//go`, which all see the same values.\n`HTTP(S)_PROXY`, `NO_PROXY`, and `SSL_CERT_*` can\u0027t live in `go.env`,\nwhich has to stay relocatable (`SSL_CERT_FILE` is an absolute path, as\n`TestRepoCacheContainsGoEnv` pointed out on CI), so `go_deps` and\n`go_repository` read them from the host environment through a shared\nhelper when they run the go command. `go_repository` only reads the\nVCS-related variables (`PATH`, `HOME`, `GIT_*`, `SSH_AUTH_SOCK`) from\nthe host beyond that. This also fixes `resolve_env` copying `GOPRIVATE`\nto `GONOPROXY` twice instead of to `GONOSUMDB`. Covered by a new\n`//tests/bzlmod:env_test`."
    },
    {
      "commit": "4540280c49402b3a30b0a13b3afc4c4d7df9bdf8",
      "tree": "6421232c61b5614c862c44675dca9f4bbe42aafd",
      "parents": [
        "5b2079837815d2f7f949a6047ef5dbffaacee0eb"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Sep 29 16:22:28 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 16:22:28 2026 -0700"
      },
      "message": "go_deps: fix multiple go.work bugs, add tests (#2462)\n\n**What type of PR is this?**\n\n\u003e Bug fix\n\n**What package or component does this PR mostly affect?**\n\n\u003e go_deps\n\u003e language/go\n\n**What does this PR do? Why is it needed?**\n\n- go_deps no longer writes the root Bazel module name to\ngo_repository_config.\n  This caused gazelle in go_repository to resolve imports of packages in\nthe root module to labels like \u0027@@main//pkg/foo\u0027. Should be\n\u0027@@//pkg/foo\u0027.\n- language/go now correctly generates labels in this format, when\n  go_repository_config says the repo name is \u0027@\u0027.\n- go_deps now checks whether a \u0027use\u0027 path is relative with\n\u0027paths.is_absolute\u0027.\n  The \u0027./\u0027 or \u0027../\u0027 prefix is not required.\n\nTests:\n\n- Added unit test cases to //language/go:go_test,\n//tests/bzlmod:go_deps_test.\n- Fixed relative path handling in //tools/convert-go-deps-test-case.\n- Added to //tests/bcr/go_work from #2403. Did not include\n  //tests/bcr/go_work_minimal though, to avoid adding new CI jobs.\n- Verifed that `bazel build --nobuild $(bazel query \u0027kind(go_library,\n//...)\u0027)`\nworks in github.com/DataDog/datadog-agent. Some spurious version\nconsistency\n  warnings are present, but it succeeds.\n\n**Which issues(s) does this PR fix?**\n\nFor #2394\n\n**Other notes for review**"
    },
    {
      "commit": "5b2079837815d2f7f949a6047ef5dbffaacee0eb",
      "tree": "ad7538897dae927462aaf31985a60847e0fe9044",
      "parents": [
        "957368d97ac70c11e0037913af4135949f4be407"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Sep 29 12:19:28 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 12:19:28 2026 -0700"
      },
      "message": "go_deps_test: support downloads, facts, add new tests (#2438)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e go_deps\n\n**What does this PR do? Why is it needed?**\n\nUpdate the go_deps_test framework to be able to assert on the contents\nof facts.\n\nAdd tests verifying new download behavior in go_deps: facts_all,\nfacts_goprivate, facts_gonoproxy.\n\nUpdate //tools/convert-go-deps-test-case to be able to capture mock\ndownloads from the actual files downloaded by \u0027go list -m\u0027.\n\nRepack all existing tests.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2433\n\n**Other notes for review**"
    },
    {
      "commit": "957368d97ac70c11e0037913af4135949f4be407",
      "tree": "7da98eedaae1eca775038c51c11fcda2d276467e",
      "parents": [
        "6b486097ad055a942c1abe1372f0d8f3024cd355"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Sep 29 12:19:28 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 12:19:28 2026 -0700"
      },
      "message": "go_deps: use goproxy.bzl functions to download .mod files ahead of time (#2437)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e go_deps\n\n**What does this PR do? Why is it needed?**\n\nIn short:\n\n1. Make a list of .mod files we probably need from facts, require\ndirectives, and module tags. Use module_ctx.download to download these\nfiles from the first GOPROXY to take advantage of the remote downloader\nconfig and repository cache.\n2. Run \u0027go list -m\u0027.\n3. Download any files mentioned in the \u0027go list -m\u0027 output that we\nmissed.\n4. Store the complete list in facts so we get them all before \u0027go list\n-m\u0027 on the next run.\n\n**Which issues(s) does this PR fix?**\n\nFor #2433\n\n**Other notes for review**"
    },
    {
      "commit": "6b486097ad055a942c1abe1372f0d8f3024cd355",
      "tree": "8224fc409616af3d2bb47f9984fdc853a79d3207",
      "parents": [
        "62f40687be80c780e632f5c5b25c7b6e1a098b70"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Sep 29 12:19:27 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 12:19:27 2026 -0700"
      },
      "message": "internal/bzlmod: add goproxy.bzl for downloading .mod files (#2436)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e internal/bzlmod\n\n**What does this PR do? Why is it needed?**\n\nUses module_ctx.download to download .mod files needed by go_deps.\n\n**Which issues(s) does this PR fix?**\n\nFor #2433\n\n**Other notes for review**"
    },
    {
      "commit": "62f40687be80c780e632f5c5b25c7b6e1a098b70",
      "tree": "dda31c688eaf0283a05376ff7443387299aa6795",
      "parents": [
        "76061a870170a78fd7d88249da22373dc647ffd0"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Sep 29 12:19:27 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 12:19:27 2026 -0700"
      },
      "message": "internal/bzlmod: add globs.bzl for GOPRIVATE matching (#2435)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e internal/bzlmod\n\n**What does this PR do? Why is it needed?**\n\nImplements glob matching for module paths in Starlark, in the same\nformat\nused by GOPRIVATE and GONOPROXY. We\u0027ll use this to avoid downloading\nprivate .mod files with module_ctx.download.\n\n**Which issues(s) does this PR fix?**\n\nFor #2433\n\n**Other notes for review**"
    },
    {
      "commit": "76061a870170a78fd7d88249da22373dc647ffd0",
      "tree": "2d0675599d89dac8aced32a8335c6cc668a6504e",
      "parents": [
        "63c9a3d2078f29c5b4fe054a45a178556b4da5ad"
      ],
      "author": {
        "name": "Fabian Meumertzheim",
        "email": "fabian@meumertzhe.im",
        "time": "Tue Sep 29 18:37:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 09:37:39 2026 -0700"
      },
      "message": "go_deps: follow-up fixes for the \u0027go list -m\u0027 rewrite (#2441)\n\nFollow-up fixes for the `go_deps` rewrite in #2418, based on a review of\nthat PR. Each commit fixes one issue (a few closely related ones are\ncombined where they share the same code path) and comes with unit test\ncoverage in `//tests/bzlmod:go_deps_test` where that was reasonably\npossible; the commit message says so where it wasn\u0027t.\n\nThe second commit changes the test harness so that every message printed\nby `go_deps` must be expected by the test case (previously, printed\nmessages were only checked when a test case listed some). The conversion\ntool learned two optional test case fields (`no_go_deps_usage` per\nmodule, `go_version_output` per case) and mirrors the extension\u0027s new\n`replace` directives so that recorded `go list` output stays consistent.\n\nFixes, in commit order:\n\n**Hard failures on previously working setups**\n- Root module without a `go_deps` usage failed with \"root module not\nfound\".\n- `require` directives for Go modules provided by Bazel modules got no\n`replace`, so `go list` fetched them from the proxy (fails for private\nmodules and `GOPROXY\u003doff`).\n- `go_deps.module(local_path \u003d ...)` got no `replace` either; relative\npaths are now resolved from the root module and passed to\n`go_repository` as absolute paths.\n- `from_file` under a `dev_dependency \u003d True` usage reported non-dev\ndirect deps (a hard Bazel error for dev-only usages).\n- Paths with spaces were written unquoted into the synthetic\n`go.work`/`go.mod`.\n- `go.mod` without a `go` directive crashed (now a clear error); devel\ntoolchain versions produced invalid `go` directives.\n- `go.work` without `use` directives crashed (`\"Use\": null`).\n- Bare relative `use foo` paths were copied verbatim; absolute and `..`\npaths are now rejected with a clear message.\n- `go_deps.module` versions without a leading `v` broke `go list`.\n- `sum` was mandatory, breaking `module` + `archive_override`.\n\n`go_deps_test` is now tagged manual in WORKSPACE mode (first commit):\ngo_deps is a module extension, and labels in its test cases and messages\nuse Bzlmod\u0027s canonical form. The conversion tool treats POSIX absolute\npaths as absolute on Windows too (found by the first CI run).\n\n`extensions.md` was updated by hand because stardoc doesn\u0027t build on my\nmachine; please run `bazel run //docs:update` if the diff test\ndisagrees."
    },
    {
      "commit": "63c9a3d2078f29c5b4fe054a45a178556b4da5ad",
      "tree": "5d8acf7899876431931b15f28e8311e83fc3a1ae",
      "parents": [
        "d8a1b7a0b5ed8390b67abe49ee8ab124edc65eb9"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Fri Sep 25 09:58:48 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 25 09:58:48 2026 -0700"
      },
      "message": "v2/cmd/gazelle/update: add -fix flag (#2454)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e v2/cmd/gazelle/update\n\n**What does this PR do? Why is it needed?**\n\nv2 dropped support for the separate \"update\" and \"fix\" subcommands. The\nnew -fix flag enables the behavior of the old \"fix\" subcommand.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**"
    },
    {
      "commit": "d8a1b7a0b5ed8390b67abe49ee8ab124edc65eb9",
      "tree": "1b4c687f45da638aec5c2f76a4d672aca47acc07",
      "parents": [
        "2e8e37fbcba8b6be5f00134bef8c195cfd7a9613"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Sep 22 07:57:41 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 07:57:41 2026 -0700"
      },
      "message": "language/go: resolve imports of packages in multi-module repos (#2420)\n\n**What type of PR is this?**\n\n\u003e Bug fix\n\n**What package or component does this PR mostly affect?**\n\n\u003e language/go\n\n**What does this PR do? Why is it needed?**\n\nFor example, github.com/bazel-contrib/bazel-gazelle/v2/label now\nresolves to @gazelle//v2/label.\n\ngo_repository_config now adds a fake \"prefix_dir\" attribute to each\ngo_repository it writes into the fake WORKSPACE configuration file. This\nis the subdirectory of the Go module within a Bazel module.\n\nThe WORKSPACE file is now a list of directives instead of rules, to\nbypass validation that two rules can\u0027t have the same name. With this\nchange, two rules specified as directives CAN have the same name if\nprefix_dir is different. This might be confusing for update-repos, but\nupdate-repos only works in WORKSPACE mode, which is not affected by this\nchange.\n\nThe repo.Repo type now has PrefixDir, and the repo.RemoteCache.Root,\nRootState, and Mod methods all return it. This is incompatible, but the\nrepo package is marked as UNSTABLE. Obviously not ideal, but it\u0027s very\ndifficult to bring this functionality into language/go while we still\nsupport WORKSPACE.\n\nlanguage/go now uses this for external dependency resolution.\n\n**Which issues(s) does this PR fix?**\n\nFor #2413\n\n**Other notes for review**"
    },
    {
      "commit": "2e8e37fbcba8b6be5f00134bef8c195cfd7a9613",
      "tree": "57177bbb8a59051bc300c65895bb365b86541ed0",
      "parents": [
        "c47f1371892813c74d59624d5b0486162a62c6ad"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Sep 22 07:55:14 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 07:55:14 2026 -0700"
      },
      "message": "v2/resolve: clean up most remaining TODO(v2) comments (#2459)\n\n**What type of PR is this?**\n\n\u003e Uncomment one line below and remove others.\n\u003e\n\u003e Bug fix\n\u003e Feature\n\u003e Documentation\n\u003e Other\n\n**What package or component does this PR mostly affect?**\n\n\u003e For example:\n\u003e\n\u003e language/go\n\u003e cmd/gazelle\n\u003e go_repository\n\u003e all\n\n**What does this PR do? Why is it needed?**\n\n- Indexer.Name: updated doc comment: we can\u0027t remove it because\nRuleIndex.AddRule uses it to determine whether an Indexer is enabled.\nAlso recorded on each visited rule for matching within the same\nextension.\n- Finder.Name: new required method, also used to determine whether a\nFinder is enabled.\n- RuleIndex.Find: replaces FindRulesByImport,\nFindRulesByImportWithConfig. Accepts a context and returns an error.\nBoth are required since we call Finder.Find here.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**"
    },
    {
      "commit": "c47f1371892813c74d59624d5b0486162a62c6ad",
      "tree": "85d887f26ee46b063478634eb554ef5bbeda0e6e",
      "parents": [
        "513ef905e3e96587dc8c66943166d40af8a0c138"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Mon Sep 21 13:50:39 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 21 20:50:39 2026 +0000"
      },
      "message": "v2/cmd/gazelle/update: make GenerateResult.Imports optional (#2455)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e v2/cmd/gazelle/update\n\n**What does this PR do? Why is it needed?**\n\nPreviously, language extensions were required to return an Imports\nlist the same length as Gen. When Resolve is called on each rule,\nthe corresponding value from Imports is passed in.\n\nThis didn\u0027t really make sense for extensions that don\u0027t need\ndependency resolution, and even for those that do, it\u0027s simpler to\njust attach a private attribute than to pass an opaque value through\nthe update framework.\n\nThis change makes Imports optional. If set, it behaves as before.\nIf not, nil is passed to Resolve.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2272\n\n**Other notes for review**"
    },
    {
      "commit": "513ef905e3e96587dc8c66943166d40af8a0c138",
      "tree": "0191fa544a792c91ed2dce2b4dfe3a911b8d5ee8",
      "parents": [
        "5d1b459f4624a5606e06f4dc4666165d5a5a6a20"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Mon Sep 21 11:02:20 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 21 18:02:20 2026 +0000"
      },
      "message": "v2/cmd/gazelle/update: -strict mode (#2452)\n\n**What type of PR is this?**\n\n\u003e Bug fix\n\n**What package or component does this PR mostly affect?**\n\n\u003e v2/cmd/gazelle/update\n\u003e v2/walk\n\n**What does this PR do? Why is it needed?**\n\nReinterpreted the -strict flag, now that we have better error handling\nfrom extensions.\n\nPreviously, when -strict was enabled, Gazelle would stop after\nencountering a BUILD file syntax error, an invalid directive, or an I/O\nerror when walking the tree. When -strict was disabled, Gazelle would\ncontinue as far as possible and would generally exit 0.\n\nWith this change, -strict only controls whether Gazelle exits non-zero\nafter errors. In either case, Gazelle logs errors and recovers whenever\npossible.\n\nExtensions can now return errors from most methods, so they don\u0027t need\nto interpret c.Strict directly.\n\n**Which issues(s) does this PR fix?**\n\nFixes #499\nFixes #1029\n\n**Other notes for review**"
    },
    {
      "commit": "5d1b459f4624a5606e06f4dc4666165d5a5a6a20",
      "tree": "eb319448e1360fb6d9da0180fd23ab1cbdf10056",
      "parents": [
        "2433b6000a2fa28cf120bb9e2f2770c5d1900a5e"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Mon Sep 21 10:20:08 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 21 10:20:08 2026 -0700"
      },
      "message": "v2/cmd/gazelle/update: enable lazy index, disable recursion by default (#2453)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e v2/cmd/gazelle/update\n\n**What does this PR do? Why is it needed?**\n\n-r now defaults to \"auto\". In \"auto\" mode, recursion is enabled only\nwhen there are no directories to visit on the command line.\n\n-index now defaults to \"lazy\".\n\nSo when gazelle is invoked without arguments (as in \u0027bazel run\n//:gazelle\u0027), it updates the entire repo. But when gazelle is invoked on\na specific directory (as from an editor or agent hook), it only updates\nthat directory, but it can search for libraries in places configured\nwith \u0027# gazelle:go_search\u0027 and similar directives.\n\nThese changes only apply to v2. No change for v1.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**"
    },
    {
      "commit": "2433b6000a2fa28cf120bb9e2f2770c5d1900a5e",
      "tree": "8290efa72d7d3aabbadb966c60bf2a371fb2c72d",
      "parents": [
        "711edf3ddf82eb8a8d2e86c0af62a85021a9a417"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Mon Sep 21 10:15:11 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 21 10:15:11 2026 -0700"
      },
      "message": "v2/cmd/gazelle/update: attach language and kind metadata to rules (#2451)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e v2/cmd/gazelle/update\n\n**What does this PR do? Why is it needed?**\n\nSo that we can call merge, index, and resolve using the same extension\nthat generated a rule.\n\nThis is a very subtle change in behavior, but it\u0027s unlikely to affect\nanything in the real world, so this applies to both v1 and v2.\nTechnically this allows multiple extensions to generate rules of the\nsame kind, which was previously buggy and ambiguous but is now better\ndefined.\n\nWhen indexing existing rules, Imports is still called on the last\nextension that declared support via Kinds() (no change in behavior\nhere).\n\nAlso plumbed through context to resolve.RuleIndex.AddRule and supported\nerror handling.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2421\nFixes #2280\n\n**Other notes for review**"
    },
    {
      "commit": "711edf3ddf82eb8a8d2e86c0af62a85021a9a417",
      "tree": "47bbd4665f1b9550282b31b13df78876683a3184",
      "parents": [
        "08de9f0e87ae9ce979b4b4ee460434f438dfd6b0"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Sep 15 17:02:33 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 00:02:33 2026 +0000"
      },
      "message": "language/defaults: move from language/bazel/visibility, promote to be built-in (#2449)\n\n**What type of PR is this?**\n\n\u003e Refactor\n\n**What package or component does this PR mostly affect?**\n\n\u003e language/defaults née language/bazel/visibility\n\n**What does this PR do? Why is it needed?**\n\nlanguage/bazel/visibility provides some core functionality: it generates\npackage statements with \u0027default_visibility\u0027 and \u0027features\u0027 attributes.\nThis functionality should be built into Gazelle, but it still fits well\nwithin the extension architecture, so let\u0027s make it a built-in extension\nso that users don\u0027t need to specify it explicitly.\n\n- Moved from language/bazel/visibility to language/defaults since\ndefault_visibility is not its only responsibility. And \u0027bazel\u0027 doesn\u0027t\nreally add information.\n- Left behind a small package that forwards the NewV2() call. Aspect\nimports it directly, so we can\u0027t delete it.\n- In v2, gazelle_binary silently drops language/bazel/visibility and\nadds language/defaults if it\u0027s not present.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**\n\nNo substantial changes to the actual functionality."
    },
    {
      "commit": "08de9f0e87ae9ce979b4b4ee460434f438dfd6b0",
      "tree": "8a9410f737d21ee4427625a03c98719d817e18f8",
      "parents": [
        "07d723c86359692caa4c9f6a30a3fbe101d417c2"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Sep 15 16:49:32 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 16:49:32 2026 -0700"
      },
      "message": "v2/walk: export Cache, refactor GetDirInfo, support context (#2448)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e v2/walk\n\n**What does this PR do? Why is it needed?**\n\nRefactor the v2/walk package for v2.\n\n- Cache is now exported and moderately refactored. This lets callers\nexplicitly track saved file system state instead of making it global.\nPlumbed into GenerateArgs and FixArgs.\n- GetDirInfo is now a Cache method instead of a global function. v1\nextensions can still call walk.GetDirInfo. Moved the global cache\nvariable into the v1 package.\n- Dropped v2 Walk, WalkFunc.\n- Renamed Walk2, Walk2FuncArgs, Walk2FuncResult without the 2.\n- Added context.Context and *Cache parameters to Walk. Walk now returns\nearly when the context is cancelled.\n- Preserved compatibility in the v1 package. Ideally it\u0027s no longer\nused, but some packages do import it outside Gazelle.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**"
    },
    {
      "commit": "07d723c86359692caa4c9f6a30a3fbe101d417c2",
      "tree": "0f6f29b4e83323757cfeca46a910babb99beeff6",
      "parents": [
        "f5c890a2d012d3e5f5896bc7d2568ef293267b35"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Mon Sep 14 15:42:32 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 15:42:32 2026 -0700"
      },
      "message": "language/go: drop cgo_library, go_grpc_library (#2447)\n\n**What type of PR is this?**\n\n\u003e Refactor\n\n**What package or component does this PR mostly affect?**\n\n\u003e language/go\n\n**What does this PR do? Why is it needed?**\n\nRemove support for these entirely. The Fix method will no longer fix\nthem. We haven\u0027t emitted these rules for many years. It\u0027s unlikely there\nare any examples left of them.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\nFollow-up #2442\n\n**Other notes for review**\n\nWe could take this further and remove some other transformations applied\nby `Fix` if we wanted. I think `migrateNamingConvention` is probably the\nonly one important to keep."
    },
    {
      "commit": "f5c890a2d012d3e5f5896bc7d2568ef293267b35",
      "tree": "8685c9be1b448c0a74b86e1ae88e718d1cc00765",
      "parents": [
        "417a00fcfec2bd528f17d4d79fb8f984688d7dcb"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Mon Sep 14 14:44:23 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 14:44:23 2026 -0700"
      },
      "message": "go_deps: rewrite using \u0027go list -m\u0027 (#2418)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e go_deps\n\n**What does this PR do? Why is it needed?**\n\nThis is a complete rewrite of go_deps. While Go MVS is simple to\ndescribe, it is unfortunately remarkably difficult to simulate in\nStarlark, especially considering go.work edge cases that require reading\ngo.mod files from outside any Bazel module. This should make version\nselection more closely match what Go does.\n\nIn short, the new process is:\n\n1. Construct a synthetic go.work workspace, linking each go.mod across\nBazel modules.\n2. Run \u0027go list -m -json\u0027 and parse the output to select versions.\n3. Declare go_repository for each module not provided by a Bazel module.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2344\nFixes #2394\nFor #2413\n\nShould also help with many other subtle go.work issues.\n\n**Other notes for review**\n\nSome compatibility differences:\n\n- `go_deps` can select higher versions of Go modules when\n`go_deps.from_file` adds multiple `go.mod` files, especially with\n`go.work` when the same module is required at different versions. It now\nuses `go list -m`, which pulls in `go.mod` files from requirements,\nwhich can add additional version constraints. Use `go work sync` to\nminimize ambiguity. Use `go get \u003cmodule\u003e@\u003cversion\u003e` to add missing sums\nto your `go.sum`.\n- `gazelle_overrides` no longer overrides global or builtin defaults for\nattributes that are not set.\n- from_file.fail_on_version_conflict is deprecated, now equivalent to a\nnew flag, go_deps.config(checks \u003d \"error\"). This makes checks more\nstrict, since this applies to multiple checks, across all root module\nrequirements.\n- `module.build_naming_convention` and `build_file_proto_mode` are\nremoved. They reported deprecation errors for a long time.\n- `module.local_path` is no longer allowed outside the root Bazel\nmodule, similar to a `replace` directive in a `go.mod` file.\n\n---------\n\nCo-authored-by: Fabian Meumertzheim \u003cfabian@meumertzhe.im\u003e"
    },
    {
      "commit": "417a00fcfec2bd528f17d4d79fb8f984688d7dcb",
      "tree": "33271122f873af3d5f74d05104ce692f6c22d677",
      "parents": [
        "39500ffb9262c428469ce4beefa60a3c832ac62c"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Mon Sep 14 11:46:29 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 11:46:29 2026 -0700"
      },
      "message": "language/proto: migrate to v2 (#2443)\n\n**What type of PR is this?**\n\n\u003e Refactor\n\n**What package or component does this PR mostly affect?**\n\n\u003e language/proto\n\n**What does this PR do? Why is it needed?**\n\nMigrate language/proto to the v2 extension API.\n\n**Which issues(s) does this PR fix?**\n\nFor #2292\n\n**Other notes for review**"
    },
    {
      "commit": "39500ffb9262c428469ce4beefa60a3c832ac62c",
      "tree": "d3626239a3d30718138a38d4193f1b149b681d3b",
      "parents": [
        "daefe6062a8c9a86c87ac439aa883b879c284a74"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Mon Sep 14 09:43:47 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 16:43:47 2026 +0000"
      },
      "message": "skills: add gazelle-migrate-language skill (#2445)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e skills\n\n**What does this PR do? Why is it needed?**\n\nAdd a skill for use by Cursor, Claude Code, Codex with instructions on\nmigrating a language extension to the v2 API. Markdown only.\n\nUsed effectively on all the extensions in this repo.\n\nNot documented in README.md, since we\u0027re not quite ready for users to\nmigrate yet: there may still be changes to the API.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**"
    },
    {
      "commit": "daefe6062a8c9a86c87ac439aa883b879c284a74",
      "tree": "a2f7811c32299fc8ce3fe1b5d4a88472fa5acdc0",
      "parents": [
        "d01ee3241d7d4fa13d976b67f449a8bb3bed4c48"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Mon Sep 14 08:37:09 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 08:37:09 2026 -0700"
      },
      "message": "language/go: migrate to v2 (#2442)\n\n**What type of PR is this?**\n\n\u003e Refactor\n\n**What package or component does this PR mostly affect?**\n\n\u003e language/go\n\n**What does this PR do? Why is it needed?**\n\nMigrate to the v2 extension API.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**\n\nAlmost entirely agent-written. The tests were pretty overfitted to the\nv1 API, so there\u0027s a pretty big diff there.\n\nI initially intended to do `//language/proto` first, but Go\u0027s tests\ndepend on proto, so that would have required a v2-to-v1 compatibility\nlayer, which was ugly when we already have a v1-to-v2 compatibility\nlayer."
    },
    {
      "commit": "d01ee3241d7d4fa13d976b67f449a8bb3bed4c48",
      "tree": "9acd4fa98795e0593bf0dfe7221d91c8415bfa12",
      "parents": [
        "427b824097ef17876dcf3d6e995369e5a1a5c0a7"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Fri Sep 11 08:39:58 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 15:39:58 2026 +0000"
      },
      "message": "language/bazel/visibility: migrate to v2 (#2440)\n\n**What type of PR is this?**\n\n\u003e Refactor\n\n**What package or component does this PR mostly affect?**\n\n\u003e language/bazel/visibility\n\n**What does this PR do? Why is it needed?**\n\nMigrates this extension to v2 APIs\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**\n\nMostly an automated migration with an agent. I did decide to change\nName() from \"visibility_extension\" to \"visibility\", and I dropped \u0027_\u0027\nfrom test function names."
    },
    {
      "commit": "427b824097ef17876dcf3d6e995369e5a1a5c0a7",
      "tree": "040b044cb780e37c7dd57488a63ec18d4274c48a",
      "parents": [
        "3b04ae092dfc0f5702105ac0882606c088492e90"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Fri Sep 11 08:19:03 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 08:19:03 2026 -0700"
      },
      "message": "internal: migrate test language extensions to v2 (#2439)\n\n**What type of PR is this?**\n\n\u003e Refactor\n\n**What package or component does this PR mostly affect?**\n\n\u003e language/gazellebinarytest\n\u003e internal/language/test_filegroup\n\u003e internal/language/test_load_for_packed_rules\n\u003e internal/language/test_loads_from_flag\n\n**What does this PR do? Why is it needed?**\n\nMigrates all of the internal test language extensions to the v2 API.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**\n\nEach commit migrates a different extension.\n\nThe conversion was entirely done by an agent using a skill I\u0027ll send in\na separate PR, after it\u0027s been tested on a few larger languages. I want\nto make sure this is easily automatable."
    },
    {
      "commit": "3b04ae092dfc0f5702105ac0882606c088492e90",
      "tree": "1fa1e4e877e41ef79fbbaa2b1b37acf40318ae4c",
      "parents": [
        "87b92cb76ec479b8eba69284dd2dc2cf3c97c7f3"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Wed Sep 09 08:56:44 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 15:56:44 2026 +0000"
      },
      "message": "v2/rule: add load information to KindInfo (#2432)\n\n**What type of PR is this?**\n\n\u003e Refactor\n\n**What package or component does this PR mostly affect?**\n\n\u003e v2/rule, v2/cmd/gazelle/update\n\n**What does this PR do? Why is it needed?**\n\nv2 drops the language.Language.Loads and\nlanguage.ApparentLoader.ApparentLoads methods. v2 extensions should now\nreport the same information through new fields KindInfo.Name and\nKindInfo.LoadedFrom. There is no After field added: it was only used for\n`WORKSPACE`, since order mattered there.\n\nThe v2 Kinds method now returns a slice rather than a map for\nsimplicity: we need to re-index and manipulate this anyway.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**"
    },
    {
      "commit": "87b92cb76ec479b8eba69284dd2dc2cf3c97c7f3",
      "tree": "9912854cbeca21c0cf48d6512a932cc6cf7929cf",
      "parents": [
        "68893d94a4be1134d6562f1b5f16b8c96c1aae4b"
      ],
      "author": {
        "name": "Mikhail Mazurskiy",
        "email": "126021+ash2k@users.noreply.github.com",
        "time": "Wed Sep 09 16:14:36 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 08:14:36 2026 -0700"
      },
      "message": "v2/cmd/gazelle/update: make `map_kind` and `alias_kind` work together (#2434)\n\n**What type of PR is this?**\n\nBug fix\n\n**What package or component does this PR mostly affect?**\n\ncmd/gazelle\n\n**What does this PR do? Why is it needed?**\n\n`map_kind` is now applied to the kind alias map so that both see the\nsame target kind names.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2313.\n\n**Other notes for review**\n\nThis was done with an LLM, but I have reviewed it all and I understand\nwhat the change is doing. However, this may not be the best approach\ngiven that I don\u0027t see the \"big picture\" of how things work in this\nproject. Please let me know if this approach wouldn\u0027t work and what you\nwould like to see instead. Thank you!"
    },
    {
      "commit": "68893d94a4be1134d6562f1b5f16b8c96c1aae4b",
      "tree": "6f6d627f0dd0ab72c868e35dd40ea383002584fe",
      "parents": [
        "3b851d2df1a2f96a3c121dddd4d991cd474cbfd5"
      ],
      "author": {
        "name": "Philipp Stephani",
        "email": "p.stephani2@gmail.com",
        "time": "Tue Sep 08 20:36:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 18:36:01 2026 +0000"
      },
      "message": "Have gazelle -version print the list of supported languages (#2431)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e cmd/gazelle\n\n**What does this PR do? Why is it needed?**\n\nFixes #2430.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2430.\n\nCo-authored-by: Jay Conrod \u003cjay@engflow.com\u003e"
    },
    {
      "commit": "3b851d2df1a2f96a3c121dddd4d991cd474cbfd5",
      "tree": "9251505583f174ec79a5d261a46835794820eb9d",
      "parents": [
        "875c98b36b1ebff076a255b1f09d0ce522aec9e9"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Sep 08 10:33:03 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 10:33:03 2026 -0700"
      },
      "message": "gazelle_binary: add generate_gazelle_binary_languages to make v2 list (#2429)\n\n**What type of PR is this?**\n\n\u003e Refactor\n\n**What package or component does this PR mostly affect?**\n\n\u003e gazelle_binary\n\n**What does this PR do? Why is it needed?**\n\nInstead of generating the code that initializes the list of extensions\nin Starlark, we now use //cmd/generate_gazelle_binary_languages. This\nnew Go tool parses the export data of each compiled library to determine\nwhether it contains a v1 or v2 extension. It then generates the\nappropriate function call, wrapping it with an adapter if necessary. The\nnew list has a v2 type.\n\nWith this change, v2 extensions can actually be used with either gazelle\nv1 or v2 (though there aren\u0027t any such extensions yet).\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**"
    },
    {
      "commit": "875c98b36b1ebff076a255b1f09d0ce522aec9e9",
      "tree": "3dbba42929afac3d1cddd8fb94f00338d2fa7bb1",
      "parents": [
        "b28fa96640c9ad05c5ff9a840a0d7ac9036098d6"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Sep 08 07:15:16 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 07:15:16 2026 -0700"
      },
      "message": "cmd/gazelle: use v2 interfaces (#2428)\n\n**What type of PR is this?**\n\n\u003e Refactor\n\n**What package or component does this PR mostly affect?**\n\n\u003e cmd/gazelle\n\n**What does this PR do? Why is it needed?**\n\nNo change needed for the \u0027fix\u0027 and \u0027update\u0027 commands, since we already\npass v2 interfaces to v2/cmd/gazelle/update.Run. With this change, the\n\u0027update-repos\u0027 subcommand now has the same type signature and uses the\nv2 interfaces.\n\nThis prepares us to make gazelle_binary generate a list of v2 interfaces\ndirectly. Both cmd/gazelle and v2/cmd/gazelle will be able to use a mix\nof v1 and v2 extensions.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**"
    },
    {
      "commit": "b28fa96640c9ad05c5ff9a840a0d7ac9036098d6",
      "tree": "02aaa42b31d800170a445a20d0c86b88a17e3ec4",
      "parents": [
        "ed9d0f2d159457270694ce66803ef471b5ac3be3"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Fri Sep 04 14:29:44 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 14:29:44 2026 -0700"
      },
      "message": "v2/cmd/gazelle/update: update builtin Configurers to v2 (#2424)\n\n**What type of PR is this?**\n\n\u003e Refactor\n\n**What package or component does this PR mostly affect?**\n\n\u003e v2/cmd/gazelle/update\n\u003e v2/resolve\n\n**What does this PR do? Why is it needed?**\n\n- v2/config.CommonConfigurer: already v2 with wrapper\n- v2/walk.Configurer: already v2 with wrapper\n- v2/resolve.Configurer: migrated to v2, added wrapper\n- v2/cmd/gazelle/update.updateConfigurer: migrated to v2\n\nAlso updated some tests. Flags are deprecated in v2, so dropped\nRegisterFlags and CheckFlags where possible. Moved initialization to\nConfigure when rel \u003d\u003d \"\", but this required adding calls in a couple\nplaces.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**\n\n---------\n\nCo-authored-by: Tyler French \u003cfrench.tyler.d@gmail.com\u003e"
    },
    {
      "commit": "ed9d0f2d159457270694ce66803ef471b5ac3be3",
      "tree": "0c5c9f6170fd760e258214c5ba64ba52d08c1f49",
      "parents": [
        "9bca71db87e18ff278bd4227216f72bb92a0b24a"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Thu Sep 03 13:13:14 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 22:13:14 2026 +0200"
      },
      "message": "cmd/fetch_repo: remove the -prune flag (#2427)\n\n**What type of PR is this?**\n\n\u003e Bug fix\n\n**What package or component does this PR mostly affect?**\n\n\u003e fetch_repo\n\n**What does this PR do? Why is it needed?**\n\nIntroduced in #2389, but disabled in #2426. No longer needed since this\nfunctionality should only be enabled when\nGO_REPOSITORY_EPHEMERAL_MODCACHE\u003d1, and in that case, go_repository\ndeletes the ephemeral mod cache directory anyway.\n\nWe found that if -prune is enabled when using the shared module cache\n(which was previously the default), it could cause errors and corrupt\nmodules if two concurrent builds sharing the same repository cache\nevaluated equivalent go_repository rules. Gazelle does this in its own\nintegration tests, so we saw a lot of flakiness as a result.\n\n**Which issues(s) does this PR fix?**\n\nFor #2292\n\n**Other notes for review**"
    },
    {
      "commit": "9bca71db87e18ff278bd4227216f72bb92a0b24a",
      "tree": "cc075e6dfb1ae311fb8e366495b69019ed31b7a8",
      "parents": [
        "d6e1146eeaa5302efb13d0c777922df06dbd1590"
      ],
      "author": {
        "name": "Brandon Lico",
        "email": "brandonlico+gh@gmail.com",
        "time": "Thu Sep 03 11:10:08 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 15:10:08 2026 +0000"
      },
      "message": "go_repository: retain shared module trees (#2426)\n\n**What type of PR is this?**\n\nBug fix\n\n**What package or component does this PR mostly affect?**\n\n`go_repository`\n\n**What does this PR do? Why is it needed?**\n\n#2389 made `fetch_repo` prune extracted module trees from the default\nshared module cache. When multiple `go_repository` rules reference the\nsame module and version, Bazel may fetch them concurrently. One process\ncan delete the shared tree while another is copying it, causing errors\nsuch as:\n\n```text\nfetch_repo: failed copying repo:\nlstat .../pkg/mod/example.com/driver@v0.1.5/file.go: no such file or directory\n```\n\nI confirmed this with a local reproduction in a large monorepo using\nthree `go_repository` aliases of the same module and version. From a\nfresh Bazel output base, Gazelle v0.53.0 failed on the first query with\nthe missing-file error above. With this patch, the same fresh-cache\nquery fetched all three repositories successfully and retained the\ncomplete 152-file extracted module tree. Enabling\n`GO_REPOSITORY_EPHEMERAL_MODCACHE\u003d1` also avoided the race by isolating\neach fetch.\n\nThis change disables pruning for the default shared cache and defaults\nthe underlying `fetch_repo -prune` flag to false, restoring the behavior\nbefore #2389. Ephemeral mode remains opt-in and its private cache is\nstill removed with `ctx.delete(ephemeral_modcache)`. Host caches remain\nunmodified. This is a simpler alternative to the locking proposed in\n#2425.\n\n**Testing**\n\n```text\nbazel test //cmd/fetch_repo:fetch_repo_test //internal:bazel_test\n```\n\nCo-authored-by: blico \u003cblico@uber.com\u003e"
    },
    {
      "commit": "d6e1146eeaa5302efb13d0c777922df06dbd1590",
      "tree": "13e0e100d27d564b796a051ce7732b517d8e7da6",
      "parents": [
        "f2cd29da00d0fb7aa8b66f564af0dfc087209562"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Thu Sep 03 07:12:34 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 07:12:34 2026 -0700"
      },
      "message": "v2/cmd/gazelle/update: use v2 interfaces (#2423)\n\n**What type of PR is this?**\n\n\u003e Refactor\n\n**What package or component does this PR mostly affect?**\n\n\u003e v2/cmd/gazelle/update\n\n**What does this PR do? Why is it needed?**\n\nupdate.Run now accepts a slice of v2 Languages, rather than v1. It uses\ncompat.LanguageWithDefaults to fill in noop implementations for any\ninterfaces that weren\u0027t implemented.\n\nCallers are updated to convert their v1 Languages to v2 with\ncompat.LanguageV2. All implementations are still v1.\n\nThere are still 4 internal v1 config.Configurer implementations. These\nare adapted with compat.MustConfigurerV2.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**"
    },
    {
      "commit": "f2cd29da00d0fb7aa8b66f564af0dfc087209562",
      "tree": "fba7a8a3a4ff787a5263eb041f5c0cf33a913169",
      "parents": [
        "10fb35e6216a52d78858ca3d166efbe2762a2b60"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Wed Sep 02 15:01:47 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 15:01:47 2026 -0700"
      },
      "message": "//tests: remove support for timeout (#2422)\n\n**What type of PR is this?**\n\n\u003e Test fix\n\n**What package or component does this PR mostly affect?**\n\n\u003e tests\n\n**What does this PR do? Why is it needed?**\n\nPreviously, internal/generationtest supported a -timeout flag, which\ndefaulted to 2s. Tests would very often timeout when run concurrently\nwith other tests on a machine with constrained resources.\n\nThere\u0027s not really a good reason for a timeout here, especially such a\nshort one. It just causes flakiness. Removed it.\n\n**Which issues(s) does this PR fix?**\n\nn/a\n\n**Other notes for review**\n\nn/a"
    },
    {
      "commit": "10fb35e6216a52d78858ca3d166efbe2762a2b60",
      "tree": "ceda49b2e5fac99e6feb5f0cf59077f9713ef0c7",
      "parents": [
        "c3e786cce8293c66151021fd1c214e045a0f5641"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Wed Sep 02 07:08:43 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 07:08:43 2026 -0700"
      },
      "message": "go_deps: add test case conversion tool (#2416)\n\n**What type of PR is this?**\n\n\u003e Tool\n\n**What package or component does this PR mostly affect?**\n\n\u003e tools/convert-go-deps-test-case\n\n**What does this PR do? Why is it needed?**\n\n//tools/convert-go-deps-test-case can unpack a test case from\ntests/bzlmod/go_deps/*.bzl to a directory, or it can repack a directory\ninto a Starlark file.\n\nThis is helpful for debugging since we can run actual Go commands from\nan unpacked workspace. Moreover, it\u0027s necessary since test cases include\nreal execution output from \u0027go list -m -json\u0027 and \u0027go mod edit -json\u0027.\n\n**Which issues(s) does this PR fix?**\n\nFor #2344\n\n**Other notes for review**\n\nThe tool is largely agent-written, since it\u0027s not in the critical path\nof anything. Happy to take broad feedback on cleaning it up if\nnecessary."
    },
    {
      "commit": "c3e786cce8293c66151021fd1c214e045a0f5641",
      "tree": "28d6ae4f6291ad50df2b216b9e89aabdfc3bcfa4",
      "parents": [
        "48a1c5337c1c106ae9eedc5e1ae700925a61bc6f"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Sep 01 16:04:41 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 16:04:41 2026 -0700"
      },
      "message": "go_deps: add new test cases, make test format machine-editable (#2415)\n\n**What type of PR is this?**\n\n\u003e Test\n\n**What package or component does this PR mostly affect?**\n\n\u003e go_deps\n\n**What does this PR do? Why is it needed?**\n\nThis change adds new unit test cases for //tests/bzlmod:go_deps_test.\nSome of the new tests are disabled, since they don\u0027t work with the\ncurrent go_deps for reasons listed in the TODO.\n\nThe test format has changed significantly, now based on JSON, since it\ncan be parsed by Starlark and other tools. The next PR will add a\nconversion tool that lets us unpack a test case to a directory then pack\nit back to a .bzl file with generated output for executed commands.\n\n**Which issues(s) does this PR fix?**\n\nFor #2344\n\n**Other notes for review**\n\nn/a"
    },
    {
      "commit": "48a1c5337c1c106ae9eedc5e1ae700925a61bc6f",
      "tree": "fb2128550949b844c5b87cb65fcbb4302fa4e0a9",
      "parents": [
        "2c8b339efddff077ea79f055978f3d863a23f319"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@gmail.com",
        "time": "Fri Aug 28 01:34:33 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 27 08:34:33 2026 -0700"
      },
      "message": "Remove several deprecation comments pointing at v2 APIs. (#2412)\n\nV2 is not ready to be used for everything (e.g. gazelle_binary doesn\u0027t\nyet work with it), so deprecation is noisy and unactionable.\n\nThis change can be reverted when V2 is ready for use.\n\n**What type of PR is this?**\n\nDocumentation\n\n**What package or component does this PR mostly affect?**\n\nall"
    },
    {
      "commit": "2c8b339efddff077ea79f055978f3d863a23f319",
      "tree": "8ccdaf6473b1df4de244c146b6af3d89035cc058",
      "parents": [
        "5358a58589fca13fd0daa8fdb3a3478d1fd25f6e"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Tue Aug 25 13:30:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 11:30:26 2026 +0000"
      },
      "message": "feat(go_repository): expose go.sum checksum on the golang PURL (#2409)\n\n**What type of PR is this?**\n\nFeature\n\n**What package or component does this PR mostly affect?**\n\ngo_repository\n\n**What does this PR do? Why is it needed?**\n\n`go_repository`\u0027s `sum` attribute already carries a module\u0027s `go.sum`\n`h1:` hash, and the bzlmod `go_deps` extension already sets it for every\nfetched module.\nAdd it to the generated `pkg:golang/...` PURL as a `checksum` qualifier,\nthe PURL spec\u0027s own extension point for exactly this, so build-info\nconsumers reading that PURL can recover it.\n\nbazel-contrib/rules_go#4700 builds the `Deps` entries of\n`runtime`/`debug.ReadBuildInfo()` from this same PURL, and reads the\n`checksum` qualifier back out.\n\nA `go.sum` `h1:` hash only ever contains the base64 alphabet plus the\nliteral `h1:` prefix, so only `+`, `/`, and `\u003d` need percent-escaping to\nbe a valid PURL qualifier value.\n\n**Which issues(s) does this PR fix?**\n\n#2408.\n\n**Other notes for review**\n\nThis started out building the PURL with\n`@package_metadata//purl:purl.bzl`\u0027s `purl.builder()`, instead of\nhand-formatting it, so escaping would be handled by that library instead\nof reimplemented here.\n\nThat required bumping `package_metadata` past `0.0.5`, and\n`go_repository.bzl` loading `purl.bzl` at its own top level broke\nWORKSPACE mode: `deps.bzl` needs to load `go_repository.bzl` before\n`gazelle_dependencies()` can run, and `gazelle_dependencies()` is what\ndefines `@package_metadata`, a cycle.\n\n`purl.builder()` also would have needed either forking `go_repository`\nby mode or passing a precomputed PURL in as data, both a larger change\nthan the qualifier itself justified.\n\nThe present handcrated formatting keeps `go_repository.bzl` free of any\n`@package_metadata` dependency, so the cycle cannot occur, and needs no\n`package_metadata` version bump."
    },
    {
      "commit": "5358a58589fca13fd0daa8fdb3a3478d1fd25f6e",
      "tree": "63238726ddb1f6bdd03b588f4db418895d3ad622",
      "parents": [
        "e9c2bbeb357785d9124373a1c6be4a9de2132223"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Thu Aug 20 17:14:45 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 15:14:45 2026 +0000"
      },
      "message": "fix(go_repository): add package metadata regardless of build file generation (#2407)\n\n**What type of PR is this?**\n\nBug fix\n\n**What package or component does this PR mostly affect?**\n\ngo_repository\n\n**What does this PR do? Why is it needed?**\n\nbazel-contrib/rules_go#4595 builds the `Deps` entries of\n`runtime/debug.ReadBuildInfo()` from the `package_metadata` that\n`go_repository` attaches to each module via `REPO.bazel`.\nA module without that label is therefore missing from `Deps`.\n\n`go_repository` only writes a module\u0027s `REPO.bazel` and\n`package_metadata` label inside the `if generate:` block, so a module\nwhose repository ships its own `BUILD` file gets no label at all, even\nthough the label describes the module rather than its build rules.\nForcing `build_file_generation \u003d \"on\"` would attach the label too, but\nat the cost of regenerating build files a repository ships on purpose.\n\n@fmeum [pointed\nout](https://github.com/bazel-contrib/bazel-gazelle/pull/2407#discussion_r3814829409)\nthat appending the generated targets onto whatever build file already\ncontained assumes that content is safe to extend, e.g. free of a target\nname collision with what we generate.\nThat risk was never specific to a repository-provided file either:\nappending onto Gazelle\u0027s own freshly generated content made the same\nassumption, just with better odds of holding.\n\nThis revised change therefore consists in writing the generated targets\nto a dedicated `_gazelle_generated` package instead, so `go_repository`\nnever has to reason about what a build file already contains.\nA leading underscore is enough to make collisions practically\nimpossible: Go\u0027s own tooling ignores any directory starting with `_`, so\na real module is exceedingly unlikely to populate one.\n`REPO.bazel`\u0027s `default_package_metadata` now points there, and the\ngenerated `package_info` target drops its `gazelle_generated_` prefix,\nredundant once the package name says as much.\n\nNothing about this write depends on `build_file_name` any longer, so\nattach the metadata unconditionally rather than gating it behind\n`generate`.\n\nA new analysis test checks that against the existing `proto_compat`\nfixture, which ships its own `BUILD.bazel` file and previously carried\nno package metadata.\nThe existing test is renamed for consistency.\n\nPrior to the fix:\n```\ncd tests/bcr/go_mod\nbazel test //:test_package_info_for_repo_provided_build\n...\nError: \u003cmerged target @@gazelle++go_deps+org_example_proto_compat//:proto_compat\u003e\n  (rule \u0027go_library\u0027) doesn\u0027t contain declared provider \u0027PackageInfo\u0027\n```\n\n**Which issues(s) does this PR fix?**\n\nFixes #2406.\n\n**Other notes for review**\n\nA few examples of Go repositories shipping their own\n`BUILD`/`BUILD.bazel` that would gain `package_metadata` this way:\n- https://github.com/cel-expr/cel-spec\n- https://github.com/chrusty/protoc-gen-jsonschema\n- https://github.com/envoyproxy/protoc-gen-validate\n- https://github.com/go-resty/resty\n- https://github.com/google/flatbuffers\n- https://github.com/grpc-ecosystem/grpc-gateway\n- https://github.com/iceber/iouring-go\n- etc.\n\nPrior art:\n- external deps: bazel-contrib/rules_go#4595,\n- package path: bazel-contrib/rules_go#4690,\n- build settings: bazel-contrib/rules_go#4691."
    },
    {
      "commit": "e9c2bbeb357785d9124373a1c6be4a9de2132223",
      "tree": "6ad2dd851f22505e2494714192d56ff302162758",
      "parents": [
        "614f910e9d3350a65626a473fd297d612068f78b"
      ],
      "author": {
        "name": "Fabian Meumertzheim",
        "email": "fabian@meumertzhe.im",
        "time": "Wed Aug 19 16:44:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 16:44:01 2026 +0200"
      },
      "message": "Detect existing build files without shelling out to `test` (#2405)\n\n**What type of PR is this?**\n\nBug fix\n\n**What package or component does this PR mostly affect?**\n\ngo_repository\n\n**What does this PR do? Why is it needed?**\n\n`go_repository` decides whether a module already ships build files here:\n\n```starlark\nfor name in build_file_names:\n    path \u003d ctx.path(name)\n    if path.exists and not env_execute(ctx, [\"test\", \"-f\", path]).return_code:\n        existing_build_file \u003d name\n        break\n\ngenerate \u003d generate or (not existing_build_file and ctx.attr.build_file_generation \u003d\u003d \"auto\")\n```\n\nThe `test -f` call rules out a directory that matches the name on\ncase-insensitive file systems (e.g. a `build` directory found when\nlooking up `BUILD`).\n\nBut `env_execute` runs `test` directly, and Windows has no `test` binary\n-- it is a shell builtin. `ctx.execute` reports a missing executable as\na non-zero return code rather than failing, so the probe fails\n*silently* and reports every candidate as missing.\n\nThe result: with the default `build_file_generation \u003d \"auto\"`, Gazelle\nregenerates the build files of every module that ships its own -- on\nWindows only. Since `patch(ctx)` runs after generation, this also breaks\npatches written against a module\u0027s own build files.\n\nUse `path.is_dir`, which has the same semantics without a subprocess and\nis available since Bazel 7.1.0.\n\n**Which issues(s) does this PR fix?**\n\nNone.\n\n**Other notes for review**\n\nNone."
    },
    {
      "commit": "614f910e9d3350a65626a473fd297d612068f78b",
      "tree": "b713a34518d432ab585a04d38a8fda93ba37364b",
      "parents": [
        "ca370f01397e770f309a5da105a8b73e980deaaf"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Aug 18 10:56:10 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 17:56:10 2026 +0000"
      },
      "message": "Update v2 tag to v2.0.0-3 (#2404)\n\n**What type of PR is this?**\n\n\u003e Bug fix\n\n**What package or component does this PR mostly affect?**\n\n\u003e all\n\n**What does this PR do? Why is it needed?**\n\nThis is still a prerelease tag, not official yet. We just want to make\n\u0027go mod tidy\u0027 happy. Since v2.0.0-2 was tagged, we\u0027ve moved some\npackages, so \u0027go mod tidy\u0027 rightly complains that it can\u0027t find the\n./v2/resolve package. v2.0.0-3 points at `master` shortly before\nv0.53.0.\n\nAlso added an empty v2/go.sum file as a placeholder. Eventually, we\u0027ll\nneed to fill this with \u0027go work sync\u0027 and \u0027go mod tidy\u0027 in both modules,\nbut we\u0027ll need to create more tags first, so that can be closer to the\nofficial release.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2396\n\n**Other notes for review**"
    },
    {
      "commit": "ca370f01397e770f309a5da105a8b73e980deaaf",
      "tree": "1bf23f47e14fd5ea4df86ca3d48bbb0d36c3dfa9",
      "parents": [
        "255fde263c99ed41050e2458dca75e75eea6d91a"
      ],
      "author": {
        "name": "Brandon Lico",
        "email": "brandonlico+gh@gmail.com",
        "time": "Tue Aug 18 12:36:34 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 09:36:34 2026 -0700"
      },
      "message": "perf(language/go): parse build tags without Scanner (#2401)\n\n**What type of PR is this?**\n\nOther\n\n**What package or component does this PR mostly affect?**\n\nlanguage/go\n\n**What does this PR do? Why is it needed?**\n\nParse legacy `// +build` constraints by iterating directly over the\nsource\nbytes instead of using `bufio.Scanner`.\n\nThe new implementation follows the approach used by Go\u0027s `go/build`\npackage:\n\n- Iterate over lines using `bytes.IndexByte`.\n- Trim lines without converting them to strings.\n- Cheaply reject lines that cannot be `+build` constraints.\n- Convert only candidate constraint lines to strings for\n  `constraint.IsPlusBuild` and `constraint.Parse`.\n\nThe previous scanner token-size limit and `bufio.ErrTooLong` behavior\nare\npreserved.\n\nAn allocation profile from a large ARM64 repository attributed 3.42 GB\nof\nflat allocation to `bufio.Scanner.Scan`.\n\nA local microbenchmark, removed before submission, measured:\n\n| Case | Before | After | Allocations before | Allocations after |\n|---|---:|---:|---:|---:|\n| No build tags | 45.4 µs/op | 37.6 µs/op | 118 allocs/op | 16 allocs/op\n|\n| `+build` constraint | 19.8 µs/op | 17.2 µs/op | 21 allocs/op | 19\nallocs/op |\n| 1,000-line header | 294.6 µs/op | 258.4 µs/op | 1,026 allocs/op | 24\nallocs/op |\n\nTests cover CRLF input, optional spacing, similar non-constraint\nprefixes,\nand both sides of the existing scanner token-size boundary.\n\n**Which issues(s) does this PR fix?**\n\nN/A\n\n---------\n\nCo-authored-by: blico \u003cblico@uber.com\u003e\nCo-authored-by: Jay Conrod \u003cjay@engflow.com\u003e"
    },
    {
      "commit": "255fde263c99ed41050e2458dca75e75eea6d91a",
      "tree": "9db2828a43f9861560f42ec3efd14aac8f9158a6",
      "parents": [
        "e764239fa461f31f7b5eeeee33f015e85f21ec0b"
      ],
      "author": {
        "name": "Brandon Lico",
        "email": "brandonlico+gh@gmail.com",
        "time": "Tue Aug 18 12:25:01 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 16:25:01 2026 +0000"
      },
      "message": "perf(merger): reuse load indexes across BUILD files (#2402)\n\n## Summary\n\n- add a reusable `merger.LoadFixer` that indexes known load files and\nsymbols once\n- reuse the fixer across BUILD files in the update loop\n- retain `FixLoads` as a compatibility wrapper and preserve per-file\nhandling when `map_kind` changes the known loads\n\nIn a large monorepo profile, load fixing decreased from 10.01s to about\n5.7s cumulative CPU time and from 4.00 GB to about 460 MB cumulative\nallocation. These are function-level measurements; this change does not\nclaim an equivalent end-to-end wall-time improvement.\n\n## Testing\n\n- `go test ./v2/merger ./v2/cmd/gazelle/update ./v2/cmd/gazelle`\n- `go test -race ./v2/merger ./v2/cmd/gazelle/update`\n- `go vet ./v2/merger ./v2/cmd/gazelle/update`\n\n---------\n\nCo-authored-by: blico \u003cblico@uber.com\u003e\nCo-authored-by: Jay Conrod \u003cjay@engflow.com\u003e"
    },
    {
      "commit": "e764239fa461f31f7b5eeeee33f015e85f21ec0b",
      "tree": "e674494cb9fb1c46ea28fadd02273bf313f0a89e",
      "parents": [
        "b9fe795df6681bd0f688d9272cfbd8fa46357078"
      ],
      "author": {
        "name": "Jason Bedard",
        "email": "jason+github@jbedard.ca",
        "time": "Tue Aug 18 09:17:51 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 09:17:51 2026 -0700"
      },
      "message": "perf: avoid temp arrays in sortExprLabels (#2395)\n\n**What type of PR is this?**\n\nPerf - memory reduction.\n\n**What package or component does this PR mostly affect?**\n\nall\n\n**What does this PR do? Why is it needed?**\n\nSame as https://github.com/bazelbuild/buildtools/pull/1487 where this\ncode was vendored from.\n\n**Which issues(s) does this PR fix?**\n\nFixes #\n\n**Other notes for review**"
    },
    {
      "commit": "b9fe795df6681bd0f688d9272cfbd8fa46357078",
      "tree": "d21bd8872bb75a73421cf3b140c1900ffe389a96",
      "parents": [
        "2a34c89c1d44fe940d60a8f65db9751be947cf79"
      ],
      "author": {
        "name": "Brandon Lico",
        "email": "brandonlico+gh@gmail.com",
        "time": "Mon Aug 17 18:24:06 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 15:24:06 2026 -0700"
      },
      "message": "perf(language/go): read Go files once during analysis (#2399)\n\n**What type of PR is this?**\n\nOther\n\n**What package or component does this PR mostly affect?**\n\nlanguage/go\n\n**What does this PR do? Why is it needed?**\n\nRead each Go source file once in `goFileInfo` and reuse the resulting\nbytes for:\n\n- The imports-only parser pass.\n- Build-constraint extraction.\n- The full parser pass used for `main` and `go:embed` files.\n\nPreviously, ordinary Go files were read twice, while `main` and\n`go:embed`\nfiles were read three times.\n\nThis adds `readTagsFromContent` for source that has already been read.\nThe\nexisting path-based `readTags` wrapper remains available for non-Go\nfiles.\n\nA CPU and allocation profile from a large ARM64 repository showed:\n\n- `goFileInfo`: 81.49 CPU-seconds cumulative and 19.58 GB allocated.\n- `readTags`: 18.55 CPU-seconds cumulative and 7.40 GB allocated.\n- `os.readFileContents`: 9.11 GB flat allocation.\n- `bufio.NewReaderSize`: 3.42 GB flat allocation.\n\nA local microbenchmark, removed before submission, measured:\n\n| Case | Before | After | Allocation before | Allocation after |\n|---|---:|---:|---:|---:|\n| Library file | 40.1 µs/op | 23.3 µs/op | 7,432 B/op | 2,904 B/op |\n| `go:embed` file | 61.7 µs/op | 30.1 µs/op | 13,864 B/op | 8,552 B/op |\n\nTests verify that content-based build-constraint parsing produces the\nsame\nresults and error messages as path-based parsing.\n\n**Which issues(s) does this PR fix?**\n\nN/A\n\nCo-authored-by: blico \u003cblico@uber.com\u003e"
    },
    {
      "commit": "2a34c89c1d44fe940d60a8f65db9751be947cf79",
      "tree": "68432c6fbbffe98b4d55de571b7b8d49fe1694fe",
      "parents": [
        "e9e199e6ec508519fa1e5609fd1d31331bf9d881"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Thu Aug 13 16:33:17 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 13 16:33:17 2026 -0700"
      },
      "message": "go_deps: compute environment outside of go_repository_cache (#2392)\n\n**What type of PR is this?**\n\n\u003e Refactor\n\n**What package or component does this PR mostly affect?**\n\n\u003e go_deps\n\n**What does this PR do? Why is it needed?**\n\nThis lays the groundwork for being able to run the go command from\ngo_deps. go_deps allows the user to set Go\u0027s environment via\ngo_deps.config.go_env and go_env_inherit. There may be multiple isolated\ninstances of go_deps, so these settings should only apply to the repos\ndeclared within each go_deps.\n\nPreviously in module mode, the environment was stored in\n@bazel_gazele_go_repository_cache (declared from @non_module_deps,\nshared by all go_deps). go_repository loaded from here, ignoring\nconfig.go_env settings on isolated go_deps instances. This didn\u0027t really\nseem consistent, and I didn\u0027t want to extend the ambiguity by using that\nconfiguration when invoking the go command from go_deps.\n\nNow instead, go_repository_config (declared by go_deps) writes a go.env\nfile, and go_repository loads that.\n\n**Which issues(s) does this PR fix?**\n\nFor #2344\n\n**Other notes for review**"
    },
    {
      "commit": "e9e199e6ec508519fa1e5609fd1d31331bf9d881",
      "tree": "c548bdaf4d9296e45e031a5a5cd8cb0db30cb0ad",
      "parents": [
        "8e8c11771270a4d0390fb724745a8027a4ea9a8c"
      ],
      "author": {
        "name": "Jason Bedard",
        "email": "jason+github@jbedard.ca",
        "time": "Tue Aug 11 10:26:31 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 11 17:26:31 2026 +0000"
      },
      "message": "fix: register configured map_kind mappings before resolution (#2391)\n\n**What type of PR is this?**\n\nBug fix\n\n**What package or component does this PR mostly affect?**\n\nall\n\n**What does this PR do? Why is it needed?**\n\nRegisters all configured `map_kind` mappings before dependency\nresolution, ensuring mapped rules are routed to their source-kind\nresolver even when that source kind is not generated in the package\n\n**Other notes for review**\n\nI think reproducing the issue requires a custom language so the ugly\nunit test on a simple `Language` is still the best way to reproduce it?"
    },
    {
      "commit": "8e8c11771270a4d0390fb724745a8027a4ea9a8c",
      "tree": "751725036d1637e51364e76ea4f4b0c499fe7e77",
      "parents": [
        "444a057bc45fc2b5855946dd3a8563ff84894f9d"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Sun Aug 09 16:40:25 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 09 23:40:25 2026 +0000"
      },
      "message": "go_repository_config: move bzlmod version to its own file (#2390)\n\n**What type of PR is this?**\n\n\u003e Refactor\n\n**What package or component does this PR mostly affect?**\n\n\u003e go_repository_config\n\n**What does this PR do? Why is it needed?**\n\n- Move the Bzlmod version of `go_repository_config` into\n`//internal/bzlmod:go_repository_config.bzl`\n- Move the WORKSPACE version from `//internal:go_repository_config.bzl`\nto `//internal/workspace:go_repository_config.bzl`.\n\nSince the Bzlmod version wasn\u0027t previously in its own file and the\nWORKSPACE version didn\u0027t have a distinctive name, it was easy to confuse\nthem.\n\nAdd doc comments to the Bzlmod version and its attributes, since their\npurposes are not at all obvious.\n\n**Which issues(s) does this PR fix?**\n\nFor #2344\n\n**Other notes for review**"
    },
    {
      "commit": "444a057bc45fc2b5855946dd3a8563ff84894f9d",
      "tree": "f1e1a8bb92d3d9023fdbdf208e67294a3d47ed78",
      "parents": [
        "2fc6af3e68372e57b6008ab4a65395f8d5c984ae"
      ],
      "author": {
        "name": "Bryce Lampe",
        "email": "brycelampe@gmail.com",
        "time": "Fri Aug 07 14:50:34 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 07 21:50:34 2026 +0000"
      },
      "message": "Use ephemeral GOMODCACHE for module-mode fetches (#2389)\n\n**What type of PR is this?**\n\nBug fix\n\n**What package or component does this PR mostly affect?**\n\ngo_repository\n\n**What does this PR do? Why is it needed?**\n\nfetch_repo consumes the downloaded module immediately and nothing\ndownstream reads GOMODCACHE, so persisting it in the shared cache repo\nonly grows unbounded (many GB on projects with large SDK dependencies).\nScope it to a per-invocation tempdir under the go_repository and delete\nit after fetch_repo returns.\n\nThe GOCACHE at \u003ccache_dir\u003e/gocache is unchanged; it\u0027s populated by\ngo_repository_tools and benefits from persistence.\n\nHost-cache opt-ins are unchanged: they surface as GOMODCACHE already set\nin env, which skips the ephemeral override.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2292.\n\n**Other notes for review**\n\n---------\n\nCo-authored-by: Jay Conrod \u003cjay@engflow.com\u003e"
    },
    {
      "commit": "2fc6af3e68372e57b6008ab4a65395f8d5c984ae",
      "tree": "72268fceb868aade5cfb3515909bb421422c730c",
      "parents": [
        "356ed738a1b2852141328149938779e7d0dfde75"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Fri Aug 07 07:30:08 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 07 07:30:08 2026 -0700"
      },
      "message": "go_deps: add a unit testing framework (#2388)\n\n**What type of PR is this?**\n\n\u003e Test\n\n**What package or component does this PR mostly affect?**\n\n\u003e go_deps\n\n**What does this PR do? Why is it needed?**\n\nIn preparation to rework go_deps to call \u0027go list -m\u0027 instead of\nsimulating MVS internally. We should have some tests that verify we\u0027re\ngetting the same versions before and after. Writing unit tests for this\nis difficult, but the tests are MUCH faster than tests/bcr/go_mod and\ngo_work, which have gotten unwieldy.\n\nIn each test case, we represent a mock workspace in Starlark with\nmodules, tags, and files, accessed through a mock module_ctx. After\nrunning go_deps_impl, we check that expected repos were declared with\nexpected versions.\n\n**Which issues(s) does this PR fix?**\n\nFor #2344\n\n**Other notes for review**\n\nI wish there were `bazel coverage` for Starlark."
    },
    {
      "commit": "356ed738a1b2852141328149938779e7d0dfde75",
      "tree": "54e58a50cdbeba9917f54f9ef222c9f36bb6acd2",
      "parents": [
        "8e0e2db0636707cc3407f63d50b8848fa414296a"
      ],
      "author": {
        "name": "Jasmine Tang",
        "email": "jjasmine@igalia.com",
        "time": "Mon Aug 03 11:45:07 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 18:45:07 2026 +0000"
      },
      "message": "Relocatable go env (#2385)\n\n**What type of PR is this?**\n\nFeature\n\n**What package or component does this PR mostly affect?**\n\ngo repository cache\n\n**What does this PR do? Why is it needed?**\n go.env having user path dependent means that after performing bazel\n    vendoring, users of another machine from the machine that performs\nvendoring cannot use said dependency anymore without IGNORE-ing gazelle.\n\n\n**Which issues(s) does this PR fix?**\n\nMakes go.env path independent. Fixes #2382\n\n**Other notes for review**\n\n---------\n\nCo-authored-by: Jay Conrod \u003cjay@engflow.com\u003e"
    },
    {
      "commit": "8e0e2db0636707cc3407f63d50b8848fa414296a",
      "tree": "1d9cbaa0c5ae7eeb9c32e00571d6d0fc02c4e405",
      "parents": [
        "748e5d81ff0f4d542ccc2fb98892aeef21f07c30"
      ],
      "author": {
        "name": "David Zbarsky",
        "email": "dzbarsky@gmail.com",
        "time": "Thu Jul 30 03:04:56 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 09:04:56 2026 +0200"
      },
      "message": "Simplify gazelle_binary (#2386)\n\n**What type of PR is this?**\n\nRefactor\n\n**What package or component does this PR mostly affect?**\ncmd/gazelle\n\n**What does this PR do? Why is it needed?**\nSimplifies how gazelle generates the main.go for the binary to avoid\nrelying on the go context\u0027s `actions` which is a bit of an unfortunate\npublic interface.\n\nHopefully other rule authors with similar needs can use this as\ninspiration to simplify their setup and future-proof themselves against\nrules_go internal changes that end up leaking.\n\n**Which issues(s) does this PR fix?**\n\nFixes #\n\n**Other notes for review**"
    },
    {
      "commit": "748e5d81ff0f4d542ccc2fb98892aeef21f07c30",
      "tree": "2992c582bdd34991ddb3c87b2054e4d5bf9f004b",
      "parents": [
        "b1e9c9d32e7630b9720e60f6accc3c63c0960723"
      ],
      "author": {
        "name": "Keith Smiley",
        "email": "keithbsmiley@gmail.com",
        "time": "Tue Jul 28 14:07:41 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 21:07:41 2026 +0000"
      },
      "message": "Fix cgo race detection (#2383)\n\nThis is required for rules_go 0.62.0+"
    },
    {
      "commit": "b1e9c9d32e7630b9720e60f6accc3c63c0960723",
      "tree": "4bc71d22a978d834d4f2bed1d221600621630607",
      "parents": [
        "8a2dc640bfa6feecfc82312a281e76fff21b05b0"
      ],
      "author": {
        "name": "Tyler French",
        "email": "tfrench@uber.com",
        "time": "Thu Jul 23 16:53:21 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 16:53:21 2026 -0400"
      },
      "message": "fix releases for immutable GitHub releases (#2381)"
    },
    {
      "commit": "8a2dc640bfa6feecfc82312a281e76fff21b05b0",
      "tree": "167b5bdd3bfccd46ece865061c2b0f9ac9e789b8",
      "parents": [
        "1208622c21a6b52907725c7257ff9cc6f884c084"
      ],
      "author": {
        "name": "Tyler French",
        "email": "tfrench@uber.com",
        "time": "Thu Jul 23 15:50:46 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 15:50:46 2026 -0400"
      },
      "message": "docs: update Gazelle and rules_go releases (#2380)\n\nFix up some docs"
    },
    {
      "commit": "1208622c21a6b52907725c7257ff9cc6f884c084",
      "tree": "49ab7ec9fe20f4a0079d8e72255933869ae4f9d7",
      "parents": [
        "f50322b61ced73413c82ed3d584970d648464986"
      ],
      "author": {
        "name": "Tyler French",
        "email": "french.tyler.d@gmail.com",
        "time": "Thu Jul 23 12:42:40 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 16:42:40 2026 +0000"
      },
      "message": "fix release archive format for BCR (#2379)"
    },
    {
      "commit": "f50322b61ced73413c82ed3d584970d648464986",
      "tree": "b4f7a345542e9247aaa726a22aabdf01c943f33d",
      "parents": [
        "478a61c6742f9249702690f97b0f07210c095b4d"
      ],
      "author": {
        "name": "Tyler French",
        "email": "tfrench@uber.com",
        "time": "Thu Jul 23 12:03:43 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 12:03:43 2026 -0400"
      },
      "message": "fix release script to use tzst as expected (#2378)\n\nFixing https://github.com/bazel-contrib/bazel-gazelle/issues/2376\n.tzst is necessary because the pinned attestation workflow recognizes it"
    },
    {
      "commit": "478a61c6742f9249702690f97b0f07210c095b4d",
      "tree": "15025280b744e184821e71074fb3c4c8e4eea6bc",
      "parents": [
        "a1b7ff21027be138c00498d328fcd2af698e259a"
      ],
      "author": {
        "name": "zbarsky-openai",
        "email": "zbarsky@openai.com",
        "time": "Thu Jul 23 10:45:08 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 07:45:08 2026 -0700"
      },
      "message": "fix: use v2 testtools in generation tests (#2377)\n\nThe compatibility module already requires\n`github.com/bazel-contrib/bazel-gazelle/v2`, but\n`internal/generationtest` still depends on the legacy `//testtools`\ntarget and imports `github.com/bazelbuild/bazel-gazelle/testtools`.\n\nThis split makes generation tests resolve a different testtools package\nfrom the v2 dependency graph. Switch both the Bazel target and the Go\nimport to the canonical v2 package so the generation-test helper and the\nmodule graph agree.\n\nThe change is limited to the existing generation-test BUILD dependency\nand import; it does not change production Gazelle behavior."
    },
    {
      "commit": "a1b7ff21027be138c00498d328fcd2af698e259a",
      "tree": "5e60849a0bee4bbb1e25b59ccaec9905e1b0dc6c",
      "parents": [
        "fea258518fde664e76a76272b54a8e228416d4f9"
      ],
      "author": {
        "name": "H5-O5",
        "email": "166461697+H5-O5@users.noreply.github.com",
        "time": "Thu Jul 16 12:04:42 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 19:04:42 2026 +0000"
      },
      "message": "feat(go): add directives to set Go/C compiler and linker flags on generated rules (#2372)\n\nImplements #2371.\n\nAdds a family of Go directives that set string-list compiler/linker\nattributes on generated rules. The main motivation is applying flags to\nexternal dependencies generated by `go_deps`, which have no hand-written\nbuild files to edit — the directives flow through the existing\n`directives` channel of `go_deps.gazelle_default_attributes` /\n`gazelle_override`.\n\n| Directive | Attribute | Applied to | Gate |\n|---|---|---|---|\n| `# gazelle:go_gc_goopts` | `gc_goopts` | `go_library` / `go_binary` /\n`go_test` with sources | — |\n| `# gazelle:go_gc_linkopts` | `gc_linkopts` | `go_binary`, `go_test` |\n— |\n| `# gazelle:go_copts` | `copts` | cgo targets (`go_library`) | `cgo \u003d\nTrue` |\n| `# gazelle:go_cppopts` | `cppopts` | cgo targets (`go_library`) | `cgo\n\u003d True` |\n| `# gazelle:go_cxxopts` | `cxxopts` | cgo targets (`go_library`) | `cgo\n\u003d True` |\n| `# gazelle:go_clinkopts` | `clinkopts` | cgo targets (`go_library`) |\n`cgo \u003d True` |\n\n**Notes on design (per discussion in the issue):**\n- The C flags (`copts`/`cppopts`/`cxxopts`/`clinkopts`) are **merged**\nwith the flags Gazelle derives from `#cgo` comments, not overwritten.\n- `clinkopts` is set on `go_library`, matching where the source-derived\n`clinkopts` already go. Gazelle never generates a cgo\n`go_binary`/`go_test` (cgo isn\u0027t allowed in `_test.go`, and a cgo `main`\nbecomes a cgo `go_library` embedded by a plain `go_binary`), so in\npractice all C flags land on `go_library`.\n- `gc_goopts`/`gc_linkopts` are set directly (not derived from source);\n`gc_goopts` needs sources to compile, `gc_linkopts` applies to the\nlinking rules.\n- Values may be separated by whitespace and/or commas (`-N -l` is\nequivalent to `-N,-l`); an empty value resets the directive.\n\n**Tests**\n- Unit tests for directive parsing, reset, and inheritance\n(`config_test.go`).\n- A generate golden (`testdata/compiler_flags`) exercising emission, the\ncgo gate, the library-vs-linking gate, and merging with `#cgo`-derived\nflags.\n- `go test ./language/go/` passes; new/changed files are `gofmt`-clean.\n\n**Docs**\n- `language/go/reference.md` documents all six directives.\n\n*Drafted with Claude Code.*\n\n---------\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Jay Conrod \u003cjay@engflow.com\u003e"
    },
    {
      "commit": "fea258518fde664e76a76272b54a8e228416d4f9",
      "tree": "00858000ab845e5fd5a5ebf0e3d7e21f30f4b63a",
      "parents": [
        "34b6c99a129cafba5f726e9104a1739f3c21f111"
      ],
      "author": {
        "name": "Fabian Meumertzheim",
        "email": "fabian@meumertzhe.im",
        "time": "Wed Jul 15 20:09:18 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 18:09:18 2026 +0000"
      },
      "message": "Record GOROOT as a label in go.env (#2374)\n\n**What type of PR is this?**\n\nBug fix\n\n**What package or component does this PR mostly affect?**\n\ngo_repository\n\n**What does this PR do? Why is it needed?**\n\n`go_repository_cache` writes `GOROOT` into `go.env` as an absolute path\ninto the output base that fetched it, and that path reaches every\n`go_repository` fetch as a plain string. This has two problems, all of\nwhich surface as non-deterministic failures of the form `fetch_repo: go\nmod download exec error: .../bin/go: no such file or directory`:\n\n1. There is no dependency edge from a `go_repository` fetch to the Go\nSDK repo, so a fetch can execute `$GOROOT/bin/go` while the SDK repo is\nconcurrently being refetched (its directory is deleted before\nre-extraction). This can be triggered by, for example, upgrading\nrules_go (invalidates the SDK repo) and gazelle (invalidates all\n`go_repository` repos via the watched `fetch_repo` binary) at the same\ntime.\n2. With Bazel\u0027s `--experimental_remote_repo_contents_cache`, an SDK repo\nserved from the cache exists only in Bazel\u0027s in-memory overlay file\nsystem until something materializes it. Materialization is triggered by\nresolving a label into the repo, which only ever happened in\n`go_repository_cache` itself — a repo whose own cache hit skips exactly\nthat code. `fetch_repo`, a host subprocess reading the real file system,\nthen fails to exec `$GOROOT/bin/go`.\n\nThis PR records the label of the SDK repo\u0027s `ROOT` file in `go.env`\ninstead and resolves it back to a path in `read_cache_env`, i.e. in the\ncontext of the consuming repository rule. The label resolution creates\nthe missing dependency edge (fixing 1), goes through `getPathFromLabel`\nand thus materializes a remote repo contents cache hit before any\nsubprocess reads it (fixing 2), and is independent of the output base\nthat wrote `go.env` (avoids absolute paths in repo rule outputs).\n\n**Which issues(s) does this PR fix?**\n\nNo issue filed; the failure mode is described above.\n\n**Other notes for review**\n\nVerified with `bazel test //internal:bazel_test --test_env\u003dPATH`, which\nexercises the full `go_repository` fetch pipeline including `go.env`\ncreation and consumption."
    },
    {
      "commit": "34b6c99a129cafba5f726e9104a1739f3c21f111",
      "tree": "8808151a0c6a218fefef3940911763d31b496ae4",
      "parents": [
        "6623f1ab00d488701cd1e94959d8cc1e5c31554b"
      ],
      "author": {
        "name": "Dan Markwat",
        "email": "daniel.markwat@gmail.com",
        "time": "Wed Jul 15 00:04:56 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 09:04:56 2026 +0200"
      },
      "message": "fix: add Gazelle overrides for additional dependencies (#2373)\n\n\u003c!-- Thanks for sending a PR! Before submitting:\n\n1. If this is your first PR, please read CONTRIBUTING.md and sign the\nCLA\n   first. We cannot review code without a signed CLA.\n2. Please file an issue *first*. All features and most bug fixes should\nhave\nan associated issue with a design discussed and decided upon. Small bug\n   fixes and documentation improvements don\u0027t need issues.\n3. New features and bug fixes must have tests. Documentation may need to\nbe updated. If you\u0027re unsure what to update, send the PR, and we\u0027ll\ndiscuss\n   in review.\n--\u003e\n\n**What type of PR is this?**\n\nBug fix\n\n**What package or component does this PR mostly affect?**\n\n//internal/bzlmod\n\n**What does this PR do? Why is it needed?**\n\nAdds `proto:disable` for two known transitive dependencies/usages where\nproto files don\u0027t allow for gazelle_overrides in transitive bazel\nmodules.\n\n**Which issues(s) does this PR fix?**\n\nFixes n/a\n\n**Other notes for review**\n\nOne mitigation is to use `--experimental_isolated_extension_usages` and\n`... \u003d use_extension(\"@gazelle//:extensions.bzl\", \"go_deps\", isolate \u003d\nTrue)`, but as that flag [amply\ninforms](https://bazel.build/rules/lib/globals/module#parameters_13):\n\u003e This parameter is experimental and may change at any time. Please do\nnot depend on it.\n\nSo until that\u0027s ready, this PR is one path to dealing with it."
    },
    {
      "commit": "6623f1ab00d488701cd1e94959d8cc1e5c31554b",
      "tree": "d08ea06032c245c0b6c2d9c6e20278b6f3c1bc29",
      "parents": [
        "15d1f023b75ced3d89e1dfac9ac9e5e5e3cdd0e5"
      ],
      "author": {
        "name": "Alex Torok",
        "email": "alex.torok@aurora.tech",
        "time": "Mon Jul 13 12:31:52 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 16:31:52 2026 +0000"
      },
      "message": "Fix alias_kind directive leaking across directories (#2368)\n\nConfig.Clone() deep-copies KindMap but never copied AliasMap, so every\ndirectory\u0027s config shared a single AliasMap by reference. A \"#\ngazelle:alias_kind\" directive set in one package therefore mutated the\nmap seen by every other directory in the repo. For most people this\nlikely isn\u0027t an issue, but could lead to unexpected behavior.\n\nFix Clone() to copy AliasMap the same way it copies KindMap, making\nalias_kind properly directory-scoped like map_kind. Add a regression\ntest that reproduces the cross-directory leak and asserts an unrelated\nsibling package is left untouched.\n\n**What type of PR is this?**\n\nBug fix\n\n**What package or component does this PR mostly affect?**\n\nv2/config\n\n**What does this PR do? Why is it needed?**\nFixes a bug with alias_kind not being appropriately scoped to the\npackage that defines the directive.\n\n**Which issues(s) does this PR fix?**\nN/A"
    },
    {
      "commit": "15d1f023b75ced3d89e1dfac9ac9e5e5e3cdd0e5",
      "tree": "f25882ec3497f515ffe315ffe495831fa6af710a",
      "parents": [
        "ac8ea6f8fc41b11f4ba92d2442df803af51d0ca5"
      ],
      "author": {
        "name": "Rafik Salama",
        "email": "rafik.salama@soundcloud.com",
        "time": "Wed Jul 08 12:16:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 12:16:39 2026 +0200"
      },
      "message": "feat(go): support rc toolchains (#2370)\n\n**What type of PR is this?**\n\nBug fix / feature\n\n**What package or component does this PR mostly affect?**\n\nlanguage/go\n\n**What does this PR do? Why is it needed?**\n\nIf you try to use Gazelle today with a pre-release version of Go (e.g.\n`1.27rc1`), you receive an error:\n\n```\n\tFile \"/Users/rafiksalama/Library/Caches/bazel/_bazel_rafiksalama/c4824d8210ee1e28e2bc4f237bdd53e8/external/gazelle+/internal/bzlmod/go_deps.bzl\", line 479, column 95, in _go_deps_impl\n\t\tmodule_path, module_tags_from_go_mod, go_mod_replace_map, tools \u003d deps_from_go_mod(module_ctx, from_file_tag.go_mod)\n\tFile \"/Users/rafiksalama/Library/Caches/bazel/_bazel_rafiksalama/c4824d8210ee1e28e2bc4f237bdd53e8/external/gazelle+/internal/bzlmod/go_mod.bzl\", line 181, column 26, in deps_from_go_mod\n\t\tgo_mod \u003d parse_go_mod(go_mod_content, go_mod_path)\n\tFile \"/Users/rafiksalama/Library/Caches/bazel/_bazel_rafiksalama/c4824d8210ee1e28e2bc4f237bdd53e8/external/gazelle+/internal/bzlmod/go_mod.bzl\", line 266, column 30, in parse_go_mod\n\t\tgo \u003d (int(major), int(minor)),\nError in int: invalid base-10 literal: \"27rc1\"\n```\n\nThis change strips the strips all characters including and after `rc`\nfrom the go version string and parses major/minor from that. So, e.g.\n`1.27rc1` returns (1, 27) for major/minor.\n\n**Which issues(s) does this PR fix?**\n\nFixes #\n\nN/A. Original report in [Bazel\nslack](https://bazelbuild.slack.com/archives/CDBP88Z0D/p1783432998221279)."
    },
    {
      "commit": "ac8ea6f8fc41b11f4ba92d2442df803af51d0ca5",
      "tree": "9e2941e3b75e024f4de2c0cca3168f44c4045ca7",
      "parents": [
        "0b16aec36247c15feec28d9e4812bd4f6194a16b"
      ],
      "author": {
        "name": "Zhongpeng Lin",
        "email": "zplin@uber.com",
        "time": "Tue Jul 07 11:58:10 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 20:58:10 2026 +0200"
      },
      "message": "Fix: stop adding prefix to proto imports (#2369)\n\n**What type of PR is this?**\n\nBug fix\n\n**What package or component does this PR mostly affect?**\n\nlanguage/proto\n\n**What does this PR do? Why is it needed?**\nThe imports parsed from proto file is already a full qualified import\npath, as proto files don\u0027t allow relative imports. Caling `getPrefix()`\non top of the imports will make the custom prefix from\n`gazelle:proto_import_prefix` appear twice, breaking the self-import\ndetection logic."
    },
    {
      "commit": "0b16aec36247c15feec28d9e4812bd4f6194a16b",
      "tree": "dfd77c60743eb848cdfbb50ed276179220b63996",
      "parents": [
        "6606edfb28a02226fab01118f23e2ded9197c105"
      ],
      "author": {
        "name": "Malte Poll",
        "email": "1780588+malt3@users.noreply.github.com",
        "time": "Mon Jul 06 20:40:06 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 19:40:06 2026 +0000"
      },
      "message": "fetch_repo: verify module sum using \"go mod download\" JSON, not the extracted tree (#2366)\n\nfetch_repo re-hashed the extracted module directory with dirhash.HashDir\nand compared the result against the go.sum entry. This duplicates the\nverification go itself does, but derives the hash from the filesystem\nrather than the authoritative source, so it fails whenever the\nfilesystem cannot faithfully round-trip the zip\u0027s file names.\n\ngithub.com/vbatts/go-mtree v0.7.0 ships a testdata file whose name ends\nin a trailing space (testdata/dirwithbrokenlink/...). On Windows the\ntrailing space is stripped during extraction, so HashDir walks a\ndifferent set of names than the zip contains and computes a different\nhash. This surfaces as a spurious sum mismatch on Windows only, even\nthough the downloaded module is correct:\n\n    fetch_repo: resulting module with sum\n    h1:0eFy2k8hOMfWGZ0EXIWhDdNMeCo0+DSQWB23GP6xdWg\u003d; expected sum\n    h1:ytmOc3MTRidZiBi9VBCyZ2BHe4fZS47L5v7BVXDWW4E\u003d. Please retry.\n\nThe h1: hash in go.sum is defined as dirhash.HashZip over the module\nzip, which is exactly what the go toolchain computes and verifies before\nextraction. Trust the value reported by Go instead: `go mod download\n-json` already reports the sum it calculated, so we can use that value.\nThis means we perform the same check standard Go tooling performs, which\nis immune to filesystem round-trip quirks (trailing spaces,\ncase-folding, unicode normalization, symlink handling, ...).\n\nThe verification also moves ahead of copyTree, so a mismatch is caught\nbefore anything is written to the destination.\n\n**What type of PR is this?**\n\nBug fix\n\n**What package or component does this PR mostly affect?**\n\ngo_repository\n\n**What does this PR do? Why is it needed?**\n\nAllows users to depend on vbatts/go-mtree on Windows\n\n**Which issues(s) does this PR fix?**\n\nNo issue created\n\n**Other notes for review**\n\nHappy to add a test, but really unsure how to write one that\u0027s not\noverly complex.\n\nCo-authored-by: Jay Conrod \u003cjay@engflow.com\u003e"
    },
    {
      "commit": "6606edfb28a02226fab01118f23e2ded9197c105",
      "tree": "5e7d40fd2b8cdf9ef676b60f16297ba4cc467b8a",
      "parents": [
        "8bfb6261fa4ed39b98bf0011fcaaf4edc1f649a5"
      ],
      "author": {
        "name": "H5-O5",
        "email": "166461697+H5-O5@users.noreply.github.com",
        "time": "Sat Jul 04 22:49:12 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 07:49:12 2026 +0200"
      },
      "message": "go_deps: allow overriding a module\u0027s Bazel repo name (#2365)\n\nTwo distinct Go modules whose import paths differ only by `/` vs `_` (or\nonly by case) mangle to the same Bazel repo name, so go_deps hard-fails.\nWhen both are pulled in transitively, dropping one from the `go.mod` is\nnot always actionable.\n\nAdd an optional `repo_name` attribute to the `gazelle_override` tag.\nWhen set, it is used as the Bazel repo name for that module instead of\nthe mangled default, letting the root module break such collisions. The\nchange is purely additive and root-module-only, like other\ngazelle_override attributes; the collision check still runs on the\nresulting names, and its error message now points at this attribute.\n`repo_name` is intentionally kept out of `_GAZELLE_ATTRS` so it cannot\nbe set via `gazelle_default_attributes`, since a repo name is\nnecessarily per-module.\n\n\u003c!-- Thanks for sending a PR! Before submitting:\n\n1. If this is your first PR, please read CONTRIBUTING.md and sign the\nCLA\n   first. We cannot review code without a signed CLA.\n2. Please file an issue *first*. All features and most bug fixes should\nhave\nan associated issue with a design discussed and decided upon. Small bug\n   fixes and documentation improvements don\u0027t need issues.\n3. New features and bug fixes must have tests. Documentation may need to\nbe updated. If you\u0027re unsure what to update, send the PR, and we\u0027ll\ndiscuss\n   in review.\n--\u003e\n\n**What type of PR is this?**\n\nFeature\n\n**What package or component does this PR mostly affect?**\n\nnone. This is a new feature.\n\n**What does this PR do? Why is it needed?**\n\nSee above.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2364\n\n**Other notes for review**"
    },
    {
      "commit": "8bfb6261fa4ed39b98bf0011fcaaf4edc1f649a5",
      "tree": "e2c640682d89998479c73a344f2a8ef2d9fa4806",
      "parents": [
        "82a3cb1345c39032540f095a02523aa97eedb777"
      ],
      "author": {
        "name": "Tao Wang",
        "email": "tao.ryan.wang@gmail.com",
        "time": "Wed Jun 10 13:34:38 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 20:34:38 2026 +0000"
      },
      "message": "Fix empty rule deletion for aliased kinds (#2362)\n\n**What type of PR is this?**\nBug fix\n\n**What package or component does this PR mostly affect?**\nmerger\n\n**What does this PR do? Why is it needed?**\nFixes empty rule deletion for aliased kinds (`# gazelle:alias_kind`).\n\nWhen a language extension emits an empty rule to delete a stale target,\n`MergeFile` uses `kinds[oldRule.Kind()]` to look up `KindInfo` for the\n`IsEmpty` check. For aliased kinds (e.g., `my_py_library` aliased to\n`py_library`), the aliased name has no entry in the `kinds` map,\nreturning a zero-value `KindInfo` with `nil` `NonEmptyAttrs`. Since\n`IsEmpty` returns `false` when `NonEmptyAttrs` is nil, the rule is never\ndeleted — it gets stripped to a skeleton but remains in the BUILD file.\n\nThe fix resolves through `aliasedKinds` before looking up `KindInfo`.\n`map_kind` is not affected — `update.go` rewrites empty rule kinds\nbefore they reach the merger, so the kind lookup already works correctly\n\n**Which issues(s) does this PR fix?**\n\nFixes #2363\n\n**Other notes for review**"
    },
    {
      "commit": "82a3cb1345c39032540f095a02523aa97eedb777",
      "tree": "119eba9ab2139d949692b0e9ad9e281f4be145b9",
      "parents": [
        "73a31e9a5ef1d9601a81de7afb45061effdc6a06"
      ],
      "author": {
        "name": "Fabian Meumertzheim",
        "email": "fabian@meumertzhe.im",
        "time": "Wed Jun 10 14:31:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 14:31:53 2026 +0200"
      },
      "message": "bzlmod: provide a compatibility shim for @rules_proto (#2361)\n\nGazelle no longer depends on rules_proto, which broke Go modules that\nship checked-in BUILD files still loading proto rules from\n`@rules_proto//proto:defs.bzl` (e.g.\n`github.com/bazelbuild/buildtools`):\n\n```\nERROR: error loading package \u0027@@gazelle++go_deps+com_github_bazelbuild_buildtools//build_proto\u0027: Unable to find package for @@[unknown repo \u0027rules_proto\u0027 requested from @@gazelle++go_deps+com_github_bazelbuild_buildtools]//proto:defs.bzl\n```\n\nLet the `go_deps` extension generate a repo named `rules_proto` that\nforwards `proto_library` from its new home in `@com_google_protobuf`.\nSince the repo is generated by the `go_deps` extension, it is visible to\nthe Go module repos generated by the same extension under exactly this\nname, without showing up in or conflicting with the main module\u0027s repo\nmappings.\n\nOnly `proto_library` is forwarded since it is the only symbol that older\nversions of Gazelle emitted a load for from\n`@rules_proto//proto:defs.bzl`. BUILD files loading other symbols can be\nregenerated via a `gazelle_override` with `build_file_generation \u003d\n\"clean\"`, as pointed out by the generated file\u0027s docstring.\n\nThe new test fixture `example.org/proto_compat` ships a checked-in BUILD\nfile that loads `proto_library` from `@rules_proto//proto:defs.bzl` and\nis kept verbatim via `build_file_generation \u003d \"off\"`. The `go_test`\ndependency on its `go_library` exercises the previously failing loading\nphase, including the instantiation of the forwarded `proto_library`.\n\nFixes #2358\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude Fable 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "73a31e9a5ef1d9601a81de7afb45061effdc6a06",
      "tree": "7e85da173e0e1813fa3c1cb78cf1643bb48ccb91",
      "parents": [
        "885015926ad3db4b51c3e591238eda299790dffe"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Mon Jun 08 16:26:56 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 16:26:56 2026 -0700"
      },
      "message": "Upgrade publish-to-bcr workflow (#2359)\n\n**What type of PR is this?**\n\n\u003e Other\n\n**What package or component does this PR mostly affect?**\n\nrelease process\n\n**What does this PR do? Why is it needed?**\n\nTitle says it all.\n\nAlso delete .bcr/config.yml: was only used by the app\n\n**Which issues(s) does this PR fix?**\n\nn/a\n\n**Other notes for review**\n\nFollow-up to #2356, based on @kormide\u0027s recommendation."
    },
    {
      "commit": "885015926ad3db4b51c3e591238eda299790dffe",
      "tree": "3c7c0102ef4e0d84f0aa09dfa78f9a540a39ae4f",
      "parents": [
        "301b9a2e7cc3b31f4bc3577ea25cfbe9748ae8e6"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Fri Jun 05 11:41:39 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 18:41:39 2026 +0000"
      },
      "message": "v2/walk: forward walk package, modify to use v2 packages and Configurer interface (#2330)\n\n**What type of PR is this?**\n\n\u003e Other\n\n**What package or component does this PR mostly affect?**\n\n\u003e walk, v2/walk\n\n**What does this PR do? Why is it needed?**\n\n- Copied the walk package to v2/walk, leaving behind forwarding wrappers\nand\n  type aliases with deprecation notices.\n- Modified v2/walk to depend on v2 packages instead of v1, including\nv2/config.\nThis requires a type change, incompatible with v1, so the v1 wrapper\nfunctions\n  now use the compat package when calling v2.\n- v2/walk tests use testtools.NewTestConfig, which accepts Configurer,\nso this PR\n  also updates v2/testtools to use the new interface.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**\n\nFor ease of review, there are two commits. The first is largely\nmechanical, moving and\nforwarding the original definitions to the new package. It\u0027s written\nusing the same tool\nto forward other packages like `label`.\n\nThe second commit contains the actual compatibility changes."
    },
    {
      "commit": "301b9a2e7cc3b31f4bc3577ea25cfbe9748ae8e6",
      "tree": "d9cfd7725942983849412367c90380cd6416a082",
      "parents": [
        "12573ed104f3da8e06a6e1027f720e1dbde0f6b2"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Fri Jun 05 10:36:17 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 17:36:17 2026 +0000"
      },
      "message": "v2/compat: add compatibility wrappers and stubs for v1 to v2 compatibility (#2329)\n\n**What type of PR is this?**\n\n\u003e Other\n\n**What package or component does this PR mostly affect?**\n\n\u003e v2/compat\n\n**What does this PR do? Why is it needed?**\n\nIn a later change, v2/cmd/gazelle/update and other clients will use this\nso that\nwe only need to directly interact with the v2 interfaces.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**\n\nNot used yet."
    },
    {
      "commit": "12573ed104f3da8e06a6e1027f720e1dbde0f6b2",
      "tree": "2d883efd98579b69c043d729a01c92ed012c4a1d",
      "parents": [
        "6098d288639a81d4edbed41b42d9d2c75d117d2d"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Fri Jun 05 10:27:26 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 17:27:26 2026 +0000"
      },
      "message": "v2: new versions of config, resolve, language packages with new interfaces (#2322)\n\n**What type of PR is this?**\n\n\u003e Other\n\n**What package or component does this PR mostly affect?**\n\n\u003e config\n\u003e internal/module\n\u003e language\n\u003e resolve\n\n**What does this PR do? Why is it needed?**\n\nCopied the`internal/module` package to `v2/internal/module`. It\u0027s used\nby `config`. Due to `internal` visibility rules, it can\u0027t be forwarded.\nIt\u0027s small and doesn\u0027t define types, so no conflicts expected.\n\nPartially moved and forwarded the `config`, `resolve`, and `language`\npackages. The new versions of these packages have the new interfaces\nfrom the [v2\nproposal](https://github.com/bazel-contrib/bazel-gazelle/discussions/2207).\nWherever possible, v1 definitions are forwarded to their v2\ncounterparts, but this is not possible whenever there\u0027s an incompatible\ntype difference.\n\nThe new interfaces aren\u0027t used anywhere yet, so there should be no\nfunctional change here.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**\n\nThere are some minor differences between this PR and the proposal,\nmostly adding `context.Context`, `error`, or minor renamings. Please\ncomment if anything looks wrong or needs to be changed though."
    },
    {
      "commit": "6098d288639a81d4edbed41b42d9d2c75d117d2d",
      "tree": "2e5a9e831922b4583558f65ef7568a07912f6bff",
      "parents": [
        "1955b74886456171d5a363b7543708a824e9703e"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Thu Jun 04 11:36:58 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 11:36:58 2026 -0700"
      },
      "message": "Add publish-to-bcr workflow (#2356)\n\n**What type of PR is this?**\n\n\u003e Other\n\n**What package or component does this PR mostly affect?**\n\nn/a\n\n**What does this PR do? Why is it needed?**\n\nAfter this, I think the release process should just be publishing a tag.\nThe release_ruleset workflow will create the source archive and attach\nit to a new GitHub release.\n\n**Which issues(s) does this PR fix?**\n\nn/a\n\n**Other notes for review**\n\nCopied from bazel_features with light modification"
    },
    {
      "commit": "1955b74886456171d5a363b7543708a824e9703e",
      "tree": "51e366d86bc2deb6a43b67e41e873bd8da1f27f9",
      "parents": [
        "0526458cbac30ecb260372dc32e88964505917d0"
      ],
      "author": {
        "name": "Rafik Salama",
        "email": "r@rafiksalama.com",
        "time": "Thu Jun 04 19:11:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 19:11:04 2026 +0200"
      },
      "message": "feat: don\u0027t require `# gazelle:` prefix in directive_file (#2351)\n\n**What does this PR do? Why is it needed?**\n\nThis is a follow-up to #2314.\n\nWith the introduction of `directive_file`, directives in an external\nfile still require the `# gazelle:` prefix. This harms readability as\ncomments preceding directives are not visually distinguished from the\ndirectives themselves. With this PR, directives in external files can\nnow be declared without the `# gazelle:` prefix, e.g.:\n\n```\n# Generate a single proto_library per file\nproto file\n```\n\n**What type of PR is this?**\n\nFeature\n\n**What package or component does this PR mostly affect?**\n\n`rule`\n\n**Which issues(s) does this PR fix?**\n\nN/A\n\n**Other notes for review**\n\nCo-authored-by: Jay Conrod \u003cjay@engflow.com\u003e"
    },
    {
      "commit": "0526458cbac30ecb260372dc32e88964505917d0",
      "tree": "60383f30d5caf43a3af6e6991fff56529e733b50",
      "parents": [
        "228ca4ea7f68510c33b5b0ce734c71b0b69c2438"
      ],
      "author": {
        "name": "David Zbarsky",
        "email": "dzbarsky@gmail.com",
        "time": "Thu Jun 04 11:34:32 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 15:34:32 2026 +0000"
      },
      "message": "More fully fix gazelle_binary (#2355)\n\nPart 2 of the fix to make gazelle work with latest rules_go"
    },
    {
      "commit": "228ca4ea7f68510c33b5b0ce734c71b0b69c2438",
      "tree": "ede80a5e23736379970b89219b48ad151060aad6",
      "parents": [
        "20aa297d92b112f23691d74153b7c74188aaf67b"
      ],
      "author": {
        "name": "David Zbarsky",
        "email": "dzbarsky@gmail.com",
        "time": "Wed Jun 03 11:57:51 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 17:57:51 2026 +0200"
      },
      "message": "gazelle_binary needs cc toolchain (#2354)\n\n**What type of PR is this?**\nBug fix\n\n**What does this PR do? Why is it needed?**\nrules_go has become stricter in requiring rules to declare their cc\ntoolchain (the previous ways predated toolchain resolution and could\nlead to incorrect toolchains being selected for multiplatform builds)\n\n**Which issues(s) does this PR fix?**\n\nhttps://github.com/bazel-contrib/rules_go/issues/4626\n\n**Other notes for review**"
    },
    {
      "commit": "20aa297d92b112f23691d74153b7c74188aaf67b",
      "tree": "7e9f4fe3ec71c1d150e1b14d2b4464533978f387",
      "parents": [
        "25eb89980994bf4b93bd99d5f87313aada656039"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Jun 02 01:00:50 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 10:00:50 2026 +0200"
      },
      "message": "go.mod: update v2 requirement to v2.0.0-2 (#2352)\n\n**What type of PR is this?**\n\n\u003e Bug fix\n\n**What package or component does this PR mostly affect?**\n\ngo.mod\n\n**What does this PR do? Why is it needed?**\n\nDepends on a newer v2 tag, since we import v2 packages that aren\u0027t\navailable on the old tag.\n\n**Which issues(s) does this PR fix?**\n\nFor #2349\n\n**Other notes for review**\n\nI\u0027ve tagged v2.0.0-2 as an alias for v0.51.0.\n\nOnce this change is merged, I\u0027ll create a release/v0.51 branch,\ncherry-pick it, and then tag v0.51.1."
    },
    {
      "commit": "25eb89980994bf4b93bd99d5f87313aada656039",
      "tree": "a3fcec0ff7aa48bd678fb1897b13309c1fc09c46",
      "parents": [
        "7f92c7bb89db31f63b594e953b325f2d8d54fc1c"
      ],
      "author": {
        "name": "H5-O5",
        "email": "166461697+H5-O5@users.noreply.github.com",
        "time": "Thu May 21 13:13:44 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 22:13:44 2026 +0200"
      },
      "message": "support patch_cmd in bzlmod (#2350)\n\n\u003c!-- Thanks for sending a PR! Before submitting:\n\n1. If this is your first PR, please read CONTRIBUTING.md and sign the\nCLA\n   first. We cannot review code without a signed CLA.\n2. Please file an issue *first*. All features and most bug fixes should\nhave\nan associated issue with a design discussed and decided upon. Small bug\n   fixes and documentation improvements don\u0027t need issues.\n3. New features and bug fixes must have tests. Documentation may need to\nbe updated. If you\u0027re unsure what to update, send the PR, and we\u0027ll\ndiscuss\n   in review.\n--\u003e\n\n**What type of PR is this?**\n\nBug fix\n\n**What package or component does this PR mostly affect?**\n\ngazelle directives\n\n**What does this PR do? Why is it needed?**\n\nThis allows users to specify patch_cmds (just like how users specify\npatches) in MODULE.bazel\n\n**Which issues(s) does this PR fix?**\n\nFixes #2341\n\n**Other notes for review**"
    },
    {
      "commit": "7f92c7bb89db31f63b594e953b325f2d8d54fc1c",
      "tree": "2f4616e56d464be1d31dfbcb629e7191c15cf6d6",
      "parents": [
        "4e2af97da47ccf12ff3d5f09c64eb50ebab977c6"
      ],
      "author": {
        "name": "Tyler French",
        "email": "french.tyler.d@gmail.com",
        "time": "Fri May 08 11:46:07 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 15:46:07 2026 +0000"
      },
      "message": "fix: my email (#2347)"
    },
    {
      "commit": "4e2af97da47ccf12ff3d5f09c64eb50ebab977c6",
      "tree": "7d42428be59c186568fb5f5692ddc26bb874d66e",
      "parents": [
        "493e9d9072eace799138d5cc1188f9e4dcb22061"
      ],
      "author": {
        "name": "G",
        "email": "gregoire@seoulrobotics.org",
        "time": "Sat May 02 16:50:48 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 09:50:48 2026 +0200"
      },
      "message": "Prefer @repo over @repo//:repo (#2343)\n\n**What type of PR is this?**\n\nOther (slight improvement)\n\n**What package or component does this PR mostly affect?**\n\ncmd/gazelle\n\n**What does this PR do? Why is it needed?**\n\nIt changes formatting of `@foo//:foo` to `@foo` in `Label.String()`.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2340.\n\n**Other notes for review**\n\nTested with a local repo with `gazelle_cc` and it did rename e.g.\n`@boost.geometry//:boost.geometry` to `@boost.geometry`.\n\n(Disclaimer: I didn\u0027t test this PR directly, but directly applied the\nchange to `external/gazelle+/label/label.go` because of an issue with Go\nwhen I tried the main `gazelle` branch with this commit).\n\nSigned-off-by: Grégoire Geis \u003cgregoire@seoulrobotics.org\u003e"
    },
    {
      "commit": "493e9d9072eace799138d5cc1188f9e4dcb22061",
      "tree": "05611c04fb55e3af5ddc48006238a3cc6453c130",
      "parents": [
        "edfc45ba2de751edfb47b1abc10195bdcb28ff85"
      ],
      "author": {
        "name": "Kirill Berezin",
        "email": "126603518+kberezin-nshl@users.noreply.github.com",
        "time": "Mon Apr 27 19:08:00 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 10:08:00 2026 -0700"
      },
      "message": "Allow placement of `go.work` in a nested (non-root) package (#2333)\n\n**What type of PR is this?**\n\n\u003e Feature\n\n**What package or component does this PR mostly affect?**\n\n\u003e bzlmod, go.work support\n\n**What does this PR do? Why is it needed?**\n\nAllows an arbitrary location of `go.work` within a Bazel module\n\n**Which issues(s) does this PR fix?**\n\nFixes #2332\n\n**Other notes for review**\n\nDisclosure: I used an AI agent to make this change. I reviewed it myself\nand then manually ran full build and test suite.\n\nI also tested it in our (private) monorepo by using `archive_override`\nand verified that it works with the `go.work` relocated into a\nsubfolder."
    },
    {
      "commit": "edfc45ba2de751edfb47b1abc10195bdcb28ff85",
      "tree": "48d9bd65c4d5378659755460871e557498567900",
      "parents": [
        "e440c4ded5fa4f250cd297bcd3808135b15a629a"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Mon Apr 27 07:32:48 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 14:32:48 2026 +0000"
      },
      "message": "go_deps: don\u0027t declare use_repo dependency on module from go.work (#2337)\n\n**What type of PR is this?**\n\n\u003e Bug fix\n\n**What package or component does this PR mostly affect?**\n\n\u003e go_deps\n\n**What does this PR do? Why is it needed?**\n\nIf a Go module is specified in a go.work file, it\u0027s either a root module\nalready declared by bazel_dep, or a subdirectory module which can\u0027t be\ndepended on through a separate go_repository. Either way, we don\u0027t need\na use_repo declaration, and \u0027bazel mod tidy\u0027 shouldn\u0027t add one.\n\n\n**Which issues(s) does this PR fix?**\n\nFixes #2336\n\n**Other notes for review**"
    },
    {
      "commit": "e440c4ded5fa4f250cd297bcd3808135b15a629a",
      "tree": "6ac1ed1c9cc98aa1bfac13fa210f10c81cd36145",
      "parents": [
        "87d77891869c6fa550cc958dd06f92f63bbb8385"
      ],
      "author": {
        "name": "Jason Bedard",
        "email": "jason+github@jbedard.ca",
        "time": "Fri Apr 24 19:04:12 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 19:04:12 2026 -0700"
      },
      "message": "fix: make language agnostic kinds generic (#2053)\n\nThe generation of these kinds should not depend on the go language being\nenabled.\n\n**What type of PR is this?**\n\nBug fix\n\n**What package or component does this PR mostly affect?**\n\nlanguage/go\ncmd/gazelle\nall\n\n**What does this PR do? Why is it needed?**\n\nAllows any language to generate `filegroup`s without redeclaring the\nkinds.\n\nCo-authored-by: Jay Conrod \u003cjay@engflow.com\u003e"
    },
    {
      "commit": "87d77891869c6fa550cc958dd06f92f63bbb8385",
      "tree": "38cadaa26ebd73b98015e3e16b8b777da9cd8931",
      "parents": [
        "a472876ab09f8d86010222e77ea9bdcc247d03f8"
      ],
      "author": {
        "name": "Andrew Nelson",
        "email": "andrew2nelson@gmail.com",
        "time": "Wed Apr 22 15:03:01 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 22:03:01 2026 +0000"
      },
      "message": "Respect caller GOAUTH when building content (#2335)\n\n**What type of PR is this?**\nBug fix\n\n**What package or component does this PR mostly affect?**\n go_repository\n\n**What does this PR do? Why is it needed?**\n\nPass the user\u0027s GOAUTH env var (alongside GOPROXY) when invoking go. If\nboth GOATH and GOPROXY are set, the go toolchain will use GOAUTH to\ngenerate access tokens that will be passed to GOPROXY. [See here for\ndocumentation](https://pkg.go.dev/cmd/go@master#hdr-GOAUTH_environment_variable)\non the GOAUTH environment variable.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2334\n\n**Other notes for review**"
    },
    {
      "commit": "a472876ab09f8d86010222e77ea9bdcc247d03f8",
      "tree": "7ab64b05c2eb760726ddb16269a3613b854ab054",
      "parents": [
        "78f74abd5f7f22ec7eeef990bc5bb4a6c0c1f370"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Sun Apr 19 15:18:08 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 19 22:18:08 2026 +0000"
      },
      "message": "Move and forward basic packages to v2 (#2311)\n\n**What type of PR is this?**\n\n\u003e Other\n\n**What package or component does this PR mostly affect?**\n\n- flag\n- label\n- merger\n- pathtools\n- rule\n- testools\n\n**What does this PR do? Why is it needed?**\n\nThese packages won\u0027t require substantial changes in v2, so we don\u0027t need\ntwo separate sets of definitions. v2 packages should eventually not\nimport anything from v1, so v2 is the source of truth. Consequently, the\nv1 packages are now just aliases for v2.\n\n**Which issues(s) does this PR fix?**\n\nFor #2272\n\n**Other notes for review**\n\nThis PR was generated with a small program,\nhttps://github.com/jayconrod/bazel-gazelle/blob/v2/tools/forward/forward.go.\nIt\u0027s throw-away code, so I\u0027m not planning to check it in. No manual\nchanges other than re-running Gazelle."
    },
    {
      "commit": "78f74abd5f7f22ec7eeef990bc5bb4a6c0c1f370",
      "tree": "ccdae6b89a79e34964375ef02840c668925d2568",
      "parents": [
        "b9530ec88be8a4afd55bac40dd2321b732311d32"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Fri Apr 17 19:29:50 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 17:29:50 2026 +0000"
      },
      "message": "fix(language/go): use rules_go apparent name in proto compilers (#2326)\n\n**What type of PR is this?**\n\nBug fix\n\n**What package or component does this PR mostly affect?**\n\nlanguage/go\n\n**What does this PR do? Why is it needed?**\n\nIn Bzlmod workspaces, the apparent name of the rules_go module defaults\nto `@rules_go` (or whatever `repo_name` is set to in `MODULE.bazel`).\nThe default proto compiler labels are hardcoded to `@io_bazel_rules_go`,\ncausing Gazelle to always generate:\n```py\ngo_proto_library(\n    ...\n    compilers \u003d [\n        \"@io_bazel_rules_go//proto:go_proto\",\n        \"@io_bazel_rules_go//proto:go_grpc_v2\",\n    ],\n```\n... in pure Bzlmod workspaces where `@io_bazel_rules_go` does not exist,\nthis breaks the build.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2000\n\n**Other notes for review**\n\nSince `Configure()` already resolves `gc.rulesGoRepoName` from the\n`MODULE.bazel` apparent name mapping, the proposed fix consists in\nrebuilding the compiler lists from that resolved name whenever they have\nnot been overridden via `# gazelle:go_proto_compilers` and `#\ngazelle:go_grpc_compilers` directives.\n\n---------\n\nCo-authored-by: Jay Conrod \u003cjay@engflow.com\u003e"
    },
    {
      "commit": "b9530ec88be8a4afd55bac40dd2321b732311d32",
      "tree": "c0aae9b1e2dbe57eb45df06488e4dee81b2f7cf6",
      "parents": [
        "181c8b6675c21ea85b5c1d6aad47aad9adf0b216"
      ],
      "author": {
        "name": "Son Luong Ngoc",
        "email": "sluongng@gmail.com",
        "time": "Thu Apr 09 23:50:53 2026 +0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 12:50:53 2026 -0400"
      },
      "message": "go_deps: allow inheriting host env vars (#2328)\n\nThis adds `go_env_inherit` to both `gazelle_dependencies` and\n`go_deps.config`, so callers can forward selected host environment\nvariables into dependency fetching without checking literal values into\nsource control.\n\nThat is especially useful for BuildBuddy users whose workflows provide\nrepository authentication or other fetch-time settings through runtime\nenvironment variables. With this change, those workflows can keep the\nvalues in the runner environment and tell Gazelle which variable names\nto inherit.\n\nBzlmod example:\n\n```bzl\ngo_deps \u003d use_extension(\"@gazelle//:extensions.bzl\", \"go_deps\")\n\ngo_deps.config(\n    go_env \u003d {\n        \"GOPRIVATE\": \"github.com/my-org/*\",\n    },\n    go_env_inherit \u003d [\n        \"REPO_USER\",\n        \"REPO_TOKEN\",\n    ],\n)\n```"
    },
    {
      "commit": "181c8b6675c21ea85b5c1d6aad47aad9adf0b216",
      "tree": "82ea72eb18198c026976309ad147c679db0e681a",
      "parents": [
        "ba1056d23c086b3cb5335b25a82301c67edce4a4"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Tue Apr 07 11:39:36 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 11:39:36 2026 -0700"
      },
      "message": "go_deps: don\u0027t print version mismatch messages for go.work modules (#2325)\n\n**What type of PR is this?**\n\n\u003e Bug fix\n\n**What package or component does this PR mostly affect?**\n\n\u003e go_deps\n\n**What does this PR do? Why is it needed?**\n\nNormally, go_deps prints a warning when a module is provided by\nbazel_dep, and the bazel_dep version does not match the version Go would\nselect.\n\nThis warning is not actionable for modules that come from go.work files.\ngo.work is used when there are multiple Go modules in the same\nworkspace. Go doesn\u0027t allow this outside the main module, but go_deps\ndoes. The Go version for each module is not meaningful in this\nsituation.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2315\n\n**Other notes for review**"
    },
    {
      "commit": "ba1056d23c086b3cb5335b25a82301c67edce4a4",
      "tree": "4b37e329711ffe6a45cc7683804dff8f712d36a1",
      "parents": [
        "cd1408c19694f5fe1287518ec5bd4304e1b796e0"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Mon Apr 06 07:25:02 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 14:25:02 2026 +0000"
      },
      "message": "go_repository_tools: build with -buildvcs\u003dfalse (#2324)\n\n**What type of PR is this?**\n\n\u003e Bug fix\n\n**What package or component does this PR mostly affect?**\n\n`go_repository_tools`\n\n**What does this PR do? Why is it needed?**\n\nAdds `-buildvcs\u003dfalse` to the command line when building `gazelle` and\nother binaries for use within `go_repository`.\n\nLeaving VCS stamping enabled may cause problems if a VCS tool is\nmisconfigured. We don\u0027t really need VCS stamping.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2323\n\n**Other notes for review**"
    },
    {
      "commit": "cd1408c19694f5fe1287518ec5bd4304e1b796e0",
      "tree": "cc6daed575d0c5900633c70e16ebd0c83c60f6db",
      "parents": [
        "8bdd18dd4680626fecbba5bc346d39a267c31f33"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Sun Apr 05 13:51:46 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 20:51:46 2026 +0000"
      },
      "message": "Revert \"go_deps: allow local module replacements, with a flag (#2317)\" (#2321)\n\nThis reverts commit 7c548446d7044d3d5c57a74096851ae6b0a9192f.\n\n**What type of PR is this?**\n\n\u003e Other\n\n**What package or component does this PR mostly affect?**\n\n\u003e go_deps\n\n**What does this PR do? Why is it needed?**\n\nReverts #2317.\n\n#2320 seems like a better solution for the same problem.\n\n**Which issues(s) does this PR fix?**\n\nFor #2315\n\n**Other notes for review**\n\nMerge after #2320."
    },
    {
      "commit": "8bdd18dd4680626fecbba5bc346d39a267c31f33",
      "tree": "4029eaf73de13c5caf459a468f12c92443d99a70",
      "parents": [
        "519d7cc183733c8c5486746c6dbbe06164c8dc3b"
      ],
      "author": {
        "name": "Simon Mavi Stewart",
        "email": "shs@squareup.com",
        "time": "Sun Apr 05 20:19:45 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 19:19:45 2026 +0000"
      },
      "message": "Add a `directive_file` directive (#2314)\n\n**What does this PR do? Why is it needed?**\n\nWhen managing a large monorepo (or possibly a small, chaotic repo) it\u0027s\npossible for the number of directives in build files (especially the\ntop-level build file) to become unmanageable, obscuring the actual\ncontent of the build file in a mess of directives.\n\nThis adds a new `directive_file`, which is treated as if the directives\nin it are inline with the build file. Recursion is forbidden (so you\ncan\u0027t use the `directive_file` directive in a directive file) to\nsimplify processing, both by machine and by people.\n\n**What type of PR is this?**\n\nFeature\n\n**What package or component does this PR mostly affect?**\n\n`rule` and `walk`\n\n**Which issues(s) does this PR fix?**\n\nYou\u0027ve disabled issues in the GitHub repo....\n\n---------\n\nCo-authored-by: Jay Conrod \u003cjay@engflow.com\u003e"
    },
    {
      "commit": "519d7cc183733c8c5486746c6dbbe06164c8dc3b",
      "tree": "1c2be15aa36dbfb7889eb5471d7e2b88b7b3bae5",
      "parents": [
        "7c548446d7044d3d5c57a74096851ae6b0a9192f"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Sun Apr 05 11:15:46 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 11:15:46 2026 -0700"
      },
      "message": "MODULE.bazel: load dependencies from go.work instead of go.mod (#2320)\n\n**What type of PR is this?**\n\n\u003e Bug fix\n\n**What package or component does this PR mostly affect?**\n\n\u003e all\n\n**What does this PR do? Why is it needed?**\n\nThis lets us drop the `replace` from go.mod, which is blocking `go\ninstall` in #2319. And it more accurately represents how Gazelle is\nmanaging dependencies: we\u0027ll need to do this anyway if `v2/go.mod`\nrequires something that `go.mod` does not.\n\nThis requires a substantial change in `go_deps`. I\u0027ve renamed the\n`bazel_deps` list to `bazel_go_modules` to reflect the fact that with\n`go.work`, Bazel modules and Go modules are not one-to-one: a Bazel\nmodule like `gazelle` may contain multiple Go modules. We should not\ngenerate `go_repository` definitions for these, nor should we warn about\nselected version differences.\n\nUnfortunately, we can\u0027t ignore `go.work` files outside the main module.\nGazelle\u0027s `deps` labels refer to `//v2/...` packages within the same\nmodule; clients cannot have a different view of the module boundaries.\n\nThis change means that we don\u0027t need `ignore_local_replaced_modules`, so\nreverting that in #2321 since it\u0027s not released yet.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2319\n\n**Other notes for review**"
    },
    {
      "commit": "7c548446d7044d3d5c57a74096851ae6b0a9192f",
      "tree": "58f9f8d540a89e8dda4c7ef2d66199b1c8490a40",
      "parents": [
        "4a7caee10fbd2da9bb059f3ce7c2cac8d0050e53"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jay@engflow.com",
        "time": "Sun Mar 29 07:58:28 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 29 07:58:28 2026 -0700"
      },
      "message": "go_deps: allow local module replacements, with a flag (#2317)\n\n**What type of PR is this?**\n\n\u003e Bug fix\n\n**What package or component does this PR mostly affect?**\n\n\u003e go_deps\n\n**What does this PR do? Why is it needed?**\n\nThe go_deps.from_file tag now accepts an attribute\nignore_local_replaced_modules. When set, a go.mod \"require\" is ignored\n(no go_repository is instantiated) if it has a \"replace\" with a local\npath in the same file.\n\nThis hushes a new warning caused by Gazelle\u0027s own abuse of the module\nsystem: Gazelle has a single Bazel module but multiple Go modules. It\nrefers directly to packages in the v2 submodule without a repo marking,\nfor example, as \"//v2/flag\".\n\nThis flag allows opting into this behavior, since it may be a problem\nthat affects other Bazel modules with multiple Go modules, and it\u0027s\ndifficult to work around. It\u0027s opt-in to discourage wide use. Gazelle\nshould be able to clean this up once we can release proper v2 versions.\n\n**Which issues(s) does this PR fix?**\n\nFixes #2315\n\n**Other notes for review**\n\nNot sure it\u0027s possible to write a test for this. The warning popped up\nwith `bazel run :gazelle`, but it\u0027s only a DEBUG line."
    },
    {
      "commit": "4a7caee10fbd2da9bb059f3ce7c2cac8d0050e53",
      "tree": "faa6e795c4fa4dc67c8b6c2549b5cce93e766e89",
      "parents": [
        "ea863a980aabeedbd27e5af656de536c85a24108"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Mar 19 07:30:01 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 19 07:30:01 2026 -0700"
      },
      "message": "build(deps): bump google.golang.org/grpc from 1.71.0 to 1.79.3 in /tests/bcr/go_mod (#2310)\n\nBumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from\n1.71.0 to 1.79.3.\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.79.3\u003c/h2\u003e\n\u003ch1\u003eSecurity\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eserver: fix an authorization bypass where malformed :path headers\n(missing the leading slash) could bypass path-based restricted\n\u0026quot;deny\u0026quot; rules in interceptors like \u003ccode\u003egrpc/authz\u003c/code\u003e. Any\nrequest with a non-canonical path is now immediately rejected with an\n\u003ccode\u003eUnimplemented\u003c/code\u003e error. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8981\"\u003e#8981\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 1.79.2\u003c/h2\u003e\n\u003ch1\u003eBug Fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003estats: Prevent redundant error logging in health/ORCA producers by\nskipping stats/tracing processing when no stats handler is configured.\n(\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/pull/8874\"\u003egrpc/grpc-go#8874\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 1.79.1\u003c/h2\u003e\n\u003ch1\u003eBug Fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003egrpc: Remove the \u003ccode\u003e-dev\u003c/code\u003e suffix from the User-Agent\nheader. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/pull/8902\"\u003egrpc/grpc-go#8902\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 1.79.0\u003c/h2\u003e\n\u003ch1\u003eAPI Changes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003emem: Add experimental API \u003ccode\u003eSetDefaultBufferPool\u003c/code\u003e to\nchange the default buffer pool. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8806\"\u003e#8806\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/vanja-p\"\u003e\u003ccode\u003e@​vanja-p\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eexperimental/stats: Update \u003ccode\u003eMetricsRecorder\u003c/code\u003e to require\nembedding the new \u003ccode\u003eUnimplementedMetricsRecorder\u003c/code\u003e (a no-op\nstruct) in all implementations for forward compatibility. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8780\"\u003e#8780\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBehavior Changes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ebalancer/weightedtarget: Remove handling of \u003ccode\u003eAddresses\u003c/code\u003e\nand only handle \u003ccode\u003eEndpoints\u003c/code\u003e in resolver updates. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8841\"\u003e#8841\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eNew Features\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eexperimental/stats: Add support for asynchronous gauge metrics\nthrough the new \u003ccode\u003eAsyncMetricReporter\u003c/code\u003e and\n\u003ccode\u003eRegisterAsyncReporter\u003c/code\u003e APIs. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8780\"\u003e#8780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epickfirst: Add support for weighted random shuffling of endpoints,\nas described in \u003ca\nhref\u003d\"https://redirect.github.com/grpc/proposal/pull/535\"\u003egRFC A113\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eThis is enabled by default, and can be turned off using the\nenvironment variable\n\u003ccode\u003eGRPC_EXPERIMENTAL_PF_WEIGHTED_SHUFFLING\u003c/code\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8864\"\u003e#8864\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds: Implement \u003ccode\u003e:authority\u003c/code\u003e rewriting, as specified in \u003ca\nhref\u003d\"https://github.com/grpc/proposal/blob/master/A81-xds-authority-rewriting.md\"\u003egRFC\nA81\u003c/a\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8779\"\u003e#8779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebalancer/randomsubsetting: Implement the\n\u003ccode\u003erandom_subsetting\u003c/code\u003e LB policy, as specified in \u003ca\nhref\u003d\"https://github.com/grpc/proposal/blob/master/A68-random-subsetting.md\"\u003egRFC\nA68\u003c/a\u003e. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8650\"\u003e#8650\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/marek-szews\"\u003e\u003ccode\u003e@​marek-szews\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug Fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ecredentials/tls: Fix a bug where the port was not stripped from the\nauthority override before validation. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8726\"\u003e#8726\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/Atul1710\"\u003e\u003ccode\u003e@​Atul1710\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003exds/priority: Fix a bug causing delayed failover to lower-priority\nclusters when a higher-priority cluster is stuck in\n\u003ccode\u003eCONNECTING\u003c/code\u003e state. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8813\"\u003e#8813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ehealth: Fix a bug where health checks failed for clients using\nlegacy compression options (\u003ccode\u003eWithDecompressor\u003c/code\u003e or\n\u003ccode\u003eRPCDecompressor\u003c/code\u003e). (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8765\"\u003e#8765\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/sanki92\"\u003e\u003ccode\u003e@​sanki92\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003etransport: Fix an issue where the HTTP/2 server could skip header\nsize checks when terminating a stream early. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8769\"\u003e#8769\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/joybestourous\"\u003e\u003ccode\u003e@​joybestourous\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eserver: Propagate status detail headers, if available, when\nterminating a stream during request header processing. (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8754\"\u003e#8754\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eSpecial Thanks: \u003ca\nhref\u003d\"https://github.com/joybestourous\"\u003e\u003ccode\u003e@​joybestourous\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ePerformance Improvements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ecredentials/alts: Optimize read buffer alignment to reduce copies.\n(\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8791\"\u003e#8791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emem: Optimize pooling and creation of \u003ccode\u003ebuffer\u003c/code\u003e objects.\n(\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8784\"\u003e#8784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etransport: Reduce slice re-allocations by reserving slice capacity.\n(\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8797\"\u003e#8797\u003c/a\u003e)\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/dda86dbd9cecb8b35b58c73d507d81d67761205f\"\u003e\u003ccode\u003edda86db\u003c/code\u003e\u003c/a\u003e\nChange version to 1.79.3 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8983\"\u003e#8983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/72186f163e75a065c39e6f7df9b6dea07fbdeff5\"\u003e\u003ccode\u003e72186f1\u003c/code\u003e\u003c/a\u003e\ngrpc: enforce strict path checking for incoming requests on the server\n(\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8981\"\u003e#8981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/97ca3522b239edf6813e2b1106924e9d55e89d43\"\u003e\u003ccode\u003e97ca352\u003c/code\u003e\u003c/a\u003e\nChanging version to 1.79.3-dev (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8954\"\u003e#8954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/8902ab6efea590f5b3861126559eaa26fa9783b2\"\u003e\u003ccode\u003e8902ab6\u003c/code\u003e\u003c/a\u003e\nChange the version to release 1.79.2 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8947\"\u003e#8947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/a9286705aa689bee321ec674323b6896284f3e02\"\u003e\u003ccode\u003ea928670\u003c/code\u003e\u003c/a\u003e\nCherry-pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8874\"\u003e#8874\u003c/a\u003e to\nv1.79.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8904\"\u003e#8904\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/06df3638c0bcee88197b1033b3ba83e1eb8bc010\"\u003e\u003ccode\u003e06df363\u003c/code\u003e\u003c/a\u003e\nChange version to 1.79.2-dev (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8903\"\u003e#8903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/782f2de44f597af18a120527e7682a6670d84289\"\u003e\u003ccode\u003e782f2de\u003c/code\u003e\u003c/a\u003e\nChange version to 1.79.1 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8902\"\u003e#8902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/850eccbb2257bd2de6ac28ee88a7172ab6175629\"\u003e\u003ccode\u003e850eccb\u003c/code\u003e\u003c/a\u003e\nChange version to 1.79.1-dev (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8851\"\u003e#8851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/765ff056b6890f6c8341894df4e9668e9bfc18ef\"\u003e\u003ccode\u003e765ff05\u003c/code\u003e\u003c/a\u003e\nChange version to 1.79.0 (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8850\"\u003e#8850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/commit/68804be0e78ed0365bb5a576dedc12e2168ed63e\"\u003e\u003ccode\u003e68804be\u003c/code\u003e\u003c/a\u003e\nCherry pick \u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8864\"\u003e#8864\u003c/a\u003e to\nv1.79.x (\u003ca\nhref\u003d\"https://redirect.github.com/grpc/grpc-go/issues/8896\"\u003e#8896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/grpc/grpc-go/compare/v1.71.0...v1.79.3\"\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.71.0\u0026new-version\u003d1.79.3)](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/bazel-contrib/bazel-gazelle/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": "ea863a980aabeedbd27e5af656de536c85a24108"
}
