)]}'
{
  "commit": "07eeb3015150b2d7a5e677c0a5f7001da0b1777e",
  "tree": "5374c639ea29cc046bb20a2a0707fae648ec8748",
  "parents": [
    "4ee3e13be11d34a794bd1c879cadebe726e7cea3"
  ],
  "author": {
    "name": "jhorvitz",
    "email": "jhorvitz@google.com",
    "time": "Tue Aug 18 06:18:20 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Tue Aug 18 06:20:41 2026 -0700"
  },
  "message": "Intern only `Object[]` children in `NestedSetInterner` to restore determinism.\n\n`Depset` equality and hashing delegate directly to the underlying `NestedSet`\ninstance\u0027s identity. Because `NestedSetInterner` previously interned entire\n`NestedSet` instances in a bounded cache, `depset` comparisons and set/dict\noperations in Starlark were non-deterministic depending on whether a `depset`\nconstruction resulted in a cache hit or miss (b/544770151).\n\nTo fix this, we update `NestedSetInterner` to intern only the backing `Object[]`\nchildren arrays rather than the enclosing `NestedSet` instances. This intentionally\nsacrifices some memory savings in order to restore determinism to\n`Depset` instance equality and hashing.\n\nIt is possible that the size bounds in `NestedSetInterner` can be tuned because we are no longer interning singletons. However, I am leaving that out of this change.\n\nAdded unit tests verifying that `Depset` equality and hashing are deterministic across interner cache states.\n\nIncludes the following cleanups:\n- Handle identity interning for all `StarlarkValue` types directly at `NestedSet`\n  construction time, eliminating the need for `internDepset`.\n- Remove the now-redundant `IsArtifactForNestedSet` interface since `Artifact` is\n  already a `StarlarkValue`.\n\nPiperOrigin-RevId: 966554823\nChange-Id: Iffb3a0356fd2bb62c797d7ace0292f4437c9b44d\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b0c35ad4cff1a7711b7f847f09aac3743dfabe18",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/actions/Artifact.java",
      "new_id": "58f32cfda449918c8b3bfc07514809ccd8f9cb74",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/actions/Artifact.java"
    },
    {
      "type": "modify",
      "old_id": "29956955ee8cb950ac0be97019a21354aa7e4245",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/actions/BUILD",
      "new_id": "b9409f702d159a688dc3fad8da456ea16b57ae01",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/actions/BUILD"
    },
    {
      "type": "modify",
      "old_id": "43cd2d4539f7c2430db02579871287182dc13b81",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD",
      "new_id": "a422eb485189e99067850bde76540eac69c7d3ed",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD"
    },
    {
      "type": "modify",
      "old_id": "e698ca60a02104cf2260f481dc7c719e1d0593e7",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/Depset.java",
      "new_id": "15fecdda41ae539525176f6bd883e1f9293c1dfc",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/Depset.java"
    },
    {
      "type": "delete",
      "old_id": "e10adbac33c61481b099a209b40da9c52671b651",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/IsArtifactForNestedSet.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "97797381501287dc876d3d2de1c0f7c286860a56",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSet.java",
      "new_id": "ce6fe3c2ee86f2f8e8aadf81969d2f29df0e3fab",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSet.java"
    },
    {
      "type": "modify",
      "old_id": "27cbdca609b4ac9a47039c210458c67060e0125f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetBuilder.java",
      "new_id": "f6be574e05999a89c7bb9c962215844caa48864e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetBuilder.java"
    },
    {
      "type": "modify",
      "old_id": "ba15bc3f4addb8a94458ebe97dd0dda2ac90459c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetInterner.java",
      "new_id": "9991cc8fbbbe91afa3f2d98b5f50bdcd3d4a4e56",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetInterner.java"
    },
    {
      "type": "modify",
      "old_id": "42634153c2d71bbbe9afcb818909eb3feabe554f",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/collect/nestedset/DepsetTest.java",
      "new_id": "868501d8d1de10532a558609197bf3fe170f2ea7",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/collect/nestedset/DepsetTest.java"
    },
    {
      "type": "modify",
      "old_id": "73b8bd46ef597ebd2826e1b1ea98df9999df4c95",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetTest.java",
      "new_id": "50acf348450b88ee49f21fdc2032016fd08a8971",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/collect/nestedset/NestedSetTest.java"
    },
    {
      "type": "modify",
      "old_id": "c4d196d3a5cfdf4764a1726b7845d77b694856a3",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/rules/java/JavaCompilationInfoProviderTest.java",
      "new_id": "6dd97554423fafc30d2d3a4783437be26168cbf4",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/rules/java/JavaCompilationInfoProviderTest.java"
    }
  ]
}
