)]}'
{
  "commit": "c1507d87f71e932604d89100abcf927beff898bd",
  "tree": "51b23468f78c24e4b4f77029380ee4248b08cfcc",
  "parents": [
    "071977350ba4a875282e2eba1e16de3801e7040b"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Mon Nov 09 02:31:30 2026 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Nov 09 02:31:30 2026 -0800"
  },
  "message": "build: enforce keep-sorted in pre-commit and CI (#4453)\n\nSeveral files use `# keep-sorted` directives, but nothing verified or\nsorted them automatically, allowing stale markers and unsorted blocks\nto slip in.\n\nAdd `google/keep-sorted` to `.pre-commit-config.yaml` and a cached\n`keep-sorted` lint job in GitHub Actions CI, backed by a shared\n`.github/actions/download-tool` action and verified download module\nreused by `setup-bazel`. Also fix existing `keep-sorted` directives so\nall tracked files pass.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e2c0aa8f06d6e40d2f7cf54c22134a27245e6c0d",
      "old_mode": 33188,
      "old_path": ".agents/rules/code-style.md",
      "new_id": "eb4ebf47996914a84b20ffbf3fb3c1f86242e208",
      "new_mode": 33188,
      "new_path": ".agents/rules/code-style.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "383bac9c3b60cc8e03fb0eece0f65dbf9ac36c05",
      "new_mode": 33188,
      "new_path": ".github/actions/download-tool/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "165b7f5b4154e0971a24c2d85af5f4009be61fcc",
      "new_mode": 33188,
      "new_path": ".github/actions/download-tool/action.yaml"
    },
    {
      "type": "modify",
      "old_id": "8ee450be51f4337d77df36973f6ef71f051481ed",
      "old_mode": 33188,
      "old_path": ".github/dependabot.yml",
      "new_id": "1ac1f1e7ee65762b4ce5cd9685961b60de4c136e",
      "new_mode": 33188,
      "new_path": ".github/dependabot.yml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "be7ba4bbb4541527944bbff2cb0a492c98757a49",
      "new_mode": 33261,
      "new_path": ".github/workflows/check_keep_sorted.py"
    },
    {
      "type": "modify",
      "old_id": "48bb5a121f4f1e2acfd39d44d790cce4ba9ad648",
      "old_mode": 33188,
      "old_path": ".github/workflows/ci.yaml",
      "new_id": "b5a547a62c5a6f4d17701ac022394566a5288c32",
      "new_mode": 33188,
      "new_path": ".github/workflows/ci.yaml"
    },
    {
      "type": "modify",
      "old_id": "a2ff683ca44d36d5094f144de37e31ff5aaf4b1c",
      "old_mode": 33188,
      "old_path": ".pre-commit-config.yaml",
      "new_id": "cd11aa500777ad92059dfa9c8ef42c2292f9e5b1",
      "new_mode": 33188,
      "new_path": ".pre-commit-config.yaml"
    },
    {
      "type": "modify",
      "old_id": "9f570817de0abd826c620dba34c8f58be9f26150",
      "old_mode": 33188,
      "old_path": "BUILD.bazel",
      "new_id": "1af3bc6f2f30f1ce06f76552e8c76e067c7bd168",
      "new_mode": 33188,
      "new_path": "BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "30fbc28b49bdd1f9f815da1426c37c9cb0910dd3",
      "old_mode": 33188,
      "old_path": "MODULE.bazel",
      "new_id": "aa1f4eb8dc4320e3f61414fa25f9f01fa87feb82",
      "new_mode": 33188,
      "new_path": "MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "056dfa4204b08128974680d121109403812909fa",
      "old_mode": 33188,
      "old_path": "dev/BUILD.bazel",
      "new_id": "a5e3661ead0c24219a628897f345f993c1bfa4f3",
      "new_mode": 33188,
      "new_path": "dev/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "f64ce1d440b02625fdd688cd376d47c9bc36cec1",
      "old_mode": 33261,
      "old_path": "dev/download_bazel.py",
      "new_id": "856d2639816aba7a06ed6aee137d47d2b220dc72",
      "new_mode": 33261,
      "new_path": "dev/download_bazel.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d7c25c5449d51dc0cc0ce69c64bb24dd91d7e210",
      "new_mode": 33261,
      "new_path": "dev/verified_download.py"
    },
    {
      "type": "modify",
      "old_id": "cbea882d8a9f267e7403c0bb2f372d47f83ebb05",
      "old_mode": 33188,
      "old_path": "python/private/common.bzl",
      "new_id": "2d4c48d8d557cd075043b03fb6f2ec855f7a1dc9",
      "new_mode": 33188,
      "new_path": "python/private/common.bzl"
    },
    {
      "type": "modify",
      "old_id": "0c6c672743b933596132f4968fee06011c115466",
      "old_mode": 33188,
      "old_path": "tests/support/py_runtime_info_subject.bzl",
      "new_id": "06fd7012d7568e3b98c3bc508d8f399f5dd665f4",
      "new_mode": 33188,
      "new_path": "tests/support/py_runtime_info_subject.bzl"
    },
    {
      "type": "modify",
      "old_id": "0b1a539972d60bf6f232c3b98fb9ecd28679368e",
      "old_mode": 33188,
      "old_path": "tests/workflows/BUILD.bazel",
      "new_id": "fdb6d0f103926f23ef63b8b58942cfecd330b4aa",
      "new_mode": 33188,
      "new_path": "tests/workflows/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a55da467a9db98d516f5619e8656e73d1d79819c",
      "new_mode": 33188,
      "new_path": "tests/workflows/check_keep_sorted_test.py"
    },
    {
      "type": "modify",
      "old_id": "4b1ff6b02dab6f9132226c8cdf9891476cc40a3c",
      "old_mode": 33188,
      "old_path": "tests/workflows/setup_bazel_test.py",
      "new_id": "20e017caaec2e2b966204aa4d790b9b4bd3fcd9d",
      "new_mode": 33188,
      "new_path": "tests/workflows/setup_bazel_test.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5b279e2e2382210a187994ae182387548e0248d1",
      "new_mode": 33188,
      "new_path": "tests/workflows/verified_download_test.py"
    }
  ]
}
