)]}'
{
  "commit": "c4ac0a608696624573fce03225d4b103f888807f",
  "tree": "147df7c1b5c961eb6adadf63c5aefdc68d099bf2",
  "parents": [
    "de341ed2071371bdaf579df62e155ffd430a0fff"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Mon Nov 09 12:32:56 2026 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Nov 09 12:32:56 2026 -0800"
  },
  "message": "ci: mirror downloader dependencies across sub-workspaces (#4459)\n\nTransient 504 gateway timeouts and external download failures cause\nflaky CI builds, especially in examples and integration tests that did\nnot configure Bazel\u0027s downloader rewrite rules.\n\nAdd `mirror.bazel.build` rewrite rules to `downloader_config.cfg`, copy\nthe downloader config into each sub-workspace, and configure\n`--experimental_downloader_config` and retry flags in sub-workspace\n`.bazelrc` files.\n\nDeduplicating shared `.bazelrc` settings and adding tests to verify that\ndownloader configs stay in sync will be addressed in a follow-up PR.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e9551f0d8b16661f7cf1ede629baa4e24d32bb25",
      "old_mode": 33261,
      "old_path": "dev/sync_downloader_configs.py",
      "new_id": "b00eb773886fec7b6a223892444344819a0ac708",
      "new_mode": 33261,
      "new_path": "dev/sync_downloader_configs.py"
    },
    {
      "type": "modify",
      "old_id": "fb6061fcc1a98eec67b730359f4317375c1b6b4f",
      "old_mode": 33188,
      "old_path": "downloader_config.cfg",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "15ac21633887f1bf2accd4d6eed1602b4b2bc7b0",
      "old_mode": 33188,
      "old_path": "examples/build_file_generation/.bazelrc",
      "new_id": "bcf4c506cdd077c38e25abad091da41f11e3f1a3",
      "new_mode": 33188,
      "new_path": "examples/build_file_generation/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "examples/build_file_generation/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "28a44a7523237049413cde5a836d032d62df35d2",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/.bazelrc",
      "new_id": "a63fe5000ba94397b8daa7f30b85f676b22738f6",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "97a973bd85301f5c9696286abb1e3fdbed61da4f",
      "old_mode": 33188,
      "old_path": "examples/multi_python_versions/.bazelrc",
      "new_id": "6dd42669bb07e1b5c87152361863081dec217e22",
      "new_mode": 33188,
      "new_path": "examples/multi_python_versions/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "examples/multi_python_versions/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "f263a1744d458646b7d0b0ef0740179ba4e89939",
      "old_mode": 33188,
      "old_path": "examples/pip_parse/.bazelrc",
      "new_id": "55b5fad366f33460ce71fb0b034ac1689136fcbb",
      "new_mode": 33188,
      "new_path": "examples/pip_parse/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "examples/pip_parse/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "a6ea2d91384dca0c333340986d9d974603ddbb06",
      "old_mode": 33188,
      "old_path": "examples/pip_parse_vendored/.bazelrc",
      "new_id": "456fb1e7d7bd5b0d9adf0a8f5f6aecf5aa3bc874",
      "new_mode": 33188,
      "new_path": "examples/pip_parse_vendored/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "examples/pip_parse_vendored/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "fb6061fcc1a98eec67b730359f4317375c1b6b4f",
      "old_mode": 33188,
      "old_path": "gazelle/downloader_config.cfg",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "gazelle/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "31097b41de49b97fd27bb348334922764bb21de8",
      "old_mode": 33188,
      "old_path": "gazelle/examples/bzlmod_build_file_generation/.bazelrc",
      "new_id": "b3477e6ad08f8d12a7126a420df4d37d2b74c9e0",
      "new_mode": 33188,
      "new_path": "gazelle/examples/bzlmod_build_file_generation/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "gazelle/examples/bzlmod_build_file_generation/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "fb6061fcc1a98eec67b730359f4317375c1b6b4f",
      "old_mode": 33188,
      "old_path": "sphinxdocs/downloader_config.cfg",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "sphinxdocs/downloader_config.cfg"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "379f188a909da1bd37f8aa2cbf498dfe53d9893a",
      "new_mode": 33188,
      "new_path": "sphinxdocs/integration_tests/bcr/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "sphinxdocs/integration_tests/bcr/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "3fa6264eda269aacdcc4a424a57ffd1354f2b884",
      "old_mode": 33188,
      "old_path": "sphinxdocs/integration_tests/persistent_worker/workspace/downloader_config.cfg",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "sphinxdocs/integration_tests/persistent_worker/workspace/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "3687a11faee38a0d13c6acea6469ea80f7363ed4",
      "old_mode": 33188,
      "old_path": "tests/integration/bzlmod_lockfile/.bazelrc",
      "new_id": "63b03fc1d853c94b6b9c037e4f97f7b8259c2948",
      "new_mode": 33188,
      "new_path": "tests/integration/bzlmod_lockfile/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/bzlmod_lockfile/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "b85f03bcb6b7469028ac097788d66bda66e1aacd",
      "old_mode": 33188,
      "old_path": "tests/integration/compile_pip_requirements/.bazelrc",
      "new_id": "749ae47917752f6565298528d5f994c512ef711f",
      "new_mode": 33188,
      "new_path": "tests/integration/compile_pip_requirements/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/compile_pip_requirements/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "ab10c8caf745cb012efca8aa9eae4770842d0447",
      "old_mode": 33188,
      "old_path": "tests/integration/compile_pip_requirements_test_from_external_repo/.bazelrc",
      "new_id": "947d73b7840bd1501b1ebedd7115c3a9dc07df0e",
      "new_mode": 33188,
      "new_path": "tests/integration/compile_pip_requirements_test_from_external_repo/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/compile_pip_requirements_test_from_external_repo/downloader_config.cfg"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "379f188a909da1bd37f8aa2cbf498dfe53d9893a",
      "new_mode": 33188,
      "new_path": "tests/integration/custom_commands/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/custom_commands/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "0fbb7678d19c335bf1fc22a610202e9fa46a651a",
      "old_mode": 33188,
      "old_path": "tests/integration/local_toolchains/.bazelrc",
      "new_id": "3216b90b8b18c900f7e867bd4cd8a4a96dc55d1a",
      "new_mode": 33188,
      "new_path": "tests/integration/local_toolchains/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/local_toolchains/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "a74909297d053f644902a25dfdef049af68b9dac",
      "old_mode": 33188,
      "old_path": "tests/integration/pip_parse/.bazelrc",
      "new_id": "66e2ae4a756e3d427e2cb7666eb406970c104be8",
      "new_mode": 33188,
      "new_path": "tests/integration/pip_parse/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/pip_parse/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "227ce5a4cd4a68a497431b1a38a6f5e62bbbd2b4",
      "old_mode": 33188,
      "old_path": "tests/integration/pip_parse_isolated/.bazelrc",
      "new_id": "9bec494ef682990d101fe08e722aa78bd6803efb",
      "new_mode": 33188,
      "new_path": "tests/integration/pip_parse_isolated/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/pip_parse_isolated/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "e1df951d06b6b4c640540eccd2491e3734a95052",
      "old_mode": 33188,
      "old_path": "tests/integration/prebuilt_toolchain/.bazelrc",
      "new_id": "4012ec51eba3b90214713c91b1f0f7694581baf4",
      "new_mode": 33188,
      "new_path": "tests/integration/prebuilt_toolchain/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/prebuilt_toolchain/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "fb31561892cf64abf556b2636f500a44d2568abf",
      "old_mode": 33188,
      "old_path": "tests/integration/py_cc_toolchain_registered/.bazelrc",
      "new_id": "7e599d114823d08fbcba3e1a0eaba00aefaa220d",
      "new_mode": 33188,
      "new_path": "tests/integration/py_cc_toolchain_registered/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/py_cc_toolchain_registered/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "d4d45a5ea77b74ef4b2a1437d3b3c34360310ce1",
      "old_mode": 33188,
      "old_path": "tests/integration/runtime_manifests/.bazelrc",
      "new_id": "717459478c515ffa68308607a9084247132b62ea",
      "new_mode": 33188,
      "new_path": "tests/integration/runtime_manifests/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/runtime_manifests/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "e1df951d06b6b4c640540eccd2491e3734a95052",
      "old_mode": 33188,
      "old_path": "tests/integration/toolchain_target_settings/.bazelrc",
      "new_id": "4012ec51eba3b90214713c91b1f0f7694581baf4",
      "new_mode": 33188,
      "new_path": "tests/integration/toolchain_target_settings/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/toolchain_target_settings/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "b3a24e86053229b12f8d0edfa44525eaac55bddc",
      "old_mode": 33188,
      "old_path": "tests/integration/unified_pypi/.bazelrc",
      "new_id": "cb836b10ad405ad0bd2abf5a391038376b97ec98",
      "new_mode": 33188,
      "new_path": "tests/integration/unified_pypi/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/unified_pypi/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "511f8a24139b29c5aa7402cb9f34a001bae5cd70",
      "old_mode": 33188,
      "old_path": "tests/integration/uv_lock/.bazelrc",
      "new_id": "a153ea9384d830ecf2a03deb275a3b133f90740d",
      "new_mode": 33188,
      "new_path": "tests/integration/uv_lock/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/uv_lock/downloader_config.cfg"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "379f188a909da1bd37f8aa2cbf498dfe53d9893a",
      "new_mode": 33188,
      "new_path": "tests/integration/validate_test_main/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/validate_test_main/downloader_config.cfg"
    },
    {
      "type": "modify",
      "old_id": "eee47a8f19da81317196ba8ba2547c2436abfc34",
      "old_mode": 33188,
      "old_path": "tests/integration/whl_library/.bazelrc",
      "new_id": "82c22a2085c44374703b89aac0cf271af50be416",
      "new_mode": 33188,
      "new_path": "tests/integration/whl_library/.bazelrc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8bde140608b344d3bf00a7da42f46f9e13b57e2e",
      "new_mode": 33188,
      "new_path": "tests/integration/whl_library/downloader_config.cfg"
    }
  ]
}
