)]}'
{
  "commit": "99858c51cfd4bceb4d7bafa3f22f074667179403",
  "tree": "718b3e3f71c607d6b639f87096581b609aab46cd",
  "parents": [
    "877dd31b0b4bbe1d07246d9e5ef5e40b9563bada"
  ],
  "author": {
    "name": "13steinj",
    "email": "13steinj@users.noreply.github.com",
    "time": "Wed Jul 29 21:35:00 2026 -0500"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Jul 30 11:35:00 2026 +0900"
  },
  "message": "fix: make executable implicit defaults public so other modules can use rule builders (#3919) (#3970)\n\nBackports #3919 to `release/1.9` (requested by @aignas / @rickeylev).\n\n`create_executable_rule_builder()` (used by `py_binary_rule_builder()` /\n`py_test_rule_builder()`, the public `python/api/executables.bzl` API)\nbundles three implicit attrs whose defaults point at private targets\nunder\n`//python/private`. These had no explicit visibility, so any external\nmodule constructing a rule via the builder API failed at analysis time\nwith a visibility error.\n\nCommits:\n- `fix: make executable implicit defaults public ... (#3919)` —\ncherry-pick\n  of `19ffd215`, unchanged from main.\n- `Release 1.9.2: Update changelog` — finalizes the changelog entry\n(`release/1.9` doesn\u0027t carry the `news/` fragment infra main uses, so\nthe\nfragment is folded into `CHANGELOG.md` directly, matching\n#3775/#3776/#3819).\n\nFixes #3919 on `1.9.x`.\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2d8a8075fa20e07f8197b12f77c390e9c16e1a2e",
      "old_mode": 33188,
      "old_path": ".bazelrc.deleted_packages",
      "new_id": "2cd1090ebdd394a08a6a653ad43ae110da9f48d9",
      "new_mode": 33188,
      "new_path": ".bazelrc.deleted_packages"
    },
    {
      "type": "modify",
      "old_id": "80412cffbb604229dd14674e7d1044db0e0133b6",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "0a7350531823503a5172bcfd1c397baa4caa6032",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "40f66b3322078aa2811d0a9902c092b11c16c531",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/other_module/other_module/rule_builder/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "db51494ed6a91785be9df86c0d41cbd8f8bef30b",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/other_module/other_module/rule_builder/app.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7b1505987af2022fa46e4fd0f46ffa5e60828372",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/other_module/other_module/rule_builder/rule.bzl"
    },
    {
      "type": "modify",
      "old_id": "1bd8a900a9ddce5e20070149b7bd4a21ce595d34",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/tests/other_module/BUILD.bazel",
      "new_id": "906554f0f7cd97d5b059899164bd60e8aaa5a4bf",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/tests/other_module/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "70f7f86413fe6aadec3bcea95e590c2513e1827c",
      "old_mode": 33188,
      "old_path": "python/private/BUILD.bazel",
      "new_id": "2e2ed9269ab556898bb106a83bebdf3d007eda25",
      "new_mode": 33188,
      "new_path": "python/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "9b1d65a4695abb1128f1c992b3fcc8562553938d",
      "old_mode": 33188,
      "old_path": "python/private/uncachable_version_file.bzl",
      "new_id": "0f58df804377e55bc120179bacf055f54c9dc778",
      "new_mode": 33188,
      "new_path": "python/private/uncachable_version_file.bzl"
    }
  ]
}
