)]}'
{
  "log": [
    {
      "commit": "bf49a0edc2c5aa879511846ef5285f709cd27e76",
      "tree": "4bfde2929c761c662cd49526ac091f24103ecbfd",
      "parents": [
        "bd8f218d264229524cded03659ef1a4aa9562dbd"
      ],
      "author": {
        "name": "tjgq",
        "email": "tjgq@google.com",
        "time": "Fri Aug 28 10:59:14 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 11:00:35 2026 -0700"
      },
      "message": "Move zstd into the services component.\n\nPiperOrigin-RevId: 972680302\nChange-Id: I5c3a9ed38eb5fa4d4ba24b25083216f330968d6e\n"
    },
    {
      "commit": "bd8f218d264229524cded03659ef1a4aa9562dbd",
      "tree": "859ab8c532fbd6fa61bbbdbf5302b87709ef1942",
      "parents": [
        "89f04c5b074079b298a3bfa2b0a4622eab3b67c0"
      ],
      "author": {
        "name": "Alex Eagle",
        "email": "aeagle@figma.com",
        "time": "Fri Aug 28 10:36:55 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 10:38:52 2026 -0700"
      },
      "message": "site: Preserve HTML lists and nested tables in docs2mdx table cells (https://github.com/bazelbuild/bazel/pull/30705)\n\n## Summary\n- When `docs2mdx.py` converts HTML reference docs to MDX, table cells containing lists, nested tables, or `\u003cpre\u003e` blocks are now preserved as inline HTML instead of being flattened to broken markdown.\n- Adds `docs2mdx_test` with coverage for list-in-cell, nested-table-in-cell, and pre-in-cell cases.\n\nFixes #30614, #30616, and contributes to #30615.\n\n**Note:** Reference docs under `docs/reference/` need to be regenerated after this lands.\n\n## Approach\n`markdownify` converts `\u003cul\u003e/\u003col\u003e` inside `\u003ctd\u003e` to inline `* item` text, and nested `\u003ctable\u003e` elements into broken pipe syntax. The fix overrides `convert_td`/`convert_th` to emit raw inner HTML for complex cells.\n\n## Test plan\n\n### Unit tests\n- [x] `bazel test //scripts/docs:docs2mdx_test //scripts/docs:rewriter_test`\n\n### Mintlify preview\nPreview: https://bazel-pr-30705.mintlify.app/\n\n| Check | URL | Expected |\n|-------|-----|----------|\n| [ ] List in cell | `/reference/be/common-definitions#common-attributes` → `aspect_hints` row | Bullet list renders (not inline `* text`) |\n| [ ] List in cell | same page → `tags` row | Multi-level bullet list renders |\n| [ ] Nested table | `/reference/be/common-definitions#common-attributes-tests` → `size` row | Inner Size/RAM/CPU table renders |\n| [ ] Nested table | same page → `timeout` row | Inner timeout table renders |\n| [ ] Code in cell | `/rules/lib/repo/http` | Attribute table not squished (#30615) |\n\n- [x] Preview deployed (bazel-docs bot comment)\n- [ ] Visual checks above verified in preview\n\n### Post-merge\n- [ ] Regenerate reference docs and confirm on bazel.build\n\nCloses #30705.\n\nPiperOrigin-RevId: 972668092\nChange-Id: I8e27931e4a4abc7466463b81aa26e7449eeb0690\n"
    },
    {
      "commit": "89f04c5b074079b298a3bfa2b0a4622eab3b67c0",
      "tree": "2a9916a2c1dfe03e8c1cb8a97d11133dcbcd5b7f",
      "parents": [
        "dc7046d2530545cfa14ea7340d9fdf74e9f266bb"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Fri Aug 28 09:29:38 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 09:31:43 2026 -0700"
      },
      "message": "Relocate the sandbox debug suggestion to the build summary.\n\nWhen a sandboxed action failed, AbstractSandboxSpawnRunner directly emitted an Event.info with the --sandbox_debug suggestion. This caused the hint to appear mid-execution right before the compiler\u0027s stderr output, interleaving Bazel advice into the compiler error.\n\nRemove the direct reporter call from AbstractSandboxSpawnRunner and instead print the --sandbox_debug suggestion in BuildResultPrinter at the end of the build alongside --verbose_failures.\n\nBefore:\n```\n  ERROR: /path/to/BUILD:15:11: GoCompilePkg //pkg:go failed: (Exit 1): builder failed: ...\n  Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging\n  pkg/auth.go:6:2: result declared but not used\n  Target //pkg:go failed to build\n  Use --verbose_failures to see the command lines of failed build steps.\n```\n\nAfter:\n```\n  ERROR: /path/to/BUILD:15:11: GoCompilePkg //pkg:go failed: (Exit 1): builder failed: ...\n  pkg/auth.go:6:2: result declared but not used\n  Target //pkg:go failed to build\n  Use --verbose_failures to see the command lines of failed build steps.\n  Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging\n```\n\nPart of https://github.com/bazelbuild/bazel/issues/15820\n\nRELNOTES: None.\nPiperOrigin-RevId: 972632303\nChange-Id: I2ee2517c9262eb3af48d7b27b3621702b8e5c0bc\n"
    },
    {
      "commit": "dc7046d2530545cfa14ea7340d9fdf74e9f266bb",
      "tree": "d8dc7f1947b8892008f71fa58e9f2d6e479223b7",
      "parents": [
        "b06d5bca87c5ef57f67f4406c50d7a22512382fd"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Fri Aug 28 08:37:28 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 08:38:48 2026 -0700"
      },
      "message": "Avoid value-based class in DumperTest WeakReference test\n\nUse new Object() instead of Integer literal in WeakReference test to avoid javac value-based class identity warning.\n\nPiperOrigin-RevId: 972608590\nChange-Id: I3eb827e99b46962f3953ea98bafad446e019703b\n"
    },
    {
      "commit": "b06d5bca87c5ef57f67f4406c50d7a22512382fd",
      "tree": "93d06eb97bc0794eeb49c7da70edeadb9c53063e",
      "parents": [
        "9c93dbe55c6037fa0efe91e04666b78beafecbf7"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Fri Aug 28 08:11:42 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 08:13:57 2026 -0700"
      },
      "message": "Clean up duplicate int() doc string in MethodLibrary\n\nRemove redundant duplicate paragraph in int() docstring in MethodLibrary.java.\n\nPiperOrigin-RevId: 972597895\nChange-Id: I34b7a610e5293f1e53589eb992f741ea3c6283ec\n"
    },
    {
      "commit": "9c93dbe55c6037fa0efe91e04666b78beafecbf7",
      "tree": "3dba4619962103833408ca4884ce05fd55bd0ab9",
      "parents": [
        "b352e52393ab2722204c2d06d065c4bdf9a1df6d"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Fri Aug 28 08:09:15 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 08:11:05 2026 -0700"
      },
      "message": "No public description\n\nPiperOrigin-RevId: 972596845\nChange-Id: Ib8a49dc4a3696a02fbe46825eaceee316c5f0027\n"
    },
    {
      "commit": "b352e52393ab2722204c2d06d065c4bdf9a1df6d",
      "tree": "b1e13a52f882f18a604b9170faeaf041b09fe78a",
      "parents": [
        "62c5357ca3e70c19f415100dfe1142227d4e7ae6"
      ],
      "author": {
        "name": "Alex Eagle",
        "email": "aeagle@figma.com",
        "time": "Fri Aug 28 07:49:11 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 07:50:31 2026 -0700"
      },
      "message": "site: Preserve heading anchor IDs in docs2mdx conversion (https://github.com/bazelbuild/bazel/pull/30704)\n\n## Summary\n\nReference doc pages like [common-definitions](https://bazel.build/versions/9.1.0/reference/be/common-definitions) expose a Contents section with links such as `#common-attributes`, but those anchors are broken on the published site.\n\nThe source Velocity template `common-definitions.vm` renders headings with explicit ids:\n\n```html\n\u003ch2 id\u003d\u0027common-attributes\u0027\u003eAttributes common to all build rules\u003c/h2\u003e\n```\n\nAfter `docs2mdx.py` converts the generated HTML to MDX, the heading becomes plain markdown with no anchor:\n\n```markdown\n## Attributes common to all build rules\n```\n\nThis PR updates `docs2mdx.py` to convert HTML headings with `id` attributes to MDX anchor syntax (`## Title {#id}`) before markdownify runs, and restores anchors after markdownify escapes curly braces in heading text.\n\nFixes bazelbuild/bazel#30617\n\n## Test plan\n\n### Unit tests\n- [x] `bazel test //scripts/docs:rewriter_test`\n- [x] `bazel test //scripts/docs:docs2mdx_test` — single/double-quoted ids, extra attributes, h3 headings\n\n### Mintlify preview\nPreview: https://bazel-pr-30704.mintlify.app/\n\n| Check | URL | Expected |\n|-------|-----|----------|\n| [ ] Anchor resolves | `/reference/be/common-definitions#common-attributes` | Page scrolls to \"Attributes common to all build rules\" |\n| [ ] Contents TOC link | `/reference/be/common-definitions` → click `#common-attributes` in Contents | Same section |\n| [ ] Other anchors | `#typical-attributes`, `#common-attributes-tests` | Resolve correctly |\n\n- [x] Preview deployed (bazel-docs bot comment)\n- [ ] Anchor deep links verified in preview (requires reference doc regen in preview build)\n\n### Post-merge\n- [ ] Regenerate reference docs via `bazel build --config\u003ddocs //src/main/java/com/google/devtools/build/lib:gen_mdx_reference_docs`\n\nCloses #30704.\n\nPiperOrigin-RevId: 972587453\nChange-Id: Ibfef830fce4525d746aff992bd990bab3f501eac\n"
    },
    {
      "commit": "62c5357ca3e70c19f415100dfe1142227d4e7ae6",
      "tree": "d42f781576c04e24355f1129b6c40907825c92a2",
      "parents": [
        "4e16b5eda6da8ea944a12eaf532a46183d40caef"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Fri Aug 28 07:38:58 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 07:41:00 2026 -0700"
      },
      "message": "Clean up sandbox stashing directories on Bazel server shutdown.\n\nWhen using --reuse_sandbox_directories, stashed sandbox directories cannot be reused across server instances and were previously left on disk indefinitely when the server shut down or when developers switched workspaces. This led to unbounded disk accumulation over time.\n\nFixes https://github.com/bazelbuild/bazel/issues/27626\n\nRELNOTES: Clean up unused stashed sandbox directories when shutting down the Bazel server.\nPiperOrigin-RevId: 972583325\nChange-Id: I54268307ffa6f0d2bd8371477cd07d90ea959459\n"
    },
    {
      "commit": "4e16b5eda6da8ea944a12eaf532a46183d40caef",
      "tree": "419186b00abae3f0c1b1e894478ec5d2861f550d",
      "parents": [
        "741483989c704487bd3433a146edb0d20f58c13c"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Fri Aug 28 07:24:13 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 07:26:07 2026 -0700"
      },
      "message": "Silence HTTP request logging in mock StaticHTTPServer for Bzlmod tests.\n\nBzlmod tests querying multiple registries trigger expected HTTP 404 responses on local mock registries before falling back to BCR. Python\u0027s `SimpleHTTPRequestHandler` logs each of these to stderr by default, dumping hundreds of kilobytes of 404 noise that flood CI logs and truncate failure output. Overriding `log_message` in `_Handler` silences this routine request traffic.\n\nPiperOrigin-RevId: 972576849\nChange-Id: I9b26db00c57f9e0ed3a7c576ea9da16b0d8f90cb\n"
    },
    {
      "commit": "741483989c704487bd3433a146edb0d20f58c13c",
      "tree": "0f1cb5d132dc8ff487f83ba0a8a4cd99b0a25fa0",
      "parents": [
        "de92f242c6505fedf148b1c455f58f7b49043ff4"
      ],
      "author": {
        "name": "cpovirk",
        "email": "cpovirk@google.com",
        "time": "Fri Aug 28 07:06:47 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 07:08:33 2026 -0700"
      },
      "message": "Replace calls to `Runnables.doNothing()` with a do-nothing lambda, `() -\u003e {}`.\n\n`Runnables.doNothing()` exists only because Java lambdas didn\u0027t exist in 2013. `() -\u003e {}` is shorter and more standard.\n\nPiperOrigin-RevId: 972569799\nChange-Id: I763225162d6b7872db0209dd61e9323ccd599a83\n"
    },
    {
      "commit": "de92f242c6505fedf148b1c455f58f7b49043ff4",
      "tree": "2aa3522db590c567c6d8a5a084fd63e8e15ff082",
      "parents": [
        "9ed07e33051696b29302015e823ea8f697e7b160"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Fri Aug 28 06:48:21 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 06:50:52 2026 -0700"
      },
      "message": "Fix IllegalStateException in ActionArtifactCycleReporter for ArtifactNestedSetKey.\n\nFixes https://github.com/bazelbuild/bazel/issues/17573\n\n`ActionArtifactCycleReporter` includes `ARTIFACT_NESTED_SET` in `ACTION_OR_ARTIFACT_OR_TRANSITIVE_RDEP` so that action-artifact cycles involving depset inputs are detected. However, `prettyPrint` and `getLabel` did not support `ArtifactNestedSetKey`, causing Bazel to crash with an unhandled `IllegalStateException` (\"Argument is not Action, TargetCompletion, AspectCompletion, or TestCompletion: ArtifactNestedSetKey\") instead of presenting an actionable dependency cycle error to the user.\n\nWith this change, cycles involving `ArtifactNestedSetKey` are reported cleanly without crashing. When an artifact nested set appears at the root of a cycle, the error message lists the constituent file paths:\n\n```\nin \u003crule\u003e rule \u003ctarget\u003e: cycle in dependency graph:\n.-\u003e files: foo, bar\n|   file: foo\n|   file: goo\n`-- files: foo, bar\n```\n\nIntermediate nested set nodes continue to be omitted from the cycle path to keep the output concise and focused on actionable targets and artifacts.\n\nPiperOrigin-RevId: 972562063\nChange-Id: I7215e6b8e7dc9de6d866896f40004880fcea5934\n"
    },
    {
      "commit": "9ed07e33051696b29302015e823ea8f697e7b160",
      "tree": "d392b6ce61efc4452255404f457c63fabac1d2c4",
      "parents": [
        "81b042b2b6388dbae7b02b4b6ec87a2f7d63db36"
      ],
      "author": {
        "name": "tjgq",
        "email": "tjgq@google.com",
        "time": "Fri Aug 28 05:33:48 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 05:35:35 2026 -0700"
      },
      "message": "Propagate errors other than non-existence from FileSystem.is* methods.\n\nIn cases where the exception cannot be readily handled by the surrounding code, keep the preexisting behavior and leave a TODO for later - the primary objective of this CL is to fix the method signatures and their implementations, not every callsite.\n\nPiperOrigin-RevId: 972530629\nChange-Id: I15b637a93d2efa584b799564e28d51a418328ead\n"
    },
    {
      "commit": "81b042b2b6388dbae7b02b4b6ec87a2f7d63db36",
      "tree": "8ff436cfc2454280251dd09431b097aa75077e8c",
      "parents": [
        "aa451ac7965f69c1086ad7d1b586b9eeb38a6857"
      ],
      "author": {
        "name": "pcloudy",
        "email": "pcloudy@google.com",
        "time": "Fri Aug 28 05:24:25 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 05:26:00 2026 -0700"
      },
      "message": "Fix typo in LegacyIncludeScanner comment\n\nPiperOrigin-RevId: 972527158\nChange-Id: I1efab1c2a9b7eb8b5a6c157f2baf21558a0464ec\n"
    },
    {
      "commit": "aa451ac7965f69c1086ad7d1b586b9eeb38a6857",
      "tree": "23648efd1a1741bd3d57c444a5bc717d7997e348",
      "parents": [
        "5a3e9ac0b7b64d194d90e91a0e58298379efc2e5"
      ],
      "author": {
        "name": "pcloudy",
        "email": "pcloudy@google.com",
        "time": "Fri Aug 28 04:54:15 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 04:55:56 2026 -0700"
      },
      "message": "Disable documentation checks in Bazel CI presubmit.\n\nPiperOrigin-RevId: 972515637\nChange-Id: I57213a2d69699c60c253ab4d5a0fe4fb82443b90\n"
    },
    {
      "commit": "5a3e9ac0b7b64d194d90e91a0e58298379efc2e5",
      "tree": "9a936583b7c3f08e7517255e95edc14b520f2a8f",
      "parents": [
        "a65ef60e5109dcad560daea38598b78ae5ff0a3f"
      ],
      "author": {
        "name": "chiwang",
        "email": "chiwang@google.com",
        "time": "Fri Aug 28 03:24:58 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 03:27:39 2026 -0700"
      },
      "message": "Use ThreadLocalRandom for include scanning shuffling.\n\nLegacyIncludeScanner previously used a shared java.util.Random(88) instance to shuffle header inclusions. Under high concurrency, concurrent calls to Random.nextInt() caused severe CAS contention on its internal AtomicLong seed.\n\nReplacing it with ThreadLocalRandom.current() eliminates lock/CAS contention and restores inclusion shuffling across both sync and async execution.\n\nPiperOrigin-RevId: 972478655\nChange-Id: I265baebdd12b28b7a9cc74f632da54a06c31af9f\n"
    },
    {
      "commit": "a65ef60e5109dcad560daea38598b78ae5ff0a3f",
      "tree": "43da24edddf4d849a771321aba62948e8eb7bed3",
      "parents": [
        "e3e94c20f53e102b6f2ea2faa0e6b039d1286d4d"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Fri Aug 28 03:15:28 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 03:16:50 2026 -0700"
      },
      "message": "Add --prune_unused_actions option to aquery to prune unreachable actions\n\nWhen `--prune_unused_actions` is specified on the command line, `aquery` emits only actions that are reachable in the artifact dependency graph of the requested top-level targets\u0027 default output artifacts (or requested `--output_groups`).\n\n### Motivation\nWhen querying an analyzed target (such as `deps(//foo)`), `aquery` currently emits all actions associated with every analyzed configured target in the query scope. This includes actions that produce unused outputs—such as `.pic.o` static compilation outputs when linking a dynamic library, or auxiliary artifacts in a dependency that are never referenced by the top-level target.\n\nThis addresses [#14156](https://github.com/bazelbuild/bazel/issues/14156) by allowing users to prune unreachable actions directly in `aquery`, eliminating the need for post-processing the action graph dump.\n\nPiperOrigin-RevId: 972474542\nChange-Id: Icb77dd7fb58ea29c83da20defa02862a227dd242\n"
    },
    {
      "commit": "e3e94c20f53e102b6f2ea2faa0e6b039d1286d4d",
      "tree": "8a5b87e021b1fec9a7023bc3c71a51572c06762a",
      "parents": [
        "696734cfd3d338d04a885fa65b996ece43fe365c"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Fri Aug 28 01:42:39 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 01:44:25 2026 -0700"
      },
      "message": "Fix dropped action dependency when input artifact parent component is running.\n\nIn CriticalPathComputer.addArtifactDependency, when an input artifact has a parent (such as a TreeFileArtifact inside a SpecialArtifact / TreeArtifact), SELECT_LONGER_COMPONENT was used to select between the direct input artifact component and its parent component.\n\nIf the parent component had a longer aggregated elapsed time but was currently running (isRunning() \u003d\u003d true, e.g. during concurrent template action executions, rewinding, or cache hit retries), SELECT_LONGER_COMPONENT selected the running parent component over the completed child component. The subsequent check `if (depComponent !\u003d null \u0026\u0026 !depComponent.isRunning())` then evaluated to false, completely dropping the valid, completed dependency and resulting in an artificial gap in the critical path.\n\nThis change evaluates both the direct input artifact component and each parent component in the chain individually, invoking addDepInfo on any completed (non-running) component.\n\nPiperOrigin-RevId: 972431794\nChange-Id: I77f93d0ff75b85a1ae6c0822ece126b3711654e9\n"
    },
    {
      "commit": "696734cfd3d338d04a885fa65b996ece43fe365c",
      "tree": "9776fde0392b596f9eba1afdc4da933d8962d440",
      "parents": [
        "9d7add8527c99ebccca03a6ec33386cb4f5fd07b"
      ],
      "author": {
        "name": "Fabian Meumertzheim",
        "email": "fabian@meumertzhe.im",
        "time": "Fri Aug 28 00:36:29 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Aug 28 00:38:22 2026 -0700"
      },
      "message": "Allow binding sockets in the macOS sandbox when networking is blocked (https://github.com/bazelbuild/bazel/pull/30865)\n\n### Description\n\nThe macOS sandbox denied `bind()` outright when network access was blocked, so any action that starts a local server failed under `--experimental_sandbox_default_allow_network\u003dfalse` or the `block-network` tag. This adds three rules to the generated SBPL profile: binding to any local address, and Unix domain sockets in both directions. Servers commonly bind the wildcard address (`0.0.0.0` or `::`), which the `localhost` filter does not match, which is why the bind rule is unrestricted.\n\nOutbound traffic stays restricted to loopback, so a blocked spawn still cannot reach another host: connecting to the default gateway and to a public address both fail with `EPERM`, while loopback and the machine\u0027s own addresses succeed.\n\nOne limitation is worth flagging for review and is documented in the code. Inbound traffic cannot be constrained the same way, because macOS decides `network-inbound` from the local address alone, and its `localhost` filter matches *every* address assigned to the machine rather than just `127.0.0.1` and `::1`. Filtering `network-inbound` on the remote address is not an option either: such a rule compiles but has no effect, confirmed by placing `(deny network-inbound (remote ip \"*:*\"))` last in the profile and observing that accepts still succeed, whereas the same rule keyed on the local address breaks listening. A peer elsewhere on the network can therefore reach a spawn that listens on a non-loopback address. The Linux sandbox does not have this gap because its network namespace only ever has a loopback interface. Closing it would mean disallowing the wildcard bind, which is the bug this PR fixes.\n\nThe remaining commits are test-only.\n\nThe new coverage is added as integration tests rather than as assertions on the generated profile text, since exercising real binds through the sandbox is what actually establishes that the profile works, and it runs on Linux as well. `DarwinSandboxedSpawnRunnerTest` is left untouched.\n\nThe networking integration test gains cases for binding to `127.0.0.1`, `::1`, `localhost`, a Unix socket, and a non-loopback address of the machine, plus a check that blocked spawns cannot reach a non-loopback address. Where the expected outcome genuinely differs per platform it is asserted either way rather than skipped, so no case is silently dropped on either OS.\n\n`--sandbox_fake_hostname` is only implemented by the linux-sandbox and is silently accepted elsewhere. That test previously returned early outside Linux; it now runs the same test with and without the flag and asserts that the hostname becomes `localhost` on Linux and is unchanged everywhere else.\n\n`testing_server.py` retried every bind failure with a new port forever, which would hang a caller waiting for the `started` line if the address could never be bound. It now only retries on `EADDRINUSE`.\n\n### Motivation\n\nFixes #14828.\n\n### Build API Changes\n\nNo\n\n### Checklist\n\n- [x] I have added tests for the new use cases (if any).\n- [ ] I have updated the documentation (if applicable).\n\n### Release Notes\n\nRELNOTES: The macOS sandbox now allows actions to bind sockets when network access is blocked, matching the behavior of the Linux sandbox. Note that macOS cannot restrict inbound connections by peer, so an action that listens on a non-loopback address is reachable from other hosts on the network; outbound traffic remains restricted to loopback.\n\nCloses #30865.\n\nPiperOrigin-RevId: 972401681\nChange-Id: Ibe06f9a541e75d1e59c905523c4d1ce029e71395\n"
    },
    {
      "commit": "9d7add8527c99ebccca03a6ec33386cb4f5fd07b",
      "tree": "7f663f004d2a7bafe2c5830f48af25db0d399e81",
      "parents": [
        "3b812d349882f0a12028f16379b83de757796737"
      ],
      "author": {
        "name": "jhorvitz",
        "email": "jhorvitz@google.com",
        "time": "Thu Aug 27 18:56:44 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 18:58:12 2026 -0700"
      },
      "message": "Fix `ConsumedArtifactsTracker` handling of template expansion inputs.\n\nTree artifacts that are only consumed via action templates were not getting registered as consumed - the children appear as action inputs, but not the parent. Make sure `ConsumedArtifactsTracker` registers the parent tree artifact as consumed if any children are consumed.\n\nPiperOrigin-RevId: 972275451\nChange-Id: I8ff550134586efd8705eb4776b166648ce4817fe\n"
    },
    {
      "commit": "3b812d349882f0a12028f16379b83de757796737",
      "tree": "c242f93441fac73a170eefa487ca9920352fe00a",
      "parents": [
        "cb69dbdf16fded76fd1d697dd3d7dc1d6c8b3273"
      ],
      "author": {
        "name": "gregce CA",
        "email": "gregce@google.com",
        "time": "Thu Aug 27 16:36:38 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 16:38:46 2026 -0700"
      },
      "message": "Graveyard --experimental_platform_in_output_dir and make it always enabled.\n\nUpdate `CoreOptions.usePlatformInOutputDir` so the platform-in-output-dir behavior is always treated as enabled. Remove references to the flag in support files.\n\nPiperOrigin-RevId: 972221328\nChange-Id: Ice407b995b7250f3bc412e2cc320cf3a850a5996\n"
    },
    {
      "commit": "cb69dbdf16fded76fd1d697dd3d7dc1d6c8b3273",
      "tree": "e327d5d5ed84ba075d56aeabdbb38fbf6f603dfc",
      "parents": [
        "b61faad2dbe40237a60c3ddb4497d48791003d4a"
      ],
      "author": {
        "name": "ahumesky",
        "email": "ahumesky@google.com",
        "time": "Thu Aug 27 15:05:46 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 15:08:22 2026 -0700"
      },
      "message": "Include the originating target root in Runfiles fingerprinting under `--incompatible_prefer_depending_configuration_runfiles`.\n\nWithout this, caching would be incorrect with the flag enabled because the key for actions like SouceManifestAction would not change.\n\nPiperOrigin-RevId: 972177774\nChange-Id: Ic94cfc92f5cbf0baf3f346981d9009f1c54659e0\n"
    },
    {
      "commit": "b61faad2dbe40237a60c3ddb4497d48791003d4a",
      "tree": "4178f2de4be73202371ef4e26102ecae25fab866",
      "parents": [
        "51763923b765522ff0c1dd8c01c772303220b4e8"
      ],
      "author": {
        "name": "kylecarlstrom",
        "email": "kylecarlstrom@google.com",
        "time": "Thu Aug 27 14:13:24 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 14:15:22 2026 -0700"
      },
      "message": "Omit Object#wait0 in ThreadUtils slow interrupt culprit selection.\n\nIn OpenJDK 21+, java.lang.Object.wait() calls the native wait0() method. ThreadUtils.warnAboutSlowInterrupt only checked for method name \"wait\", causing threads waiting on Object monitors to not be recognized as waiting. Because the main server thread has a deep stack trace, it was incorrectly selected as the longest active stack trace during slow interrupts.\n\nAlso add a null-safe fallback if all threads in the JVM are waiting or parked.\n\nPiperOrigin-RevId: 972151587\nChange-Id: I903441ed3d4bbec44a5e4bfbb964232ade1cc793\n"
    },
    {
      "commit": "51763923b765522ff0c1dd8c01c772303220b4e8",
      "tree": "6dbd7398a50783f9e40f2028378e747d3a1ccdec",
      "parents": [
        "c3a90dfded9504c0a496feabd9d050bc46be363c"
      ],
      "author": {
        "name": "Angus Lees",
        "email": "gus@canva.com",
        "time": "Thu Aug 27 13:23:33 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 13:25:29 2026 -0700"
      },
      "message": "Fix Canva logo on users page (https://github.com/bazelbuild/bazel/pull/30745)\n\n### Description\n\nAdd the Canva logo to the documentation repository and update the users page to reference the local image.\n\n### Motivation\n\nThe external Wikimedia URL used for the Canva logo is broken. Referencing the checked-in image keeps the logo available with the rest of the community assets.\n\n### Build API Changes\n\nNo.\n\n### Checklist\n\n- [x] I have added tests for the new use cases (if any). Not applicable; this is a documentation-only change.\n- [x] I have updated the documentation (if applicable).\n\n### Release Notes\n\nRELNOTES: None\n\nCloses #30745.\n\nPiperOrigin-RevId: 972122873\nChange-Id: I00ef5fbc0ff21dafde7db5dce49198fa2525d0dc\n"
    },
    {
      "commit": "c3a90dfded9504c0a496feabd9d050bc46be363c",
      "tree": "709fbf74a59097583504dba5cf120fd20022b698",
      "parents": [
        "999dbe064d713d0edcd8e4d4849f51bac485c382"
      ],
      "author": {
        "name": "shahan",
        "email": "shahan@google.com",
        "time": "Thu Aug 27 13:09:34 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 13:11:42 2026 -0700"
      },
      "message": "Add end-of-command Skycache token leak check with BugReport alerting.\n\nIn resetCommandState(), awaits termination of readExecutorOwner and\ncommandExecutor with a timeout; if fully drained and in-flight\ntokens remain non-zero, triggers BugReport.sendBugReport().\n\nPiperOrigin-RevId: 972115697\nChange-Id: I469cbc3bc5d88b75c36f5b85ce15147286f6095d\n"
    },
    {
      "commit": "999dbe064d713d0edcd8e4d4849f51bac485c382",
      "tree": "a987a0cbb747085c750b4439490f4ac0aab05ad3",
      "parents": [
        "1265d2594eeecee854a60aa82f85771f372134ac"
      ],
      "author": {
        "name": "Bazel Release System",
        "email": "noreply@google.com",
        "time": "Thu Aug 27 20:07:11 2026 +0000"
      },
      "committer": {
        "name": "Summers Pittman",
        "email": "mrsummers@google.com",
        "time": "Thu Aug 27 20:07:11 2026 +0000"
      },
      "message": "Release 10.0.0-pre.20260818.1 (2026-08-27)\n\nBaseline: cec8ee49f731e48b5bb336a27a7f2f1be770da48\n\nCherry picks:\n\n   + 2a60c3357abd1e881088e88747ac7c7baa6f2e79:\n     Roll forward of commit 909985a3b9a1f71106e7cba31eb862078e5bdebe\n     with … (https://github.com/bazelbuild/bazel/pull/30754)\n\nImportant changes:\n\n  - Fix `Could not chdir` in `tw.exe` for long runfiles paths on\n    Windows.\n\nThis release contains contributions from many people at Google, as well as Anton Karpov, Armando Montanez, Chi Wang, Fabian Meumertzheim, Rgis Desgroppes, Son Luong Ngoc.\n"
    },
    {
      "commit": "1265d2594eeecee854a60aa82f85771f372134ac",
      "tree": "d0d6aa2fe368a3e7cd2dedd6ff421be117c26d75",
      "parents": [
        "fab53dfd55e04c39edf04aced3d4512ad10e0115"
      ],
      "author": {
        "name": "gregce CA",
        "email": "gregce@google.com",
        "time": "Thu Aug 27 12:30:08 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 12:33:52 2026 -0700"
      },
      "message": "Rename `--experimental_override_platform_cpu_name` to `--override_platform_cpu_name`.\n\nRELNOTES: `--experimental_override_platform_cpu_name` renamed to `--override_platform_cpu_name`\nPiperOrigin-RevId: 972095320\nChange-Id: I8f814a070c24117afd10b348812552511e6001a8\n"
    },
    {
      "commit": "fab53dfd55e04c39edf04aced3d4512ad10e0115",
      "tree": "d7f310f48f416e908aaf0299129cb1bda3fc14e6",
      "parents": [
        "8029817808e72a4bed613c437fce1a2251d160e7"
      ],
      "author": {
        "name": "Samuel Bronson",
        "email": "naesten@gmail.com",
        "time": "Thu Aug 27 11:17:50 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 11:19:17 2026 -0700"
      },
      "message": "compile-source.mdx: link to releases/latest to skip prereleases (https://github.com/bazelbuild/bazel/pull/30728)\n\nLinking to \u003chttps://github.com/bazelbuild/bazel/releases\u003e has a substantial chance of showing the reader a prerelease before any final releases.\n\nChanging it to \u003chttps://github.com/bazelbuild/bazel/releases/latest\u003e will show *just* the latest release.\n\nCloses #30728.\n\nPiperOrigin-RevId: 972057282\nChange-Id: I0f0c91b621d723455e4bfb3a628e4b8b7d90bfb8\n"
    },
    {
      "commit": "8029817808e72a4bed613c437fce1a2251d160e7",
      "tree": "ecec8237d550bcfdbf89ce8a78db39705a8efdb0",
      "parents": [
        "3c04dc2353d39618371ffa3dc76df3facfcacb44"
      ],
      "author": {
        "name": "gregce",
        "email": "gregce@google.com",
        "time": "Thu Aug 27 11:13:58 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 11:16:35 2026 -0700"
      },
      "message": "Make `--experimental_override_platform_cpu_name` Starlark-convertible\n\nPiperOrigin-RevId: 972055252\nChange-Id: Ib08f436ecfcbaf248e9c4f701c1466db5ab6485e\n"
    },
    {
      "commit": "3c04dc2353d39618371ffa3dc76df3facfcacb44",
      "tree": "704c23b3682d576f4b6509140d0d4c155b554955",
      "parents": [
        "2161e061cedb0944c144693c2d3f5115d3c5e39f"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Thu Aug 27 11:03:56 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 11:05:18 2026 -0700"
      },
      "message": "Fix crash when --package_path contains only non-existent directories\n\nWhen `--package_path` is set to directories that do not exist (e.g. `--package_path\u003d/notadir`), `PathPackageLocator` previously skipped all missing entries and returned an instance with an empty list of path entries. Subsequent subsystems expecting at least one package path root (such as Skyfocus, execution tooling, and external package helpers) crashed with unhandled runtime exceptions (`NoSuchElementException` or `IndexOutOfBoundsException`).\n\nValidation now ensures `resolvedPaths` is not empty during package locator creation. If no directories exist on disk, Bazel fails fast with an `AbruptExitException` (`FailureDetails.PackageOptions.Code.PACKAGE_PATH_INVALID`, exit code 2) and reports a descriptive error:\n```\nERROR: None of the directories specified in --package_path \u0027/notadir\u0027 exist\n```\n\nEarly initialization errors during `workspace.initCommand(...)` are caught and surfaced cleanly by `BlazeCommandDispatcher`.\n\nFixes https://github.com/bazelbuild/bazel/issues/17774\n\nPiperOrigin-RevId: 972049409\nChange-Id: I311bdc07b65b2cb9912312d81dfd7dc6e8309692\n"
    },
    {
      "commit": "2161e061cedb0944c144693c2d3f5115d3c5e39f",
      "tree": "f93f9a4ee76f1a41f3c66ad53ffeefb773b5360f",
      "parents": [
        "09d3e3937e2d25bcbb02d61c62e0170eaaf87beb"
      ],
      "author": {
        "name": "jhorvitz",
        "email": "jhorvitz@google.com",
        "time": "Thu Aug 27 10:21:27 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 10:23:59 2026 -0700"
      },
      "message": "Propagate `SerializationException` in `NestedSet` expansion methods.\n\nPiperOrigin-RevId: 972025054\nChange-Id: I551a96f3958b1c67b83b33f0696a2255526d0a5f\n"
    },
    {
      "commit": "09d3e3937e2d25bcbb02d61c62e0170eaaf87beb",
      "tree": "fdd326ac53776f8a2647a961735e23b220df6be8",
      "parents": [
        "34ae51caeb76c8c29b1a0adedf03f8266624a76c"
      ],
      "author": {
        "name": "tjgq",
        "email": "tjgq@google.com",
        "time": "Thu Aug 27 09:02:10 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 09:03:18 2026 -0700"
      },
      "message": "Prefer StandardCharsets.UTF_8 over \"UTF_8\".\n\nPiperOrigin-RevId: 971983667\nChange-Id: Ie59042e8701415c03c3ee9a6b6a469b63c27c3fa\n"
    },
    {
      "commit": "34ae51caeb76c8c29b1a0adedf03f8266624a76c",
      "tree": "9a43ef97bda2ccaf92178e6eae5c2822e30836cb",
      "parents": [
        "6be4f24dad0dff9ebbfa41dd8d31cc22e3883b57"
      ],
      "author": {
        "name": "shahan",
        "email": "shahan@google.com",
        "time": "Thu Aug 27 08:47:48 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 08:50:52 2026 -0700"
      },
      "message": "Delete legacy RequestBatcher\n\nEagerRequestBatcher fully supercedes it.\n\nPiperOrigin-RevId: 971977181\nChange-Id: I1031813e09d6228f9714e1f8baa09d7261b82551\n"
    },
    {
      "commit": "6be4f24dad0dff9ebbfa41dd8d31cc22e3883b57",
      "tree": "a92ce6a84f237237ba2ccdf9fec5a97b0e95573e",
      "parents": [
        "6707525df76e8e18bb46131a3a184e1b8c93ae5e"
      ],
      "author": {
        "name": "shahan",
        "email": "shahan@google.com",
        "time": "Thu Aug 27 07:50:50 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 07:53:23 2026 -0700"
      },
      "message": "Replace RequestBatcher with EagerRequestBatcher in ProxyReadingStore.\n\nPiperOrigin-RevId: 971951692\nChange-Id: Ib3f9158010a2bf41aa912832e86efab931163d4f\n"
    },
    {
      "commit": "6707525df76e8e18bb46131a3a184e1b8c93ae5e",
      "tree": "026d9ee4c22caff61c7a7727fb5a4195cb722aa8",
      "parents": [
        "97510ebd5a6b1cbf9b1aedef03a9bf3f4ac5dbd4"
      ],
      "author": {
        "name": "shahan",
        "email": "shahan@google.com",
        "time": "Thu Aug 27 07:46:16 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 07:47:52 2026 -0700"
      },
      "message": "Add custom batch-level rejection support to EagerRequestBatcher.\n\nSupport cancellation from RequestBatching operations.\n\nThis allows clients to observe a batch-level rejection signal, so it\ncan perform batch-level cleanup operations.\n\nPiperOrigin-RevId: 971949516\nChange-Id: I3cf0ceef8173b2f50b8abd7c4ab3a36b0906a4fe\n"
    },
    {
      "commit": "97510ebd5a6b1cbf9b1aedef03a9bf3f4ac5dbd4",
      "tree": "279e074a399af5df880f3521ad223fe15aa1925c",
      "parents": [
        "40ea00195b5cb486ce902065c04a3adbfe02195d"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Thu Aug 27 07:02:24 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 07:04:21 2026 -0700"
      },
      "message": "Improve Bazel client error messaging and diagnostics for stale server processes.\n\nWhen a Bazel server process terminates in an environment without PID 1 reaping (such as a default Docker container) or blocks in uninterruptible sleep (such as a hanging FUSE filesystem call), attempting to shut down or kill the server fails with ambiguous error messages.\n\nAdd contextual phase descriptions to clarify which termination stage is active. Add additional diagnostics on Linux to inspect `/proc/\u003cpid\u003e/stat` when SIGKILL times out, reporting whether the stale server process is a zombie (`state \u0027Z\u0027`) that requires an init reaper or blocked in uninterruptible kernel/disk sleep (`state \u0027D\u0027`).\n\nFixes https://github.com/bazelbuild/bazel/issues/16907\n\nPiperOrigin-RevId: 971931563\nChange-Id: Id4a16fc5118059b6328eb5842c7b8fc3febb31e0\n"
    },
    {
      "commit": "40ea00195b5cb486ce902065c04a3adbfe02195d",
      "tree": "b6c2a9c6c20c8e5dbb406f2021fc4253d36ef220",
      "parents": [
        "e5c6a67e216ee4bb1cddea8644f8bf4eb3c3cc58"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Thu Aug 27 06:45:24 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 06:47:16 2026 -0700"
      },
      "message": "Do not compute digests for special files in ByteStreamBuildEventArtifactUploader.\n\nWriting execution logs or build outputs to named pipes (FIFOs) when remote caching or artifact uploading was enabled caused builds to hang indefinitely. `ByteStreamBuildEventArtifactUploader` attempted to compute SHA-256 digests by reading special files, which opened the FIFO, consumed stream bytes, and blocked waiting for EOF.\n\nSpecial files (such as FIFOs, sockets, and character devices) cannot be uploaded to a remote CAS and must not be read during artifact scanning. Skipping digest calculation for special files prevents read contention on named pipes and converts their BEP URIs directly to local `file://` URIs without altering stream contents.\n\nAddresses part of https://github.com/bazelbuild/bazel/issues/28800.\n\nPiperOrigin-RevId: 971925084\nChange-Id: I930539ac9bb3dd3ea966b3620d2861d60905a834\n"
    },
    {
      "commit": "e5c6a67e216ee4bb1cddea8644f8bf4eb3c3cc58",
      "tree": "6454049879f3ef154369870f7441e67e981ba6fb",
      "parents": [
        "b64c19576c4e39e125cae091201d0834135cf065"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Thu Aug 27 06:39:14 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 06:41:54 2026 -0700"
      },
      "message": "Support relative paths and `%workspace%` in `--experimental_execution_graph_log_path`.\n\nWhen specifying a relative path for `--experimental_execution_graph_log_path` (e.g. `--experimental_execution_graph_log_path\u003dgraph.log`), Bazel previously resolved the path against `env.getOutputBase()`.\n\nPreserves the behavior of writing the default log (`action_graph.dump`) to `env.getOutputBase()` when the flag is unset.\n\nFixes https://github.com/bazelbuild/bazel/issues/22437\n\nPiperOrigin-RevId: 971922602\nChange-Id: I1bf42b62c3ef37fc951625490abc46d8ac45beee\n"
    },
    {
      "commit": "b64c19576c4e39e125cae091201d0834135cf065",
      "tree": "37396181dbd75a8e858dce7ddffd7d36e5170dfa",
      "parents": [
        "0c00d0300128d2b3e202f64a01015ae8cf761290"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Thu Aug 27 06:12:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 06:14:08 2026 -0700"
      },
      "message": "Fix infinite hang on Windows compilation actions in WaitableProcess.\n\nOccasionally on Windows, Bazel compilation actions (such as MSVC cl.exe) get stuck in an infinite wait in the Bazel server even after the compiler process has finished. When cl.exe runs, it can launch background child processes such as Microsoft\u0027s telemetry uploader (vctip.exe), which can enter an unkillable zombie state inside the Windows Job Object. Because Bazel previously waited with an INFINITE timeout for JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO after calling TerminateJobObject, any stuck child process caused the entire build server to hang forever.\n\nReplace INFINITE with a finite 5-second timeout (kJobCompletionTimeoutMsec) when calling GetQueuedCompletionStatus in WaitableProcess::WaitFor after the primary process has terminated and TerminateJobObject has been invoked. This allows Bazel to proceed after a short grace period even if background subprocesses like vctip.exe refuse to terminate. Fixes https://github.com/bazelbuild/bazel/issues/15094.\n\nPiperOrigin-RevId: 971912626\nChange-Id: I8e289d376ee7ac4bf61de7abd7a32f64893eb85d\n"
    },
    {
      "commit": "0c00d0300128d2b3e202f64a01015ae8cf761290",
      "tree": "c5c106b49d3e26a3043faa007d10dcdfba1dd820",
      "parents": [
        "a671c5e78f4a78196341cf3a487f62ff4101be4f"
      ],
      "author": {
        "name": "Kip Hamiltons",
        "email": "p0nage@live.com.au",
        "time": "Thu Aug 27 05:59:29 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 06:01:56 2026 -0700"
      },
      "message": "Fix contribute link in PR template (https://github.com/bazelbuild/bazel/pull/30885)\n\n### Description\n\nFixes \u0027contributing\u0027 link in PR template. The `.html` causes it to 404.\n\n### Build API Changes\n\nNo\n\n### Checklist\n\n- [ ] ~I have added tests for the new use cases (if any).~\n- [ ] ~I have updated the documentation (if applicable).~\n\n### Release Notes\n\nRELNOTES: None\n\nCloses #30885.\n\nPiperOrigin-RevId: 971907259\nChange-Id: I47e85f59a6e75de1f2aa4e3fb13bb4640d59e865\n"
    },
    {
      "commit": "a671c5e78f4a78196341cf3a487f62ff4101be4f",
      "tree": "e833641223cb0acb75bfeb46425b1c6c21543146",
      "parents": [
        "fe1046f2bc8f454f407ac8e85deed6a9ef26b96e"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Thu Aug 27 05:16:35 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 05:20:19 2026 -0700"
      },
      "message": "Prevent NPE crash when updating `MODULE.bazel.lock` with `null` `RepoRuleId`.\n\nWhen a lockfile contains an entry from before commit 3d60f1c or from a merge conflict resolution that lacks `repoRuleId`, GSON deserializes `RepoSpec` with `repoRuleId \u003d null`. Later, when Bazel updates and writes the lockfile in `BazelLockFileModule.updateLockfile`, serializing `RepoSpec` invokes `repoRuleId.toString()`, which throws an NPE resulting in a Bazel crash.\n\nNow we have proper `null`-safety checks in GSON TypeAdapters so that malformed lockfile entries with `null` repoRuleId are cleanly reported.\n\nFixes https://github.com/bazelbuild/bazel/issues/24716\n\nPiperOrigin-RevId: 971891689\nChange-Id: I405c61d5c6f4d20b9908083099a1e64d7f571350\n"
    },
    {
      "commit": "fe1046f2bc8f454f407ac8e85deed6a9ef26b96e",
      "tree": "ff087b9842114cd764565ce70c83b1749de8280a",
      "parents": [
        "bc1460594fe2bd4391cea87f0a75f349b276d1bb"
      ],
      "author": {
        "name": "Keith Smiley",
        "email": "keithbsmiley@gmail.com",
        "time": "Thu Aug 27 04:48:16 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 04:50:10 2026 -0700"
      },
      "message": "Add dev_dependency to include() statements (https://github.com/bazelbuild/bazel/pull/30782)\n\nThis allows repos to use separate MODULE.bazel files only for testing,\nand not fail when they are used in the BCR by other repos.\n\nFixes https://github.com/bazelbuild/bazel/issues/25362\nFixes https://github.com/bazelbuild/bazel/issues/25189\n\nCloses #30782.\n\nPiperOrigin-RevId: 971881975\nChange-Id: Ia7dc48ebe440dd2cfe2d585a6f803ea83fdcaca5\n"
    },
    {
      "commit": "bc1460594fe2bd4391cea87f0a75f349b276d1bb",
      "tree": "6805bb2e238e11ab2cbfbf8b05eb31421f622430",
      "parents": [
        "b6bc367c64938cff1ddf3d410099f9328015c188"
      ],
      "author": {
        "name": "chiwang",
        "email": "chiwang@google.com",
        "time": "Thu Aug 27 04:39:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 04:42:14 2026 -0700"
      },
      "message": "Restore dedicated thread pool for include scanning in async execution.\n\nInclude scanning (`IncludeParser`) is predominantly a CPU-bound workload (regex and token parsing over C++ headers) rather than I/O-bound. Virtual threads do not unmount from carrier threads during CPU-intensive processing, which can monopolize the JVM carrier thread pool (`ForkJoinPool`) and starve other async tasks under high concurrency.\n\nThis change restores the dedicated bounded platform thread pool (`options.getIncludeScanningParallelism()`) for include scanning in async execution to properly bound CPU concurrency.\n\nPiperOrigin-RevId: 971878996\nChange-Id: I053f071eee970f4c06136b8b8850098edc87e87c\n"
    },
    {
      "commit": "b6bc367c64938cff1ddf3d410099f9328015c188",
      "tree": "d99e989f52c522bc85d4c65c702f37e4fe8638ea",
      "parents": [
        "259f122a513089f9ece2e1471e55bc7b487663d4"
      ],
      "author": {
        "name": "Fabian Meumertzheim",
        "email": "fabian@buildbuddy.io",
        "time": "Thu Aug 27 04:07:02 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 04:08:22 2026 -0700"
      },
      "message": "Revert \"Automated rollback of commit bcb1c38.\"  (https://github.com/bazelbuild/bazel/pull/30811)\n\n### Description\nThis reverts commit https://github.com/bazelbuild/bazel/commit/8da3f0dab3d550073c04db6cb56559f542e6cf28 and relands https://github.com/bazelbuild/bazel/commit/bcb1c3827921403c54f34ebcece42ec6ebbb0cb7 with additional fixes to DiskCacheIntegrationTest.\n\n### Motivation\n\n### Build API Changes\n\nNo\n\n### Checklist\n\n- [x] I have added tests for the new use cases (if any).\n- [ ] I have updated the documentation (if applicable).\n\n### Release Notes\n\nRELNOTES: None\n\nCloses #30811.\n\nPiperOrigin-RevId: 971866277\nChange-Id: I0d5d801b218465f446842d7ce586b7d62abe4a3a\n"
    },
    {
      "commit": "259f122a513089f9ece2e1471e55bc7b487663d4",
      "tree": "13c1b407653bc92e958b44098ae5996cce9a397f",
      "parents": [
        "0e6f09da6d84d0f5048838b9992d95d2a6281043"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Thu Aug 27 02:37:09 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 02:38:55 2026 -0700"
      },
      "message": "Set verbosity on cancel requests when --worker_verbose is set.\n\nWhen --worker_verbose is enabled, regular work requests have their verbosity set to 10. Previously, cancellation requests did not set verbosity, making it difficult to enable verbose logging for debugging worker cancel requests.\n\nThis change sets the verbosity level to 10 on cancellation work requests whenever --worker_verbose is enabled, resolving Bazel issue #25803.\n\nPiperOrigin-RevId: 971830073\nChange-Id: Ib9e8c903c6efe4191ee094a56d35bc5d3fd9fd59\n"
    },
    {
      "commit": "0e6f09da6d84d0f5048838b9992d95d2a6281043",
      "tree": "2cd1a7b460e7605803184e7d09426e95d86008bb",
      "parents": [
        "a4741aafb886a50be9b98a0b79b690144f9c5082"
      ],
      "author": {
        "name": "Jonathan Perry",
        "email": "jonathan.perry@gs.com",
        "time": "Thu Aug 27 02:30:10 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 02:32:41 2026 -0700"
      },
      "message": "Support pass-through `Args` for `JavaBuilder` in `java_common.create_compilation_action` (https://github.com/bazelbuild/bazel/pull/30808)\n\nThis allows faster iteration on the `rules_java` \u003c\u003e `JavaBuilder` contract without having to wait for Bazel changes/releases. In the immediate future, this will be used for the unused-deps checking. Longer term this should also help in migrating off the native compilation code.\n\nNote: the added integration shell test is currently a no-op on CI (since we need the corresponding rules_java changes) but does allow for local testing with an overridden `@rules_java`.\n\nCloses #30808.\n\nPiperOrigin-RevId: 971826913\nChange-Id: I8047e057716475a7a4d8bff48b8c7bfe6d79ba1c\n"
    },
    {
      "commit": "a4741aafb886a50be9b98a0b79b690144f9c5082",
      "tree": "24fe83f0970050ac45aef5e6182ec5fd3d99ae33",
      "parents": [
        "0f5e81db5a65c6f0d6b57f8cad0d0decca8f6195"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Thu Aug 27 02:24:51 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 02:27:23 2026 -0700"
      },
      "message": "Handle empty environment variables in Windows test wrapper.\n\nIn Bazel\u0027s Windows test wrapper, passing an empty environment variable (such as `--action_env\u003dPATH\u003d`) caused `GetEnv` to fail. The Win32 `GetEnvironmentVariableW` function returns 0 with `GetLastError() \u003d\u003d 0` (`ERROR_SUCCESS`) for defined empty variables, but the wrapper only checked for `ERROR_ENVVAR_NOT_FOUND`, misidentifying empty variables as read errors. Furthermore, stale thread error codes from prior operations could lead to false failures.\n\nClear `GetLastError()` via `SetLastError(0)` before calling `GetEnvironmentVariableW`, and treat both `0` (`ERROR_SUCCESS`) and `ERROR_ENVVAR_NOT_FOUND` as valid empty-variable outcomes when the returned character count is 0.\n\nFixes https://github.com/bazelbuild/bazel/issues/15364\n\nRELNOTES: Fix an issue on Windows where empty environment variables (e.g. `--action_env\u003dVAR\u003d`) caused test execution failures in the test wrapper.\nPiperOrigin-RevId: 971824558\nChange-Id: I0eb1fff4d03db0faa57d52a3729a179f9cc8509d\n"
    },
    {
      "commit": "0f5e81db5a65c6f0d6b57f8cad0d0decca8f6195",
      "tree": "abc58554f31255c986c84f7559dc83b11cfb3fb1",
      "parents": [
        "9aae5a6ad69d124762d7913a71f3d12873a58ecd"
      ],
      "author": {
        "name": "justinswe",
        "email": "fernbaughj@gmail.com",
        "time": "Thu Aug 27 02:14:21 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 02:15:38 2026 -0700"
      },
      "message": "Check previous build\u0027s toplevel outputs in shouldTrustMetadata (https://github.com/bazelbuild/bazel/pull/30852)\n\n### Description\n\n`RemoteOutputChecker.shouldTrustMetadata` now references only the previous build\u0027s tracked toplevel outputs rather than its full download policy. Since the policy itself is already known to the current checker at construction time.\n\n### Motivation\n\nFixes #26924\n\n### Build API Changes\n\nNo\n\n### Checklist\n\n- [x] I have added tests for the new use cases (if any).\n- [ ] I have updated the documentation (if applicable).\n\n### Release Notes\n\nRELNOTES: Fixed unnecessary remote-cache hits in incremental BwoB builds after a previous invocation used a broader remote output download policy.\n\nCloses #30852.\n\nPiperOrigin-RevId: 971819658\nChange-Id: I64a72ba9e726c0ecf53f8ef839da3ab07440cf91\n"
    },
    {
      "commit": "9aae5a6ad69d124762d7913a71f3d12873a58ecd",
      "tree": "fafd879d896235882b23d8d62925eac862ac7b9f",
      "parents": [
        "37e52ff6805565e0988be430f920c7d8650bbb73"
      ],
      "author": {
        "name": "Fabian Meumertzheim",
        "email": "fabian@meumertzhe.im",
        "time": "Thu Aug 27 01:17:49 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 01:19:33 2026 -0700"
      },
      "message": "Harden GrpcCacheClient against misbehaving servers (https://github.com/bazelbuild/bazel/pull/30819)\n\n### Description\nFail the download early when the server sends more bytes than expected (e.g. because it ignored `read_offset` on a retry) and fail if the received size doesn\u0027t match the expected size even with `--noremote_verify_downloads`.\n\n### Motivation\nWork towards #30780\n\n### Build API Changes\n\nNo\n\n### Checklist\n\n- [x] I have added tests for the new use cases (if any).\n- [ ] I have updated the documentation (if applicable).\n\n### Release Notes\n\nRELNOTES: None\n\nCloses #30819.\n\nPiperOrigin-RevId: 971795439\nChange-Id: I0e8eb0d2c22b29d234dbc07a6d38aaf9c25a9f13\n"
    },
    {
      "commit": "37e52ff6805565e0988be430f920c7d8650bbb73",
      "tree": "efb63e9a784d40f8e8197a30cbede3577a611456",
      "parents": [
        "1a90add1c7cfe5182daf1b89e2297e1dbb59151e"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Thu Aug 27 00:20:13 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 00:21:54 2026 -0700"
      },
      "message": "Return REMOTE_CACHE_EVICTED exit code on ThinLTO imports cache eviction.\n\nThinLTO backend compilation reads `.imports` files during Skyframe input discovery prior to spawn execution. When remote cache eviction drops an imports file, `LtoBackendAction.computeImports` caught the cache miss as a generic `IMPORTS_READ_IO_EXCEPTION` (exit code 1). Because Bazel only triggers `--experimental_remote_cache_eviction_retries` when an action returns `REMOTE_CACHE_EVICTED` (exit code 39), builds fail permanently instead of retrying.\n\nIn `LtoBackendAction.computeImports`, check if an `IOException` reading the imports file is a `CacheNotFoundException` or `BulkTransferException` cache miss. If so, return `Spawn.Code.REMOTE_CACHE_EVICTED` so that input discovery failures from evicted cache entries trigger build retries.\n\nTested:\nAdded `discoverInputs_cacheNotFoundException_throwsRemoteCacheEvictedCode` and `discoverInputs_bulkTransferException_throwsRemoteCacheEvictedCode` in `LtoBackendActionTest`.\nPiperOrigin-RevId: 971771054\nChange-Id: I6c9b84c9a55d727cd930319178a946332df2d977\n"
    },
    {
      "commit": "1a90add1c7cfe5182daf1b89e2297e1dbb59151e",
      "tree": "498a695dfa644b516cb51284e621a8725c53678f",
      "parents": [
        "19553db9b2ffd3f4bbd68696f3615832583eec42"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Thu Aug 27 00:05:56 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 00:10:02 2026 -0700"
      },
      "message": "Add config() query function support to aquery (resolving #10872)\n\nThis change enables the `config(expr, word)` function in `aquery` by:\n1. Moving `ConfigFunction` from `cquery` package to `query2` package and generalizing its `eval()` method to work with any `PostAnalysisQueryEnvironment`.\n2. Lifting `getConfiguredTargetsForConfigFunction` into `PostAnalysisQueryEnvironment\u003cT\u003e` so that both `cquery` and `aquery` share identical configuration resolution and error reporting.\n3. Implementing `getConfiguredTarget(Label, BuildConfigurationValue)` and `getQueryName()` in both `ActionGraphQueryEnvironment` and `ConfiguredTargetQueryEnvironment`.\n4. Registering `ConfigFunction` in `ActionGraphQueryEnvironment.AQUERY_FUNCTIONS`.\n5. Adding unit tests for `config()` in `ActionGraphQueryTest`.\n6. Adding integration tests for `config()` in `aquery_test.sh`.\n7. Documenting `config()` in `devtools/blaze/docs_src/aquery.html`.\n\nRELNOTES: Aquery now supports the `config(expr, word)` function.\nPiperOrigin-RevId: 971764077\nChange-Id: I7ead2ed2da603a228891493d800d8d12921ff3e0\n"
    },
    {
      "commit": "19553db9b2ffd3f4bbd68696f3615832583eec42",
      "tree": "4d2249d1e4dbc69a7f6be7c30036bfbb4974649f",
      "parents": [
        "b06219e09acf4bb0b774a1242e997d9a7b9c6be9"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Thu Aug 27 00:03:14 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 00:06:26 2026 -0700"
      },
      "message": "Add --incompatible_fail_on_unknown_output_groups flag.\n\nWarn (default) or fail (when --incompatible_fail_on_unknown_output_groups is enabled) if an explicitly requested output group is not present on any top-level target or aspect.\n\nCloses #8271.\n\nPiperOrigin-RevId: 971762469\nChange-Id: Iabca244c19e270bf0a9c155999de764f88171612\n"
    },
    {
      "commit": "b06219e09acf4bb0b774a1242e997d9a7b9c6be9",
      "tree": "8535d72ee96740bd468c744bc2b8dc21b19ccae1",
      "parents": [
        "bdaf7267800751d2480b0680d84e510e43f9ca5f"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Thu Aug 27 00:01:52 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Aug 27 00:03:47 2026 -0700"
      },
      "message": "Decorate critical path spans with target label, configuration, and primary output (if requested).\n\nFixes https://github.com/bazelbuild/bazel/issues/24580\n\nPiperOrigin-RevId: 971761533\nChange-Id: I2827e34022a01e6a5cfb0f9fc26800085ad80172\n"
    },
    {
      "commit": "bdaf7267800751d2480b0680d84e510e43f9ca5f",
      "tree": "9c7e277f66c0d0da8f1f31eea4eb060a99ca0a69",
      "parents": [
        "bd75cfcf5c906fb6b88515c993edcd34bfadeecb"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Wed Aug 26 23:56:45 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 23:58:09 2026 -0700"
      },
      "message": "Omit redundant \u0027Error in fail:\u0027 prefix from Starlark fail() error messages.\n\nCalling `fail()` in Starlark previously formatted the final error line with `Error in fail: \u003cmessage\u003e` because `fail` is a builtin function and stack trace formatting prepended `Error in \u003cbuiltin\u003e: `. Because `fail()` is the standard mechanism in Starlark for rules, macros, and extensions to raise user-facing errors (such as invalid attribute values or unsupported targets), this prefix was redundant and made user errors look like internal failures within the `fail` function itself.\n\nFormat leaf `fail()` errors using the standard `Error: ` prefix, while preserving `Error in \u003cbuiltin\u003e: ` for other builtin functions (such as `getattr()`, `struct()`, or `dict()`).\n\nFor example, when a rule implementation calls `fail(\"unsupported platform: %s\" % ctx.attr.platform)`:\n\nBefore:\n```\nTraceback (most recent call last):\n\tFile \"/workspace/pkg/rules.bzl\", line 5, column 9, in _impl\n\t\tfail(\"unsupported platform: %s\" % ctx.attr.platform)\nError in fail: unsupported platform: foo\n```\n\nAfter:\n```\nTraceback (most recent call last):\n\tFile \"/workspace/pkg/rules.bzl\", line 5, column 9, in _impl\n\t\tfail(\"unsupported platform: %s\" % ctx.attr.platform)\nError: unsupported platform: foo\n```\n\nRELNOTES: Starlark `fail()` calls now format error messages with `Error: ` instead of `Error in fail: `.\nResolves https://github.com/bazelbuild/bazel/issues/21523.\nPiperOrigin-RevId: 971759352\nChange-Id: Idda5352f05c8d7c297261ca65e4d2906369513a8\n"
    },
    {
      "commit": "bd75cfcf5c906fb6b88515c993edcd34bfadeecb",
      "tree": "651f4ea4d1470546ce82caae997906291131d20a",
      "parents": [
        "b019de96f0277952cc46b1cc6b1ec7a62f54c6ca"
      ],
      "author": {
        "name": "Tobias Werth",
        "email": "twerth@google.com",
        "time": "Wed Aug 26 23:14:18 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 23:16:45 2026 -0700"
      },
      "message": "Update protobuf to 36.0.bcr.1 (https://github.com/bazelbuild/bazel/pull/30886)\n\nThe old version was yanked, breaking Bazel CI.\n\nSee https://github.com/protocolbuffers/protobuf/issues/29313\n\nCloses #30886.\n\nPiperOrigin-RevId: 971741744\nChange-Id: I71694ef2e3be447b3df7e37f8e337804607b4e11\n"
    },
    {
      "commit": "b019de96f0277952cc46b1cc6b1ec7a62f54c6ca",
      "tree": "b600e5fb76f9ce1763129a33c9c3c5ff8f01f4a9",
      "parents": [
        "b1a647f96a3e1ab3aa6b35f4c3608496ab1d6e39"
      ],
      "author": {
        "name": "shahan",
        "email": "shahan@google.com",
        "time": "Wed Aug 26 14:23:39 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 14:24:46 2026 -0700"
      },
      "message": "Replace RequestBatcher with EagerRequestBatcher in RemoteAnalysisCacheClientImpl.\n\nEagerRequestBatcher does not block and is better behaved over a broader\nrange of conditions. Due to its design, the legacy RequestBatcher had\na narrow window of effective parameters. Namely, too much concurrency would\ncause overly small batches. Too little concurrency, and the RequestBatcher\ncould itself become a bottleneck.\n\nSince the EagerRequestBatcher always dispatches when the desired batch\nsize is reached, it\u0027s concurrency setting never becomes a bottleneck.\n\nPiperOrigin-RevId: 971500219\nChange-Id: I1e628c35d568df724020018b0249ef82e0e2c9c4\n"
    },
    {
      "commit": "b1a647f96a3e1ab3aa6b35f4c3608496ab1d6e39",
      "tree": "e10c8f65e374679c93b1884fafd257c9dca5fdf6",
      "parents": [
        "efe8aabffd25d13b14587acb614780139fbe415d"
      ],
      "author": {
        "name": "tjgq",
        "email": "tjgq@google.com",
        "time": "Wed Aug 26 13:55:21 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 13:57:59 2026 -0700"
      },
      "message": "Delete `statNullable`.\n\nPiperOrigin-RevId: 971483607\nChange-Id: I414294beeb9fe96e9b9a0088f24159fa635ac4d8\n"
    },
    {
      "commit": "efe8aabffd25d13b14587acb614780139fbe415d",
      "tree": "b57bed9d75f8503a7b259eaf16fef508a5bb7270",
      "parents": [
        "93d657610677baef395991e46517915317fa7cbc"
      ],
      "author": {
        "name": "jhorvitz",
        "email": "jhorvitz@google.com",
        "time": "Wed Aug 26 13:19:37 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 13:21:29 2026 -0700"
      },
      "message": "Inline singleton pieces in `NestedSet#splitIfExceedsMaximumSize`.\n\nWhen splitting a `NestedSet` whose successor count is not evenly divisible\nby `maxDegree`, the final piece would previously be stored as a single-element\n`Object[]`. When added as a transitive member to a new `NestedSet`, this violated the invariant that non-leaf transitive arrays have length \u003e\u003d 2.\n\nFix by directly inlining singleton pieces into the pieces array.\n\nPiperOrigin-RevId: 971463001\nChange-Id: If49958361412fbe45a9e35b2670d310f6147b645\n"
    },
    {
      "commit": "93d657610677baef395991e46517915317fa7cbc",
      "tree": "1a927134d373b14494a3d6a4e5a2634d3d2fdd0c",
      "parents": [
        "d94db52c5a1265ceac4531c962fc548e2f718c93"
      ],
      "author": {
        "name": "tjgq",
        "email": "tjgq@google.com",
        "time": "Wed Aug 26 12:19:31 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 12:22:20 2026 -0700"
      },
      "message": "Replace `statNullable` with `statIfFound`.\n\nThe former silences errors other than non-existence, which is almost never the right thing to do.\n\nPiperOrigin-RevId: 971430427\nChange-Id: I774af67eb20aa56c7b0f891d7a86faed9e3b4147\n"
    },
    {
      "commit": "d94db52c5a1265ceac4531c962fc548e2f718c93",
      "tree": "8f26a8f9dc21305647d07344a31e399c54c9f903",
      "parents": [
        "f1c09370f4dd1fa8294e31aaf8b112d42e191be3"
      ],
      "author": {
        "name": "arostovtsev",
        "email": "arostovtsev@google.com",
        "time": "Wed Aug 26 12:04:02 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 12:05:57 2026 -0700"
      },
      "message": "Remove support for ellipses in the list type arg to `Callable` type application\n\nIt\u0027s syntactically incompatible with Python3.\n\nInstead, Python uses forms like `Callable[Concatenate[int, ...], bool]` (see\nPEP 612), which we may want to support at some point, but not for now.\n\nWorking towards #27370\n\nPiperOrigin-RevId: 971421832\nChange-Id: If180a27a2c3effeae5e512c0ac4c39f52c651c81\n"
    },
    {
      "commit": "f1c09370f4dd1fa8294e31aaf8b112d42e191be3",
      "tree": "abe10163fa12f5d302cba7a97d17cb9d334f7249",
      "parents": [
        "aca7902a97b147816acf3059d2c47d2899fc021b"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Wed Aug 26 11:39:11 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 11:40:42 2026 -0700"
      },
      "message": "Prevent synchronous cleanupSandboxBase from blocking on interrupted commands\n\nWhen `shouldCleanupSandboxBase` is true or during abrupt command termination,\n`cleanupSandboxBase()` synchronously deletes directories. By having\n`SpawnRunner.cleanupSandboxBase()` declare `throws InterruptedException` and throw\non `Thread.currentThread().isInterrupted()` during directory traversal,\n`SandboxModule.afterCommand()` catches the interruption and skips blocking\nsynchronous directory tree deletions and `checkSandboxBaseTopOnlyContainsPersistentDirs()`\nvalidations on Ctrl-C.\n\nPart of https://github.com/bazelbuild/bazel/issues/19533\n\nPiperOrigin-RevId: 971406665\nChange-Id: I7328b1d5e8cac3088cdb8816e20515e972d66f3f\n"
    },
    {
      "commit": "aca7902a97b147816acf3059d2c47d2899fc021b",
      "tree": "54872118d241df78590485b7c4817afd69ab77d3",
      "parents": [
        "385a45fabe02839c36ea7f9582cbcc88c6b60df0"
      ],
      "author": {
        "name": "twerth CA",
        "email": "twerth@google.com",
        "time": "Wed Aug 26 11:28:54 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 11:31:14 2026 -0700"
      },
      "message": "Do not emit test timeout and size warnings for cached tests.\n\nWhen `--test_verbose_timeout_warnings` is enabled, Bazel checks whether a passing test\u0027s execution time is within the expected range for its specified timeout and size (e.g., `MODERATE` or `LONG`).\n\nHowever, when a test is cached locally or remotely, its recorded `test_process_times` duration reflects only the short cache lookup or download time (e.g. ~200ms) rather than the actual test execution duration.\n\nFixes https://github.com/bazelbuild/bazel/issues/13103\n\nPiperOrigin-RevId: 971400182\nChange-Id: Iaad15d051c399676999d30269cb1657e04dd869b\n"
    },
    {
      "commit": "385a45fabe02839c36ea7f9582cbcc88c6b60df0",
      "tree": "e595c46e2dc55d1921df49cfb9225af28f98adef",
      "parents": [
        "7ae49a6dfdc996e5e09d929eef42010789c609c4"
      ],
      "author": {
        "name": "pzembrod",
        "email": "pzembrod@google.com",
        "time": "Wed Aug 26 10:03:24 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 10:05:09 2026 -0700"
      },
      "message": "Forward fix for broken ProtoLangToolchainTest\n\nPiperOrigin-RevId: 971349260\nChange-Id: I7ee83b38962e915aa66214ddbc88c226a4bd809a\n"
    },
    {
      "commit": "7ae49a6dfdc996e5e09d929eef42010789c609c4",
      "tree": "7b81aafb4e9d73ad0e0d9424ed19f7e5fbd73e29",
      "parents": [
        "c061834ad2c574889f0b744ae5c7786cd6ef1c63"
      ],
      "author": {
        "name": "Fabian Meumertzheim",
        "email": "fabian@meumertzhe.im",
        "time": "Wed Aug 26 08:25:30 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 08:28:34 2026 -0700"
      },
      "message": "Re-enable buildtool integration tests on Windows (https://github.com/bazelbuild/bazel/pull/30752)\n\n### Description\n\nRemoves the `no_windows` tag from 20 tests in `src/test/java/com/google/devtools/build/lib/buildtool` and from `//src/test/java/com/google/devtools/build/lib/runtime:ConfigCommandTest`, and gives every tag that remains a comment explaining why.\n\n### Motivation\n\n### Build API Changes\n\nNo\n\n### Checklist\n\n- [x] I have added tests for the new use cases (if any).\n- [ ] I have updated the documentation (if applicable).\n\n### Release Notes\n\nRELNOTES: None\n\nCloses #30752.\n\nPiperOrigin-RevId: 971297700\nChange-Id: I7210fd4d2bb2a8e0aac9323f0198c02d12bb2730\n"
    },
    {
      "commit": "c061834ad2c574889f0b744ae5c7786cd6ef1c63",
      "tree": "cdc2b0c413fce94ca1f437a3a61e6b36b22a7da4",
      "parents": [
        "5c8f44dd387d92886c2ef7aabee03152f9143e73"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Wed Aug 26 03:47:50 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Aug 26 03:49:14 2026 -0700"
      },
      "message": "Remove unused verboseFailures field from GoogleChannelConnectionFactory.\n\nPiperOrigin-RevId: 971172772\nChange-Id: I7cad273041b352e2814c2ed9ffa9afe3677f6681\n"
    },
    {
      "commit": "5c8f44dd387d92886c2ef7aabee03152f9143e73",
      "tree": "086f6f850d7e0998f7698103decaaef4cd1e217a",
      "parents": [
        "609cb51089a86f7e40552a1f79c16992376f06db"
      ],
      "author": {
        "name": "gregce",
        "email": "gregce@google.com",
        "time": "Tue Aug 25 18:45:40 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 18:47:09 2026 -0700"
      },
      "message": "Don\u0027t add `ST-\u003chash\u003e` to exec config outputs when the target platform sets flags.\n\nSee https://bazel.build/reference/be/platforms-and-toolchains#platform-flags.\n\nConsider:\n\n```\n$ bazel build //foo --platforms\u003d//some:platform\n```\n\nwhere `//some:platform` sets a flag that propagates to the exec config.\n\nWithout this change, exec-configured deps have a Starlark transition hash in their `bazel-out/\u003cconfig\u003e/...` paths.\n\nThat\u0027s because the baseline exec configuration is computed by applying the exec transition to the top-level `BuildOptions`. If that doesn\u0027t have the platform flag, then when we encounter an actual exec configuration it won\u0027t match because the `targetOptions -\u003e platformFlags -\u003e execTransition -\u003e execOptions` sequence was never faithfully reproduced in the baseline.\n\nNote we can\u0027t update `BaselineOptionsFunction` to apply that sequence because that function *cannot* Skyframe-depend on both the target and exec baselines. Depending on *exactly* one is how Bazel supports the feature of not re-analyzing exec-configured graph nodes when target-only build flags change.\n\nSee `platform_based_flags_test.sh` for minimal examples.\n\nPiperOrigin-RevId: 970935053\nChange-Id: Ifd4c6b8ca08794f53b2b108030794c5003afd660\n"
    },
    {
      "commit": "609cb51089a86f7e40552a1f79c16992376f06db",
      "tree": "e05b8eade34ca8be1eb5ff113a930a609f000919",
      "parents": [
        "355ad8f5d24b671f21820c191446f1e4ac264f30"
      ],
      "author": {
        "name": "tjgq",
        "email": "tjgq@google.com",
        "time": "Tue Aug 25 11:10:49 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 11:12:41 2026 -0700"
      },
      "message": "Prefer StandardCharsets.ISO_8859_1 over \"ISO-8859-1\".\n\nPiperOrigin-RevId: 970671249\nChange-Id: Ie5656f93cc87925b975728a73dbda223d0288e62\n"
    },
    {
      "commit": "355ad8f5d24b671f21820c191446f1e4ac264f30",
      "tree": "15511ffb6fb2e2fa13114fbd5ac9555844467854",
      "parents": [
        "5f6c3148fe2bab8cdbb1d55ab93fb4abe1661591"
      ],
      "author": {
        "name": "Fabian Meumertzheim",
        "email": "fabian@buildbuddy.io",
        "time": "Tue Aug 25 10:09:30 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 10:12:32 2026 -0700"
      },
      "message": "Let TaskDeduplicator callers decide which executions to join (https://github.com/bazelbuild/bazel/pull/30516)\n\n### Description\n\n`TaskDeduplicator` deduplicated executions by key alone, so callers with different requirements either shared an execution that didn\u0027t satisfy all of them or had to be separated into different keys, which also gives up sharing in the direction where it is safe.\n\nEvery execution is now started with caller-provided attributes and every caller supplies a predicate over them, so the join relation can be asymmetric: a caller that needs little joins an execution that produces more, while a caller that needs more starts its own and takes over as the execution that subsequent callers see. The decision is made inside a single `ConcurrentHashMap.compute`, which also lets the retry loop around a concurrently canceled execution go away. `executeIfNew` and `executeUnconditionally` are replaced by a single `execute`.\n\n`maybeJoinExecution` is removed as its only use is questionable: Having a `DISCARD` build wait for a `KEEP` build is not a clear performance win since the latter may issue network calls.\n\nThis also fixes a caller that cancels its future releasing its reference to the shared execution twice: `IndividuallyCancelableFuture` completed itself with `setFuture`, which cancels its argument when it has already been canceled. This was harmless as used today, but not obvious without referring to Guava code and potentially problematic for future changes.\n\n### Motivation\n\nSimplify the interface of `TaskDeduplicator` and make its inner working more obvious. At the same time, make the reuse of ongoing executions more explicit and flexible in `MerkleTreeComputer`.\n\n### Build API Changes\n\nNo\n\n### Checklist\n\n- [x] I have added tests for the new use cases (if any).\n- [ ] I have updated the documentation (if applicable).\n\n### Release Notes\n\nRELNOTES: None\n\nCloses #30516.\n\nPiperOrigin-RevId: 970629545\nChange-Id: Ib041dbc815d33349dcf137a3720864d8ac26ea51\n"
    },
    {
      "commit": "5f6c3148fe2bab8cdbb1d55ab93fb4abe1661591",
      "tree": "90d6003743f303ebc8e2a9cbb46fff63853601d5",
      "parents": [
        "1086bf671acbb91b6eaaaea0fe152480f7ab3696"
      ],
      "author": {
        "name": "chiwang",
        "email": "chiwang@google.com",
        "time": "Tue Aug 25 10:07:01 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 10:09:19 2026 -0700"
      },
      "message": "Decouple RemoteRewoundActionSynchronizer from RemoteActionInputFetcher by depending on AbstractActionInputPrefetcher.\n\nPiperOrigin-RevId: 970627798\nChange-Id: I3a2015b89dbbfd9701d7adbba63c65335ae279ae\n"
    },
    {
      "commit": "1086bf671acbb91b6eaaaea0fe152480f7ab3696",
      "tree": "e2d58c3d7ee410a2cd94fb3d4c4bd3c0154ab07e",
      "parents": [
        "24485594244101c3e92f439a4ac4cd1347c5a3fa"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Tue Aug 25 09:38:39 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 09:40:56 2026 -0700"
      },
      "message": "Handle null error messages gracefully when constructing Interrupted FailureDetail messages.\n\nFixes https://github.com/bazelbuild/bazel/issues/13352\n\nPiperOrigin-RevId: 970609582\nChange-Id: I12f165cf62798a6b8b54d66c03f3fd4f22774e23\n"
    },
    {
      "commit": "24485594244101c3e92f439a4ac4cd1347c5a3fa",
      "tree": "c7521a0c0021527832adc912adf68466a3274e4f",
      "parents": [
        "07052d700e7a25e5928efed659ece9b6d8add374"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Tue Aug 25 07:14:41 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 07:16:43 2026 -0700"
      },
      "message": "Memoize ServerCapabilities in ReferenceCountedChannel to prevent connection pool exhaustion.\n\nReferenceCountedChannel.getServerCapabilities() previously acquired a connection lease from DynamicConnectionPool on every invocation. When multiple Skyframe threads perform concurrent action cache checks (such as through CombinedCache), competing for connection leases leads to pool exhaustion, latency spikes, and potential deadlocks.\n\nMemoize the ServerCapabilities result in ReferenceCountedChannel so the connection lease and capability query occur at most once per channel lifetime.\n\nSpeculatively fixes https://github.com/bazelbuild/bazel/issues/25308\n\nPiperOrigin-RevId: 970533672\nChange-Id: I14f5076c6b6863b6674e55cfc733db21aa549a9d\n"
    },
    {
      "commit": "07052d700e7a25e5928efed659ece9b6d8add374",
      "tree": "89142828a23510eaf5d7d4473cce7c96bdddc145",
      "parents": [
        "da4eb6a802a7ea108d527e7fffb937bca41d557c"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Tue Aug 25 06:54:31 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 06:56:11 2026 -0700"
      },
      "message": "Wait for pending asynchronous tree deletions during shutdown.\n\nEnsure AsynchronousTreeDeleter.shutdown() waits for all pending async tree deletions to finish using awaitTermination. This matches the documented behavior in SandboxOptions and prevents incomplete trash deletions when the server shuts down.\n\nPart of https://github.com/bazelbuild/bazel/issues/29564\n\nPiperOrigin-RevId: 970524629\nChange-Id: I9dc7cbd95d31e07a7aa7beb54ad5098a8551e46e\n"
    },
    {
      "commit": "da4eb6a802a7ea108d527e7fffb937bca41d557c",
      "tree": "43a519c85665120af8f8422953b8740a2657d548",
      "parents": [
        "b3e2c24d83c21ac28eb695a0036393a263d88d1b"
      ],
      "author": {
        "name": "chiwang",
        "email": "chiwang@google.com",
        "time": "Tue Aug 25 06:46:41 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 06:48:41 2026 -0700"
      },
      "message": "Consolidate action rewinding tests into BuildWithoutTheBytesIntegrationTestBase.\n\nMove action rewinding integration tests from `BuildWithoutTheBytesIntegrationTest` to `BuildWithoutTheBytesIntegrationTestBase` to make them reusable across test subclasses, and dynamically configure spawn strategies during eviction steps.\n\nPiperOrigin-RevId: 970521193\nChange-Id: Iee61664fd995ab003f3293aedfb91a974b7d8160\n"
    },
    {
      "commit": "b3e2c24d83c21ac28eb695a0036393a263d88d1b",
      "tree": "0b961bf7bfe1707cf9c171a3ccafc0d8304a3217",
      "parents": [
        "925314cbf21b6a698ffbecea2ae161e84ca86801"
      ],
      "author": {
        "name": "pcloudy",
        "email": "pcloudy@google.com",
        "time": "Tue Aug 25 05:58:55 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 06:00:50 2026 -0700"
      },
      "message": "Ensure ResourceCollector executes a final collection pass on stop.\n\nPreviously, ResourceCollector abruptly exited the collection loop upon\ninterruption without performing a collection pass for the tail time interval\nbetween the last 200 ms sleep tick and when the profiler was stopped. For fast\nbuilds, this caused metrics like Skyframe ACTION_EXECUTION counts to be omitted\nentirely from the JSON trace profile, leading to flaky failures in integration\ntests (such as profiler_test).\n\nBuildkite failure: https://buildkite.com/bazel/bazel-bazel/builds/36681#01a035ac-dc09-4093-9c89-8824e93b8452\n\nWrap the collection loop in a try-finally block in ResourceCollector that runs\none last collectOnce pass before exiting, ensuring metrics up to the stop\ntimestamp are fully recorded into the profile.\n\nAlso guard against null SystemNetworkStatsService in LocalResourceUsageCollectors\nand NetworkMetricsCollector, which can be null in test environments where\nnetwork services are not registered.\n\nPiperOrigin-RevId: 970500451\nChange-Id: Ib6edd35fef47ddc134b9c7f152f09ff5177bddcf\n"
    },
    {
      "commit": "925314cbf21b6a698ffbecea2ae161e84ca86801",
      "tree": "bc9ea74c511322af84574460c1858ed232589a79",
      "parents": [
        "e8d8fe72a1118b10b0a51719700dbe5c796ba245"
      ],
      "author": {
        "name": "tjgq",
        "email": "tjgq@google.com",
        "time": "Tue Aug 25 05:12:14 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 05:15:13 2026 -0700"
      },
      "message": "Replace AutoValue with record.\n\nPiperOrigin-RevId: 970481809\nChange-Id: I36477851fc20f59b2e935eba1529f4c05f29fea1\n"
    },
    {
      "commit": "e8d8fe72a1118b10b0a51719700dbe5c796ba245",
      "tree": "1051f22a71fe97820e4286d8594904bdf330e851",
      "parents": [
        "341a7cbab39dc87321ca8f1ccf02c70ac59c6900"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Tue Aug 25 03:28:42 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 03:32:01 2026 -0700"
      },
      "message": "Fix eager startup of remote execution distributor when disabled.\n\nPiperOrigin-RevId: 970439448\nChange-Id: Iadea078be2b5e9558c8b7371b7f8620a2048c39b\n"
    },
    {
      "commit": "341a7cbab39dc87321ca8f1ccf02c70ac59c6900",
      "tree": "4920c4bee81ed269885151fde75c5edb69844192",
      "parents": [
        "84266677dc51e2140fa51cee4259531860b7754b"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Tue Aug 25 03:07:07 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 03:09:39 2026 -0700"
      },
      "message": "Automated rollback of commit 3d52724e735544f11140c65221c49753c8f73d2e.\n\n*** Reason for rollback ***\n\nBreaks MacOS last green, also several structural issues (we need to merge cert bundles instead of replacing them).\n\nPiperOrigin-RevId: 970431112\nChange-Id: Ic5acf1f5d32c83ec184c53464244f296e7fdc5f9\n"
    },
    {
      "commit": "84266677dc51e2140fa51cee4259531860b7754b",
      "tree": "a22cd43aef91ab497134204487fed5ffb4ea8127",
      "parents": [
        "7486638c4a3e904f9d3d4e61691ee75f34652682"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Tue Aug 25 03:03:46 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 03:05:25 2026 -0700"
      },
      "message": "Handle CRLF line endings in workspace status parsing\n\nFollow-up to https://github.com/bazelbuild/bazel/pull/28921.\n\nWhen `--workspace_status_command` outputs Windows-style CRLF (`\\r\\n`) line endings, splitting lines on `\\n` without stripping trailing `\\r` caused carriage returns to remain attached to keys or values, and blank `\\r\\n` lines to produce phantom keys.\n\n`WorkspaceStatusAction` and `BazelWorkspaceStatusModule` now use `Splitter.on(\u0027\\n\u0027).trimResults(CharMatcher.is(\u0027\\r\u0027)).omitEmptyStrings()` to cleanly strip carriage returns and ignore blank lines. Added unit tests for CRLF handling in both status parsers.\n\nRELNOTES: None\nPiperOrigin-RevId: 970429479\nChange-Id: I4ae4040f3caa75b175df6579a1a8f32fbcf75ffc\n"
    },
    {
      "commit": "7486638c4a3e904f9d3d4e61691ee75f34652682",
      "tree": "353e11f8f5dbd58a1a76852e6e9019e7a9c3520d",
      "parents": [
        "6fec0932718b11b117227bd852d099ca5f4167f7"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Tue Aug 25 02:53:37 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 02:56:24 2026 -0700"
      },
      "message": "Use switch with pattern matching in ActionArtifactCycleReporter.\n\nConverts if-else chains on key.argument() in prettyPrint and getLabel to switch expressions with pattern matching and guarded patterns.\n\nPiperOrigin-RevId: 970424979\nChange-Id: I053dfb724546531be15b50001f830393b13cc673\n"
    },
    {
      "commit": "6fec0932718b11b117227bd852d099ca5f4167f7",
      "tree": "aa567af56b09e7d77628597d029070eaa83576cc",
      "parents": [
        "5b6532fafb37fe2e8a64d671e54358f5f8dc0ec4"
      ],
      "author": {
        "name": "Tyler French",
        "email": "french.tyler.d@gmail.com",
        "time": "Tue Aug 25 02:52:24 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 02:54:35 2026 -0700"
      },
      "message": "Skip chunk downloads by lazily indexing output files (https://github.com/bazelbuild/bazel/pull/30531)\n\nThere are many valid reasons to run without a disk cache, but without one there are no download savings. Even when `SplitBlob` reports that a new blob shares most of its chunks with an output already on disk, the client refetches every chunk from the remote cache.\n\nThis adds a `ChunkLocationMap`, an in-memory map from chunk digest to a file and byte offset where that chunk was recently downloaded. Locations are recorded after each chunked download and checked before each chunk fetch. On a hit the chunk is read locally instead. Locations are only hints into files that may be rewritten at any time, so every local read is verified against the chunk digest and any failure is just a miss. This saves downloads without the storage overhead and complexity of a disk cache. The map stores no content, is capped at 100k entries, and follows the pattern of `knownMissingCasDigests`. It is held on `RemoteModule` across commands and cleared on clean. This has been enabled in BuildBuddy executors for some time. Hit rates are about 20-50% of chunks even within an invocation, and can get much higher.\n\nTo measure, I built `//src:bazel-dev` (114 outputs over the 2MB chunking threshold) at each of the last 40 commits of master, using BuildBuddy\u0027s production cache (blake3, zstd, no disk cache, `--remote_download_all`). All numbers come from `--remote_grpc_log`, comparing SplitBlob responses to ByteStream reads. A cold full download after a clean served 22-31% of chunk fetches locally. Walking the commits again, each build downloads its changed outputs with the previous commit\u0027s outputs already on disk. Across those builds, 85.7% of chunk fetches were served locally (11.6 GB of 13.3 GB). A rebuilt large output fetched 60-90 MB instead of ~526 MB, mostly reusing chunks from its own previous version. After the walk the map held 2,622 entries, about 540 KB. The map costs ~205 bytes per entry, so the 100k cap bounds it at ~20 MB. With chunking disabled the map has no entries and no measurable memory.\n\nCloses #30531.\n\nPiperOrigin-RevId: 970424427\nChange-Id: I8ff60850f65f17f72790110a2c205b54f5f2f11b\n"
    },
    {
      "commit": "5b6532fafb37fe2e8a64d671e54358f5f8dc0ec4",
      "tree": "bd42ba254b4742b9b55e6adafdb8ffd5a768575e",
      "parents": [
        "bba8c513e0ecde5edc8f7cf2cca444a5c8e7721d"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Tue Aug 25 02:08:55 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 02:11:47 2026 -0700"
      },
      "message": "Include configuration mnemonic in action execution error messages\n\nWhen an action execution fails, `CommandFailureUtils.describeCommandFailure` previously formatted the error without the configuration mnemonic/checksum:\n\nBefore:\n```\nERROR: /path/to/pkg/BUILD:1:1: CppCompile hello_binary.o failed: (Exit 1): gcc failed: error executing CppCompile command (from target //:hello_binary) /usr/bin/gcc ...\n```\n\nIf `//:hello_binary` failed when built under a configuration transition (e.g. as a dependency of `//:broken_hello_filegroup`), users could not see from the error output why the action failed in that context but succeeded when built directly.\n\nAfter:\n```\nERROR: /path/to/pkg/BUILD:1:1: CppCompile hello_binary.o failed: (Exit 1): gcc failed: error executing CppCompile command (from target //:hello_binary [k8-fastbuild-ST-4e2b1c0a]) /usr/bin/gcc ...\n```\n\nThis CL includes the configuration checksum / mnemonic in action execution error messages, making transition-specific failures immediately identifiable.\n\nFixes part of https://github.com/bazelbuild/bazel/issues/18139.\n\nPiperOrigin-RevId: 970402874\nChange-Id: Iba3dab59f3e0a2229f5e1ccea5db9589727d05c7\n"
    },
    {
      "commit": "bba8c513e0ecde5edc8f7cf2cca444a5c8e7721d",
      "tree": "d57c3526960e7976aed5ed96de3dae8aa876276a",
      "parents": [
        "01f24e32fbb621d3a741912ddb6a5ebcd643856d"
      ],
      "author": {
        "name": "Fabian Meumertzheim",
        "email": "fabian@meumertzhe.im",
        "time": "Tue Aug 25 02:06:22 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 02:09:55 2026 -0700"
      },
      "message": "Await remote repo materialization during teardown (https://github.com/bazelbuild/bazel/pull/30841)\n\n### Description\n\n### Motivation\n`RemoteExternalOverlayFileSystem#afterCommand` cleared the per-command fields and dropped the in-memory repo contents while `shutdownNow` had merely interrupted the completion of the materialization threads. A user interrupt of the build at this point could lead to NPEs and corruption in the in-memory repo.\n\n### Build API Changes\n\nNo\n\n### Checklist\n\n- [ ] I have added tests for the new use cases (if any).\n- [ ] I have updated the documentation (if applicable).\n\n### Release Notes\n\nRELNOTES: None\n\nCloses #30841.\n\nPiperOrigin-RevId: 970401600\nChange-Id: Ief1a04e54a7a6f7cef88844b6b53a4144cca02e2\n"
    },
    {
      "commit": "01f24e32fbb621d3a741912ddb6a5ebcd643856d",
      "tree": "865d64f553bf67dc457b599a4095ce4cb59c51e9",
      "parents": [
        "6197a5ff6ecc70471a5d6833ea86e0836c660349"
      ],
      "author": {
        "name": "wade-arista",
        "email": "wade@arista.com",
        "time": "Tue Aug 25 02:06:07 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 02:07:35 2026 -0700"
      },
      "message": "Fix --workspace_status_command empty value handling (https://github.com/bazelbuild/bazel/pull/28921)\n\n### Description\nparseWorkspaceStatus() was silently discarding lines without a space due to input.trim() mangling trailing-space-at-EOF combined with the key-only check skipping them. parseValues() had the same key-only discard behavior.\n\nBoth now store an empty string for keys with no value, and skip genuinely empty lines. Unit tests added for both parsers covering key-only, trailing-space, and EOF edge cases.\n\n### Motivation\nSpecific cases of interest:\n\n1. Key only with no trailing space:\n\n    echo \"KEY_ONLY\"\n    echo \"KEY_WITH_VALUE value\"\n\n2. Key only entry at EOF (trailing space optional):\n\n    echo \"KEY_WITH_VALUE value\"\n    echo \"KEY_ONLY \"\n\nFixes #16037\n\n### Build API Changes\nNo\n\n### Checklist\n\n- [X] I have added tests for the new use cases (if any).\n- [x] I have updated the documentation (if applicable).\n\n### Release Notes\n\nRELNOTES: None\n\nCloses #28921.\n\nPiperOrigin-RevId: 970401476\nChange-Id: I8509a4e13cb5e1546698cab584d74cbb647ddfb1\n"
    },
    {
      "commit": "6197a5ff6ecc70471a5d6833ea86e0836c660349",
      "tree": "c956c5dde68b3fcc983b522f3731aeeb13724ab9",
      "parents": [
        "d6995b63ac5e65469b78391ffe3d8b48c3701608"
      ],
      "author": {
        "name": "Fabian Meumertzheim",
        "email": "fabian@meumertzhe.im",
        "time": "Tue Aug 25 01:58:31 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 02:00:13 2026 -0700"
      },
      "message": "Fix String misencoding in event and terminal printing (https://github.com/bazelbuild/bazel/pull/30648)\n\n### Description\nThe new warning supressions masked real encoding issues that could be reached via `Event` messages.\n\nFix all of them by enforcing the internal string encoding. Update the tests to verify the correct handling of Bazel\u0027s internal encoding rather than UTF-8, which isn\u0027t used in prod.\n\n### Motivation\nd4cd8d91e76f46c2919eda1f98deb02a9d8a8f53\n\n### Build API Changes\n\nNo\n\n### Checklist\n\n- [ ] I have added tests for the new use cases (if any).\n- [ ] I have updated the documentation (if applicable).\n\n### Release Notes\n\nRELNOTES: None\n\nCloses #30648.\n\nPiperOrigin-RevId: 970397671\nChange-Id: I27a978eda2147e396453aacc00a0485c4ad8de97\n"
    },
    {
      "commit": "d6995b63ac5e65469b78391ffe3d8b48c3701608",
      "tree": "640b084e67b30ee349fcd5ef9d057c07e4bbd148",
      "parents": [
        "61218bb42bdd168c785a32f9ce1d1645381f1aa1"
      ],
      "author": {
        "name": "Fabian Meumertzheim",
        "email": "fabian@meumertzhe.im",
        "time": "Tue Aug 25 01:46:43 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 01:48:24 2026 -0700"
      },
      "message": "Report internal output groups in the \"nothing to build\" message (https://github.com/bazelbuild/bazel/pull/30750)\n\n### Description\n\nOutput groups whose name starts with `_` are deliberately excluded from the artifacts that `--show_result` lists, but they are still built. `--output_groups` also never disables the `_validation` output group, which every rule aggregates transitively from its dependencies.\n\nTogether, this means that `bazel build --output_groups\u003d\u003cgroup that is empty or does not exist\u003e //foo` reports \"nothing to build\" while executing every action needed to produce `//foo`\u0027s transitive validation outputs. The same happens with `--output_groups\u003d-default`, which keeps building the target\u0027s runfiles via `_hidden_top_level_INTERNAL_`.\n\nThis PR reports that these output groups were built instead, without naming them since Bazel requests them by itself, and points at `--norun_validations` when validation outputs are among them:\n\n```\nTarget //foo:bar up-to-date (nothing to build except validation outputs, use --norun_validations to skip them)\nTarget //foo:bar up-to-date (nothing to build except internal output groups)\nTarget //foo:bar up-to-date (nothing to build except validation outputs and other internal output groups, use --norun_validations to skip validations)\n```\n\nA target that genuinely has nothing to build still reports `(nothing to build)`, and targets with artifacts to show are unaffected.\n\n### Motivation\n\nReported in #30749: `bazel build --output_groups\u003dthisoutputgroupdoesnotexist //src:bazel` on a clean Bazel checkout says \"nothing to build\" and then runs 3778 actions.\n\nThe work itself is intended. `//src:bazel` transitively aggregates the one-version check of `//src/main/java/com/google/devtools/build/lib/bazel:BazelServer` (enabled by `--experimental_one_version_enforcement\u003dERROR` in Bazel\u0027s own `.bazelrc`) into its `_validation` output group, and that single validation action takes the whole runtime classpath — 1236 generated jars — as its inputs. What is wrong is the report: the console claims nothing happened while the build did almost everything.\n\nFixes #30749\n\n### Build API Changes\n\nNo\n\n### Checklist\n\n- [x] I have added tests for the new use cases (if any).\n- [ ] I have updated the documentation (if applicable).\n\n### Release Notes\n\nRELNOTES: None\n\nCloses #30750.\n\nPiperOrigin-RevId: 970391829\nChange-Id: Ie0d8f3b5cf1c6d6434b97d13b49afcf8471571ec\n"
    },
    {
      "commit": "61218bb42bdd168c785a32f9ce1d1645381f1aa1",
      "tree": "9719fababf75694b0e983729da7250357abc3437",
      "parents": [
        "68fcbd92873ff1bfb78843e6fbc47ec5df48c10d"
      ],
      "author": {
        "name": "JonathanPerry651",
        "email": "jonathan.perry@gs.com",
        "time": "Tue Aug 25 01:00:32 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 01:01:37 2026 -0700"
      },
      "message": "JavaBuilder changes for unused dependencies checking (https://github.com/bazelbuild/bazel/pull/30807)\n\nThis pull request contains the JavaBuilder-side changes for unused dependencies checking, splitting the functionality as requested by @hvadehra in https://github.com/bazelbuild/bazel/pull/29770.\n\nCloses #30807.\n\nPiperOrigin-RevId: 970370525\nChange-Id: Icfe4e07d825db282af54c6e40ae9dc900593f706\n"
    },
    {
      "commit": "68fcbd92873ff1bfb78843e6fbc47ec5df48c10d",
      "tree": "216049ba166fd1c941c746c59a29137cbda1a4fc",
      "parents": [
        "3a9b19c85b11c8a7eaa07013e052bb92d4dc8132"
      ],
      "author": {
        "name": "Jordan Mele",
        "email": "mele@canva.com",
        "time": "Tue Aug 25 00:30:17 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Aug 25 00:31:52 2026 -0700"
      },
      "message": "Document `--build_request_id` (https://github.com/bazelbuild/bazel/pull/30805)\n\n### Description\n\nDocuments `--build_request_id`, covering it\u0027s intended purpose and where the value is used.\n\n`OptionDocumentationCategory.UNCATEGORIZED` used as no other more suitable currently documentation category exists.\n\n### Motivation\n\nTo address a documentation gap currently poorly covered by:\n- https://github.com/bazelbuild/bazel/issues/15036#issuecomment-1073072405\n- https://github.com/buildbarn/bb-remote-execution/blob/13313e6ab05b00769af48cf5d6e4926ce15b1f2b/pkg/proto/configuration/scheduler/scheduler.proto#L144-L149\n- https://www.hermetiq.com/docs/configuration#:~:text\u003dbuild%20%2F%2F%2E%2E%2E-,%2D%2Dbuild%5Frequest%5Fid\n- https://github.com/buildfarm/buildfarm/blob/6fdea379a455a579bf582eff1acef001769a769d/_site/docs/execution/observability.md?plain\u003d1#L22\n\n### Build API Changes\n\nNo\n\n### Checklist\n\n- [x] I have added tests for the new use cases (if any).\n- [x] I have updated the documentation (if applicable).\n\n### Release Notes\n\nRELNOTES: None\n\nCloses #30805.\n\nPiperOrigin-RevId: 970357795\nChange-Id: I348a1b0e5addf9bee3544d2af1b8be4c26114869\n"
    },
    {
      "commit": "3a9b19c85b11c8a7eaa07013e052bb92d4dc8132",
      "tree": "cb28d1db08783b6470ecef9bec7f4b5cced5f16e",
      "parents": [
        "76786974b6400bb8455901b3bd653f9e0b21e431"
      ],
      "author": {
        "name": "Googler",
        "email": "noreply@google.com",
        "time": "Mon Aug 24 14:24:27 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 14:26:21 2026 -0700"
      },
      "message": "Allow the include scanner to resolve generated (output-directory) toolchain headers.\n\nCurrently, we can\u0027t use a generated directory for the C++ toolchain sysroot because the include scanner will discard all of its headers.  The problem is that the scanner only resolves headers located under the output directory when they are a \"declared\" header (tracked in IncludeScanningHeaderData).\n\nThis CL teaches the scanner to treat the toolchain\u0027s own compiler_files as resolvable.\n\n  - CppCompileActionBuilder folds ccToolchain.getCompilerFiles() into the action\u0027s\n    prunable headers when include scanning is on, so the generated headers are\n    legitimate discoverable inputs.\n  - IncludeScanningHeaderData.Builder.addDeclaredHeaders() registers those\n    artifacts as declared headers, but only the generated (non-source) ones;\n    source-file sysroots already resolve via source-artifact lookup, so those\n    toolchains see no change to their declared-header map.\n  - CppCompileAction registers the prunable headers at both header-data build\n    sites.\n\nRegression tests added:\n  - CppCompileActionTest.discoverInputs_generatedPrunableHeader_isDeclaredAndDiscovered:\n    a generated prunable header is registered as a declared header on the action\u0027s\n    IncludeScanningHeaderData and is discovered (verifies the CppCompileAction wiring).\n  - IncludeScannerTest.addDeclaredHeaders_registersOnlyGeneratedHeaders:\n    addDeclaredHeaders registers generated headers but skips source headers.\n  - IncludeScannerTest.addDeclaredHeaders_generatedHeaderIsResolvedByScanner:\n    end-to-end -- the real include scanner prunes an undeclared generated header\n    but resolves it once addDeclaredHeaders registers it.\n\nRELNOTES: The C++ include scanner now properly resolves headers that are generated at build time and included as part of the toolchain.\nPiperOrigin-RevId: 970080035\nChange-Id: I267fcd63fae455c793a81c4cfde6c9f9c8c9449b\n"
    },
    {
      "commit": "76786974b6400bb8455901b3bd653f9e0b21e431",
      "tree": "185adfd28b6136d57ea99e20bec2345f608b172c",
      "parents": [
        "4af6c703be3befd686f81c8d464bf56e11c87df8"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@gmail.com",
        "time": "Mon Aug 24 09:14:41 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 09:16:58 2026 -0700"
      },
      "message": "Preserve binary test annotations on Windows (https://github.com/bazelbuild/bazel/pull/30320)\n\nThe Windows test wrapper concatenates only .part fragments, so passing\ntests silently lose .pb undeclared-output annotations even though\nTestRunnerAction already publishes ANNOTATIONS.pb. POSIX handles both\nsuffixes.\n\nConcatenate top-level .pb fragments into the expected output, preserve\nthe nested-file exclusion, and guard suffix matching so short names\ncannot contaminate the .part output. Cover suffix filtering and\nend-to-end wrapper execution with binary annotation records.\n\nCloses #30320.\n\nPiperOrigin-RevId: 969892998\nChange-Id: I0db8ebaff639781b3bbda04cb72418f2f511df88\n"
    },
    {
      "commit": "4af6c703be3befd686f81c8d464bf56e11c87df8",
      "tree": "6232800a2e6bd2385a57b9a9f3a2044ea3a7f1d3",
      "parents": [
        "816c5ad0b145507e36d8524a7f31e62381421700"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Mon Aug 24 09:01:48 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 09:04:38 2026 -0700"
      },
      "message": "Add overflow guard in GrpcCacheClient to detect server ignoring `read_offset`.\n\nWhen retrying a download with `read_offset \u003e 0`, some remote cache servers may ignore `read_offset` and stream from offset 0.\n\nExtract `readOffset` and detect when received bytes exceed the expected digest size, cancel the gRPC request stream, and fail immediately with an explicit `IOException` rather than corrupting the output stream and hash.\n\nPart of https://github.com/bazelbuild/bazel/issues/19005.\n\nPiperOrigin-RevId: 969885342\nChange-Id: Ida0841c67fb52146f0f0d2ed0f3fd76c9feb519b\n"
    },
    {
      "commit": "816c5ad0b145507e36d8524a7f31e62381421700",
      "tree": "7944c157f48810ad909c9867ae8cdde7fd4b8846",
      "parents": [
        "eb325a9abfb205f59d60f5341d78b533820aa6a1"
      ],
      "author": {
        "name": "plf",
        "email": "plf@google.com",
        "time": "Mon Aug 24 08:45:00 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 08:46:48 2026 -0700"
      },
      "message": "Fix non-deterministic Skyframe dependency edges on aspect_hints.\n\nWhen `--incompatible_require_matching_aspect_hints_providers` is set, regular target (non-aspect) does not add a dependency edge to the label appearing in its attribute aspect_hints because this is useful only to aspects. At the same time, in order to determine whether it should add an edge to a dependency, an aspect will check the owning aspect of that dependency. If it\u0027s null, then it means that the dependency belongs to the target and the aspect is not responsible for adding the edge since the target will have already added it. This assumption breaks down for aspect hints.\n\nWhen the aspect determined that the dependency must have been brought in by the target, it called getExistingValue (which does not add an edge). As a fallback, if this returned null, it called lookup (which adds an edge). Because of this, if the dependency appearing in aspect_hints was reachable via some other path in the graph, sometimes it would be present when calling getExistingValue and sometimes it wouldn\u0027t, depending on the non-deterministic evaluation order of the graph.\n\nThe non-deterministic edges caused non-determinism in Skycache with different invalidation nodes and an IllegalStateException in incremental builds due to an optimization that stopped working properly (see b/550440588).\n\nThis was triggered by the flag flip in unknown commit.\n\nRELNOTES:none\nPiperOrigin-RevId: 969876573\nChange-Id: I6c51c5878d92718728c56dad44fa047cd3beda93\n"
    },
    {
      "commit": "eb325a9abfb205f59d60f5341d78b533820aa6a1",
      "tree": "cf26ec39d804071b0f28d84d5a5022473ba3313a",
      "parents": [
        "d6a6bcdc291de61d697d492998165f2d4afadae0"
      ],
      "author": {
        "name": "jhorvitz",
        "email": "jhorvitz@google.com",
        "time": "Mon Aug 24 08:27:44 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 08:30:13 2026 -0700"
      },
      "message": "Support interning with `deserializedInterface` in `@AutoCodec`.\n\nThe `deserializedInterface` field allows adding a marker interface to deserialized instances, typically used with `DeserializedSkyValue` which is important for Skycache invalidation. The new annotation field `internDeserialized` instructs the codec generator to weakly intern these instances.\n\nIt is an error to set `internDeserialized` without `deserializedInterface`.\n\nPiperOrigin-RevId: 969867711\nChange-Id: I055859838470e2f3867dd133622d08c99414f0a1\n"
    },
    {
      "commit": "d6a6bcdc291de61d697d492998165f2d4afadae0",
      "tree": "5826599e76c6dfa1b101620853d02a6495da7d09",
      "parents": [
        "df323748d61b50311791dc3688471931040cc5fa"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Mon Aug 24 08:25:56 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 08:27:54 2026 -0700"
      },
      "message": "Improve build summary to attribute failed top-level targets to failed dependency actions\n\nWhen building multiple top-level targets (such as `bazel build //...`), `--show_result` (which defaults to `1`) previously suppressed `Target \u003clabel\u003e failed to build` at the end of the build if the target threshold was exceeded.\nFurthermore, when a top-level target failed due to an action in a dependency target (e.g. across a configuration transition), the summary did not attribute the failure to the dependency target.\n\nBefore:\n```\n$ bazel build //...\nERROR: ... GoCompilePkg hello_binary.a failed: ...\nINFO: Elapsed time: 1.234s\nFAILED: Build did NOT complete successfully\n```\n(Notice: No `Target //:broken_hello_filegroup failed to build` was printed in multi-target builds, and no dependency failure attribution was provided.)\n\nAfter:\n```\n$ bazel build //...\nERROR: ... GoCompilePkg hello_binary.a failed: ...\nTarget //:broken_hello_filegroup failed to build\n  due to action in //:hello_binary\nINFO: Elapsed time: 1.234s\nFAILED: Build did NOT complete successfully\n```\n\nThis CL ensures failed top-level targets are always reported in the build summary and attributes them to the root cause dependency targets that produced the failed actions.\n\nFixes part of https://github.com/bazelbuild/bazel/issues/18139.\n\nPiperOrigin-RevId: 969866895\nChange-Id: Ia6c62041874b34e20abd6394ebd7764aebb43e4a\n"
    },
    {
      "commit": "df323748d61b50311791dc3688471931040cc5fa",
      "tree": "eb58f43ae39fe9e551aa9d8ffd6c3c784852e2c4",
      "parents": [
        "642b4dc6aafda71f1f0c48f1c6e0b90420196469"
      ],
      "author": {
        "name": "tanzhengwei",
        "email": "tanzhengwei@google.com",
        "time": "Mon Aug 24 08:09:27 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 08:11:59 2026 -0700"
      },
      "message": "Fix worker response reading when process has exited\n\nIn `SingleplexWorker.getResponse`, when `process.isAlive()` returned `false`, Bazel previously checked `recordingInputStream.available() \u003e 0` before breaking out of the loop. On macOS/BSD, `available()` on a pipe returns `0` after the writer process has exited, even if unread bytes (`WorkResponse`) remain in the OS pipe buffer.\n\nThis caused `SingleplexWorker` to throw a false-positive `IOException(\"Worker process ... died while waiting for response\")` on macOS when a worker voluntarily exited after completing a task (e.g., `--exit_after\u003d1`).\n\nBy breaking out of the loop when `!process.isAlive()`, Bazel attempts to read and parse the response via `workerProtocol.getResponse()`. If the worker produced a response, it is successfully parsed. If the worker crashed without returning a response, `getResponse()` returns `null` or throws an exception, resulting in proper error handling in `WorkerSpawnRunner`.\n\nPiperOrigin-RevId: 969859950\nChange-Id: I357b1e29ed107cd20896f00d123bdc42891f52db\n"
    },
    {
      "commit": "642b4dc6aafda71f1f0c48f1c6e0b90420196469",
      "tree": "62e6122c046d0a7fe7a549216cb34e6b2b800e3d",
      "parents": [
        "986c8fe33292f1e8915fa2587b6435cb4496fd68"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Mon Aug 24 08:03:47 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 08:05:58 2026 -0700"
      },
      "message": "Fix FormatStringShouldUsePlaceholders in CompressedTarFunctionTest\n\nUse %s format placeholders in assertWithMessage() calls instead of string concatenation.\n\nPiperOrigin-RevId: 969856996\nChange-Id: I0cc18431d27f39f8b8347c5be4a1049620e0aa9c\n"
    },
    {
      "commit": "986c8fe33292f1e8915fa2587b6435cb4496fd68",
      "tree": "660d0236583e871576bab5a75d0eddf66a288d2e",
      "parents": [
        "4f7bf9f95fb118bbf7d8d133e66cb6d88b9ac8fd"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Mon Aug 24 07:48:20 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 07:49:41 2026 -0700"
      },
      "message": "Fix UndefinedEquals and Truth assertions in ImmutableSortedKeyListMultimapTest\n\n- Type multimap local variables as ListMultimap so equals() contract is well-defined under ErrorProne UndefinedEquals check.\n- Remove duplicate isEmpty() assertions to resolve DuplicateAssertion warning.\n- Use isEmpty() Truth assertion on valuesForKey.\n\nPiperOrigin-RevId: 969849916\nChange-Id: I892859ff2052377afc3345223b7e8666ee613c3f\n"
    },
    {
      "commit": "4f7bf9f95fb118bbf7d8d133e66cb6d88b9ac8fd",
      "tree": "786cc25b4bff5a8225a15a08a6a3476a3b9d7fc8",
      "parents": [
        "cc3f0661f1cd01c54b79e598960aeb99f5e5ecd9"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Mon Aug 24 07:30:19 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 07:32:17 2026 -0700"
      },
      "message": "Fix ReferenceEquality and BoxingComparator ErrorProne warnings\n\nPiperOrigin-RevId: 969841008\nChange-Id: Id7fa8e274db48b1c89b5f1e4b3c1cdbb51675932\n"
    },
    {
      "commit": "cc3f0661f1cd01c54b79e598960aeb99f5e5ecd9",
      "tree": "5a406e1ec9180a999a753d2f2266b1319c9d6afb",
      "parents": [
        "0bae75d6382cbaf7303ba213b72d4e69db027216"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Mon Aug 24 07:15:36 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 07:17:29 2026 -0700"
      },
      "message": "Fix getUserOptions() dropping options containing \u0027default_override\u0027 substring.\n\nOptionsParser.getUserOptions() previously filtered out any option whose\ncanonical form contained \u0027default_override\u0027. This was intended to filter\nout the launcher\u0027s synthetic --default_override option, but instead did\na substring match on the entire canonical form (including the value),\ncausing valid user options to be dropped if their values contained that\nsubstring.\n\nThis is fixed by checking the option definition name to specifically exclude\nthe synthetic \u0027default_override\u0027 launcher option, rather than doing a substring\nmatch on the canonical form.\n\nPiperOrigin-RevId: 969834602\nChange-Id: I96c695cde639e479fd2a45bcc8f47c4f03b28974\n"
    },
    {
      "commit": "0bae75d6382cbaf7303ba213b72d4e69db027216",
      "tree": "a322edfd65f3d99e8d47e64d92d6f37f04c11260",
      "parents": [
        "657880f096d6b3264cddc8c1b3d2d89327d0ba03"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Mon Aug 24 07:11:54 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 07:13:49 2026 -0700"
      },
      "message": "Implement `--experimental_memory_load_scheduling` in Bazel.\n\nAdd experimental local execution action scheduling based on host memory utilization to `ResourceManager` and `MachineLoadProvider`, addressing issue #10662 for memory load scheduling.\n\n- Extend `MachineLoadProvider` with `getCurrentMemoryUsageMb()` to measure live RAM usage via `ProcMeminfoParser` (on Linux) or `OperatingSystemMXBean`.\n- Add `--experimental_memory_load_scheduling` flag in `ExecutionOptions`.\n- Update `ResourceManager` to dynamically check live host memory usage plus window estimation (`windowEstimationMemory`) when scheduling local actions in `areResourcesAvailable()`.\n- Rename `scheduleCpuLoadWindowUpdate()` to `scheduleLoadWindowUpdate()` to reflect scheduling for both CPU and memory load.\n- Remove deprecated `scheduleCpuLoadWindowUpdate()` and `initializeCpuLoadFunctionality()` wrappers.\n- Add unit tests in `ResourceManagerTest`.\n- Add `test_experimental_load_scheduling` shell integration test in `bazel_localtest_test.sh` testing `--experimental_memory_load_scheduling` and `--experimental_cpu_load_scheduling`.\n\nPiperOrigin-RevId: 969832855\nChange-Id: I539e3de73307857cd8197e3e4c14f078e1ed79b0\n"
    },
    {
      "commit": "657880f096d6b3264cddc8c1b3d2d89327d0ba03",
      "tree": "2fce01494f78a7991a589d9c0cd25dbbe3f8166f",
      "parents": [
        "174b1d940ef25fcfe973c0b787554d4453680f71"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Mon Aug 24 06:40:57 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 06:45:13 2026 -0700"
      },
      "message": "Fix InterruptedExceptionSwallowed ErrorProne warning in ByteStreamServer\n\nPiperOrigin-RevId: 969819978\nChange-Id: I0ef8a3ad1b71300017d3c4ce9b71512a75e729e1\n"
    },
    {
      "commit": "174b1d940ef25fcfe973c0b787554d4453680f71",
      "tree": "24a4ae6d664495bad75718473bdd69f8a9be1096",
      "parents": [
        "3d52724e735544f11140c65221c49753c8f73d2e"
      ],
      "author": {
        "name": "twerth",
        "email": "twerth@google.com",
        "time": "Mon Aug 24 06:39:58 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Aug 24 06:42:18 2026 -0700"
      },
      "message": "Fix underflow of remainingTasks in AbstractQueueVisitor upon interruption\n\nWhen Bazel is interrupted with Ctrl+C (SIGINT), forced teardown and cancellation in ForkJoinPool can cause decrementRemainingTasks() to be called multiple times for the same WrappedRunnable (between WrappedRunnable.run() and recordError() / cancellation callbacks).\nThis change adds an AtomicBoolean decremented flag to WrappedRunnable and introduces decrementRemainingTasksOnce() so that each task decrements remainingTasks at most once, preventing impossible negative number IllegalStateExceptions.\n\nFixes https://github.com/bazelbuild/bazel/issues/25686\n\nPiperOrigin-RevId: 969819582\nChange-Id: Ie915a12013a80e43c2177eda1f3a26a6f526f748\n"
    }
  ],
  "next": "3d52724e735544f11140c65221c49753c8f73d2e"
}
