)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dab368cd30bf0d9556b89e0e95afd0ba7632b282",
      "old_mode": 33188,
      "old_path": "src/main/java/net/starlark/java/eval/EvalException.java",
      "new_id": "717bace529dd019c6ab9945291f46ceff6414c2e",
      "new_mode": 33188,
      "new_path": "src/main/java/net/starlark/java/eval/EvalException.java"
    },
    {
      "type": "modify",
      "old_id": "ab9304e88e1793ae8869ff4fd5ebafe736b10ae2",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/analysis/actions/BuildInfoFileWriteActionTest.java",
      "new_id": "dc01b1c9c900efb115d5b3bca7f3ef0a126530ea",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/analysis/actions/BuildInfoFileWriteActionTest.java"
    },
    {
      "type": "modify",
      "old_id": "0343697124f730b3a9cd663b466ea317ae38ff01",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/buildtool/KeepGoingTest.java",
      "new_id": "973cc49d277254b01e5cb455a99eab8f8c2364ce",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/buildtool/KeepGoingTest.java"
    },
    {
      "type": "modify",
      "old_id": "6b47a455c92992c3d4cb788df56f57280459c3a0",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/rules/config/StarlarkConfigFeatureFlagTransitionFactoryTest.java",
      "new_id": "f4681fdc6ce42b264393aa0ff63fe07193a5d2b2",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/rules/config/StarlarkConfigFeatureFlagTransitionFactoryTest.java"
    },
    {
      "type": "modify",
      "old_id": "8444ee2aba7aa1b6b64ebf96eb71aeca67054d10",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/EvalMacroFunctionTest.java",
      "new_id": "3cd4dd9daec4d1d17b45be48ca6e856c6490658f",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/EvalMacroFunctionTest.java"
    },
    {
      "type": "modify",
      "old_id": "3277f5d980ff760c63b2b5afbc199bc67521a249",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java",
      "new_id": "bd55ab40319c1bc062528bd26a99bd5e0854dce2",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java"
    },
    {
      "type": "modify",
      "old_id": "a9db8a90d17e27177223c55150e5806486cb57e2",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleContextTest.java",
      "new_id": "2f54f0f1a4127fb533dea79cb643a37389dff109",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleContextTest.java"
    },
    {
      "type": "modify",
      "old_id": "ca9a7b1d8fbe5429408406be3bf69ef5fd32b975",
      "old_mode": 33188,
      "old_path": "src/test/java/net/starlark/java/eval/MethodLibraryTest.java",
      "new_id": "0f0d25e741de7d2c433f3d16f1cd445f4f01ddd5",
      "new_mode": 33188,
      "new_path": "src/test/java/net/starlark/java/eval/MethodLibraryTest.java"
    },
    {
      "type": "modify",
      "old_id": "7a1755fb3caad82a4b37182114cb795d6ac21da0",
      "old_mode": 33188,
      "old_path": "src/test/py/bazel/bzlmod/mod_command_test.py",
      "new_id": "687ef70e54a5bb9b80c84a388dd8df39e2fcef81",
      "new_mode": 33188,
      "new_path": "src/test/py/bazel/bzlmod/mod_command_test.py"
    },
    {
      "type": "modify",
      "old_id": "3093f17311503c175dedc72b8842b0f46e6be505",
      "old_mode": 33261,
      "old_path": "src/test/shell/integration/build_event_stream_test.sh",
      "new_id": "2c7c02f2808da617c07f5db62848bb501632399c",
      "new_mode": 33261,
      "new_path": "src/test/shell/integration/build_event_stream_test.sh"
    }
  ]
}
